Compare commits

...
41 Commits
Author SHA1 Message Date
bachir 41717783ac agenda dates displaying ok 2018-04-23 23:35:26 +02:00
bachir bf0dade005 corpus map evolution zone linked to visible space left by modals 2018-04-23 22:38:02 +02:00
bachir e4b3ca6c94 updated core to 8.52 2018-04-23 21:33:41 +02:00
bachir 0150486358 changed field upload limits 2018-04-23 21:29:31 +02:00
bachir 878e9adeb6 mignified assets for prod 2018-04-23 21:27:29 +02:00
bachir afac7f57b0 production page can now filter the cospus map 2018-04-23 20:38:32 +02:00
bachir cd374d7de8 remis les marges hautes et basses sur la carte corpus 2018-04-23 16:56:46 +02:00
bachir 56a2f0c21f mignified assets for prod 2018-04-21 10:28:09 +02:00
bachir f7e402320e rewrited the corpus map drawing without virtual canvas pre-rendering as it's blured 2018-04-21 10:27:02 +02:00
bachir 79071bf0cc improved checkcollision performance 2018-04-20 11:18:05 +02:00
bachir 6d40f860e4 more corpus optimizations 2018-04-19 22:48:51 +02:00
bachir fcb7677cfc pre rendering each node in owne virtual canvas, then just move this canvas into the main scene 2018-04-19 21:12:53 +02:00
bachir 86dcf68f62 corpus removed hardcoded _dpi value to 2 to window.devicePixelRatio 2018-04-19 18:25:19 +02:00
bachir eddb96cb2e trying to fix corpus map canvas resolution 2018-04-18 21:58:52 +02:00
bachir 2df8d15d91 fixed corpus map canvas resolution 2018-04-18 21:47:29 +02:00
bachir f515e7682a mignified assets for prod 2018-04-18 17:41:01 +02:00
bachir 6e56bf1799 fixed entrees menu : translation and order 2018-04-18 17:40:08 +02:00
bachir 613ea5fc02 fixed blured corpus map 2018-04-18 16:41:01 +02:00
bachir a9cd74b3fb bug fix 2018-04-18 11:42:11 +02:00
bachir bcd129a961 removed redondant events from piwik tracking : ajaxload and search 2018-04-18 11:40:15 +02:00
bachir 35eadafe3e improved piwik search tracking 2018-04-18 11:34:17 +02:00
bachir 74f4c09eb1 added piwik tracking for: ajax loading timing, site search 2018-04-18 11:24:28 +02:00
bachir 67ce55c047 updated events fields display 2018-04-18 10:44:38 +02:00
bachir ab9c1dcd4d mignified assets for prod 2018-04-18 10:30:33 +02:00
bachir f7225cdd01 added entree page tracking, added title to ajax response for tracking (production, agenda, search) 2018-04-18 10:29:46 +02:00
bachir 65d95036c0 added piwik tracking for RandomPlayer 2018-04-18 10:15:54 +02:00
bachir 1904ab1352 fix stupid bug 2018-04-18 10:05:48 +02:00
bachir 77065246fc forgot a debugger; 2018-04-18 10:04:07 +02:00
bachir b6168089a7 trying to fix adudio player bug, added audio play piwik tracking 2018-04-18 10:02:59 +02:00
bachir 249bc608b3 added better page tracking for piwik 2018-04-18 09:49:32 +02:00
bachir 9c61825a17 expanded assets for debug purpose 2018-04-18 09:31:03 +02:00
bachir f7c8728f20 mignified assets for prod 2018-04-18 09:21:56 +02:00
bachir 7356c6cec6 added pixik js event tracking 2018-04-18 09:21:16 +02:00
bachir 7d11684731 updtaed drupal translations 2018-04-18 00:29:29 +02:00
bachir 86573ebbe9 mignified assets for prod 2018-04-18 00:12:45 +02:00
bachir e31f0c34a7 moved logo to prefectly superpose with player timeline 2018-04-18 00:10:37 +02:00
bachir 452f41108b removed stopwords filter from searchapi index for better results 2018-04-17 23:58:07 +02:00
bachir d62d02201b added current language condition to searchapi query 2018-04-17 23:49:38 +02:00
bachir cfe15cebd8 forgot to remove debugger; 2018-04-17 23:12:34 +02:00
bachir 8133aa66f0 search bug fix with language field 2018-04-17 23:07:39 +02:00
bachir 94175c1df1 added autocomplete with documents title in search form 2018-04-17 23:00:18 +02:00
129 changed files with 9600 additions and 1851 deletions
Generated
+115 -113
View File
@@ -554,16 +554,16 @@
},
{
"name": "consolidation/robo",
"version": "1.2.2",
"version": "1.2.3",
"source": {
"type": "git",
"url": "https://github.com/consolidation/Robo.git",
"reference": "9ef2724f72feb017517a755564516dbde99e15e4"
"reference": "54a13e268917b92576d75e10dca8227b95a574d9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/consolidation/Robo/zipball/9ef2724f72feb017517a755564516dbde99e15e4",
"reference": "9ef2724f72feb017517a755564516dbde99e15e4",
"url": "https://api.github.com/repos/consolidation/Robo/zipball/54a13e268917b92576d75e10dca8227b95a574d9",
"reference": "54a13e268917b92576d75e10dca8227b95a574d9",
"shasum": ""
},
"require": {
@@ -587,9 +587,11 @@
"codeception/aspect-mock": "^1|^2.1.1",
"codeception/base": "^2.3.7",
"codeception/verify": "^0.3.2",
"g-1-a/composer-test-scenarios": "^2",
"goaop/framework": "~2.1.2",
"greg-1-anderson/composer-test-scenarios": "^1",
"goaop/parser-reflection": "^1.1.0",
"natxet/cssmin": "3.0.4",
"nikic/php-parser": "^3.1.5",
"patchwork/jsqueeze": "~2",
"pear/archive_tar": "^1.4.2",
"phpunit/php-code-coverage": "~2|~4",
@@ -628,7 +630,7 @@
}
],
"description": "Modern task runner",
"time": "2018-02-28T01:03:54+00:00"
"time": "2018-04-06T05:27:37+00:00"
},
{
"name": "container-interop/container-interop",
@@ -1522,16 +1524,16 @@
},
{
"name": "drupal/core",
"version": "8.5.1",
"version": "8.5.2",
"source": {
"type": "git",
"url": "https://github.com/drupal/core.git",
"reference": "2aeca7dfa2661296602ac16bf9fd6085f0a121be"
"reference": "bc21760d4be4ad117851809183c8d18880ab275a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/drupal/core/zipball/2aeca7dfa2661296602ac16bf9fd6085f0a121be",
"reference": "2aeca7dfa2661296602ac16bf9fd6085f0a121be",
"url": "https://api.github.com/repos/drupal/core/zipball/bc21760d4be4ad117851809183c8d18880ab275a",
"reference": "bc21760d4be4ad117851809183c8d18880ab275a",
"shasum": ""
},
"require": {
@@ -1753,7 +1755,7 @@
"GPL-2.0-or-later"
],
"description": "Drupal is an open source content management platform powering millions of websites and applications.",
"time": "2018-03-27T09:58:42+00:00"
"time": "2018-04-18T17:00:56+00:00"
},
{
"name": "drush/drush",
@@ -2067,16 +2069,16 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "6.3.2",
"version": "6.3.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90"
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/68d0ea14d5a3f42a20e87632a5f84931e2709c90",
"reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
"shasum": ""
},
"require": {
@@ -2086,7 +2088,7 @@
},
"require-dev": {
"ext-curl": "*",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
"psr/log": "^1.0"
},
"suggest": {
@@ -2128,7 +2130,7 @@
"rest",
"web service"
],
"time": "2018-03-26T16:33:04+00:00"
"time": "2018-04-22T15:46:56+00:00"
},
{
"name": "guzzlehttp/promises",
@@ -2465,24 +2467,24 @@
},
{
"name": "nikic/php-parser",
"version": "v3.1.5",
"version": "v4.0.1",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce"
"reference": "e4a54fa90a5cd8e8dd3fb4099942681731c5cdd3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce",
"reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/e4a54fa90a5cd8e8dd3fb4099942681731c5cdd3",
"reference": "e4a54fa90a5cd8e8dd3fb4099942681731c5cdd3",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
"php": ">=5.5"
"php": ">=7.0"
},
"require-dev": {
"phpunit/phpunit": "~4.0|~5.0"
"phpunit/phpunit": "^6.5 || ^7.0"
},
"bin": [
"bin/php-parse"
@@ -2490,7 +2492,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
"dev-master": "4.0-dev"
}
},
"autoload": {
@@ -2512,20 +2514,20 @@
"parser",
"php"
],
"time": "2018-02-28T20:30:58+00:00"
"time": "2018-03-25T17:35:16+00:00"
},
{
"name": "paragonie/random_compat",
"version": "v2.0.11",
"version": "v2.0.12",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8"
"reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8",
"reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/258c89a6b97de7dfaf5b8c7607d0478e236b04fb",
"reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb",
"shasum": ""
},
"require": {
@@ -2560,7 +2562,7 @@
"pseudorandom",
"random"
],
"time": "2017-09-27T21:40:39+00:00"
"time": "2018-04-04T21:24:14+00:00"
},
{
"name": "psr/container",
@@ -2710,29 +2712,29 @@
},
{
"name": "psy/psysh",
"version": "v0.8.18",
"version": "v0.9.3",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
"reference": "5357b1cffc8fb375d6a9e3c86d5c82dd38a40834"
"reference": "79c280013cf0b30fa23f3ba8bd3649218075adf4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/5357b1cffc8fb375d6a9e3c86d5c82dd38a40834",
"reference": "5357b1cffc8fb375d6a9e3c86d5c82dd38a40834",
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/79c280013cf0b30fa23f3ba8bd3649218075adf4",
"reference": "79c280013cf0b30fa23f3ba8bd3649218075adf4",
"shasum": ""
},
"require": {
"dnoegel/php-xdg-base-dir": "0.1",
"jakub-onderka/php-console-highlighter": "0.3.*",
"nikic/php-parser": "~1.3|~2.0|~3.0",
"php": ">=5.3.9",
"nikic/php-parser": "~1.3|~2.0|~3.0|~4.0",
"php": ">=5.4.0",
"symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0",
"symfony/var-dumper": "~2.7|~3.0|~4.0"
},
"require-dev": {
"hoa/console": "~3.16|~1.14",
"phpunit/phpunit": "^4.8.35|^5.4.3",
"hoa/console": "~2.15|~3.16",
"phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0",
"symfony/finder": "~2.1|~3.0|~4.0"
},
"suggest": {
@@ -2748,15 +2750,15 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-develop": "0.8.x-dev"
"dev-develop": "0.9.x-dev"
}
},
"autoload": {
"files": [
"src/Psy/functions.php"
"src/functions.php"
],
"psr-4": {
"Psy\\": "src/Psy/"
"Psy\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2778,7 +2780,7 @@
"interactive",
"shell"
],
"time": "2018-04-02T05:41:44+00:00"
"time": "2018-04-18T12:32:50+00:00"
},
{
"name": "sebastian/version",
@@ -2978,7 +2980,7 @@
},
{
"name": "symfony/class-loader",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/class-loader.git",
@@ -3034,7 +3036,7 @@
},
{
"name": "symfony/config",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
@@ -3097,7 +3099,7 @@
},
{
"name": "symfony/console",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
@@ -3166,7 +3168,7 @@
},
{
"name": "symfony/css-selector",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
@@ -3219,7 +3221,7 @@
},
{
"name": "symfony/debug",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
@@ -3275,7 +3277,7 @@
},
{
"name": "symfony/dependency-injection",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
@@ -3346,7 +3348,7 @@
},
{
"name": "symfony/dom-crawler",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
@@ -3402,16 +3404,16 @@
},
{
"name": "symfony/event-dispatcher",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "58990682ac3fdc1f563b7e705452921372aad11d"
"reference": "fdd5abcebd1061ec647089c6c41a07ed60af09f8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/58990682ac3fdc1f563b7e705452921372aad11d",
"reference": "58990682ac3fdc1f563b7e705452921372aad11d",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/fdd5abcebd1061ec647089c6c41a07ed60af09f8",
"reference": "fdd5abcebd1061ec647089c6c41a07ed60af09f8",
"shasum": ""
},
"require": {
@@ -3461,11 +3463,11 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
"time": "2018-02-14T10:03:57+00:00"
"time": "2018-04-06T07:35:25+00:00"
},
{
"name": "symfony/filesystem",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
@@ -3514,16 +3516,16 @@
},
{
"name": "symfony/finder",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "7a2e1299cc0c4162996f18e347b6356729a55317"
"reference": "bd14efe8b1fabc4de82bf50dce62f05f9a102433"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/7a2e1299cc0c4162996f18e347b6356729a55317",
"reference": "7a2e1299cc0c4162996f18e347b6356729a55317",
"url": "https://api.github.com/repos/symfony/finder/zipball/bd14efe8b1fabc4de82bf50dce62f05f9a102433",
"reference": "bd14efe8b1fabc4de82bf50dce62f05f9a102433",
"shasum": ""
},
"require": {
@@ -3559,11 +3561,11 @@
],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
"time": "2018-03-28T18:23:39+00:00"
"time": "2018-04-04T05:07:11+00:00"
},
{
"name": "symfony/http-foundation",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
@@ -3617,16 +3619,16 @@
},
{
"name": "symfony/http-kernel",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "43cfdad2ca1dba608662db0699c1bbb715d08191"
"reference": "3cc2d4374aa9590c09277ad68657671cf49dbbf4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/43cfdad2ca1dba608662db0699c1bbb715d08191",
"reference": "43cfdad2ca1dba608662db0699c1bbb715d08191",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/3cc2d4374aa9590c09277ad68657671cf49dbbf4",
"reference": "3cc2d4374aa9590c09277ad68657671cf49dbbf4",
"shasum": ""
},
"require": {
@@ -3701,7 +3703,7 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
"time": "2018-04-03T05:49:44+00:00"
"time": "2018-04-06T15:19:48+00:00"
},
{
"name": "symfony/polyfill-iconv",
@@ -3882,7 +3884,7 @@
},
{
"name": "symfony/process",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
@@ -3991,16 +3993,16 @@
},
{
"name": "symfony/routing",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
"reference": "5f90733adbf19ea71468a5761fb8f5a043d424dd"
"reference": "50f333b707bef9f6972ad04e6df3ec8875c9a67c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/5f90733adbf19ea71468a5761fb8f5a043d424dd",
"reference": "5f90733adbf19ea71468a5761fb8f5a043d424dd",
"url": "https://api.github.com/repos/symfony/routing/zipball/50f333b707bef9f6972ad04e6df3ec8875c9a67c",
"reference": "50f333b707bef9f6972ad04e6df3ec8875c9a67c",
"shasum": ""
},
"require": {
@@ -4065,11 +4067,11 @@
"uri",
"url"
],
"time": "2018-03-23T08:14:09+00:00"
"time": "2018-04-04T13:22:16+00:00"
},
{
"name": "symfony/serializer",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/serializer.git",
@@ -4147,7 +4149,7 @@
},
{
"name": "symfony/translation",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
@@ -4215,16 +4217,16 @@
},
{
"name": "symfony/validator",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
"reference": "4342b66102171b417776f0e4f8f00b20a1eddb0f"
"reference": "6fa41262dcbd50eedb1e841cfd97f5a1956cf2e7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/validator/zipball/4342b66102171b417776f0e4f8f00b20a1eddb0f",
"reference": "4342b66102171b417776f0e4f8f00b20a1eddb0f",
"url": "https://api.github.com/repos/symfony/validator/zipball/6fa41262dcbd50eedb1e841cfd97f5a1956cf2e7",
"reference": "6fa41262dcbd50eedb1e841cfd97f5a1956cf2e7",
"shasum": ""
},
"require": {
@@ -4295,20 +4297,20 @@
],
"description": "Symfony Validator Component",
"homepage": "https://symfony.com",
"time": "2018-04-02T09:38:44+00:00"
"time": "2018-04-06T07:35:25+00:00"
},
{
"name": "symfony/var-dumper",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "6f502127b1bb85f7f30f8bc1fb60570a10431863"
"reference": "951643091b39a6fd40fce56cd16e21e12bef3feb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/6f502127b1bb85f7f30f8bc1fb60570a10431863",
"reference": "6f502127b1bb85f7f30f8bc1fb60570a10431863",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/951643091b39a6fd40fce56cd16e21e12bef3feb",
"reference": "951643091b39a6fd40fce56cd16e21e12bef3feb",
"shasum": ""
},
"require": {
@@ -4364,11 +4366,11 @@
"debug",
"dump"
],
"time": "2018-04-03T05:22:50+00:00"
"time": "2018-04-03T20:34:11+00:00"
},
{
"name": "symfony/yaml",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
@@ -4830,16 +4832,16 @@
},
{
"name": "zendframework/zend-stdlib",
"version": "3.1.0",
"version": "3.1.1",
"source": {
"type": "git",
"url": "https://github.com/zendframework/zend-stdlib.git",
"reference": "debedcfc373a293f9250cc9aa03cf121428c8e78"
"reference": "10ef03144902d1955f935fff5346ed52f7d99bcc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/debedcfc373a293f9250cc9aa03cf121428c8e78",
"reference": "debedcfc373a293f9250cc9aa03cf121428c8e78",
"url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/10ef03144902d1955f935fff5346ed52f7d99bcc",
"reference": "10ef03144902d1955f935fff5346ed52f7d99bcc",
"shasum": ""
},
"require": {
@@ -4848,7 +4850,7 @@
"require-dev": {
"athletic/athletic": "~0.1",
"phpunit/phpunit": "~4.0",
"squizlabs/php_codesniffer": "^2.6.2"
"zendframework/zend-coding-standard": "~1.0.0"
},
"type": "library",
"extra": {
@@ -4871,7 +4873,7 @@
"stdlib",
"zf2"
],
"time": "2016-09-13T14:38:50+00:00"
"time": "2018-04-12T16:05:42+00:00"
}
],
"packages-dev": [
@@ -5766,23 +5768,23 @@
},
{
"name": "phpspec/prophecy",
"version": "1.7.5",
"version": "1.7.6",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
"reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401"
"reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/dfd6be44111a7c41c2e884a336cc4f461b3b2401",
"reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
"reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.0.2",
"php": "^5.3|^7.0",
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
"sebastian/comparator": "^1.1|^2.0",
"sebastian/comparator": "^1.1|^2.0|^3.0",
"sebastian/recursion-context": "^1.0|^2.0|^3.0"
},
"require-dev": {
@@ -5825,20 +5827,20 @@
"spy",
"stub"
],
"time": "2018-02-19T10:16:54+00:00"
"time": "2018-04-18T13:57:24+00:00"
},
{
"name": "phpunit/php-code-coverage",
"version": "5.3.0",
"version": "5.3.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1"
"reference": "c89677919c5dd6d3b3852f230a663118762218ac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1",
"reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
"reference": "c89677919c5dd6d3b3852f230a663118762218ac",
"shasum": ""
},
"require": {
@@ -5888,7 +5890,7 @@
"testing",
"xunit"
],
"time": "2017-12-06T09:29:45+00:00"
"time": "2018-04-06T15:36:58+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -6078,16 +6080,16 @@
},
{
"name": "phpunit/phpunit",
"version": "6.5.7",
"version": "6.5.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "6bd77b57707c236833d2b57b968e403df060c9d9"
"reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6bd77b57707c236833d2b57b968e403df060c9d9",
"reference": "6bd77b57707c236833d2b57b968e403df060c9d9",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4f21a3c6b97c42952fd5c2837bb354ec0199b97b",
"reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b",
"shasum": ""
},
"require": {
@@ -6158,7 +6160,7 @@
"testing",
"xunit"
],
"time": "2018-02-26T07:01:09+00:00"
"time": "2018-04-10T11:38:34+00:00"
},
{
"name": "phpunit/phpunit-mock-objects",
@@ -6815,7 +6817,7 @@
},
{
"name": "symfony/browser-kit",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
@@ -6872,16 +6874,16 @@
},
{
"name": "symfony/phpunit-bridge",
"version": "v3.4.7",
"version": "v3.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
"reference": "e4b72beb8961340764367a804f21044e83fc19a8"
"reference": "48c669ec1a2b0425d4a82c7ad4bce2f5b947b95e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/e4b72beb8961340764367a804f21044e83fc19a8",
"reference": "e4b72beb8961340764367a804f21044e83fc19a8",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/48c669ec1a2b0425d4a82c7ad4bce2f5b947b95e",
"reference": "48c669ec1a2b0425d4a82c7ad4bce2f5b947b95e",
"shasum": ""
},
"require": {
@@ -6934,7 +6936,7 @@
],
"description": "Symfony PHPUnit Bridge",
"homepage": "https://symfony.com",
"time": "2018-03-20T23:37:33+00:00"
"time": "2018-04-04T15:02:59+00:00"
},
{
"name": "theseer/tokenizer",
+1116 -1118
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 11 KiB

+1 -1
View File
@@ -24,7 +24,7 @@ classList:
ckeditor:
remote: https://github.com/ckeditor/ckeditor-dev
version: "4.8.0"
version: "4.8.0+2018-04-18-security-patch"
license:
name: GNU-GPL-2.0-or-later
url: https://github.com/ckeditor/ckeditor-dev/blob/4.8.0/LICENSE.md
+1 -1
View File
@@ -82,7 +82,7 @@ class Drupal {
/**
* The current system version.
*/
const VERSION = '8.5.1';
const VERSION = '8.5.2';
/**
* Core API compatibility.
@@ -79,7 +79,8 @@ class AgendaController extends ControllerBase {
});
$data = [
'rendered'=> $rendered
'rendered'=> $rendered,
'title'=>'Agenda',
];
// translations links
@@ -25,12 +25,15 @@ class EdlpAjaxController extends ControllerBase {
switch($this->entity_type){
case 'node':
$this->bundle = $this->entity->getType();
$this->title = $this->entity->getTitle();
break;
case 'taxonomy_term':
$this->bundle = $this->entity->bundle();
$this->title = $this->entity->getName();
break;
default:
$this->bundle = NULL;
$this->title = '';
}
}
}
@@ -160,17 +163,22 @@ class EdlpAjaxController extends ControllerBase {
return render($renderable);
});
$title = $this->title;
$title .= $this->viewmode != '' && $this->viewmode != 'default' ? ' | ' . $this->viewmode : '';
$data = [
'date' => time(),
'id' => $this->id,
'title' => $title,
'view_mode' => $this->viewmode,
'bundle' => $this->bundle,
'entity_type' => $this->entity_type,
'rendered'=> $rendered,
];
// if content type page (productions) get the menu items and linked dates
// if content type page (productions) :
// -- get the menu items and linked dates
// -- get the linked documents for corpus map
if($this->bundle == "page"){
$menuLinkManager = \Drupal::service('plugin.manager.menu.link');
$links = $menuLinkManager->loadLinksByRoute('entity.node.canonical', array('node' => $this->id), 'productions');
@@ -189,6 +197,15 @@ class EdlpAjaxController extends ControllerBase {
}
}
$data['menu_parents'] = $menu_parents;
// Documents liés
$documents_lies = $this->entity->get('field_documents_lies')->getValue();
if(count($documents_lies)){
foreach ($documents_lies as $key => $field) {
$data['documents_lies'][] = $field['target_id'];
}
}
}
// translations links
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1 +1,71 @@
canvas#corpus-map{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;top:0;left:0;z-index:0}canvas#corpus-map.de-activated{background-color:#f4f4f4}div.node-popup{z-index:10;position:absolute;-webkit-box-sizing:content-box;box-sizing:content-box;width:300px;min-height:30px;top:60%;left:30%;pointer-events:none}div.node-popup .inner{padding:.6em;outline:red solid 1px;background-color:#fff}div.node-popup:before{content:"";position:absolute;width:60px;height:0;border-top:1px solid red}div.node-popup[pos=bottom-right]{-webkit-transform:translateY(42px) translateX(42px);transform:translateY(42px) translateX(42px)}div.node-popup[pos=bottom-right]:before{top:-1px;left:-61px;-webkit-transform-origin:bottom right;transform-origin:bottom right;-webkit-transform:rotateZ(45deg);transform:rotateZ(45deg)}div.node-popup[pos=bottom-left]{-webkit-transform:translateX(-100%) translateY(42px) translateX(-42px);transform:translateX(-100%) translateY(42px) translateX(-42px)}div.node-popup[pos=bottom-left]:before{top:calc(100% +1px);left:100%;-webkit-transform-origin:top left;transform-origin:top left;-webkit-transform:rotateZ(-45deg);transform:rotateZ(-45deg)}div.node-popup[pos=top-left]{-webkit-transform:translateY(-100%) translateX(-100%) translateY(-42px) translateX(-42px);transform:translateY(-100%) translateX(-100%) translateY(-42px) translateX(-42px)}div.node-popup[pos=top-left]:before{bottom:0;left:100%;-webkit-transform-origin:top left;transform-origin:top left;-webkit-transform:rotateZ(45deg);transform:rotateZ(45deg)}div.node-popup[pos=top-right]{-webkit-transform:translateY(-100%) translateY(-42px) translateX(42px);transform:translateY(-100%) translateY(-42px) translateX(42px)}div.node-popup[pos=top-right]:before{top:calc(100% + 1px);left:-61px;-webkit-transform-origin:top right;transform-origin:top right;-webkit-transform:rotateZ(-45deg);transform:rotateZ(-45deg)}
canvas#corpus-map {
position: absolute;
-webkit-box-sizing: border-box;
box-sizing: border-box;
top: 0;
left: 0;
z-index: 0; }
canvas#corpus-map.de-activated {
background-color: #f4f4f4; }
div.node-popup {
z-index: 10;
position: absolute;
-webkit-box-sizing: content-box;
box-sizing: content-box;
width: 300px;
min-height: 30px;
pointer-events: none;
top: 60%;
left: 30%;
pointer-events: none; }
div.node-popup .inner {
padding: 0.6em;
outline: 1px solid red;
background-color: white; }
div.node-popup:before {
content: "";
position: absolute;
width: 60px;
height: 0;
border-top: 1px solid red; }
div.node-popup[pos="bottom-right"] {
-webkit-transform: translateY(42px) translateX(42px);
transform: translateY(42px) translateX(42px); }
div.node-popup[pos="bottom-right"]:before {
top: -1px;
left: -61px;
-webkit-transform-origin: bottom right;
transform-origin: bottom right;
-webkit-transform: rotateZ(45deg);
transform: rotateZ(45deg); }
div.node-popup[pos="bottom-left"] {
-webkit-transform: translateX(-100%) translateY(42px) translateX(-42px);
transform: translateX(-100%) translateY(42px) translateX(-42px); }
div.node-popup[pos="bottom-left"]:before {
top: calc(100% +1px);
left: 100%;
-webkit-transform-origin: top left;
transform-origin: top left;
-webkit-transform: rotateZ(-45deg);
transform: rotateZ(-45deg); }
div.node-popup[pos="top-left"] {
-webkit-transform: translateY(-100%) translateX(-100%) translateY(-42px) translateX(-42px);
transform: translateY(-100%) translateX(-100%) translateY(-42px) translateX(-42px); }
div.node-popup[pos="top-left"]:before {
bottom: 0;
left: 100%;
-webkit-transform-origin: top left;
transform-origin: top left;
-webkit-transform: rotateZ(45deg);
transform: rotateZ(45deg); }
div.node-popup[pos="top-right"] {
-webkit-transform: translateY(-100%) translateY(-42px) translateX(42px);
transform: translateY(-100%) translateY(-42px) translateX(42px); }
div.node-popup[pos="top-right"]:before {
top: calc(100% + 1px);
left: -61px;
-webkit-transform-origin: top right;
transform-origin: top right;
-webkit-transform: rotateZ(-45deg);
transform: rotateZ(-45deg); }
@@ -24,13 +24,24 @@
var _$canvas = $('<canvas id="corpus-map">').appendTo(_$container);
var _canvas = _$canvas[0];
var _ctx = _canvas.getContext('2d');
var _canvas_props = {
var _dpi = window.devicePixelRatio;
var _scene_props = {
width:window.innerWidth,
height:window.innerHeight,
// 'margin_top':90, // with red border on head
'margin_top':75, // without red border on head
// 'margin_top':0,
'margin_right':0,
'margin_bottom':65,
// 'margin_bottom':0,
'margin_left':0
};
var _evolution_zone = {
left:_scene_props.width/4,
right:_scene_props.width - _scene_props.width/4,
center:_scene_props.width/2,
};
var _physics = new Physics();
var _nodes = [];
var _articles_nodes = [];
@@ -42,6 +53,8 @@
var _nodes_centered = [];
var _nodes_centered_attractions = [];
var _loaded = false;
var _playlist = [];
var _p_velocity_factor = 0.5;
@@ -58,15 +71,9 @@
var _ecolors = _settings.colors;
// Physics
var _attracter;
// _repulser_top,
// _repulser_center,
// _repulser_bottom,
// _scrambler_TL,
// _scrambler_TR,
// _scrambler_BR,
// _scrambler_BL,
// _scrambler_CL,
// _scrambler_CR;
var check_parts_colid_frq = 2;
var check_parts_colid_tick = 1;
// ____ _ __
// / _/___ (_) /______
@@ -92,13 +99,26 @@
onResizeCanvas();
};
function onResizeCanvas() {
_canvas.width = window.innerWidth;
_canvas.height = window.innerHeight;
for (var i = 0; i < _nodes.length; i++) {
_nodes[i].onResizeCanvas();
// move _attracter and _repulser to the center again
resizePhysics();
// _dpi = 2;
_scene_props.width = window.innerWidth;
_scene_props.height = window.innerHeight;
_canvas.style.width = _scene_props.width+'px';
_canvas.style.height = _scene_props.height+'px';
_canvas.width = _scene_props.width*_dpi;
_canvas.height = _scene_props.height*_dpi;
_ctx.scale(_dpi, _dpi);
moveEvolutionZone();
if(_loaded){
for (var i = 0; i < _nodes.length; i++) {
_nodes[i].onResizeCanvas();
}
// move _attracter and _repulser to their right places again
// moveEvolutionZone() will trigger resizePhysics()
// resizePhysics();
}
};
// ___
@@ -134,6 +154,7 @@
initEvents();
checkPreOpenedEntry();
startAnime();
_loaded = true;
};
// ___ _ _
@@ -149,7 +170,9 @@
};
function resizePhysics(){
// attracters
_attracter.position = {x:_canvas.width/2, y:_canvas.height/2};
if(typeof _attracter != 'undefined'){
_attracter.position = {x:_evolution_zone.center, y:_scene_props.height/2};
}
};
// _ _ _
@@ -211,9 +234,24 @@
this.r = 3;//4;
break;
}
this.d = this.r*2;
this.e_color = 'e_col_'+this.entrees[Math.floor(Math.random(this.entrees.length))];
// pre-rendering node virtual canvas
this.canvas = document.createElement('canvas');
this.canvas_ctx = this.canvas.getContext('2d');
this.line_width = 1;
this.w = this.r*2+this.line_width*2;
this.w_2 = this.w/2;
this.canvas.width = this.w;
this.canvas.height = this.w;
this.canvas_ctx.fillStyle = 'rgb(255,255,255)';
this.canvas_ctx.lineWidth = this.line_width;
this.wall_bouncing_elasticity = 0.75;
// node states
this.hover = false;
this.opened = false;
this.faded = false;
@@ -221,9 +259,6 @@
this.aside = false;
this.scrambling = false;
this.wall_bouncing_elasticity = 0.75;
// this.n_repulses = {};
// prototypes
if (typeof Node.initialized == "undefined") {
@@ -236,10 +271,43 @@
this.ori_pos = {x:this.x,y:this.y};
// TODO: don't forget to move ori_pos on window resize
//this.drawSprite();
this.initPhysics();
};
// Node.prototype.drawSprite = function(){
// _ctx.clearRect(0, 0, this.w, this.w);
//
// this.canvas_ctx.beginPath();
// // white background
// this.canvas_ctx.fillRect(0,0,this.w,this.w);
//
// this.canvas_ctx.globalAlpha = this.faded ? 0.15 : 1;
//
// if(this.opened){
// // carre plein
// // this.canvas_ctx.lineWidth = '1px';
// // this.canvas_ctx.strokeStyle = 'rgb(255,0,0)';
// // this.canvas_ctx.strokeRect(this.x - this.r-3,this.y - this.r-3,this.r*2+6,this.r*2+6);
// // ou carre contour
// this.canvas_ctx.save(); // save the normal context state (fill white)
// this.canvas_ctx.fillStyle = _ecolors[this.e_color];
// this.canvas_ctx.fillRect(this.line_width,this.line_width,this.d,this.d);
// this.canvas_ctx.restore(); // restore the normal context state (fill white)
// }
// // else{
// // // carre plein
// // // this.canvas_ctx.fillStyle = _ecolors[this.e_color];
// // // this.canvas_ctx.fillRect(this.x - this.r,this.y - this.r,this.d,this.d);
// // // ou carre contour
// // this.canvas_ctx.fillRect(this.line_width,this.line_width,this.d,this.d);
// // }
// this.canvas_ctx.strokeStyle = _ecolors[this.e_color];
// this.canvas_ctx.strokeRect(this.line_width,this.line_width,this.d,this.d);
// // this.canvas_ctx.globalAlpha = 1;
// this.canvas_ctx.closePath();
// };
Node.prototype.initPhysics = function(){
// particule
this.p = _physics.makeParticle(this.mass, this.x, this.y);
@@ -248,26 +316,26 @@
this.ori_p = _physics.makeParticle(1000, this.ori_pos.x, this.ori_pos.y);
this.ori_p.fixed = true;
// TODO: don't forget to move ori_p on window resize
this.ori_p_attract = _physics.makeAttraction(this.ori_p, this.p, 1000, _canvas.width*2);
this.ori_p_attract = _physics.makeAttraction(this.ori_p, this.p, 1000, _scene_props.width*2);
this.ori_p_attract.on = false;
// attracter
this.attract = _physics.makeAttraction(_attracter, this.p, 1000, _canvas.width*2);
this.attract = _physics.makeAttraction(_attracter, this.p, 1000, _scene_props.width*2);
this.attract.on = false;
};
Node.prototype.calcWallLimits = function(){
this.wall_limits = {
top: _canvas_props.margin_top +this.r,
right: _canvas.width -_canvas_props.margin_right -this.r,
bottom: _canvas.height -_canvas_props.margin_bottom -this.r,
left: _canvas_props.margin_left +this.r
top: _scene_props.margin_top +this.r,
right: _scene_props.width -_scene_props.margin_right -this.r,
bottom: _scene_props.height -_scene_props.margin_bottom -this.r,
left: _scene_props.margin_left +this.r
}
};
Node.prototype.onResizeCanvas = function(){
this.calcWallLimits();
// TODO: scramble only if not aside or centered
this.shuffleOriP();
// TODO: when canvas is smaller what about nodes hors champs, they are coming back alone but it's too long
};
Node.prototype.shuffleOriP = function(){
@@ -283,26 +351,25 @@
this.p.fixed = true;
}else{
this.p.fixed = false;
}
if(this.center)
if(this.center)
this.limitEvolutionZone();
if(!this.p.resting()){
// if(!this.p.resting()){
// this.checkVelocityThreshold();
this.checkWallBouncing();
this.updatePos();
if(this.scrambling){
this.checkOriPDist();
}
// }
}
if(_mouse_in && !this.aside && !this.faded)
this.checkMouse();
// if(this.debug)
// console.log("Node pos: ", {x:this.x, y:this.y});
this.draw();
// this.move();
this.redraw();
};
Node.prototype.checkVelocityThreshold = function(){
@@ -380,16 +447,20 @@
Node.prototype.open = function(){
this.opened = true;
_node_opened_id = this.id;
//this.drawSprite();
};
Node.prototype.close = function(){
this.opened = false;
//this.drawSprite();
};
Node.prototype.fade = function(){
this.faded = true;
//this.drawSprite();
};
Node.prototype.unFade = function(){
this.faded = false;
//this.drawSprite();
};
Node.prototype.setCenteredOnEntree = function(tid){
@@ -402,6 +473,7 @@
this.stopScrambling();
this.unsetAside();
this.attract.on = true;
//this.drawSprite();
}
Node.prototype.unsetCentered = function(){
this.center = false;
@@ -413,13 +485,16 @@
// if(this.id == 1)
// console.log('this.p.velocity', this.p.velocity);
this.dist_to_attracter = this.p.distanceTo(_attracter);
if( this.dist_to_attracter < _canvas.width/4){
if( this.dist_to_attracter < _scene_props.width/4){
if( this.p.velocity.length() > 0.4 ){
this.p.velocity.multiplyScalar(0.995);
this.p.velocity.multiplyScalar(0.99); // 0.995
}
}
if( Math.abs(_attracter.position.x - this.x) > _canvas.width/3
|| Math.abs(_attracter.position.y - this.y) > _canvas.height/3){
// limit evolution zone
// if( Math.abs(_attracter.position.x - this.x) > _scene_props.width/4
// || Math.abs(_attracter.position.y - this.y) > _scene_props.height/4){
if( this.x < _evolution_zone.left || this.x > _evolution_zone.right
|| Math.abs(_attracter.position.y - this.y) > _scene_props.height/4){
this.attract.on = true;
}else{
this.attract.on = false;
@@ -431,12 +506,12 @@
// this.fade();
this.stopScrambling();
this.unsetCentered();
this.ori_p.position.x = this.x < _canvas.width /2 ? this.wall_limits.left : this.wall_limits.right;
this.ori_p.position.x = this.x < _scene_props.width /2 ? this.wall_limits.left : this.wall_limits.right;
this.ori_p_attract.on = true;
this.wall_bouncing_elasticity = 0.15;
}
Node.prototype.unsetAside = function(){
console.log('unsetAside');
// console.log('unsetAside');
this.aside = false;
this.ori_p_attract.on = false;
this.ori_p.position.x = this.ori_pos.x;
@@ -444,6 +519,18 @@
// this.unFade();
}
Node.prototype.resolveNormalPos = function(){
// console.log("resolveNormalPos");
switch(true){
case this.center:
this.unsetCentered();
break;
case this.aside:
this.unsetAside();
break;
}
};
Node.prototype.scramble = function(){
this.scrambling = true;
this.unsetCentered();
@@ -468,26 +555,18 @@
// this.scramble_CL.on = false;
}
Node.prototype.draw = function(){
// carre plein
// clouleur aléatoire ds les entrees
// 3 tailles :
// - 1 entree : petit carre 5px
// - 2-3 entrees : moyen 7.5px
// - >3 entrees : grand 10px
// actif entouré de rouge
Node.prototype.move = function(){
// just draw the virtual node canvas into the main scene canvas at the right position
_ctx.drawImage(this.canvas, this.x-this.w_2, this.y-this.w_2);
};
Node.prototype.redraw = function(){
_ctx.beginPath();
_ctx.globalAlpha = this.faded ? 0.15 : 1;
// carre plein
// _ctx.fillStyle = _ecolors[this.e_color];
// _ctx.fillRect(this.x - this.r,this.y - this.r,this.r*2,this.r*2);
// ou carre contour
_ctx.lineWidth = '2px';
// white background
_ctx.fillStyle = 'rgb(255,255,255)';
_ctx.fillRect(this.x - this.r,this.y - this.r,this.r*2,this.r*2);
_ctx.strokeStyle = _ecolors[this.e_color];
_ctx.strokeRect(this.x - this.r,this.y - this.r,this.r*2,this.r*2);
_ctx.fillRect(this.x-this.r,this.y-this.r,this.d,this.d);
_ctx.globalAlpha = this.faded ? 0.15 : 1;
if(this.opened){
// carre plein
@@ -495,10 +574,21 @@
// _ctx.strokeStyle = 'rgb(255,0,0)';
// _ctx.strokeRect(this.x - this.r-3,this.y - this.r-3,this.r*2+6,this.r*2+6);
// ou carre contour
// _ctx.save(); // save the normal context state (fill white)
_ctx.fillStyle = _ecolors[this.e_color];
_ctx.fillRect(this.x - this.r,this.y - this.r,this.r*2,this.r*2);
_ctx.fillRect(this.x-this.r,this.y-this.r,this.d,this.d);
// _ctx.restore(); // restore the normal context state (fill white)
}
_ctx.globalAlpha = 1;
// else{
// // carre plein
// // _ctx.fillStyle = _ecolors[this.e_color];
// // _ctx.fillRect(this.x - this.r,this.y - this.r,this.d,this.d);
// // ou carre contour
// _ctx.fillRect(this.line_width,this.line_width,this.d,this.d);
// }
_ctx.strokeStyle = _ecolors[this.e_color];
_ctx.strokeRect(this.x-this.r,this.y-this.r,this.d,this.d);
// _ctx.globalAlpha = 1;
_ctx.closePath();
};
@@ -507,53 +597,68 @@
this.init();
};
// TODO: we may convert a lot of computation into a web worker
// https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers
function checkParticulesCollisions(){
// do not run particule collision every frames
if(check_parts_colid_tick < check_parts_colid_frq){
check_parts_colid_tick++;
return;
}
check_parts_colid_tick = 1;
// pre create vars to save memory;
var na,nb,
ma,mb,
w,h,dx,dy,
makeup,
newVelX1, newVelY1, newVelX2, newVelY2;
newVelX1, newVelY1, newVelX2, newVelY2,
Smamb;
// , angle;
// colisions between _particules
for (var n = 0, l = _nodes.length; n < l; n++) {
na = _nodes[n];
ma = na.p.mass;
// avoid colliding for centered nodes
// if(_nodes[n].center) continue;
// avoid colliding for scrambling nodes
if(na.scrambling) continue;
// avoid colliding for aside nodes
// avoid colliding for centered nodes
if(na.scrambling || na.aside || na.center) continue;
ma = na.p.mass;
for (var q = n+1; q < l; q++) {
nb = _nodes[q];
mb = nb.p.mass;
// avoid impact between center and aside particules
// if((na.center && nb.aside) || (na.aside && nb.center))
// and between aside particules
if((na.center && nb.aside) || (na.aside && nb.center) || (na.aside && nb.aside))
if(nb.aside)
continue;
// avoid impact between two centered particulses that comes to the center
if(na.center && nb.center){
if(Math.min(na.p.distanceTo(_attracter), nb.p.distanceTo(_attracter)) > 300){
if( Math.random()>0.3 ) continue;
}
}
// if(na.center && nb.center){
// if(Math.min(na.p.distanceTo(_attracter), nb.p.distanceTo(_attracter)) > 300){
// if( Math.random()>0.3 ) continue;
// }
// }
w = h = (na.r+nb.r);
// if(!na.aside && !nb.aside){
w = h += 4; // add a saftey zone around squares eccept for aside squares
// }
dx = na.p.position.x - nb.p.position.x;
dy = na.p.position.y - nb.p.position.y;
// if both dx and dy are inferior to w & h so squares are colliding (overlapping)
// if( Math.abs(dx) <= w && Math.abs(dy) <= h){ console.log('colliding'); }
// else not so skip
if( Math.abs(dx) > w || Math.abs(dy) > h) continue;
// if( Math.abs(dx) > w || Math.abs(dy) > h) continue;
dx = na.p.position.x - nb.p.position.x;
if( Math.abs(dx) > w ) continue;
dy = na.p.position.y - nb.p.position.y;
if(Math.abs(dy) > h) continue
mb = nb.p.mass;
Smamb = ma+mb;
if(Math.abs(dx) < Math.abs(dy)){ // vertical collision
makeup = (h - Math.abs(dy))/2;
if(dy > 0){ // a is upper than b
@@ -565,8 +670,8 @@
}
// bounce
// https://en.wikipedia.org/wiki/Elastic_collision#One-dimensional_Newtonian
newVelY1 = (ma-mb)/(ma+mb)*na.p.velocity.y+2*mb/(ma+mb)*nb.p.velocity.y;
newVelY2 = (mb-ma)/(mb+ma)*nb.p.velocity.y+2*ma/(mb+ma)*na.p.velocity.y;
newVelY1 = (ma-mb)/Smamb*na.p.velocity.y+2*mb/Smamb*nb.p.velocity.y;
newVelY2 = (mb-ma)/Smamb*nb.p.velocity.y+2*ma/Smamb*na.p.velocity.y;
na.p.velocity.y = newVelY1;
nb.p.velocity.y = newVelY2;
@@ -582,8 +687,8 @@
}
// bounce
// https://en.wikipedia.org/wiki/Elastic_collision#One-dimensional_Newtonian
newVelX1 = (ma-mb)/(ma+mb)*na.p.velocity.x+2*mb/(ma+mb)*nb.p.velocity.x;
newVelX2 = (mb-ma)/(mb+ma)*nb.p.velocity.x+2*ma/(mb+ma)*na.p.velocity.x;
newVelX1 = (ma-mb)/Smamb*na.p.velocity.x+2*mb/Smamb*nb.p.velocity.x;
newVelX2 = (mb-ma)/Smamb*nb.p.velocity.x+2*ma/Smamb*na.p.velocity.x;
na.p.velocity.x = newVelX1;
nb.p.velocity.x = newVelX2;
@@ -641,6 +746,22 @@
};
// ___ _ _ _ ____
// | __|_ _____| |_ _| |_(_)___ _ _ |_ /___ _ _ ___
// | _|\ V / _ \ | || | _| / _ \ ' \ / // _ \ ' \/ -_)
// |___|\_/\___/_|\_,_|\__|_\___/_||_| /___\___/_||_\___|
function moveEvolutionZone(l, r){
var left = l || 0;
var right = r || 0;
_evolution_zone.left = Math.max(_scene_props.width/5, left+20);
_evolution_zone.right = Math.min(_scene_props.width - _scene_props.width/5, _scene_props.width-right+20);
_evolution_zone.center = _evolution_zone.left + (_evolution_zone.right - _evolution_zone.left)/2;
// move _attracter to the center of the zone
resizePhysics();
}
// ___ _ ___ _ _ _ _
// | _ \__ _ _ _ __| |___ _ __ | _ \ |__ _ _ _| (_)__| |_
// | / _` | ' \/ _` / _ \ ' \ | _/ / _` | || | | (_-< _|
@@ -662,13 +783,20 @@
var $li = $link.parents('li');
var sys_path = $link.attr('data-drupal-link-system-path');
var url = $link.attr('href');
var title = $link.text();
if(!$li.is('.opened')){
_$entrees_block_termlinks.parents('li').removeClass('opened');
$li.addClass('opened');
$li.parents('.item-list').addClass('opened')
filterEntree(tid);
if(bubbling){
_$body.trigger({'type':'open_entree', 'tid':tid, 'url':url, 'sys_path':sys_path});
_$body.trigger({
'type':'open_entree',
'tid':tid,
'url':url,
'sys_path':sys_path,
'title':title
});
}
// bubbling is true only when event is a real click on entree link
}else if(bubbling){
@@ -720,7 +848,8 @@
// / __| ___ __ _ _ _ __| |_
// \__ \/ -_) _` | '_/ _| ' \
// |___/\___\__,_|_| \__|_||_|
function filterSearchResults(nids){
// and ajax modal content filtering
function filterByNids(nids){
shutDownArticles();
_nodes_centered = [];
@@ -742,6 +871,13 @@
// \__ \/ _| '_/ _` | ' \| '_ \ | | ' \/ _` |
// |___/\__|_| \__,_|_|_|_|_.__/_|_|_||_\__, |
// |___/
// function resolveNormalPosAllNodes(){
// console.log('resolveNormalPosAllNodes');
// for (var i = 0; i < _nodes.length; i++) {
// _nodes[i].resolveNormalPos();
// }
// };
function scrambleCollection(){
// console.log('scrambleCollection');
for (var i = 0; i < _nodes.length; i++) {
@@ -800,6 +936,10 @@
_no_articles_nodes[i].fade();
}
updateRandomPlaylist(_articles_nodes);
if(typeof _paq !== 'undefined'){
// trackEvent(category, action, [name], [value])
_paq.push(['trackEvent', 'Corpus Articles', 'on']);
}
};
function deactivateArticlesFilter(){
//console.log('deactivateArticlesFilter');
@@ -808,6 +948,10 @@
_no_articles_nodes[i].unFade();
}
updateRandomPlaylist(_playlist);
if(typeof _paq !== 'undefined'){
// trackEvent(category, action, [name], [value])
_paq.push(['trackEvent', 'Corpus Articles', 'off']);
}
};
function shutDownArticles(){
// shutdown articles if active
@@ -881,6 +1025,11 @@
})
.on('close-all-entree', function(e){
closeAllEntries();
})
.on('scramble-collection', function(e){
console.log('scramble-collection', e);
// resolveNormalPosAllNodes();
scrambleCollection();
});
_$entrees_block_termlinks.on('click', function(event) {
@@ -909,10 +1058,15 @@
.on('chutier-action-done', function(e) {
_nodes_by_nid[e.target_id].chutier_action = e.new_action;
})
.on('ajax-node-loaded-linked-documents', function(e){
console.log("Edlp Corpus, ajax-node-loaded-linked-documents",e.nids);
// filter map's nodes
filterByNids(e.nids);
})
.on('search-results-loaded', function(e){
//console.log("Edlp Corpus, search-results-loaded",e.results);
// TODO: filter map's nodes
filterSearchResults(e.results);
// filter map's nodes
filterByNids(e.results);
})
.on('search-closed', function(e){
scrambleCollection();
@@ -927,6 +1081,10 @@
.parents('.item-list').removeClass('opened');
scrambleCollection();
}
})
.on('visible-space-changed', function(e){
// limits are absolute distance from each side (not positions from left)
moveEvolutionZone(e.left_limit, e.right_limit);
});
};
@@ -1030,7 +1188,7 @@
// | / -_) ' \/ _` / -_) '_|
// |_|_\___|_||_\__,_\___|_|
function render(){
_ctx.clearRect(0, 0, _canvas.width, _canvas.height);
_ctx.clearRect(0, 0, _scene_props.width, _scene_props.height);
checkParticulesCollisions();
@@ -8,6 +8,7 @@ namespace Drupal\edlp_corpus\Plugin\Block;
use Drupal\Core\Block\BlockBase;
use Drupal\Core\Link;
use Drupal\Core\Url;
use Drupal\taxonomy\Entity\Term;
use Drupal\workflow\Entity\WorkflowManager;
/**
@@ -24,26 +25,40 @@ class BlockEntrees extends BlockBase {
*/
public function build() {
$language = \Drupal::languageManager()->getCurrentLanguage()->getId();
$query = \Drupal::entityQuery('taxonomy_term')
// ->sort('weight', 'DESC')
// ->sort('name', 'DESC')
->condition('vid', 'entrees');
$tids = $query->execute();
$terms = entity_load_multiple('taxonomy_term', $tids);
// dsm($terms);
foreach ($terms as $term) {
// dpm($term->toArray());
$tid = $term->id();
$name = $term->getName();
// $terms = entity_load_multiple('taxonomy_term', $tids);
// $terms = \Drupal::entityManager()->getStorage('taxonomy_term')->loadMultiple($terms);
$terms = Term::loadMultiple($tids);
$ordered_terms = [];
foreach ($terms as $term) {
// remove masqué
$sid = WorkflowManager::getCurrentStateId($term, 'field_workflow');
if($sid == 'generique_masque') continue;
// translate the term
$term = \Drupal::service('entity.repository')->getTranslationFromContext($term, $language);
$name = $term->getName();
$ordered_trans_terms[$name] = $term;
}
ksort($ordered_trans_terms);
// dsm($terms);
foreach ($ordered_trans_terms as $name => $term) {
$tid = $term->id();
$entree = array(
'tid'=>$tid
);
// term name
// term link
$url = Url::fromRoute('entity.taxonomy_term.canonical', ['taxonomy_term'=>$tid]);
$url->setOptions(array(
'attributes' => array(
@@ -102,6 +102,7 @@ class ProductionsController extends ControllerBase {
$data = [
'rendered'=> $rendered,
'title'=> 'Productions',
// 'block' => array(
// 'rendered'=> \Drupal::service('renderer')->renderRoot($block_render),
// 'region'=> str_replace('_', '-', $block->getRegion()),
@@ -120,7 +121,7 @@ class ProductionsController extends ControllerBase {
'#set_active_class' => TRUE,
];
$translations_rendered = \Drupal::service('renderer')->executeInRenderContext(new RenderContext(), function () use ($translations_build) {return render($translations_build);});
$data ['translations_links'] = $translations_rendered;
}
@@ -1,4 +1,125 @@
(function ($, Drupal, drupalSettings) {
(function($,Drupal,drupalSettings){var settings=drupalSettings.edlp_search;var _$body=$('body');var _$container;var _$form;function init(){initEvents();initAjax();};function initEvents(){$('body').on('new-content-ajax-loaded',initAjax).on('edlp_search_search_form-col-closed',onSearchClosed);};function initAjax(){_$form=$('#edlp-search-form:not(.ajax-enabled)');if(!_$form.length)return false;_$form=$('#edlp-search-form:not(.ajax-enabled)').on('submit',onSubmitForm).addClass('ajax-enabled');_$container=_$form.parents('.row');if(!_$container.length){_$container=_$form.parent();}};function onSubmitForm(e){e.preventDefault();var args={};args.keys=$('input[type="search"]',this).val();args.entries=[];$('input[type="checkbox"]:checked','#edit-entries').each(function(index,el){args.entries.push($(this).val());});args.langues=$('input[name="langues"]',this).val();args.genres=$('input[name="genres"]',this).val();loadResults(args);return false;};function loadResults(args){_$form.addClass('ajax-loading');_$body.addClass('ajax-loading');$('[theme="edlp_search_results"]',_$container).addClass('ajax-loading');var path=window.location.origin+drupalSettings.path.baseUrl+settings.results_ajax_url;$.getJSON(path,args).done(function(data){onResultsLoaded(data);}).fail(function(jqxhr,textStatus,error){onResultsLoadFail(jqxhr,textStatus,error);});};function onResultsLoaded(data){_$form.removeClass('ajax-loading');_$body.removeClass('ajax-loading');$prev_results=$('[theme="edlp_search_results"]',_$container);if($prev_results.length){$prev_results.replaceWith(data.rendered);}else{_$container.append(data.rendered);}
_$body.trigger({'type':'search-results-loaded','results':data.results_nids});};function onResultsLoadFail(jqxhr,textStatus,error){void 0;};function onSearchClosed(e){$('div[theme="edlp_search_results"]').remove();_$body.trigger({'type':'search-closed'});}
init();})(jQuery,Drupal,drupalSettings);
var settings = drupalSettings.edlp_search;
var _$body = $('body');
var _$container;
var _$form;
function init(){
// console.log('EdlpSearch Init', settings);
initEvents();
initAjax();
};
function initEvents(){
$('body')
.on('new-content-ajax-loaded', initAjax)
.on('edlp_search_search_form-col-closed', onSearchClosed);
};
function initAjax(){
_$form = $('#edlp-search-form:not(.ajax-enabled)');
if(!_$form.length) return false;
//console.log('EdlpSearch initAjaxForm()');
_$form = $('#edlp-search-form:not(.ajax-enabled)')
.on('submit', onSubmitForm)
.addClass('ajax-enabled');
_$container = _$form.parents('.row');
if(!_$container.length){
_$container = _$form.parent();
}
};
function onSubmitForm(e){
e.preventDefault();
// console.log('onSubmitForm',e);
var args = {};
// search for key words
args.keys = $('input[type="search"]', this).val();
// entries filter
args.entries = [];
$('input[type="checkbox"]:checked', '#edit-entries').each(function(index, el) {
args.entries.push($(this).val());
});
// langues
args.langues = $('input[name="language"]', this).val();
// genres
args.genres = $('input[name="genres"]', this).val();
//console.log('EdlpSearch onSubmitForm() : args',args);
loadResults(args);
return false;
};
function loadResults(args){
//console.log('EdlpSearch loadResults() : args', args);
_$form.addClass('ajax-loading');
_$body.addClass('ajax-loading');
$('[theme="edlp_search_results"]', _$container).addClass('ajax-loading');
var path = window.location.origin + drupalSettings.path.baseUrl +settings.results_ajax_url;
$.getJSON(path, args)
.done(function(data){
onResultsLoaded(data);
})
.fail(function(jqxhr, textStatus, error){
onResultsLoadFail(jqxhr, textStatus, error);
});
};
function onResultsLoaded(data){
// console.log('EdlpSearch onResultsLoaded()', data);
_$form.removeClass('ajax-loading');
_$body.removeClass('ajax-loading');
// insert results col
$prev_results = $('[theme="edlp_search_results"]', _$container);
if($prev_results.length){
$prev_results.replaceWith(data.rendered);
}else{
_$container.append(data.rendered);
}
// trigger event
_$body.trigger({
'type':'search-results-loaded',
'results':data.results_nids
});
// piwik
if(typeof _paq !== 'undefined'){
// page tracking
// https://matomo.org/blog/2017/02/how-to-track-single-page-websites-using-piwik-analytics/
// _paq.push(['setCustomUrl', state.url]);
// _paq.push(['setDocumentTitle', data.title]);
// _paq.push(['trackPageView']);
// trackEvent(category, action, [name], [value])
var search_name = data.keys+';'+data.langues+';'+data.genres+';'+data.entry_names.join(',');
// _paq.push(['trackEvent', 'AjaxSearch', 'Results', search_name, data.results_nids.length]);
// piwik track searches
// trackSiteSearch(keyword, [category], [resultsCount])
_paq.push(['trackSiteSearch', search_name, 'search', data.results_nids.length]);
}
};
function onResultsLoadFail(jqxhr, textStatus, error){
console.warn('EdlpSearch : search results ajax load failed : '+error, jqxhr.responseText);
};
function onSearchClosed(e){
// console.log('Edlp Search onSearchClosed()');
$('div[theme="edlp_search_results"]').remove();
// trigger event
_$body.trigger({'type':'search-closed'});
}
init();
})(jQuery, Drupal, drupalSettings);
@@ -46,7 +46,7 @@
});
// langues
args.langues = $('input[name="langues"]', this).val();
args.langues = $('input[name="language"]', this).val();
// genres
args.genres = $('input[name="genres"]', this).val();
@@ -92,6 +92,22 @@
'results':data.results_nids
});
// piwik
if(typeof _paq !== 'undefined'){
// page tracking
// https://matomo.org/blog/2017/02/how-to-track-single-page-websites-using-piwik-analytics/
// _paq.push(['setCustomUrl', state.url]);
// _paq.push(['setDocumentTitle', data.title]);
// _paq.push(['trackPageView']);
// trackEvent(category, action, [name], [value])
var search_name = data.keys+';'+data.langues+';'+data.genres+';'+data.entry_names.join(',');
// _paq.push(['trackEvent', 'AjaxSearch', 'Results', search_name, data.results_nids.length]);
// piwik track searches
// trackSiteSearch(keyword, [category], [resultsCount])
_paq.push(['trackSiteSearch', search_name, 'search', data.results_nids.length]);
}
};
function onResultsLoadFail(jqxhr, textStatus, error){
@@ -78,7 +78,8 @@ class EdlpSearchController extends ControllerBase {
$rendered = render($this->renderable);
$data = [
'rendered' => $rendered
'rendered' => $rendered,
'title' => 'Search',
];
// translations links
@@ -208,6 +209,9 @@ class EdlpSearchController extends ControllerBase {
// if($this->request->query->get('field_synonyms')){
$this->field_synonyms = $this->request->query->get('field_synonyms');
// }
// if($this->request->query->get('node_type')){
// $this->node_type = $this->request->query->get('node_type');
// }
$this->keys = $this->request->query->get('q');
}
@@ -246,6 +250,9 @@ class EdlpSearchController extends ControllerBase {
'test'=>'search results',
'keys'=>$this->keys,
'entries' => $this->entries,
'entry_names' => $this->entry_names,
'langues' => $this->langues,
'genres' => $this->genres,
'rendered'=> $rendered,
'results_nids'=>$results_nids,
]);
@@ -322,10 +329,13 @@ class EdlpSearchController extends ControllerBase {
}
// entries
$this->entry_names = [];
if (!empty($this->entries)){
$terms = entity_load_multiple('taxonomy_term', $this->entries);
$entries_condition_group = $query->createConditionGroup();
foreach ($this->entries as $tid) {
foreach ($terms as $tid => $term) {
$entries_condition_group->addCondition('field_entrees', (int)$tid, "=");
$this->entry_names[] = $term->getName();
}
// dpm($entries_condition_group);
$query->addConditionGroup($entries_condition_group);
@@ -333,6 +343,10 @@ class EdlpSearchController extends ControllerBase {
// TODO: locuteurs
$language = \Drupal::languageManager()->getCurrentLanguage()->getId();
// $language = \Drupal::languageManager()->getCurrentLanguage()->getName();
$query->addCondition('search_api_language', $language);
$result = $query->execute();
$items = $result->getResultItems();
// dpm($items);
@@ -29,6 +29,8 @@ class EdlpSearchForm extends FormBase {
'#title' => $this->t('Search'),
'keys' => [
'#type' => 'search',
'#autocomplete_route_name' => 'edlp_search.edlp_search_controller_autocomplete',
'#autocomplete_route_parameters' => array('field_name' => 'title'),
'#maxlength' => 20,
'#size' => 15,
'#weight' => '0',
@@ -1,10 +1,408 @@
(function ($, Drupal, drupalSettings) {
(function($,Drupal,drupalSettings){var _settings=drupalSettings.edlp_studio;var $composer;function init(){initEvents();initStudio();};function initEvents(){$('body').on('new-audio-cartel-loaded',initAjaxChutierLinks).on('new-content-ajax-loaded',initStudio).on('all-modal-closed',initStudio);};function initStudio(){if($('#studio-ui').length){$composer=$('.composition_ui .composer','#studio-ui');initAjaxChutierLinks();initAjaxCompoLinks();initDragAndDropUI();$('body').trigger({'type':'studio-initialized'});}else{$('body').trigger({'type':'studio-not-active'});}}
function initAjaxChutierLinks(){$('.chutier-ajax-link:not(.ajax-enabled)').addClass('ajax-enabled').on('click',onClickChutierAjaxLink);};function onClickChutierAjaxLink(e){e.preventDefault();addRemoveToChutier($(this));return false;};function addRemoveToChutier($link){var ajax_path=$link.attr('data-drupal-link-system-path');var path=window.location.origin+drupalSettings.path.baseUrl+ajax_path;$link.addClass('ajax-loading');$.getJSON(path,{}).done(function(data){onActionToChutierDone($link,data);}).fail(function(jqxhr,textStatus,error){onErrorActionToChutier(jqxhr,textStatus,error,$link);});};function onActionToChutierDone($link,data){$('body').trigger({'type':'chutier-action-done','action_done':data.action_done,'new_action':data.action_done=='add'?'remove':'add','target_id':$link.attr('target_id'),});$link.replaceWith(data.new_link);initAjaxChutierLinks();updateStudioChutier();};function onErrorActionToChutier(jqxhr,textStatus,error,$link){void 0;};function initAjaxCompoLinks(){$('.new-composition-link:not(.ajax-enabled)').on('click',onClickNewCompoLink).addClass('ajax-enabled');$('.composition-link:not(.ajax-enabled)').on('click',onClickCompoLink).addClass('ajax-enabled');$('.delete-composition-link:not(.ajax-enabled)').on('click',onClickDeleteCompoLink).addClass('ajax-enabled');};function onClickCompoLink(e){e.preventDefault();openCompo($(this));return false;};function openCompo($link){var cid=$link.attr('cid');var ajax_path=_settings.open_compo_ajax_url+'/'+cid;var path=window.location.origin+Drupal.url(ajax_path);$link.addClass('ajax-loading');$composer.addClass('ajax-loading');$.getJSON(path,{}).done(function(data){onOpenCompoDone(data,$link);}).fail(function(jqxhr,textStatus,error){onErrorOpenCompo(jqxhr,textStatus,error,$link);});};function onOpenCompoDone(data,$link){$('.composition-link').removeClass('is-active');$link.removeClass('ajax-loading').addClass('is-active');if($('.composition',$composer).length){$('.composition',$composer).replaceWith(data.compo);}else{$('header',$composer).after(data.compo);}
$composer.removeClass('ajax-loading');initDragAndDropUI();$('body').trigger({'type':'on-studio-compo-opened'});};function onErrorOpenCompo(jqxhr,textStatus,error,$link){$link.removeClass('ajax-loading');void 0;};function onClickNewCompoLink(e){e.preventDefault();setInputForNewCompoName($(this));return false;};function setInputForNewCompoName($link){var $form=$('<form>').addClass('new-compo-form').append($('<input>').attr('type','text').attr('placeholder','new name')).append($('<button>').attr('type','submit').html('+')).submit(function(e){onNewCompoFormSubmit(e,$link,$(this));});$link.after($form).addClass('folded');$form.children('input[type="text"]').focus();};function onNewCompoFormSubmit(e,$link,$form){var name=$('input[type="text"]',$form).val();if(name!=''){$form.addClass('ajax-loading').children('*').attr('disabled','disabled');createNewCompo(name,$link,$form);}
e.preventDefault();};function createNewCompo(name,$link,$form){var ajax_path=$link.attr('data-drupal-link-system-path');var path=window.location.origin+drupalSettings.path.baseUrl+ajax_path;$.getJSON(path,{'new_name':name}).done(function(data){onCreateCompoDone(data,$link,$form);}).fail(function(jqxhr,textStatus,error){onErrorCreateCompo(jqxhr,textStatus,error,$link);});};function onCreateCompoDone(data,$link,$form){var $new_link=$(data.new_link);var $delete_link=$(data.delete_link);$link.removeClass('folded').parents('li').before($('<li>').append($new_link).append($delete_link));$form.remove();initAjaxCompoLinks();openCompo($new_link);};function onErrorCreateCompo(jqxhr,textStatus,error,$link){void 0;};function onClickDeleteCompoLink(e){e.preventDefault();deleteCompo($(this));return false;};function deleteCompo($link){var ajax_path=$link.attr('data-drupal-link-system-path');var path=window.location.origin+Drupal.url(ajax_path);$link.parents('li').addClass('ajax-loading');$.getJSON(path,{}).done(function(data){onDeleteCompoDone(data,$link);}).fail(function(jqxhr,textStatus,error){onErrorDeleteCompo(jqxhr,textStatus,error,$link);});};function onDeleteCompoDone(data,$link,$form){if(data.status=="ok"){$link.parents('li').remove();if($('.composition-link').length){openCompo($('.composition-link').eq(0));}else{$('.composition',$composer).html();}}else{void 0;}};function onErrorDeleteCompo(jqxhr,textStatus,error,$link){$link.parents('li').removeClass('ajax-loading');void 0;};function updateStudioChutier(){$studioChutier=$('#studio-ui .chutier_ui');if($studioChutier.length){var ajax_path=_settings.chutier_ui_ajax;var path=window.location.origin+drupalSettings.path.baseUrl+ajax_path;$studioChutier.addClass('loading');$.getJSON(path,{}).done(function(data){onLoadedChutier($studioChutier,data);}).fail(function(jqxhr,textStatus,error){onLoadChutierError(jqxhr,textStatus,error,$studioChutier);});}};function onLoadedChutier($studioChutier,data){$studioChutier.replaceWith(data.rendered);initAjaxChutierLinks();setChutierDraggable();$('body').trigger({'type':'on-studio-chutier-updated'});}
function onLoadChutierError(jqxhr,textStatus,error,$studioChutier){void 0;$studioChutier.removeClass('loading');}
function initDragAndDropUI(){if(!$('.composition_ui .composer .composition .field--name-documents').length){$field_documents=$('<div>').addClass('field').addClass('field--name-documents').appendTo('.composition_ui .composer .composition');}else{$field_documents=$('.composition_ui .composer .composition .field--name-documents');$('.field__item',$field_documents).each(function(i){$(this).prepend($('<span>').addClass('handler'));});}
var $remove_zone=$('<div>').addClass('remove-drop-zone').appendTo('.composition_ui .composer .composition').droppable({tolerance:'pointer',over:function(e,ui){ui.draggable.addClass('ready-to-remove');},out:function(e,ui){ui.draggable.removeClass('ready-to-remove');},drop:function(e,ui){ui.draggable.remove();}});$field_documents.sortable({revert:false,handle:".handler",receive:function(e,ui){$('.field__item',this).attr('style','');},update:function(e,ui){onOrderChanged(e,ui);},connectWith:$remove_zone,});setChutierDraggable();};function setChutierDraggable(){$('.chutier_ui .item-list li>div').draggable({containment:$('#studio-ui'),scroll:false,helper:function(e){return $('<div>').addClass('field__item').append($('<article>').addClass('node').append($('<h2>').addClass('node-title').append($('.audio-link',this).clone().removeClass('ajax-enable')))).prepend($('<span>').addClass('handler'));},cursorAt:{bottom:10,left:10},zIndex:999,revert:true,revertDuration:0,connectToSortable:$('.composition_ui .composer .composition .field--name-documents'),});}
function onOrderChanged(e,ui){var cid=$(e.target).parents('.composition').attr('cid');var documents={};$('a',e.target).each(function(i){documents[i]=$(this).attr('nid');});recordCompoList(cid,documents);};function recordCompoList(cid,docs){var ajax_path=_settings.save_compo_ajax_url+'/'+cid;var path=window.location.origin+Drupal.url(ajax_path);$.getJSON(path,{documents:docs}).done(function(data){onRecordCompoDone(data);}).fail(function(jqxhr,textStatus,error){onErrorRecordCompo(jqxhr,textStatus,error);});$('body').trigger({'type':'on-studio-compo-updated'});}
function onRecordCompoDone(data){if(data.status=="ok"){}else{void 0;}};function onErrorRecordCompo(jqxhr,textStatus,error){void 0;};init();})(jQuery,Drupal,drupalSettings);
var _settings = drupalSettings.edlp_studio;
var $composer;
// audio play is handled by edlp_theme
function init(){
// console.log('Studio Init');
initEvents();
initStudio();
};
function initEvents(){
$('body')
.on('new-audio-cartel-loaded', initAjaxChutierLinks)
.on('new-content-ajax-loaded', initStudio)
.on('all-modal-closed', initStudio);
};
function initStudio(){
if($('#studio-ui').length){
$composer = $('.composition_ui .composer', '#studio-ui');
initAjaxChutierLinks();
initAjaxCompoLinks();
initDragAndDropUI();
$('body').trigger({'type':'studio-initialized'});
}else{
$('body').trigger({'type':'studio-not-active'});
}
}
// ___ _ _ _ _ _ _ _ _ _
// / __| |_ _ _| |_(_)___ _ _ | \| |___ __| |___ | | (_)_ _ | |__ ___
// | (__| ' \ || | _| / -_) '_| | .` / _ \/ _` / -_) | |__| | ' \| / /(_-<
// \___|_||_\_,_|\__|_\___|_| |_|\_\___/\__,_\___| |____|_|_||_|_\_\/__/
function initAjaxChutierLinks(){
//console.log('studio initAjaxChutierLinks');
$('.chutier-ajax-link:not(.ajax-enabled)')
.addClass('ajax-enabled')
.on('click', onClickChutierAjaxLink);
};
function onClickChutierAjaxLink(e){
//console.log('studio onClickAjaxLink chutier');
e.preventDefault();
addRemoveToChutier($(this));
return false;
};
function addRemoveToChutier($link){
// var ajax_path = 'edlp_studio/ajax/chutier/add/'+id; // + '/' +cid;
var ajax_path = $link.attr('data-drupal-link-system-path');
var path = window.location.origin + drupalSettings.path.baseUrl + ajax_path;
$link.addClass('ajax-loading');
$.getJSON(path, {})
.done(function(data){
onActionToChutierDone($link, data);
})
.fail(function(jqxhr, textStatus, error){
onErrorActionToChutier(jqxhr, textStatus, error, $link);
});
};
function onActionToChutierDone($link, data){
//console.log('onActionToChutierDone',data);
$('body').trigger({
'type':'chutier-action-done',
'action_done':data.action_done,
'new_action':data.action_done == 'add' ? 'remove' : 'add',
'target_id':$link.attr('target_id'),
});
$link.replaceWith(data.new_link);
initAjaxChutierLinks();
// reload Studio chutier_ui's documents list
updateStudioChutier();
};
function onErrorActionToChutier(jqxhr, textStatus, error, $link){
console.warn('action to chuttier load failed : '+error, jqxhr.responseText);
};
// ___ _ _ _
// / __|___ _ __ _ __ ___ __(_) |_(_)___ _ _ ___
// | (__/ _ \ ' \| '_ \/ _ (_-< | _| / _ \ ' \(_-<
// \___\___/_|_|_| .__/\___/__/_|\__|_\___/_||_/__/
// |_|
function initAjaxCompoLinks(){
//console.log('studio initAjaxCompoLinks');
$('.new-composition-link:not(.ajax-enabled)')
.on('click', onClickNewCompoLink)
.addClass('ajax-enabled');
$('.composition-link:not(.ajax-enabled)')
.on('click', onClickCompoLink)
.addClass('ajax-enabled');
$('.delete-composition-link:not(.ajax-enabled)')
.on('click', onClickDeleteCompoLink)
.addClass('ajax-enabled');
};
// ___ ___
// / _ \ _ __ ___ _ _ / __|___ _ __ _ __ ___
// | (_) | '_ \/ -_) ' \ | (__/ _ \ ' \| '_ \/ _ \
// \___/| .__/\___|_||_| \___\___/_|_|_| .__/\___/
// |_| |_|
function onClickCompoLink(e){
e.preventDefault();
//console.log('onClickCompoLink');
openCompo($(this));
return false;
};
function openCompo($link){
var cid = $link.attr('cid');
var ajax_path = _settings.open_compo_ajax_url+'/'+cid;
var path = window.location.origin + Drupal.url(ajax_path);
$link.addClass('ajax-loading');
$composer.addClass('ajax-loading');
$.getJSON(path, {})
.done(function(data){
onOpenCompoDone(data, $link);
})
.fail(function(jqxhr, textStatus, error){
onErrorOpenCompo(jqxhr, textStatus, error, $link);
});
};
function onOpenCompoDone(data, $link){
//console.log('onActionToCompoDone',data);
$('.composition-link').removeClass('is-active');
$link.removeClass('ajax-loading').addClass('is-active');
if($('.composition', $composer).length){
$('.composition', $composer).replaceWith(data.compo);
}else{
$('header', $composer).after(data.compo);
}
$composer.removeClass('ajax-loading');
initDragAndDropUI();
$('body').trigger({
'type':'on-studio-compo-opened'
});
};
function onErrorOpenCompo(jqxhr, textStatus, error, $link){
$link.removeClass('ajax-loading');
console.warn('open compo load failed : '+error, jqxhr.responseText);
};
// _ _ _____ __ __ __ ___ _ __ _ __ ___
// | ' \/ -_) V V / / _/ _ \ ' \| '_ \/ _ \
// |_||_\___|\_/\_/ \__\___/_|_|_| .__/\___/
// |_|
function onClickNewCompoLink(e){
e.preventDefault();
setInputForNewCompoName($(this));
return false;
};
function setInputForNewCompoName($link){
var $form = $('<form>').addClass('new-compo-form')
.append($('<input>').attr('type', 'text').attr('placeholder', 'new name'))
.append($('<button>').attr('type', 'submit').html('+'))
.submit(function(e){
onNewCompoFormSubmit(e, $link, $(this));
});
$link
.after($form)
.addClass('folded');
$form.children('input[type="text"]').focus();
};
function onNewCompoFormSubmit(e, $link, $form){
var name = $('input[type="text"]',$form).val();
//console.log('onNewCompoFormSubmit', name);
if(name != ''){
$form.addClass('ajax-loading').children('*').attr('disabled', 'disabled');
createNewCompo(name, $link, $form);
}
e.preventDefault();
};
function createNewCompo(name,$link, $form){
var ajax_path = $link.attr('data-drupal-link-system-path');
var path = window.location.origin + drupalSettings.path.baseUrl + ajax_path;
// $link.addClass('ajax-loading');
$.getJSON(path, {
'new_name':name
})
.done(function(data){
onCreateCompoDone(data, $link, $form);
})
.fail(function(jqxhr, textStatus, error){
onErrorCreateCompo(jqxhr, textStatus, error, $link);
});
};
function onCreateCompoDone(data, $link, $form){
//console.log('onActionToCompoDone',data);
var $new_link = $(data.new_link);
var $delete_link = $(data.delete_link);
$link
.removeClass('folded')
.parents('li')
.before($('<li>').append($new_link).append($delete_link));
$form.remove();
// open new composition to composer
initAjaxCompoLinks();
openCompo($new_link);
};
function onErrorCreateCompo(jqxhr, textStatus, error, $link){
console.warn('action to compo load failed : '+error, jqxhr.responseText);
};
// ___ _ _
// | \ ___| |___| |_ ___ __ ___ _ __ _ __ ___
// | |) / -_) / -_) _/ -_) / _/ _ \ ' \| '_ \/ _ \
// |___/\___|_\___|\__\___| \__\___/_|_|_| .__/\___/
// |_|
function onClickDeleteCompoLink(e){
e.preventDefault();
// TODO: confirm compo deletion
deleteCompo($(this));
return false;
};
function deleteCompo($link){
var ajax_path = $link.attr('data-drupal-link-system-path');
var path = window.location.origin + Drupal.url(ajax_path);
$link.parents('li').addClass('ajax-loading');
$.getJSON(path, {})
.done(function(data){
onDeleteCompoDone(data, $link);
})
.fail(function(jqxhr, textStatus, error){
onErrorDeleteCompo(jqxhr, textStatus, error, $link);
});
};
function onDeleteCompoDone(data, $link, $form){
//console.log('onDeleteCompoDone',data);
if(data.status == "ok"){
$link.parents('li').remove();
//console.log("$('.composition-link').length", $('.composition-link').length);
if($('.composition-link').length){
openCompo($('.composition-link').eq(0));
}else{
$('.composition', $composer).html();
}
}else{
console.warn(data.message);
}
};
function onErrorDeleteCompo(jqxhr, textStatus, error, $link){
$link.parents('li').removeClass('ajax-loading');
console.warn('delete compo load failed : '+error, jqxhr.responseText);
};
// ___ _ _ _ _
// / __| |_ _ _ __| (_)___ ___ _ _(_)
// \__ \ _| || / _` | / _ \___| || | |
// |___/\__|\_,_\__,_|_\___/ \_,_|_|
// this seems dirty
function updateStudioChutier(){
$studioChutier = $('#studio-ui .chutier_ui');
if($studioChutier.length){
var ajax_path = _settings.chutier_ui_ajax;
var path = window.location.origin + drupalSettings.path.baseUrl + ajax_path;
$studioChutier.addClass('loading');
$.getJSON(path, {})
.done(function(data){
onLoadedChutier($studioChutier, data);
})
.fail(function(jqxhr, textStatus, error){
onLoadChutierError(jqxhr, textStatus, error, $studioChutier);
});
}
};
function onLoadedChutier($studioChutier, data){
$studioChutier.replaceWith(data.rendered);
initAjaxChutierLinks();
// set chutier element draggable again
setChutierDraggable();
$('body').trigger({
'type':'on-studio-chutier-updated'
});
}
function onLoadChutierError(jqxhr, textStatus, error, $studioChutier){
console.warn('Chutier load failed', jqxhr.responseText);
$studioChutier.removeClass('loading');
}
// ___ __ ___ _ _ ___
// | \ _ _ __ _ __ _ / _|___ | \ _ _ ___ _ __ | | | |_ _|
// | |) | '_/ _` / _` | > _|_ _| | |) | '_/ _ \ '_ \ | |_| || |
// |___/|_| \__,_\__, | \_____| |___/|_| \___/ .__/ \___/|___|
// |___/ |_|
function initDragAndDropUI(){
// check if field--name-documents exists
if (!$('.composition_ui .composer .composition .field--name-documents').length) {
// if not create it
$field_documents = $('<div>')
.addClass('field').addClass('field--name-documents')
.appendTo('.composition_ui .composer .composition');
}else{
// add real dom square element to handle sorting
$field_documents = $('.composition_ui .composer .composition .field--name-documents'); $('.field__item', $field_documents).each(function(i){
$(this).prepend($('<span>').addClass('handler'));
});
}
// create remove dropzone
var $remove_zone = $('<div>').addClass('remove-drop-zone')
.appendTo('.composition_ui .composer .composition')
.droppable({
tolerance:'pointer',
// scope:'composition_ui',
over:function(e,ui){
// console.log('on over remove : ui', ui);
ui.draggable.addClass('ready-to-remove');
},
out:function(e,ui){
// console.log('on over remove : ui', ui);
ui.draggable.removeClass('ready-to-remove');
},
drop:function(e,ui){
// console.log('on drop remove : ui', ui);
ui.draggable.remove();
// onOrderChanged(ui);
}
});
// create sortable
$field_documents.sortable({
revert:false,
handle: ".handler",
receive:function(e, ui){
$('.field__item', this).attr('style', '');
// TODO: trigger event to enable new audiolink player
},
update:function(e, ui){
onOrderChanged(e, ui);
},
connectWith : $remove_zone,
});
// set chutier element draggable
setChutierDraggable();
};
function setChutierDraggable(){
$('.chutier_ui .item-list li>div').draggable({
containment:$('#studio-ui'),
scroll:false,
helper:function(e){
// we reproduce here the irem structure of destination sortable elements
// var $audio_link = $('.audio-link',this);
return $('<div>').addClass('field__item')
.append(
$('<article>').addClass('node').append(
$('<h2>').addClass('node-title').append(
// $('<a>')
// .attr('nid', $audio_link.attr('nid'))
// .html($audio_link.html())
$('.audio-link',this).clone().removeClass('ajax-enable')
)
)
)
.prepend($('<span>').addClass('handler'));
},
// cursor:'grab',
cursorAt:{bottom:10,left:10},
zIndex:999,
revert:true,
revertDuration:0,
connectToSortable:$('.composition_ui .composer .composition .field--name-documents'),
});
}
function onOrderChanged(e, ui){
//console.log('onOrderChanged : e', e);
var cid = $(e.target).parents('.composition').attr('cid');
var documents = {};
$('a', e.target).each(function(i) {
// console.log(this);
documents[i] = $(this).attr('nid');
});
// console.log(documents);
recordCompoList(cid, documents);
};
function recordCompoList(cid, docs){
//console.log('recordCompoList '+cid, docs);
var ajax_path = _settings.save_compo_ajax_url+'/'+cid;
var path = window.location.origin + Drupal.url(ajax_path);
//console.log('path', path);
$.getJSON(path, {
documents:docs
})
.done(function(data){
onRecordCompoDone(data);
})
.fail(function(jqxhr, textStatus, error){
onErrorRecordCompo(jqxhr, textStatus, error);
});
$('body').trigger({
'type':'on-studio-compo-updated'
});
}
function onRecordCompoDone(data){
//console.log('onDeleteCompoDone',data);
if(data.status == "ok"){
}else{
console.warn(data.message);
}
};
function onErrorRecordCompo(jqxhr, textStatus, error){
console.warn('record compo failed : '+error, jqxhr.responseText);
};
init();
})(jQuery, Drupal, drupalSettings);
@@ -1,2 +1,20 @@
console.log('EDLP THEME HISTORY.js');
// var edlp is provided by edlp_ajax.module file
if(edlp.redirect){
console.log('history redirect', edlp);
console.log('window.location', window.location);
// window.localStorage.setItem('edlp_origin_path', edlp.sys_path.replace(/^\//, ''));
edlp.sys_path = edlp.sys_path.replace(/^\//, '');
void 0;if(edlp.redirect){void 0;void 0;edlp.sys_path=edlp.sys_path.replace(/^\//,'');edlp.url=window.location.pathname;edlp.hash=window.location.hash;window.localStorage.setItem('edlp_origin',JSON.stringify(edlp));window.location.replace(window.location.origin+'/'+edlp.lang_code);}else{void 0;}
// window.localStorage.setItem('edlp_origin_url', window.location.pathname);
edlp.url = window.location.pathname;
// window.localStorage.setItem('edlp_origin_hash', window.location.hash);
edlp.hash = window.location.hash;
window.localStorage.setItem('edlp_origin', JSON.stringify(edlp));
// redirect to home
window.location.replace(window.location.origin+'/'+edlp.lang_code);
}else{
console.log('history do not redirect');
}
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -11,6 +11,11 @@
var _audioPlayer;
var _randomPlayer;
var _compoPlayer;
var _ajax_timing = {
start:0,
end:0
};
var _corpus_promise;
// ___ _ _
// |_ _|_ _ (_) |_
@@ -19,6 +24,11 @@
function init(){
console.log("EdlpTheme init()");
if(!drupalSettings.path.isFront)
return;
_deferred = initEvents();
_audioPlayer = new AudioPlayer();
_compoPlayer = new CompoPlayer();
@@ -26,11 +36,10 @@
initHistory();
if(!drupalSettings.path.isFront)
return;
initEvents();
// if(!drupalSettings.path.isFront)
// return;
//
// initEvents();
};
// ___ _
@@ -38,8 +47,15 @@
// | _|\ V / -_) ' \ _(_-<
// |___|\_/\___|_||_\__/__/
function initEvents(){
// https://www.html5rocks.com/en/tutorials/async/deferred/
var $corpus_df = $.Deferred();
_corpus_promise = $corpus_df.promise();
_$body
.on('corpus-map-ready', onCorpusMapReady)
.on('corpus-map-ready', function(e){
onCorpusMapReady(e);
$corpus_df.resolve();
})
.on('on-studio-chutier-updated', initAjaxLinks)
.on('studio-initialized', function(e){
_compoPlayer.newCompo();
@@ -79,6 +95,18 @@
// };
var state = getSysPathState(e.sys_path);
history.pushState(state, null, e.url);
// piwik
if(typeof _paq !== 'undefined'){
// page tracking
// https://matomo.org/blog/2017/02/how-to-track-single-page-websites-using-piwik-analytics/
_paq.push(['setCustomUrl', e.url]);
_paq.push(['setDocumentTitle', e.title]);
_paq.push(['trackPageView']);
// js event
// trackEvent(category, action, [name], [value])
// _paq.push(['trackEvent', 'AjaxNav', 'loaded', state.url]);
}
}
})
.on('close_entree', function(e){
@@ -151,7 +179,7 @@
function ajaxLoadContent(state){
console.log('ajaxLoadContent : state', state);
_$body.addClass('ajax-loading');
_ajax_timing.start = performance.now();
var path = window.location.origin + Drupal.url(state.ajax_path);
$.getJSON(path, {})
.done(function(data){
@@ -231,6 +259,22 @@
$('a[data-drupal-link-system-path="'+menu_sys_path+'"]').addClass('is-active-trail');
}
}
// if entity has corpus-map's linked document call a filter to corpus map
if(typeof data.documents_lies != 'undefined'){
if(_corpus_ready){
_$body.trigger({
type:'ajax-node-loaded-linked-documents',
nids:data.documents_lies
});
}else{
_corpus_promise.done(function(){
_$body.trigger({
type:'ajax-node-loaded-linked-documents',
nids:data.documents_lies
});
});
}
}
// if block attached (eg : from edlp_productions module)
// not used anymore as production block is always present (but not visible)
@@ -279,6 +323,8 @@
initAjaxLinks();
checkVisibleCorpusMapSpace();
// trigger other modules behaviours
_$body.trigger({'type':'new-content-ajax-loaded'});
@@ -299,6 +345,22 @@
// console.log(window.location);
// /!\ we can not pushestate with absolute url /!\
history.pushState(state, null, state.url);
// piwik
if(typeof _paq !== 'undefined'){
// page tracking
// https://matomo.org/blog/2017/02/how-to-track-single-page-websites-using-piwik-analytics/
_paq.push(['setCustomUrl', state.url]);
_paq.push(['setDocumentTitle', data.title]);
// TODO: piwik track load time
_ajax_timing.end = performance.now();
_paq.push(['setGenerationTimeMs', _ajax_timing.end-_ajax_timing.start]);
_paq.push(['trackPageView']);
// js event
// trackEvent(category, action, [name], [value])
// _paq.push(['trackEvent', 'AjaxNav', 'loaded', state.url]);
}
}
};
@@ -346,12 +408,8 @@
}
// remove the col
$col.remove();
// if row is empty and we are not in productions or entree notice|index call closeAllModals()
if(!$('.col', _$row).length
&& !_$body.is('.entity-type-node.bundle-page')
&& !_$body.is('.entity-type-taxonomy_term.bundle-entrees')){
backToFrontPage();
}
checkRowEmpty();
checkVisibleCorpusMapSpace();
};
// _ _ ___ _ _
@@ -543,12 +601,13 @@
.emmit('stop-shuffle')
.openDocument({
nid:$link.attr('nid'),
audio_url:$link.attr('audio_url')
audio_url:$link.attr('audio_url'),
title:$link.find('.field--name-title').html()
});
return false;
}
// NOT USED (YET)
// NOT USED ( YET ? )
// if($link.is('.language-link')){
// TODO: change global site current language
// load all blocks translated (exepted language switcher) ... :/
@@ -633,6 +692,40 @@
}
};
function checkVisibleCorpusMapSpace(){
var left_limit = 0, right_limit = 0;
_$row.find('.col').each(function(i,e){
var $col = $(this);
var offset = $col.offset();
switch(true){
case $col.is('.float-right'):
right_limit = Math.max(right_limit, Math.abs(offset.left-window.innerWidth));
break;
default:
left_limit = Math.max(left_limit, offset.left+$col.width());
break;
}
});
console.log('checkVisibleCorpusMapSpace left_limit:'+left_limit+" right_limit:"+right_limit);
if(_corpus_ready){
_$body.trigger({
type:'visible-space-changed',
left_limit:left_limit,
right_limit:right_limit
});
}else{
_corpus_promise.done(function(){
_$body.trigger({
type:'visible-space-changed',
left_limit:left_limit,
right_limit:right_limit
});
});
}
};
// _ _ _
// /_\ _ _ __| (_)___
// / _ \ || / _` | / _ \
@@ -646,7 +739,7 @@
this.fid;
this.audio = new Audio();
// audio events
this.audio_events = ["loadedmetadata","canplay","playing","pause","timeupdate","ended"];
this.audio_events = ["loadedmetadata","canplay","playing","pause","timeupdate","ended","error"];
// UI dom objects
this.$container = $('<div id="audio-player">');
@@ -695,8 +788,9 @@
};
AudioPlayer.prototype = {
init(){
this.$container_parent = $('header[role="banner"] .region-header');
// append ui to document
this.$container.appendTo('header[role="banner"] .region-header');
this.$container.appendTo(this.$container_parent);
// record timeline width
this.timeline_w = parseInt(this.$timeline.width());
// init audio events
@@ -719,7 +813,8 @@
// console.log('AudioPlayer openDocument', node);
if(typeof node == 'undefined'
|| typeof node.nid == 'undefined'
|| typeof node.audio_url == 'undfined'){
|| typeof node.audio_url == 'undfined'
|| typeof node.document_url == 'undfined'){
console.warn('AudioPlayer openDocument() node is malformed', node);
return false;
}
@@ -732,9 +827,14 @@
// add the document opening to history to be able to share and play audio from any where
if(caller != "history_first_load"){
state = {
var state = {
audio:true,
node:node,
node:{
nid:node.nid,
audio_url:node.audio_url,
document_url:node.document_url,
title:node.title || null,
},
historic_index : this.currentHistoricIndex,
};
@@ -747,6 +847,22 @@
this.emmit('audio-open-document', {caller:caller});
// piwik
// debugger;
if(typeof _paq !== 'undefined'){
// page tracking
// https://matomo.org/blog/2017/02/how-to-track-single-page-websites-using-piwik-analytics/
// _paq.push(['setCustomUrl', state.url]);
// _paq.push(['setDocumentTitle', data.title]);
// _paq.push(['trackPageView']);
// js event
// trackEvent(category, action, [name], [value])
if(typeof node.title != 'undefined'){
_paq.push(['trackEvent', 'Audio', 'play', node.title]);
}
}
this.launch();
},
launch(){
@@ -769,7 +885,7 @@
},
// audio functions
setSRC(url){
// console.log('AudioPlayer setSRC : url', url);
console.log('AudioPlayer setSRC : url', url);
this.audio.src = url;
},
onLoadedmetadata(){
@@ -780,20 +896,26 @@
this.updateLoadingBar();
},
updateLoadingBar(){
this.$loader.css({
'width':parseInt((100 * this.audio.buffered.end(0) / this.audio.duration), 10)+'%'
});
if( this.audio.buffered.end(0) < this.audio.duration ){
// loop through this function until file is fully loaded
var that = this;
window.requestAnimationFrame(that.updateLoadingBar.bind(that));
}else{
//console.log('Audio fully loaded');
// if (this.audio.readyState === 4){
if(this.audio.buffered.length>0){
this.$loader.css({
'width':parseInt((100 * this.audio.buffered.end(0) / this.audio.duration), 10)+'%'
});
if( this.audio.buffered.end(0) < this.audio.duration ){
// loop through this function until file is fully loaded
var that = this;
window.requestAnimationFrame(that.updateLoadingBar.bind(that));
}else{
//console.log('Audio fully loaded');
}
}
},
onCanplay(){
this.play();
},
onError(){
console.warn("Audio Error " + this.audio.error.code + "; details: " + this.audio.error.message);
},
play(){
this.clearTimeOutToHide();
this.audio.play();
@@ -884,6 +1006,7 @@
},
// global
show(){
this.$container_parent.addClass('audio-player-visible');
this.$container.addClass('visible');
},
showHidePreviousBtn(){
@@ -914,6 +1037,7 @@
},
hide(){
// console.log('AudioPlayer hide()');
this.$container_parent.removeClass('audio-player-visible');
this.$container.removeClass('visible');
// trigger highlighted node remove on corpus map
try {
@@ -1009,12 +1133,21 @@
this.$btn.addClass('is-active');
this.shuffle();
this.next();
// piwik
if(typeof _paq !== 'undefined'){
// trackEvent(category, action, [name], [value])
_paq.push(['trackEvent', 'RandomPlayer', 'start']);
}
},
stop(){
this.active = _audioPlayer.shuffle_is_active = false;
this.$btn.removeClass('is-active');
// stop audio player
// _audioPlayer.stop();
if(typeof _paq !== 'undefined'){
// trackEvent(category, action, [name], [value])
_paq.push(['trackEvent', 'RandomPlayer', 'stop']);
}
},
next(){
if(this.active && this.shuffledPlaylist.length > 0)
@@ -1262,53 +1395,6 @@
// }
};
// ___ _ ___
// | __| _ ___ _ _| |_| _ \__ _ __ _ ___
// | _| '_/ _ \ ' \ _| _/ _` / _` / -_)
// |_||_| \___/_||_\__|_| \__,_\__, \___|
// |___/
function backToFrontPage(pop_state){
console.log('backToFrontPage', pop_state);
closeAllModals();
// assume we are going back to front page
$('body').removeClass().addClass('path-frontpage');
$('a[data-drupal-link-system-path="<front>"]').addClass('is-active');
// close entrees
_$corpus_canvas.trigger({'type':'close-all-entree'});
if(typeof pop_state == "undefined" || !pop_state){
console.log('backToFrontPage push state');
history.pushState({home:true}, null, drupalSettings.path.baseUrl+drupalSettings.path.currentLanguage);
}
}
function initHome(){
addCloseModalBtnToCols();
// console.log('theme : initHome');
// console.log('theme : initProductions');
var $grid = $('.grid',_$row).masonry({
itemSelector:'.col',
columnWidth:'.col-2',
horizontalOrder: true,
containerStyle: null,
// disable initial layout
// initLayout: false,
});
// bind event
// $grid.masonry( 'on', 'layoutComplete', function() {
// console.log('layout is complete');
// });
// layout Masonry after each image loads
$grid.imagesLoaded().progress( function() {
$grid.masonry('layout');
});
$grid.imagesLoaded(function(){
$grid.masonry('layout');
});
}
// ___ _ _ _
// | _ \_ _ ___ __| |_ _ __| |_(_)___ _ _ ___
// | _/ '_/ _ \/ _` | || / _| _| / _ \ ' \(_-<
@@ -1361,6 +1447,54 @@
});
};
// ___ _ ___
// | __| _ ___ _ _| |_| _ \__ _ __ _ ___
// | _| '_/ _ \ ' \ _| _/ _` / _` / -_)
// |_||_| \___/_||_\__|_| \__,_\__, \___|
// |___/
function backToFrontPage(pop_state){
console.log('backToFrontPage', pop_state);
closeAllModals();
// assume we are going back to front page
$('body').removeClass().addClass('path-frontpage');
$('a[data-drupal-link-system-path="<front>"]').addClass('is-active');
// close entrees
_$corpus_canvas.trigger({'type':'close-all-entree'});
_$corpus_canvas.trigger({'type':'scramble-collection'});
if(typeof pop_state == "undefined" || !pop_state){
console.log('backToFrontPage push state');
history.pushState({home:true}, null, drupalSettings.path.baseUrl+drupalSettings.path.currentLanguage);
}
}
function initHome(){
addCloseModalBtnToCols();
// console.log('theme : initHome');
// console.log('theme : initProductions');
var $grid = $('.grid',_$row).masonry({
itemSelector:'.col',
columnWidth:'.col-2',
horizontalOrder: true,
containerStyle: null,
// disable initial layout
// initLayout: false,
});
// bind event
// $grid.masonry( 'on', 'layoutComplete', function() {
// console.log('layout is complete');
// });
// layout Masonry after each image loads
$grid.imagesLoaded().progress( function() {
$grid.masonry('layout');
});
$grid.imagesLoaded(function(){
$grid.masonry('layout');
});
}
// __ __ _ _
// | \/ |___ __| |__ _| |___
// | |\/| / _ \/ _` / _` | (_-<
@@ -1371,6 +1505,26 @@
_$row.html('');
_$ajaxLinks.removeClass('is-active');
_$body.trigger({'type':'all-modal-closed'});
// checkRowEmpty();
};
function checkRowEmpty(){
// if row is empty and we are not in productions or entree notice|index call closeAllModals()
if(!$('.col', _$row).length){
if(!_$body.is('.entity-type-taxonomy_term.bundle-entrees')){
if(!_$body.is('.entity-type-node.bundle-page')){
// we weren't on production or entree, so go back to front page
backToFrontPage();
}else{
// if we were on production page just scramble collection in case of map was filtered
_$corpus_canvas.trigger({'type':'scramble-collection'});
}
}else{
// remove is-active class from index or notice entree links
$('.entree-content a.is-active').removeClass('is-active');
// TODO: remove the hash index or notice
}
}
};
// _ _ _

Some files were not shown because too many files have changed in this diff Show More