From 4343e23e0486a1789b14bb12ca489ba573e0064e Mon Sep 17 00:00:00 2001 From: buddh4 Date: Wed, 18 Mar 2020 18:55:14 +0100 Subject: [PATCH] Enh #3928: Add default `Stream.initScroll` with support of IntersectionObserver --- composer.json | 1 + composer.lock | 628 +++++++++++------- protected/humhub/assets/AppAsset.php | 1 + .../IntersectionObserverPolyfillAsset.php | 40 ++ protected/humhub/docs/CHANGELOG_DEV.md | 1 + .../activity/resources/js/humhub.activity.js | 67 +- .../resources/js/humhub.stream.Stream.js | 61 +- .../stream/resources/js/humhub.stream.wall.js | 34 +- 8 files changed, 503 insertions(+), 330 deletions(-) create mode 100644 protected/humhub/assets/IntersectionObserverPolyfillAsset.php diff --git a/composer.json b/composer.json index 8b4df06be9..89fe334541 100644 --- a/composer.json +++ b/composer.json @@ -36,6 +36,7 @@ "npm-asset/select2-bootstrap-theme": "0.1.0-beta.4", "npm-asset/bootstrap-tour": "0.11.0", "npm-asset/swiped-events": "1.0.9", + "npm-asset/intersection-observer": "^0.7.0", "cebe/markdown": "1.0.2", "firebase/php-jwt": "^5.0", "jbroadway/urlify": "^1.0", diff --git a/composer.lock b/composer.lock index 1e857b8acb..3a7cfa04dc 100644 --- a/composer.lock +++ b/composer.lock @@ -1,23 +1,25 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "20a6062be83639e35f120e8207109814", + "hash": "6e01b28d8fac3eb6812434caa45dc069", + "content-hash": "1ea6b490122d16bce47d98849bffc587", "packages": [ { "name": "bower-asset/bootstrap", "version": "v3.4.1", "source": { "type": "git", - "url": "git@github.com:twbs/bootstrap.git", + "url": "https://github.com/twbs/bootstrap.git", "reference": "68b0d231a13201eb14acd3dc84e51543d16e5f7e" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/twbs/bootstrap/zipball/68b0d231a13201eb14acd3dc84e51543d16e5f7e", - "reference": "68b0d231a13201eb14acd3dc84e51543d16e5f7e" + "reference": "68b0d231a13201eb14acd3dc84e51543d16e5f7e", + "shasum": null }, "require": { "bower-asset/jquery": ">=1.9.1,<4.0" @@ -38,7 +40,8 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/RobinHerbots/Inputmask/zipball/5e670ad62f50c738388d4dcec78d2888505ad77b", - "reference": "5e670ad62f50c738388d4dcec78d2888505ad77b" + "reference": "5e670ad62f50c738388d4dcec78d2888505ad77b", + "shasum": null }, "require": { "bower-asset/jquery": ">=1.7" @@ -53,13 +56,14 @@ "version": "3.4.1", "source": { "type": "git", - "url": "git@github.com:jquery/jquery-dist.git", + "url": "https://github.com/jquery/jquery-dist.git", "reference": "15bc73803f76bc53b654b9fdbbbc096f56d7c03d" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/jquery/jquery-dist/zipball/15bc73803f76bc53b654b9fdbbbc096f56d7c03d", - "reference": "15bc73803f76bc53b654b9fdbbbc096f56d7c03d" + "reference": "15bc73803f76bc53b654b9fdbbbc096f56d7c03d", + "shasum": null }, "type": "bower-asset", "license": [ @@ -71,13 +75,14 @@ "version": "1.12.1", "source": { "type": "git", - "url": "https://github.com/components/jqueryui.git", + "url": "git@github.com:components/jqueryui.git", "reference": "44ecf3794cc56b65954cc19737234a3119d036cc" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/components/jqueryui/zipball/44ecf3794cc56b65954cc19737234a3119d036cc", - "reference": "44ecf3794cc56b65954cc19737234a3119d036cc" + "reference": "44ecf3794cc56b65954cc19737234a3119d036cc", + "shasum": null }, "require": { "bower-asset/jquery": ">=1.6" @@ -98,7 +103,8 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/bestiejs/punycode.js/zipball/38c8d3131a82567bfef18da09f7f4db68c84f8a3", - "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3" + "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3", + "shasum": null }, "type": "bower-asset" }, @@ -113,7 +119,8 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/yiisoft/jquery-pjax/zipball/aef7b953107264f00234902a3880eb50dafc48be", - "reference": "aef7b953107264f00234902a3880eb50dafc48be" + "reference": "aef7b953107264f00234902a3880eb50dafc48be", + "shasum": null }, "require": { "bower-asset/jquery": ">=1.8" @@ -181,7 +188,7 @@ "markdown", "markdown-extra" ], - "time": "2015-03-06T05:21:16+00:00" + "time": "2015-03-06 05:21:16" }, { "name": "container-interop/container-interop", @@ -213,7 +220,7 @@ "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", "homepage": "https://github.com/container-interop/container-interop", "abandoned": "psr/container", - "time": "2017-02-14T19:40:03+00:00" + "time": "2017-02-14 19:40:03" }, { "name": "ezyang/htmlpurifier", @@ -260,27 +267,27 @@ "keywords": [ "html" ], - "time": "2019-10-28T03:44:26+00:00" + "time": "2019-10-28 03:44:26" }, { "name": "firebase/php-jwt", - "version": "v5.0.0", + "version": "v5.1.0", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "9984a4d3a32ae7673d6971ea00bae9d0a1abba0e" + "reference": "4566062c68f76f43d44f1643f4970fe89757d4c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/9984a4d3a32ae7673d6971ea00bae9d0a1abba0e", - "reference": "9984a4d3a32ae7673d6971ea00bae9d0a1abba0e", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/4566062c68f76f43d44f1643f4970fe89757d4c6", + "reference": "4566062c68f76f43d44f1643f4970fe89757d4c6", "shasum": "" }, "require": { "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": " 4.8.35" + "phpunit/phpunit": "^4.8|^5" }, "type": "library", "autoload": { @@ -306,7 +313,7 @@ ], "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", "homepage": "https://github.com/firebase/php-jwt", - "time": "2017-06-27T22:17:23+00:00" + "time": "2020-02-24 23:15:03" }, { "name": "imagine/imagine", @@ -364,7 +371,7 @@ "image manipulation", "image processing" ], - "time": "2017-05-16T10:31:22+00:00" + "time": "2017-05-16 10:31:22" }, { "name": "jbroadway/urlify", @@ -423,7 +430,7 @@ "url", "urlify" ], - "time": "2019-12-13T19:53:11+00:00" + "time": "2019-12-13 19:53:11" }, { "name": "kartik-v/bootstrap-fileinput", @@ -476,7 +483,7 @@ "progress", "upload" ], - "time": "2019-12-13T10:21:22+00:00" + "time": "2019-12-13 10:21:22" }, { "name": "kartik-v/bootstrap-star-rating", @@ -520,7 +527,7 @@ "star", "svg" ], - "time": "2019-05-25T06:53:46+00:00" + "time": "2019-05-25 06:53:46" }, { "name": "kartik-v/dependent-dropdown", @@ -567,7 +574,7 @@ "option", "select" ], - "time": "2019-03-09T10:53:11+00:00" + "time": "2019-03-09 10:53:11" }, { "name": "kartik-v/yii2-krajee-base", @@ -619,7 +626,7 @@ "widget", "yii2" ], - "time": "2019-03-13T17:14:54+00:00" + "time": "2019-03-13 17:14:54" }, { "name": "kartik-v/yii2-widget-activeform", @@ -671,7 +678,7 @@ "widget", "yii2" ], - "time": "2019-02-23T19:45:01+00:00" + "time": "2019-02-23 19:45:01" }, { "name": "kartik-v/yii2-widget-affix", @@ -720,7 +727,7 @@ "widget", "yii2" ], - "time": "2014-11-09T04:56:27+00:00" + "time": "2014-11-09 04:56:27" }, { "name": "kartik-v/yii2-widget-alert", @@ -775,7 +782,7 @@ "widget", "yii2" ], - "time": "2017-03-10T17:08:52+00:00" + "time": "2017-03-10 17:08:52" }, { "name": "kartik-v/yii2-widget-colorinput", @@ -829,7 +836,7 @@ "widget", "yii2" ], - "time": "2018-09-12T03:12:07+00:00" + "time": "2018-09-12 03:12:07" }, { "name": "kartik-v/yii2-widget-datepicker", @@ -883,7 +890,7 @@ "widget", "yii2" ], - "time": "2018-10-09T11:34:49+00:00" + "time": "2018-10-09 11:34:49" }, { "name": "kartik-v/yii2-widget-datetimepicker", @@ -937,7 +944,7 @@ "widget", "yii2" ], - "time": "2019-05-29T12:28:51+00:00" + "time": "2019-05-29 12:28:51" }, { "name": "kartik-v/yii2-widget-depdrop", @@ -991,7 +998,7 @@ "widget", "yii2" ], - "time": "2019-04-19T07:02:48+00:00" + "time": "2019-04-19 07:02:48" }, { "name": "kartik-v/yii2-widget-fileinput", @@ -1046,7 +1053,7 @@ "widget", "yii2" ], - "time": "2019-04-19T11:45:08+00:00" + "time": "2019-04-19 11:45:08" }, { "name": "kartik-v/yii2-widget-growl", @@ -1095,7 +1102,7 @@ "widget", "yii2" ], - "time": "2015-05-03T08:23:04+00:00" + "time": "2015-05-03 08:23:04" }, { "name": "kartik-v/yii2-widget-rangeinput", @@ -1149,7 +1156,7 @@ "widget", "yii2" ], - "time": "2018-09-07T10:05:08+00:00" + "time": "2018-09-07 10:05:08" }, { "name": "kartik-v/yii2-widget-rating", @@ -1205,7 +1212,7 @@ "widget", "yii2" ], - "time": "2018-09-16T09:30:44+00:00" + "time": "2018-09-16 09:30:44" }, { "name": "kartik-v/yii2-widget-select2", @@ -1259,7 +1266,7 @@ "widget", "yii2" ], - "time": "2019-11-15T16:16:16+00:00" + "time": "2019-11-15 16:16:16" }, { "name": "kartik-v/yii2-widget-sidenav", @@ -1308,7 +1315,7 @@ "widget", "yii2" ], - "time": "2014-11-09T08:07:23+00:00" + "time": "2014-11-09 08:07:23" }, { "name": "kartik-v/yii2-widget-spinner", @@ -1361,7 +1368,7 @@ "widget", "yii2" ], - "time": "2018-10-09T11:54:03+00:00" + "time": "2018-10-09 11:54:03" }, { "name": "kartik-v/yii2-widget-switchinput", @@ -1411,7 +1418,7 @@ "widget", "yii2" ], - "time": "2016-01-10T16:47:35+00:00" + "time": "2016-01-10 16:47:35" }, { "name": "kartik-v/yii2-widget-timepicker", @@ -1465,7 +1472,7 @@ "widget", "yii2" ], - "time": "2018-10-09T11:58:19+00:00" + "time": "2018-10-09 11:58:19" }, { "name": "kartik-v/yii2-widget-touchspin", @@ -1520,7 +1527,7 @@ "widget", "yii2" ], - "time": "2018-09-05T11:59:34+00:00" + "time": "2018-09-05 11:59:34" }, { "name": "kartik-v/yii2-widget-typeahead", @@ -1573,7 +1580,7 @@ "widget", "yii2" ], - "time": "2019-05-29T12:06:56+00:00" + "time": "2019-05-29 12:06:56" }, { "name": "kartik-v/yii2-widgets", @@ -1640,34 +1647,34 @@ "widget", "yii2" ], - "time": "2018-10-09T17:40:19+00:00" + "time": "2018-10-09 17:40:19" }, { "name": "markbaker/complex", - "version": "1.4.7", + "version": "1.4.8", "source": { "type": "git", "url": "https://github.com/MarkBaker/PHPComplex.git", - "reference": "1ea674a8308baf547cbcbd30c5fcd6d301b7c000" + "reference": "8eaa40cceec7bf0518187530b2e63871be661b72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/1ea674a8308baf547cbcbd30c5fcd6d301b7c000", - "reference": "1ea674a8308baf547cbcbd30c5fcd6d301b7c000", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/8eaa40cceec7bf0518187530b2e63871be661b72", + "reference": "8eaa40cceec7bf0518187530b2e63871be661b72", "shasum": "" }, "require": { "php": "^5.6.0|^7.0.0" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3", - "phpcompatibility/php-compatibility": "^8.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "phpcompatibility/php-compatibility": "^9.0", "phpdocumentor/phpdocumentor": "2.*", "phploc/phploc": "2.*", "phpmd/phpmd": "2.*", "phpunit/phpunit": "^4.8.35|^5.4.0", "sebastian/phpcpd": "2.*", - "squizlabs/php_codesniffer": "^3.3.0" + "squizlabs/php_codesniffer": "^3.4.0" }, "type": "library", "autoload": { @@ -1735,7 +1742,7 @@ "complex", "mathematics" ], - "time": "2018-10-13T23:28:42+00:00" + "time": "2020-03-11 20:15:49" }, { "name": "markbaker/matrix", @@ -1804,7 +1811,7 @@ "matrix", "vector" ], - "time": "2019-10-06T11:29:25+00:00" + "time": "2019-10-06 11:29:25" }, { "name": "mistic100/randomcolor", @@ -1844,14 +1851,16 @@ "generator", "random" ], - "time": "2018-04-16T19:31:57+00:00" + "time": "2018-04-16 19:31:57" }, { "name": "npm-asset/after", "version": "0.8.2", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/after/-/after-0.8.2.tgz" + "url": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -1863,7 +1872,9 @@ "version": "3.7.2", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/animate.css/-/animate.css-3.7.2.tgz" + "url": "https://registry.npmjs.org/animate.css/-/animate.css-3.7.2.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -1875,7 +1886,9 @@ "version": "0.0.7", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz" + "url": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -1887,7 +1900,9 @@ "version": "1.0.1", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + "url": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -1899,7 +1914,9 @@ "version": "1.5.4", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/at.js/-/at.js-1.5.4.tgz" + "url": "https://registry.npmjs.org/at.js/-/at.js-1.5.4.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -1911,7 +1928,9 @@ "version": "1.0.2", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz" + "url": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -1923,7 +1942,9 @@ "version": "0.1.5", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz" + "url": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset" }, @@ -1932,7 +1953,9 @@ "version": "1.0.2", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz" + "url": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/callsite": "1.0.0" @@ -1944,7 +1967,9 @@ "version": "0.0.5", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz" + "url": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -1956,7 +1981,9 @@ "version": "3.7.2", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + "url": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -1968,7 +1995,9 @@ "version": "3.5.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.5.0.tgz" + "url": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.5.0.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -1980,7 +2009,9 @@ "version": "9.24.1", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/blueimp-file-upload/-/blueimp-file-upload-9.24.1.tgz" + "url": "https://registry.npmjs.org/blueimp-file-upload/-/blueimp-file-upload-9.24.1.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/blueimp-canvas-to-blob": "3.5.0", @@ -1997,7 +2028,9 @@ "version": "2.36.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/blueimp-gallery/-/blueimp-gallery-2.36.0.tgz" + "url": "https://registry.npmjs.org/blueimp-gallery/-/blueimp-gallery-2.36.0.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2009,7 +2042,9 @@ "version": "2.12.2", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/blueimp-load-image/-/blueimp-load-image-2.12.2.tgz" + "url": "https://registry.npmjs.org/blueimp-load-image/-/blueimp-load-image-2.12.2.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2021,7 +2056,9 @@ "version": "3.6.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/blueimp-tmpl/-/blueimp-tmpl-3.6.0.tgz" + "url": "https://registry.npmjs.org/blueimp-tmpl/-/blueimp-tmpl-3.6.0.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2033,7 +2070,9 @@ "version": "3.4.1", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz" + "url": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2045,7 +2084,9 @@ "version": "2.10.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/bootstrap-markdown/-/bootstrap-markdown-2.10.0.tgz" + "url": "https://registry.npmjs.org/bootstrap-markdown/-/bootstrap-markdown-2.10.0.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2057,7 +2098,9 @@ "version": "0.11.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/bootstrap-tour/-/bootstrap-tour-0.11.0.tgz" + "url": "https://registry.npmjs.org/bootstrap-tour/-/bootstrap-tour-0.11.0.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/bootstrap": "~3", @@ -2070,7 +2113,9 @@ "version": "1.0.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" + "url": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset" }, @@ -2079,7 +2124,9 @@ "version": "2.8.6", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/clipboard-polyfill/-/clipboard-polyfill-2.8.6.tgz" + "url": "https://registry.npmjs.org/clipboard-polyfill/-/clipboard-polyfill-2.8.6.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2091,7 +2138,9 @@ "version": "1.0.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz" + "url": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset" }, @@ -2100,7 +2149,9 @@ "version": "1.2.1", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz" + "url": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2112,7 +2163,9 @@ "version": "0.0.3", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz" + "url": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset" }, @@ -2121,7 +2174,9 @@ "version": "3.1.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" + "url": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/ms": "2.0.0" @@ -2136,7 +2191,9 @@ "version": "3.3.2", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz" + "url": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/component-emitter": "1.2.1", @@ -2161,7 +2218,9 @@ "version": "2.1.3", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz" + "url": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/after": "0.8.2", @@ -2180,7 +2239,9 @@ "version": "1.1.1", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz" + "url": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2192,7 +2253,9 @@ "version": "4.7.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz" + "url": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2204,7 +2267,9 @@ "version": "1.0.3", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz" + "url": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/isarray": "2.0.1" @@ -2219,7 +2284,9 @@ "version": "1.1.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz" + "url": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2231,7 +2298,9 @@ "version": "1.0.19", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/humhub-prosemirror-richtext/-/humhub-prosemirror-richtext-1.0.19.tgz" + "url": "https://registry.npmjs.org/humhub-prosemirror-richtext/-/humhub-prosemirror-richtext-1.0.19.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2243,7 +2312,9 @@ "version": "4.1.4", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-4.1.4.tgz" + "url": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-4.1.4.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/ev-emitter": ">=1.0.0,<2.0.0" @@ -2258,16 +2329,34 @@ "version": "0.0.1", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" + "url": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset" }, + { + "name": "npm-asset/intersection-observer", + "version": "0.7.0", + "dist": { + "type": "tar", + "url": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.7.0.tgz", + "reference": null, + "shasum": null + }, + "type": "npm-asset", + "license": [ + "W3C-20150513" + ] + }, { "name": "npm-asset/isarray", "version": "2.0.1", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz" + "url": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2279,7 +2368,9 @@ "version": "2.9.2", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/jplayer/-/jplayer-2.9.2.tgz" + "url": "https://registry.npmjs.org/jplayer/-/jplayer-2.9.2.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/jquery": ">1.7.0" @@ -2294,7 +2385,9 @@ "version": "3.4.1", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz" + "url": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2306,7 +2399,9 @@ "version": "1.18.18", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/jquery-autosize/-/jquery-autosize-1.18.18.tgz" + "url": "https://registry.npmjs.org/jquery-autosize/-/jquery-autosize-1.18.18.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset" }, @@ -2315,7 +2410,9 @@ "version": "1.0.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/jquery-color/-/jquery-color-1.0.0.tgz" + "url": "https://registry.npmjs.org/jquery-color/-/jquery-color-1.0.0.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/jquery": "dev-default|*" @@ -2333,7 +2430,8 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/aterrien/jQuery-Knob/zipball/755309e933d326ffaa5a2d758dc377147b766515", - "reference": "755309e933d326ffaa5a2d758dc377147b766515" + "reference": "755309e933d326ffaa5a2d758dc377147b766515", + "shasum": null }, "type": "npm-asset", "license": [ @@ -2345,7 +2443,9 @@ "version": "1.4.1", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/jquery.cookie/-/jquery.cookie-1.4.1.tgz" + "url": "https://registry.npmjs.org/jquery.cookie/-/jquery.cookie-1.4.1.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2357,7 +2457,9 @@ "version": "3.6.8", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/jquery.nicescroll/-/jquery.nicescroll-3.6.8.tgz" + "url": "https://registry.npmjs.org/jquery.nicescroll/-/jquery.nicescroll-3.6.8.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/jquery": ">=1.8.3" @@ -2369,7 +2471,9 @@ "version": "2.0.2", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/kbw.timeentry/-/kbw.timeentry-2.0.2.tgz" + "url": "https://registry.npmjs.org/kbw.timeentry/-/kbw.timeentry-2.0.2.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/jquery": ">=1.7" @@ -2381,7 +2485,9 @@ "version": "2.0.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + "url": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2393,7 +2499,9 @@ "version": "0.2.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz" + "url": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2405,7 +2513,9 @@ "version": "0.0.3", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz" + "url": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset" }, @@ -2414,7 +2524,9 @@ "version": "0.0.5", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz" + "url": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/better-assert": "~1.0.0" @@ -2429,7 +2541,9 @@ "version": "0.0.5", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz" + "url": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/better-assert": "~1.0.0" @@ -2444,7 +2558,9 @@ "version": "4.0.13", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz" + "url": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2456,7 +2572,9 @@ "version": "0.1.0-beta.4", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/select2-bootstrap-theme/-/select2-bootstrap-theme-0.1.0-beta.4.tgz" + "url": "https://registry.npmjs.org/select2-bootstrap-theme/-/select2-bootstrap-theme-0.1.0-beta.4.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2469,7 +2587,9 @@ "version": "2.2.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz" + "url": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/backo2": "1.0.2", @@ -2497,7 +2617,9 @@ "version": "3.3.0", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz" + "url": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/component-emitter": "1.2.1", @@ -2514,7 +2636,9 @@ "version": "1.0.9", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/swiped-events/-/swiped-events-1.0.9.tgz" + "url": "https://registry.npmjs.org/swiped-events/-/swiped-events-1.0.9.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2526,7 +2650,9 @@ "version": "1.6.7", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz" + "url": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/jquery": ">=1.5.0,<4.0" @@ -2538,7 +2664,9 @@ "version": "0.1.4", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz" + "url": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset" }, @@ -2547,7 +2675,9 @@ "version": "6.1.4", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz" + "url": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "reference": null, + "shasum": null }, "require": { "npm-asset/async-limiter": "~1.0.0" @@ -2562,7 +2692,9 @@ "version": "1.5.5", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz" + "url": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset" }, @@ -2571,7 +2703,9 @@ "version": "0.1.2", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz" + "url": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "reference": null, + "shasum": null }, "type": "npm-asset", "license": [ @@ -2612,7 +2746,7 @@ "lucene", "zf2" ], - "time": "2015-06-12T14:16:08+00:00" + "time": "2015-06-12 14:16:08" }, { "name": "phpoffice/phpspreadsheet", @@ -2706,7 +2840,7 @@ "xls", "xlsx" ], - "time": "2019-07-08T21:21:25+00:00" + "time": "2019-07-08 21:21:25" }, { "name": "psr/container", @@ -2755,7 +2889,7 @@ "container-interop", "psr" ], - "time": "2017-02-14T16:28:37+00:00" + "time": "2017-02-14 16:28:37" }, { "name": "psr/simple-cache", @@ -2803,7 +2937,7 @@ "psr-16", "simple-cache" ], - "time": "2017-10-23T01:57:42+00:00" + "time": "2017-10-23 01:57:42" }, { "name": "raoul2000/yii2-jcrop-widget", @@ -2848,7 +2982,7 @@ "yii", "yii2" ], - "time": "2014-07-30T15:40:38+00:00" + "time": "2014-07-30 15:40:38" }, { "name": "select2/select2", @@ -2886,7 +3020,7 @@ ], "description": "Select2 is a jQuery based replacement for select boxes.", "homepage": "https://select2.org/", - "time": "2020-01-28T05:01:22+00:00" + "time": "2020-01-28 05:01:22" }, { "name": "swiftmailer/swiftmailer", @@ -2940,20 +3074,20 @@ "mail", "mailer" ], - "time": "2018-07-31T09:26:32+00:00" + "time": "2018-07-31 09:26:32" }, { "name": "symfony/polyfill-ctype", - "version": "v1.13.1", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" + "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", + "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", "shasum": "" }, "require": { @@ -2965,7 +3099,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.14-dev" } }, "autoload": { @@ -2998,7 +3132,7 @@ "polyfill", "portable" ], - "time": "2019-11-27T13:56:44+00:00" + "time": "2020-01-13 11:15:53" }, { "name": "symfony/process", @@ -3047,20 +3181,20 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-07-13T13:05:09+00:00" + "time": "2017-07-13 13:05:09" }, { "name": "twig/twig", - "version": "v1.42.4", + "version": "v1.42.5", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "e587180584c3d2d6cb864a0454e777bb6dcb6152" + "reference": "87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/e587180584c3d2d6cb864a0454e777bb6dcb6152", - "reference": "e587180584c3d2d6cb864a0454e777bb6dcb6152", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e", + "reference": "87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e", "shasum": "" }, "require": { @@ -3069,8 +3203,7 @@ }, "require-dev": { "psr/container": "^1.0", - "symfony/debug": "^3.4|^4.2", - "symfony/phpunit-bridge": "^4.4@dev|^5.0" + "symfony/phpunit-bridge": "^4.4|^5.0" }, "type": "library", "extra": { @@ -3099,7 +3232,6 @@ }, { "name": "Twig Team", - "homepage": "https://twig.symfony.com/contributors", "role": "Contributors" }, { @@ -3113,20 +3245,20 @@ "keywords": [ "templating" ], - "time": "2019-11-11T16:49:32+00:00" + "time": "2020-02-11 05:59:23" }, { "name": "voku/portable-ascii", - "version": "1.4.7", + "version": "1.4.10", "source": { "type": "git", "url": "https://github.com/voku/portable-ascii.git", - "reference": "a691852adbf7518370332fd7921292d8dad34e7e" + "reference": "240e93829a5f985fab0984a6e55ae5e26b78a334" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/a691852adbf7518370332fd7921292d8dad34e7e", - "reference": "a691852adbf7518370332fd7921292d8dad34e7e", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/240e93829a5f985fab0984a6e55ae5e26b78a334", + "reference": "240e93829a5f985fab0984a6e55ae5e26b78a334", "shasum": "" }, "require": { @@ -3162,7 +3294,7 @@ "clean", "php" ], - "time": "2020-01-27T08:58:33+00:00" + "time": "2020-03-13 01:23:26" }, { "name": "voku/stop-words", @@ -3205,7 +3337,7 @@ "stop words", "stop-words" ], - "time": "2018-11-23T01:37:27+00:00" + "time": "2018-11-23 01:37:27" }, { "name": "xj/yii2-jplayer-widget", @@ -3241,7 +3373,7 @@ } ], "description": "yii2-jplayer-widget", - "time": "2015-07-01T04:15:08+00:00" + "time": "2015-07-01 04:15:08" }, { "name": "yiisoft/yii2", @@ -3341,20 +3473,20 @@ "framework", "yii2" ], - "time": "2020-01-21T22:29:38+00:00" + "time": "2020-01-21 22:29:38" }, { "name": "yiisoft/yii2-authclient", - "version": "2.2.6", + "version": "2.2.7", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-authclient.git", - "reference": "62762993727295126642c71993af55a204d936cb" + "reference": "c8b643dce1c1966942aa0fd4047c8db05379a38f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-authclient/zipball/62762993727295126642c71993af55a204d936cb", - "reference": "62762993727295126642c71993af55a204d936cb", + "url": "https://api.github.com/repos/yiisoft/yii2-authclient/zipball/c8b643dce1c1966942aa0fd4047c8db05379a38f", + "reference": "c8b643dce1c1966942aa0fd4047c8db05379a38f", "shasum": "" }, "require": { @@ -3402,7 +3534,7 @@ "oauth", "yii2" ], - "time": "2019-11-19T20:02:16+00:00" + "time": "2020-02-12 22:53:08" }, { "name": "yiisoft/yii2-bootstrap", @@ -3465,7 +3597,7 @@ "bootstrap", "yii2" ], - "time": "2019-04-23T13:18:43+00:00" + "time": "2019-04-23 13:18:43" }, { "name": "yiisoft/yii2-composer", @@ -3520,7 +3652,7 @@ "extension installer", "yii2" ], - "time": "2019-07-16T13:22:30+00:00" + "time": "2019-07-16 13:22:30" }, { "name": "yiisoft/yii2-httpclient", @@ -3570,7 +3702,7 @@ "httpclient", "yii2" ], - "time": "2019-10-08T09:48:39+00:00" + "time": "2019-10-08 09:48:39" }, { "name": "yiisoft/yii2-imagine", @@ -3618,7 +3750,7 @@ "imagine", "yii2" ], - "time": "2018-02-22T11:57:06+00:00" + "time": "2018-02-22 11:57:06" }, { "name": "yiisoft/yii2-jui", @@ -3664,7 +3796,7 @@ "jQuery UI", "yii2" ], - "time": "2017-11-25T15:32:29+00:00" + "time": "2017-11-25 15:32:29" }, { "name": "yiisoft/yii2-queue", @@ -3748,28 +3880,29 @@ "sqs", "yii" ], - "time": "2018-05-23T21:04:57+00:00" + "time": "2018-05-23 21:04:57" }, { "name": "yiisoft/yii2-redis", - "version": "2.0.11", + "version": "2.0.12", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-redis.git", - "reference": "92f2926296996c78f2441fc81e357a6e3b349e5e" + "reference": "28d0034f8b5a0734863affa4eaf9a76ec9b8bb85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-redis/zipball/92f2926296996c78f2441fc81e357a6e3b349e5e", - "reference": "92f2926296996c78f2441fc81e357a6e3b349e5e", + "url": "https://api.github.com/repos/yiisoft/yii2-redis/zipball/28d0034f8b5a0734863affa4eaf9a76ec9b8bb85", + "reference": "28d0034f8b5a0734863affa4eaf9a76ec9b8bb85", "shasum": "" }, "require": { - "yiisoft/yii2": "~2.0.14" + "ext-openssl": "*", + "yiisoft/yii2": "~2.0.16" }, "require-dev": { "phpunit/phpunit": "<7", - "yiisoft/yii2-dev": "~2.0.14" + "yiisoft/yii2-dev": "~2.0.16" }, "type": "yii2-extension", "extra": { @@ -3800,7 +3933,7 @@ "session", "yii2" ], - "time": "2019-11-05T14:58:47+00:00" + "time": "2020-03-13 07:25:25" }, { "name": "yiisoft/yii2-swiftmailer", @@ -3850,7 +3983,7 @@ "swiftmailer", "yii2" ], - "time": "2017-05-01T08:29:00+00:00" + "time": "2017-05-01 08:29:00" }, { "name": "zendframework/zend-escaper", @@ -3896,7 +4029,7 @@ "zf" ], "abandoned": "laminas/laminas-escaper", - "time": "2019-09-05T20:03:20+00:00" + "time": "2019-09-05 20:03:20" }, { "name": "zendframework/zend-http", @@ -3952,7 +4085,7 @@ "zf" ], "abandoned": "laminas/laminas-http", - "time": "2019-02-07T17:47:08+00:00" + "time": "2019-02-07 17:47:08" }, { "name": "zendframework/zend-hydrator", @@ -4011,7 +4144,7 @@ "zf2" ], "abandoned": "laminas/laminas-hydrator", - "time": "2016-02-18T22:38:26+00:00" + "time": "2016-02-18 22:38:26" }, { "name": "zendframework/zend-ldap", @@ -4065,7 +4198,7 @@ "zf" ], "abandoned": "laminas/laminas-ldap", - "time": "2019-10-17T16:26:26+00:00" + "time": "2019-10-17 16:26:26" }, { "name": "zendframework/zend-loader", @@ -4111,7 +4244,7 @@ "zf" ], "abandoned": "laminas/laminas-loader", - "time": "2019-09-04T19:38:14+00:00" + "time": "2019-09-04 19:38:14" }, { "name": "zendframework/zend-stdlib", @@ -4171,7 +4304,7 @@ "zf2" ], "abandoned": "laminas/laminas-stdlib", - "time": "2016-04-12T21:17:31+00:00" + "time": "2016-04-12 21:17:31" }, { "name": "zendframework/zend-uri", @@ -4219,7 +4352,7 @@ "zf" ], "abandoned": "laminas/laminas-uri", - "time": "2019-10-07T13:35:33+00:00" + "time": "2019-10-07 13:35:33" }, { "name": "zendframework/zend-validator", @@ -4293,22 +4426,22 @@ "zf2" ], "abandoned": "laminas/laminas-validator", - "time": "2019-01-29T22:26:39+00:00" + "time": "2019-01-29 22:26:39" } ], "packages-dev": [ { "name": "behat/gherkin", - "version": "v4.6.0", + "version": "v4.6.2", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07" + "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/ab0a02ea14893860bca00f225f5621d351a3ad07", - "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/51ac4500c4dc30cbaaabcd2f25694299df666a31", + "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31", "shasum": "" }, "require": { @@ -4354,7 +4487,7 @@ "gherkin", "parser" ], - "time": "2019-01-16T14:22:17+00:00" + "time": "2020-03-17 14:03:26" }, { "name": "bower-asset/typeahead.js", @@ -4367,7 +4500,8 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/twitter/typeahead.js/zipball/588440f66559714280628a4f9799f0c4eb880a4a", - "reference": "588440f66559714280628a4f9799f0c4eb880a4a" + "reference": "588440f66559714280628a4f9799f0c4eb880a4a", + "shasum": null }, "require": { "bower-asset/jquery": ">=1.7" @@ -4463,7 +4597,7 @@ "functional testing", "unit testing" ], - "time": "2018-08-01T07:21:49+00:00" + "time": "2018-08-01 07:21:49" }, { "name": "codeception/phpunit-wrapper", @@ -4509,7 +4643,7 @@ } ], "description": "PHPUnit classes used by Codeception", - "time": "2020-01-03T08:01:16+00:00" + "time": "2020-01-03 08:01:16" }, { "name": "codeception/specify", @@ -4547,7 +4681,7 @@ } ], "description": "BDD code blocks for PHPUnit and Codeception", - "time": "2017-11-20T23:40:31+00:00" + "time": "2017-11-20 23:40:31" }, { "name": "codeception/stub", @@ -4577,24 +4711,24 @@ "MIT" ], "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", - "time": "2019-03-02T15:35:10+00:00" + "time": "2019-03-02 15:35:10" }, { "name": "codeception/verify", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/Codeception/Verify.git", - "reference": "532e526b8b1ac2343bf799e6b36e3446896ff52a" + "reference": "4a4f006faac9f8e34495882ce578e1cde4b027cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Verify/zipball/532e526b8b1ac2343bf799e6b36e3446896ff52a", - "reference": "532e526b8b1ac2343bf799e6b36e3446896ff52a", + "url": "https://api.github.com/repos/Codeception/Verify/zipball/4a4f006faac9f8e34495882ce578e1cde4b027cb", + "reference": "4a4f006faac9f8e34495882ce578e1cde4b027cb", "shasum": "" }, "require": { - "codeception/phpunit-wrapper": ">6.0.16 <6.1.0 | ^6.7.0 | ^7.7.1 | ^8.0.4", + "codeception/phpunit-wrapper": ">6.0.16 <6.1.0 | ^6.7.0 | ^7.7.1 | ^8.0.4 | ^9.0.0", "php": ">= 7.0", "phpunit/phpunit": "> 6.0" }, @@ -4618,7 +4752,7 @@ } ], "description": "BDD assertion library for PHPUnit", - "time": "2019-08-24T13:58:30+00:00" + "time": "2020-02-15 23:17:35" }, { "name": "doctrine/instantiator", @@ -4672,7 +4806,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2015-06-14 21:17:01" }, { "name": "facebook/webdriver", @@ -4733,7 +4867,7 @@ "webdriver" ], "abandoned": "php-webdriver/webdriver", - "time": "2019-06-13T08:02:18+00:00" + "time": "2019-06-13 08:02:18" }, { "name": "fzaninotto/faker", @@ -4783,7 +4917,7 @@ "faker", "fixtures" ], - "time": "2019-12-12T13:22:17+00:00" + "time": "2019-12-12 13:22:17" }, { "name": "guzzlehttp/guzzle", @@ -4850,7 +4984,7 @@ "rest", "web service" ], - "time": "2019-12-23T11:57:10+00:00" + "time": "2019-12-23 11:57:10" }, { "name": "guzzlehttp/promises", @@ -4901,7 +5035,7 @@ "keywords": [ "promise" ], - "time": "2016-12-20T10:07:11+00:00" + "time": "2016-12-20 10:07:11" }, { "name": "guzzlehttp/psr7", @@ -4972,7 +5106,7 @@ "uri", "url" ], - "time": "2019-07-01T23:21:34+00:00" + "time": "2019-07-01 23:21:34" }, { "name": "myclabs/deep-copy", @@ -5017,7 +5151,7 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" + "time": "2017-10-19 19:58:43" }, { "name": "phar-io/manifest", @@ -5072,7 +5206,7 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05T18:14:27+00:00" + "time": "2017-03-05 18:14:27" }, { "name": "phar-io/version", @@ -5119,7 +5253,7 @@ } ], "description": "Library for handling version information and constraints", - "time": "2017-03-05T17:38:23+00:00" + "time": "2017-03-05 17:38:23" }, { "name": "phpdocumentor/reflection-common", @@ -5173,7 +5307,7 @@ "reflection", "static analysis" ], - "time": "2017-09-11T18:02:19+00:00" + "time": "2017-09-11 18:02:19" }, { "name": "phpdocumentor/reflection-docblock", @@ -5225,7 +5359,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-12-28T18:55:12+00:00" + "time": "2019-12-28 18:55:12" }, { "name": "phpdocumentor/type-resolver", @@ -5270,7 +5404,7 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-12-30T13:23:38+00:00" + "time": "2017-12-30 13:23:38" }, { "name": "phpspec/php-diff", @@ -5308,20 +5442,20 @@ } ], "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).", - "time": "2016-04-07T12:29:16+00:00" + "time": "2016-04-07 12:29:16" }, { "name": "phpspec/prophecy", - "version": "v1.10.2", + "version": "v1.10.3", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9" + "reference": "451c3cd1418cf640de218914901e51b064abb093" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b4400efc9d206e83138e2bb97ed7f5b14b831cd9", - "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", "shasum": "" }, "require": { @@ -5371,7 +5505,7 @@ "spy", "stub" ], - "time": "2020-01-20T15:57:02+00:00" + "time": "2020-03-05 15:02:03" }, { "name": "phpunit/php-code-coverage", @@ -5434,7 +5568,7 @@ "testing", "xunit" ], - "time": "2018-04-06T15:36:58+00:00" + "time": "2018-04-06 15:36:58" }, { "name": "phpunit/php-file-iterator", @@ -5481,7 +5615,7 @@ "filesystem", "iterator" ], - "time": "2017-11-27T13:52:08+00:00" + "time": "2017-11-27 13:52:08" }, { "name": "phpunit/php-text-template", @@ -5522,7 +5656,7 @@ "keywords": [ "template" ], - "time": "2015-06-21T13:50:34+00:00" + "time": "2015-06-21 13:50:34" }, { "name": "phpunit/php-timer", @@ -5571,7 +5705,7 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2017-02-26 11:10:40" }, { "name": "phpunit/php-token-stream", @@ -5620,7 +5754,7 @@ "keywords": [ "tokenizer" ], - "time": "2017-11-27T05:48:46+00:00" + "time": "2017-11-27 05:48:46" }, { "name": "phpunit/phpunit", @@ -5704,7 +5838,7 @@ "testing", "xunit" ], - "time": "2019-02-01T05:22:47+00:00" + "time": "2019-02-01 05:22:47" }, { "name": "phpunit/phpunit-mock-objects", @@ -5764,7 +5898,7 @@ "xunit" ], "abandoned": true, - "time": "2018-08-09T05:50:03+00:00" + "time": "2018-08-09 05:50:03" }, { "name": "psr/http-message", @@ -5814,7 +5948,7 @@ "request", "response" ], - "time": "2016-08-06T14:39:51+00:00" + "time": "2016-08-06 14:39:51" }, { "name": "psr/log", @@ -5861,7 +5995,7 @@ "psr", "psr-3" ], - "time": "2019-11-01T11:05:21+00:00" + "time": "2019-11-01 11:05:21" }, { "name": "ralouphie/getallheaders", @@ -5901,7 +6035,7 @@ } ], "description": "A polyfill for getallheaders.", - "time": "2019-03-08T08:55:37+00:00" + "time": "2019-03-08 08:55:37" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -5946,7 +6080,7 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" + "time": "2017-03-04 06:30:41" }, { "name": "sebastian/comparator", @@ -6010,7 +6144,7 @@ "compare", "equality" ], - "time": "2018-02-01T13:46:46+00:00" + "time": "2018-02-01 13:46:46" }, { "name": "sebastian/diff", @@ -6062,7 +6196,7 @@ "keywords": [ "diff" ], - "time": "2017-08-03T08:09:46+00:00" + "time": "2017-08-03 08:09:46" }, { "name": "sebastian/environment", @@ -6112,7 +6246,7 @@ "environment", "hhvm" ], - "time": "2017-07-01T08:51:00+00:00" + "time": "2017-07-01 08:51:00" }, { "name": "sebastian/exporter", @@ -6179,7 +6313,7 @@ "export", "exporter" ], - "time": "2019-09-14T09:02:43+00:00" + "time": "2019-09-14 09:02:43" }, { "name": "sebastian/global-state", @@ -6230,7 +6364,7 @@ "keywords": [ "global state" ], - "time": "2017-04-27T15:39:26+00:00" + "time": "2017-04-27 15:39:26" }, { "name": "sebastian/object-enumerator", @@ -6277,7 +6411,7 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" + "time": "2017-08-03 12:35:26" }, { "name": "sebastian/object-reflector", @@ -6322,7 +6456,7 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" + "time": "2017-03-29 09:07:27" }, { "name": "sebastian/recursion-context", @@ -6375,7 +6509,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" + "time": "2017-03-03 06:23:57" }, { "name": "sebastian/resource-operations", @@ -6417,7 +6551,7 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" + "time": "2015-07-28 20:34:47" }, { "name": "sebastian/version", @@ -6460,7 +6594,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" + "time": "2016-10-03 07:35:21" }, { "name": "symfony/browser-kit", @@ -6517,7 +6651,7 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2017-07-12T13:03:20+00:00" + "time": "2017-07-12 13:03:20" }, { "name": "symfony/console", @@ -6586,7 +6720,7 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-07-29T21:27:59+00:00" + "time": "2017-07-29 21:27:59" }, { "name": "symfony/css-selector", @@ -6639,7 +6773,7 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2017-05-01T15:01:29+00:00" + "time": "2017-05-01 15:01:29" }, { "name": "symfony/debug", @@ -6695,7 +6829,7 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2017-07-28T15:27:31+00:00" + "time": "2017-07-28 15:27:31" }, { "name": "symfony/dom-crawler", @@ -6751,7 +6885,7 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2017-05-25T23:10:31+00:00" + "time": "2017-05-25 23:10:31" }, { "name": "symfony/event-dispatcher", @@ -6814,7 +6948,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-06-09T14:53:08+00:00" + "time": "2017-06-09 14:53:08" }, { "name": "symfony/finder", @@ -6863,20 +6997,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2017-06-01T21:01:25+00:00" + "time": "2017-06-01 21:01:25" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.13.1", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" + "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/34094cfa9abe1f0f14f48f490772db7a775559f2", + "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2", "shasum": "" }, "require": { @@ -6888,7 +7022,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.14-dev" } }, "autoload": { @@ -6922,7 +7056,7 @@ "portable", "shim" ], - "time": "2019-11-27T14:18:11+00:00" + "time": "2020-01-13 11:15:53" }, { "name": "symfony/yaml", @@ -6977,7 +7111,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-07-23T12:43:26+00:00" + "time": "2017-07-23 12:43:26" }, { "name": "theseer/tokenizer", @@ -7017,20 +7151,20 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2019-06-13T22:48:21+00:00" + "time": "2019-06-13 22:48:21" }, { "name": "webmozart/assert", - "version": "1.6.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "573381c0a64f155a0d9a23f4b0c797194805b925" + "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925", - "reference": "573381c0a64f155a0d9a23f4b0c797194805b925", + "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", + "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", "shasum": "" }, "require": { @@ -7065,7 +7199,7 @@ "check", "validate" ], - "time": "2019-11-24T13:36:37+00:00" + "time": "2020-02-14 12:15:55" }, { "name": "yiisoft/yii2-debug", @@ -7112,7 +7246,7 @@ "debugger", "yii2" ], - "time": "2018-09-23T21:41:04+00:00" + "time": "2018-09-23 21:41:04" }, { "name": "yiisoft/yii2-faker", @@ -7159,7 +7293,7 @@ "faker", "yii2" ], - "time": "2018-02-19T20:27:10+00:00" + "time": "2018-02-19 20:27:10" }, { "name": "yiisoft/yii2-gii", @@ -7208,7 +7342,7 @@ "gii", "yii2" ], - "time": "2018-12-08T10:07:49+00:00" + "time": "2018-12-08 10:07:49" } ], "aliases": [], diff --git a/protected/humhub/assets/AppAsset.php b/protected/humhub/assets/AppAsset.php index 5888c94af2..8646fdeb05 100755 --- a/protected/humhub/assets/AppAsset.php +++ b/protected/humhub/assets/AppAsset.php @@ -84,6 +84,7 @@ class AppAsset extends AssetBundle 'humhub\assets\OpenSansAsset', 'humhub\assets\HighlightJsAsset', 'humhub\assets\SwipedEventsAssets', + IntersectionObserverPolyfillAsset::class, ]; /** diff --git a/protected/humhub/assets/IntersectionObserverPolyfillAsset.php b/protected/humhub/assets/IntersectionObserverPolyfillAsset.php new file mode 100644 index 0000000000..dc106ac281 --- /dev/null +++ b/protected/humhub/assets/IntersectionObserverPolyfillAsset.php @@ -0,0 +1,40 @@ + [ + 'intersection-observer.js' + ] + ]; + +} diff --git a/protected/humhub/docs/CHANGELOG_DEV.md b/protected/humhub/docs/CHANGELOG_DEV.md index 6b9b5d6692..239f0aaa13 100644 --- a/protected/humhub/docs/CHANGELOG_DEV.md +++ b/protected/humhub/docs/CHANGELOG_DEV.md @@ -25,3 +25,4 @@ HumHub Change Log (DEVELOP) - Enh #3924: Implement `Stream.onUpdateAvailable()`, `Stream.loadUpdate()` and `Stream.options.autoUpdate` to manage stream updates - Enh #3924: Added `humhub\modules\content\live\NewContent:$streamChannel` - Enh #3928: Implement auto updates on activity stream +- Enh #3928: Add default `Stream.initScroll` with support of IntersectionObserver diff --git a/protected/humhub/modules/activity/resources/js/humhub.activity.js b/protected/humhub/modules/activity/resources/js/humhub.activity.js index 5c956f80be..a660b6c548 100644 --- a/protected/humhub/modules/activity/resources/js/humhub.activity.js +++ b/protected/humhub/modules/activity/resources/js/humhub.activity.js @@ -49,8 +49,9 @@ humhub.module('activity', function (module, require, $) { * @returns {undefined} */ var ActivityStream = stream.Stream.extend(function (container, options) { - var that = this; stream.Stream.call(this, container, { + scrollSupport: true, + scrollOptions: { rootMargin: "30px" }, initLoadCount: STREAM_INIT_COUNT, loadCount: STREAM_LOAD_COUNT, autoUpdate: true, @@ -58,6 +59,24 @@ humhub.module('activity', function (module, require, $) { }); }); + ActivityStream.prototype.initEvents = function(events) { + var that = this; + this.on('humhub:stream:afterAddEntries', function() { + if(!that.$content.getNiceScroll().length) { + that.$content.niceScroll({ + cursorwidth: "7", + cursorborder: "", + cursorcolor: "#555", + cursoropacitymax: "0.2", + nativeparentscrolling: false, + railpadding: {top: 0, right: 3, left: 0, bottom: 0} + }); + } else { + that.$content.getNiceScroll().resize(); + } + }); + }; + ActivityStream.prototype.isUpdateAvailable = function(events) { var that = this; @@ -83,52 +102,6 @@ humhub.module('activity', function (module, require, $) { return updatesAvailable; }; - ActivityStream.prototype.initScroll = function () { - if(!this.$content.is(':visible')) { - return; - } - - // listen for scrolling event yes or no - var scrolling = true; - var that = this; - this.$content.scroll(function (evt) { - if(that.lastEntryLoaded()) { - return; - } - // save height of the overflow container - var _containerHeight = that.$content.height(); - // save scroll height - var _scrollHeight = that.$content.prop("scrollHeight"); - // save current scrollbar position - var _currentScrollPosition = that.$content.scrollTop(); - - // load more activites if current scroll position is near scroll height - if (_currentScrollPosition >= (_scrollHeight - _containerHeight - 30)) { - // checking if ajax loading is necessary or the last entries are already loaded - if (scrolling) { - scrolling = false; - // load more activities - that.loadEntries({loader: true}).then(function() { - that.$content.getNiceScroll().resize(); - }).finally(function () { - scrolling = true; - }); - } - } - }); - - - // set niceScroll to activity list - that.$content.niceScroll({ - cursorwidth: "7", - cursorborder: "", - cursorcolor: "#555", - cursoropacitymax: "0.2", - nativeparentscrolling: false, - railpadding: {top: 0, right: 3, left: 0, bottom: 0} - }); - }; - ActivityStream.templates = { streamMessage: '
{message}
' }; diff --git a/protected/humhub/modules/stream/resources/js/humhub.stream.Stream.js b/protected/humhub/modules/stream/resources/js/humhub.stream.Stream.js index bd92639527..e91af34d98 100644 --- a/protected/humhub/modules/stream/resources/js/humhub.stream.Stream.js +++ b/protected/humhub/modules/stream/resources/js/humhub.stream.Stream.js @@ -23,6 +23,10 @@ humhub.module('stream.Stream', function (module, require, $) { var loader = require('ui.loader'); var event = require('event'); + var EVENT_AFTER_ADD_ENTRIES = 'humhub:stream:afterAddEntries'; + var EVENT_BEFORE_ADD_ENTRIES = 'humhub:stream:beforeAddEntries'; + var EVENT_INITIALIZED = 'humhub:stream:initialized'; + /** * Number of initial stream entries loaded when stream is initialized. * @type Number @@ -69,13 +73,39 @@ humhub.module('stream.Stream', function (module, require, $) { * @param {type} container id or jQuery object of the stream container * @returns {undefined} */ - var Stream = Widget.extend(function (container, options) { - Widget.call(this, container, options); - }); + var Stream = Widget.extend(); Stream.prototype.onClear = function() {/* abstract onClear function */}; - Stream.prototype.initScroll = function() {/* abstract initScroll function */}; + Stream.prototype.initScroll = function() { + if(window.IntersectionObserver && this.options.scrollSupport) { + + var options = { root: this.$content[0], rootMargin: "50px" }; + options = this.options.scrollOptions ? $.extend(options, this.options.scrollOptions) : options; + var $streamEnd = $('
'); + this.$content.append($streamEnd); + + var that = this; + var observer = new IntersectionObserver(function(entries) { + if(that.preventScrollLoading()) { + return; + } + + if(entries.length && entries[0].isIntersecting) { + that.load().finally(function() { + that.state.scrollLock = false; + }); + } + + }, options); + + observer.observe($streamEnd[0]); + } + }; + + Stream.prototype.preventScrollLoading = function() { + return this.state.scrollLock || !this.canLoadMore() || !this.state.lastRequest || this.state.firstRequest.isSingleEntryRequest() + }; Stream.prototype.initEvents = function() {/* abstract initScroll function */}; @@ -100,6 +130,10 @@ humhub.module('stream.Stream', function (module, require, $) { that.onUpdateAvailable(); }); + + this.on(EVENT_INITIALIZED, function() { + that.initScroll(); + }); }; Stream.prototype.isUpdateAvailable = function(events) { @@ -138,6 +172,7 @@ humhub.module('stream.Stream', function (module, require, $) { .loadInit() .then($.proxy(this.handleResponse, this)) .then($.proxy(this.updateTop, this)) + .then($.proxy(this.triggerInitEvent, this)) .catch($.proxy(this.handleLoadError, this)); }; @@ -155,13 +190,17 @@ humhub.module('stream.Stream', function (module, require, $) { return response; }; + Stream.prototype.triggerInitEvent = function(response) { + this.trigger(EVENT_INITIALIZED, this); + return response; + }; + Stream.prototype.initWidget = function() { this.$content = this.$.find(this.options.contentSelector); this.loader = this.options.loader || new StreamLoader(this); this.initDefaultEvents(); this.initEvents(); this.initFilter(); - this.initScroll(); }; Stream.prototype.initFilter = function () { @@ -328,7 +367,7 @@ humhub.module('stream.Stream', function (module, require, $) { return Promise.resolve(); } - this.$.trigger('humhub:stream:beforeAddEntries', [request.response, request, $result]); + this.$.trigger(EVENT_BEFORE_ADD_ENTRIES, [request.response, request, $result]); var promise; @@ -341,7 +380,7 @@ humhub.module('stream.Stream', function (module, require, $) { } return promise.then(function () { - that.trigger('humhub:stream:afterAddEntries', [request.response, request, $result]); + that.trigger(EVENT_AFTER_ADD_ENTRIES, [request.response, request, $result]); return request; }); }; @@ -399,8 +438,14 @@ humhub.module('stream.Stream', function (module, require, $) { * @param html */ Stream.prototype.appendEntry = function (html) { + var that = this; return this._streamEntryAnimation(html, function ($html) { - this.$content.append($html); + var $streamEnd = that.$content.find('.stream-end:first'); + if($streamEnd.length) { + $streamEnd.before($html) + } else { + this.$content.append($html); + } }); }; diff --git a/protected/humhub/modules/stream/resources/js/humhub.stream.wall.js b/protected/humhub/modules/stream/resources/js/humhub.stream.wall.js index 7b8672e6fe..105d8bf159 100644 --- a/protected/humhub/modules/stream/resources/js/humhub.stream.wall.js +++ b/protected/humhub/modules/stream/resources/js/humhub.stream.wall.js @@ -13,7 +13,7 @@ humhub.module('stream.wall', function (module, require, $) { var stream = require('stream'); - var BaseStream = stream.Stream; + var Stream = stream.Stream; var Component = require('action').Component; var Widget = require('ui.widget').Widget; var event = require('event'); @@ -34,13 +34,15 @@ humhub.module('stream.wall', function (module, require, $) { * @param {type} cfg * @returns {undefined} */ - var WallStream = BaseStream.extend(function (container, options) { + var WallStream = Stream.extend(function (container, options) { options = options || {}; + options.scrollSupport = true; + options.scrollOptions = { root: null, rootMargin: "300px" }; options.filter = Component.instance($('#wall-stream-filter-nav'), {stream : this}); options.pinSupport = !this.isDashboardStream(); - BaseStream.call(this, container, options); + Stream.call(this, container, options); if (module.config.horizontalImageScrollOnMobile && /Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent)) { this.$.addClass('mobile'); @@ -225,7 +227,7 @@ humhub.module('stream.wall', function (module, require, $) { }, 10000); } - } + }; WallStream.template = { loadSuppressedButton: '', @@ -247,30 +249,6 @@ humhub.module('stream.wall', function (module, require, $) { }); }; - WallStream.prototype.initScroll = function() { - var that = this; - $(window).off('scroll.wallStream').on('scroll.wallStream', function () { - if(that.state.scrollLock || !that.canLoadMore() || !that.state.lastRequest || that.state.firstRequest.isSingleEntryRequest()) { - return; - } - - var $window = $(window); - var windowHeight = $window.height(); - var windowBottom = $window.scrollTop() + windowHeight; - var elementBottom = that.$.offset().top + that.$.outerHeight(); - var remaining = elementBottom - windowBottom; - if (remaining <= 300) { - that.state.scrollLock = true; - $('#btn-load-more').hide(); - setTimeout(function () { - that.loadEntries().finally(function() { - that.state.scrollLock = false; - }); - }); - } - }); - }; - WallStream.prototype.onClear = function() { this.$.find('.back_button_holder').hide(); };