Commit Graph

3796 Commits

Author SHA1 Message Date
Eric Lippmann b3e0b5d587 Raise version to 2.6.1 2018-08-02 12:46:39 +02:00
Eric Lippmann 0f075b034b Respect permissions in Hook::has() 2018-07-26 11:51:23 +02:00
Johannes Meyer c0f99539ff Raise version to v2.6.0 2018-07-19 09:27:11 +02:00
Eric Lippmann dd9e8c8ba9 Revert "Merge pull request #3487 from Icinga/fix/web-bootstrap"
This reverts commit b12b905076, reversing
changes made to c633c86db7.

refs #3500
2018-07-18 15:29:55 +02:00
Eric Lippmann 121bd545d1
Merge pull request #3530 from Icinga/feature/enforce-a-named-identity-for-audit-logs
AuditHook: Enforce a named identity and allow to pass a explicit time
2018-07-18 15:27:45 +02:00
Johannes Meyer f28f7150fc AuditHook: Enforce a named identity and allow to pass a explicit time 2018-07-18 14:45:00 +02:00
Eric Lippmann 7d47875241 Introduce PdfexportHook 2018-07-18 14:22:18 +02:00
Marian Rainer-Harbach 5e40405a12 Allow disabling MySQL server certificate validation by setting ssl_do_not_verify_server_cert
Signed-off-by: Eric Lippmann <eric.lippmann@icinga.com>
2018-07-16 11:41:13 +02:00
Eric Lippmann 67929064cc
Merge pull request #3526 from Icinga/fix/some-xss-vulnerabilities
Fix some XSS vulnerabilities
2018-07-16 09:58:23 +02:00
Eric Lippmann 11f1a287ab
Merge pull request #3519 from Icinga/fix/mysql-ssl-connection-error-brings-up-no-explanation-3249
Pdo\Abstract: Properly handle incomplete error messages
2018-07-16 09:56:26 +02:00
Johannes Meyer 84622bf27b Fix some XSS vulnerabilities
Only a real issue with <= IE9 as other browsers properly escape
urls prior transmission.

Signed-off-by: Eric Lippmann <eric.lippmann@icinga.com>
2018-07-16 09:53:30 +02:00
Johannes Meyer bf5c6a56b3 Revert "Fix some XSS vulnerabilities"
Accidentally pushed. Should re-enter with #3521.
2018-07-11 16:37:39 +02:00
Johannes Meyer b97933a146 Fix some XSS vulnerabilities
Only a real issue with <= IE9 as other browsers properly escape
urls prior transmission.
2018-07-11 13:10:57 +02:00
Johannes Meyer 44bfdd3986 Pdo\Abstract: Properly handle incomplete error messages
fixes #3249
2018-07-10 14:54:28 +02:00
Eric Lippmann 6cddd6beed
Merge pull request #3508 from Icinga/fix/filter-entries-are-deleted-when-pushing-enter-3454
FilterEditor: Add a hidden submit button to the start of the form's m…
2018-07-10 09:28:35 +02:00
Eric Lippmann b88c6b0a6e
Merge pull request #3516 from Icinga/feature/application-state-hook
Application state hook
2018-07-10 09:14:26 +02:00
Eric Lippmann 47405127d0 Add config to hide/show pplication state messages
refs #2835
2018-07-09 16:28:28 +02:00
Eric Lippmann d18d05ccee Introduce ApplicationStateHook
refs #2835
2018-07-09 16:28:25 +02:00
Eric Lippmann 303637df3c
Merge pull request #3452 from Icinga/feature/drop-php-lt-56-support
Drop support for PHP < 5.6
2018-07-09 09:18:18 +02:00
Johannes Meyer 6e6251604b FilterEditor: Add a hidden submit button to the start of the form's markup
When pushing enter our JS mimics what a browser would do. And that is
pushing the first submit button found in the form. Without this, that's
a delete button of the first logical junction. (the root condition)

fixes #3454
2018-07-06 10:41:49 +02:00
Eric Lippmann 189b519135
Merge pull request #3486 from Icinga/fix/request-parses-json-without-respecting-content-type-3484
Fix that Request parses json without respecting content type
2018-07-05 13:19:27 +02:00
Johannes Meyer 1f677e64f6 ActionController: Force HTTP redirects in method redirectHttp()
That's what its name implies, right? The counterpart is redirectXhr(),
which does still its job. redirectNow() on the other hand is for the
lazy people.
2018-07-04 14:44:03 +02:00
Johannes Meyer 8cbff87af1 Request: Parse the POST body only as JSON if it's really JSON
refs #3484
2018-07-04 11:09:11 +02:00
Johannes Meyer 842e5603a1 Request: Introduce method extractMediaType
refs #3484
2018-07-04 11:09:11 +02:00
Eric Lippmann 8990d6f46e Drop support for PHP < 5.6 2018-07-03 13:11:36 +02:00
Eric Lippmann d6c4df7a5d Use password_hash and password_verify 2018-07-03 13:08:06 +02:00
Eric Lippmann faaff42096 Revert "Introduce PasswordHelper for safer passwords"
This reverts commit f57277aa96.

Since we're dropping PHP support for versions lower than 5.6 this class is no longer necessary.
2018-07-03 13:08:06 +02:00
Eric Lippmann 966148e8f0
Merge pull request #3463 from kobmaki/feature/Allow-to-interface-with-sqlite-databases-3381
Support SQLite resources
2018-06-28 11:42:00 +02:00
Eric Lippmann 0433dc4166 Bootstrap modules at last
We initialize modules before we set up the user backend and other
singletons. But modules may access those in order to check the
permissions of the authenticated user for example. With this fix,
modules are loaded once all other bootstrap tasks have been completed.

refs #3470
2018-06-27 09:52:00 +02:00
Uwe Ebel 4b5cf47cce Introduce SQLite resource type
refs #3381

Signed-off-by: Eric Lippmann <eric.lippmann@icinga.com>
2018-06-27 09:40:22 +02:00
Eric Lippmann c633c86db7
Merge pull request #3480 from Icinga/fix/revert-persistent-db-connections
No longer support persistent database connections
2018-06-27 09:36:37 +02:00
Eric Lippmann fdd791974d Update Parsedown 2018-06-25 16:07:47 +02:00
Eric Lippmann 66132c330a Update JShrink 2018-06-25 16:05:36 +02:00
Eric Lippmann 46907735fe Update HTMLPurifier 2018-06-25 16:04:10 +02:00
Eric Lippmann e55ac3e4a2 Update dompdf deps 2018-06-25 16:01:06 +02:00
Eric Lippmann 4d42c043e4 Remove traces of persistent db connections 2018-06-22 15:36:46 +02:00
Eric Lippmann af35794006 Revert "lib/db: Allow to configure persistent connections"
This reverts commit 4763b6b20a.
2018-06-22 14:43:32 +02:00
Eric Lippmann 6f1d8668a0 Fix line exceeds 120 characters 2018-06-22 11:04:48 +02:00
Alexander A. Klimov ee60a8df99 Don't let AutoRefreshForm handle API requests
refs #2749
2018-06-22 11:03:07 +02:00
Alexander A. Klimov 235e75d054 Form: handle API requests as expected
refs #2749
2018-06-22 11:03:07 +02:00
Alexander A. Klimov 880a0a254f DateTimePicker: support *nix timestamps
refs #2749
2018-06-22 11:03:07 +02:00
Alexander A. Klimov a444b8adf5 Request: support JSON as POST data format
refs #2749
2018-06-22 11:03:07 +02:00
Alexander A. Klimov 73473a3bb9 Fix tests
refs #2635
2018-06-22 09:57:10 +02:00
Alexander A. Klimov 906c1668a4 Split Json::encode() into Json::encode() and Json::sanitize()
refs #2635
2018-06-21 16:01:53 +02:00
Alexander A. Klimov 02b60633ff Auto-sanitize only in the monitoring module
refs #2635
2018-06-20 18:05:12 +02:00
Alexander A. Klimov 1a94a21263 Prefer Json::encode() over json_encode()
refs #2635
2018-06-20 18:05:11 +02:00
Alexander A. Klimov 9219cea776 Json::encode(): auto-sanitize bad UTF-8 strings
refs #2635
2018-06-20 18:05:11 +02:00
Johannes Meyer 3f66bd7437 Auth: Log login/logout activities to the audit log
refs #2563
2018-06-08 14:21:15 +02:00
Johannes Meyer 9da9f1237d Introduce class Icinga\Application\Hook\AuditHook
refs #2584
2018-06-08 14:21:15 +02:00
Eric Lippmann 96303f53f8
Merge pull request #3213 from Icinga/feature/drop-php-5-3-support
Drop PHP 5.3 support
2018-05-08 03:03:36 -04:00
Eric Lippmann 4bea67e756
Merge pull request #3315 from Icinga/bugfix/php-7-2-support-3185
Don't call session_start() after ini_set()
2018-05-07 05:44:52 -04:00
Alexander A. Klimov fc1f6e13ab Drop PHP 5.3 support 2018-05-07 11:36:54 +02:00
Eric Lippmann 60295f3407
Merge pull request #3443 from Icinga/fix/search-over-customvars-results-in-sql-error-2508
Fix search over customvars results in sql error 2508
2018-05-07 04:18:22 -04:00
Johannes Meyer cbc77cb7b2 Web: Implement method getMenu() using Icinga\Web\Menu and deprecate it
refs #2338
2018-04-30 10:30:58 +02:00
Johannes Meyer 71cb682832 Re-introduce class Icinga\Web\Menu
refs #2338
2018-04-30 10:24:57 +02:00
Johannes Meyer c3b19996f8 DbConnection: Introduce method getConfig()
refs #2508
2018-04-27 15:30:04 +02:00
Johannes Meyer 1b15048636 Drop obsolete Icinga\Web\Menu classes
refs #2338
2018-04-27 14:28:20 +02:00
Johannes Meyer 571b34c8cd Drop obsolete class Icinga\Web\Menu\BadgeMenuItemRenderer
refs #2338
2018-04-27 14:11:03 +02:00
Johannes Meyer 059088c089 Drop obsolete class Icinga\Web\Menu\SummaryMenuItemRenderer
refs #2338
2018-04-27 14:10:35 +02:00
Johannes Meyer d71982e333 Drop obsolete class Icinga\Web\Menu\PermittedMenuItemFilter
refs #2338
2018-04-27 14:10:00 +02:00
Johannes Meyer 1c4ebda037 Drop obsolete class Icinga\Web\MenuRenderer
refs #2338
2018-04-27 14:04:49 +02:00
Johannes Meyer 096fdfc887 Version.php: Raise version to 2.5.3 2018-04-27 10:23:36 +02:00
Johannes Meyer 23e508ac27 Version.php: Raise version to 2.5.2 2018-04-25 13:02:47 +02:00
Johannes Meyer b14b61d37a Platform: Also check for the sqlsrv extension when checking MSSQL support
refs #3320
2018-04-24 15:56:29 +02:00
Johannes Meyer 24128e0cc3 DbConnection: Automatically choose sqlsrv as driver..
..if available and none is explicitly set.

refs #3320
2018-04-24 15:50:12 +02:00
Johannes Meyer c566c8bfde
Merge pull request #3400 from Icinga/bugfix/mssql-detection
Platform: Also consider dblib when checking for MSSQL support
2018-04-24 15:46:45 +02:00
Johannes Meyer b76e6e7597 RepositoryQuery: Actually return self in method peekAhead and not the parent 2018-04-24 09:26:45 +02:00
Alexander A. Klimov 1280137eae Merge branch 'bugfix/form-number-inclusive-range' 2018-04-12 14:32:38 +02:00
Alexander A. Klimov 5cf51a70c8 Numeric input: validate inclusive ranges 2018-04-12 14:25:10 +02:00
Johannes Meyer 5f24fffe7d
Merge pull request #3412 from Icinga/bugfix/filter-editor-expand-upon-auto-refresh-2964
Preserve collapsed FilterEditor subtrees across auto-refreshes
2018-04-06 14:55:19 +02:00
Alexander A. Klimov 41b105136d Preserve collapsed FilterEditor subtrees across auto-refreshes
refs #2964
2018-04-06 13:54:51 +02:00
Johannes Meyer 72f0e809ae Pane: Add setter for $name
refs #2901
2018-04-06 11:08:20 +02:00
Johannes Meyer f522311cec
Merge pull request #3406 from Icinga/bugfix/filter-editor-new-elements-2900
FilterEditor: save changes on element addition
2018-04-05 12:12:59 +02:00
Alexander A. Klimov 15bc83ec14 IniParser::parseIniFile(): parse as ::parseIni() would do
refs #3357
2018-04-04 13:58:19 +02:00
Alexander A. Klimov b5dde96746 FilterEditor: save changes on element addition
refs #2900
2018-04-04 12:20:52 +02:00
Johannes Meyer ecd2320a23 AuthenticationHook: Remove superflous empty line at EOF
Travis complains about this in every PR created after this was introduced..
2018-04-04 11:22:23 +02:00
Alexander A. Klimov 4bf64cb131 Merge branch 'fix/ldap-group-membership-regression'
fixes #3324
2018-04-03 13:58:33 +02:00
Davide Bizzarri 8b5fe61996 Add AuthenticationHook
Created AuthenticationHook class with two main methods: onLogin and
onLogout that are called after login and before logout.
2018-03-28 16:18:31 +02:00
Markus Frosch 123a0b8196 Platform: Correct detecting MSSQL Support
PDO Implementation of zf1 builds on module mssql OR pdo_dblib, while dblib is preferred.

Newer implementations would support pdo_sqlsrv, but that is not available with ZF1.
2018-03-27 11:35:26 +02:00
Eric Lippmann 4a000d0098 Revert "Merge branch 'bugfix/domain-aware-auth-non-domain-ldap-group-backend-3250'"
This reverts commit 5cb7deda20, reversing
changes made to 02391e648b.

The change must be reverted because it makes it impossible to load groups
if domain aware auth is not enabled and the authenticated user specifies a domain.

refs #3324
2018-03-19 13:10:47 +01:00
Alexander A. Klimov 4477f33b31 Fix interference between two similar namespaces 2018-03-01 14:01:57 +01:00
lippserd f3404c24e5
Merge pull request #3340 from Icinga/bugfix/php-fatal-errors-2216
Unify the look of fatal and non-fatal errors
2018-02-21 09:26:21 +01:00
lippserd 133da1ef91
Merge pull request #3342 from Icinga/bugfix/pdf-export-broken-3338
Pdf: correct DOMPDF directory
2018-02-21 09:25:06 +01:00
Alexander A. Klimov 2355224b05 IcingaException::getConfidentialTraceAsString(): respect functions which don't take args "by definition" 2018-02-13 12:46:06 +01:00
Alexander A. Klimov 8e9d385a18 Unify the look of fatal and non-fatal errors
refs #2216
2018-02-07 10:45:20 +01:00
Alexander A. Klimov cf4af5180a Pdf: correct DOMPDF directory
refs #3338
2018-02-05 17:56:42 +01:00
Alexander A. Klimov 276d4f7e67 IcingaException::getConfidentialTraceAsString(): don't fail on internal functions
refs #3318
2018-01-25 14:20:41 +01:00
Alexander A. Klimov dadd2c80f6 Don't call session_start() after ini_set()
refs #3185
2018-01-24 17:38:20 +01:00
Alexander A. Klimov 72ec132f25 Correct interfaces to conform to PHP 7.2+ 2018-01-24 11:50:10 +01:00
Alexander A. Klimov cf9307fcc4 Donut: conform to PHP 5.3 2018-01-24 11:07:37 +01:00
Alexander A. Klimov 7f5962dfae FilterQueryString: fix typo 2018-01-24 10:31:57 +01:00
Alexander A. Klimov 7ae6e537d1 TemporaryLocalFileStorage::__destruct(): handle symlinks as expected 2018-01-24 10:28:58 +01:00
Eric Lippmann 56d28a6c14 Prepare release version 2.5.1 2018-01-22 13:47:41 +01:00
Alexander A. Klimov ff6fbdf5f2 Censor arguments in stack traces
refs #2810
2018-01-22 10:28:47 +01:00
Alexander A. Klimov 7106de5aa2 DbUserGroupBackend: implement Inspectable
refs #3233
2018-01-19 16:31:24 +01:00
Alexander A. Klimov 7227e10824 LdapUserGroupBackend: implement Inspectable
refs #3233
2018-01-19 16:31:24 +01:00
Johannes Meyer e59fa13786 Announcements: Render HTML in announcment messages
refs #2641
2018-01-19 16:12:53 +01:00
Johannes Meyer 3b9d8697ed Introduce class Icinga\Web\Helper\HtmlPurifier
refs #2641
2018-01-19 16:12:53 +01:00
lippserd d25e7b84eb
Merge pull request #3291 from Icinga/bugfix/ini-parser-hides-file-location-3252
IniParser: include the file location in parsing exceptions
2018-01-19 13:22:28 +01:00
Alexander A. Klimov 5616e9d508 IniParser: include the file location in parsing exceptions
refs #3252
2018-01-19 09:47:15 +01:00
lippserd 00eeab5883
Merge pull request #3283 from Icinga/bugfix/icinga-repository-retrievegeneralizedtime-rfc4517-2816
Icinga\Repository::retrieveGeneralizedTime(): comply w/ RFC4517
2018-01-18 16:15:21 +01:00
Alexander A. Klimov 5ce491d57a Icinga\Repository::retrieveGeneralizedTime(): outsource logic
refs #2816
2018-01-18 15:25:21 +01:00
lippserd 226cc2c810
Merge pull request #3274 from Icinga/bugfix/inner-donut-labels-firefox-3226
Donut: place HTML tags outside <svg>
2018-01-18 10:15:49 +01:00
lippserd 362a5b1721
Merge pull request #3271 from Icinga/bugfix/fix-internalurlvalidator
InternalUrlValidator: prevent circumvention by URLs on the same VHost
2018-01-18 09:58:32 +01:00
Alexander A. Klimov fbffc42b96 Icinga\Repository::retrieveGeneralizedTime(): comply w/ RFC4517
refs #2816
2018-01-17 18:14:18 +01:00
Alexander A. Klimov 0ad153a223 Tactical overview: always show the problems amount
refs #3226
2018-01-17 15:01:02 +01:00
lippserd 0abff5f643
Merge pull request #3268 from Icinga/bugfix/bad-url-makes-dashboard-unusable-2804
Don't fail to render the whole dashboard in case of a broken dashlet
2018-01-17 14:20:40 +01:00
Alexander A. Klimov 5f441f3ad1 Don't fail to render the whole dashboard in case of a broken dashlet 2018-01-17 13:48:14 +01:00
lippserd c18038f166
Merge pull request #3261 from Icinga/bugfix/icingacli-no-setup-module-2705
Make icingacli working without the setup module
2018-01-17 11:58:50 +01:00
lippserd ddfafb27f6
Merge pull request #3256 from Icinga/bugfix/multi-domain-support-broken-3232
Make multi-domain authn working w/ upper-case domains in user names
2018-01-17 11:57:48 +01:00
Alexander A. Klimov 4f706d9423 Donut: place HTML tags outside <svg>
refs #3226
2018-01-16 17:58:35 +01:00
Alexander A. Klimov c2f74d49cb InternalUrlValidator: prevent circumvention by URLs on the same VHost 2018-01-16 15:40:08 +01:00
Johannes Meyer 9ea916c5c6 Repository: Fix that legacy sort rules are ignored
refs #2765
2018-01-16 12:59:42 +01:00
Johannes Meyer ce4ae47805 LdapConnection: Respect a query's offset not only for ordered results
refs #2765
2018-01-16 12:59:42 +01:00
Johannes Meyer 37f22518bb LdapConnection: Respect query limits also for paged queries
refs #2765
2018-01-16 12:59:42 +01:00
Alexander A. Klimov 2282e1aa4f LdapConnection: respect a query's limit as expected
refs #2765
2018-01-16 12:59:42 +01:00
Alexander A. Klimov 8cbd506459 Make icingacli working without the setup module
This enables users to install only the icingacli package

refs #2705
2018-01-16 12:21:42 +01:00
lippserd 705f3a49d9
Merge pull request #3180 from Icinga/feature/url-static-self
Url: prefer static over self
2018-01-16 10:52:25 +01:00
Alexander A. Klimov 8c7ccce4a7 Make multi-domain authn working w/ upper-case domains in user names
refs #3232
2018-01-16 10:36:22 +01:00
lippserd c1497cf1c5
Merge pull request #3143 from Icinga/bugfix/inactive-module-config-tabs-2977
Hide inactive modules' config tabs
2018-01-16 09:18:49 +01:00
Alexander A. Klimov 5cb7deda20 Merge branch 'bugfix/domain-aware-auth-non-domain-ldap-group-backend-3250'
fixes #3250
fixes #3251
2018-01-15 11:20:45 +01:00
Paolo Schiro c806099e1b Avoid including domain users in a group not belonging to a domain
Signed-off-by: Alexander A. Klimov <alexander.klimov@icinga.com>

refs #3250
2018-01-15 11:19:35 +01:00
Alexander A. Klimov a1709a0670 Fix unneccessary log message
refs #3189
2017-12-19 15:58:25 +01:00
Alexander A. Klimov a5e75554ad Don't require module.less
refs #3149
2017-12-15 11:58:54 +01:00
Alexander A. Klimov 02decd957a php-svg-lib: fix missing files 2017-12-15 11:31:40 +01:00
lippserd 89da30f05f
Merge pull request #3209 from Icinga/bugfix/warnings-for-php-7-1-3208
PhpSession: conform to PHP 7.1
2017-12-15 09:22:22 +01:00
Alexander A. Klimov 7e2761b277 php-svg-lib: fix interface compatibility 2017-12-14 15:12:35 +01:00
Alexander A. Klimov 4ce4ad1074 Upgrade php-svg-lib to v0.3 2017-12-14 15:12:35 +01:00
Alexander A. Klimov 788272fad7 PhpSession: conform to PHP 7.1
refs #3208
2017-12-13 13:38:51 +01:00
Alexander A. Klimov 9acc8ee7a9 Upgrade dompdf to v0.8.2
refs #3202
2017-12-13 11:19:45 +01:00
Alexander A. Klimov 810c02a41f Url: prefer static over self 2017-12-04 10:48:52 +01:00
Eric Lippmann e376b137c7 Prepare release version 2.5.0 2017-11-27 16:18:13 +01:00
lippserd 8f1f8d4471
Merge pull request #3100 from Icinga/feature/expandable-content
Implement persistent "Show more" spoilers
2017-11-27 14:44:15 +01:00
lippserd 0bcbdfe679
Merge pull request #3063 from ss23/migrate_to_bcrypt
Improve Password hashing and validation for DbUserBackend
2017-11-27 14:26:35 +01:00
Alexander A. Klimov 6409bdc074 Implement persistent "Show more" spoilers 2017-11-27 14:18:42 +01:00
Eric Lippmann fb124b37cf Fix float format of donut chart attributes 2017-11-27 13:33:58 +01:00
lippserd 5aa83ea0d9
Merge pull request #3114 from Icinga/feature/support-phar-3113
Modules, Bootstrap: play nice with PHARs
2017-11-27 09:15:34 +01:00
Alexander A. Klimov 6cdad7c5c1 Hide inactive modules' config tabs
refs #2977
2017-11-24 13:40:03 +01:00
Jennifer Mourek d34ea588b1 Tactical overview: Add donut graphs 2017-11-21 23:38:04 +01:00
Eric Lippmann 8ffa110901 Web: Add icons and descriptions for second level menu items 2017-11-21 22:55:45 +01:00
Eric Lippmann b6b87796ed Menu: Link to the navigation dashboard if menu entry has children but no URL 2017-11-21 22:55:45 +01:00
Eric Lippmann e7ca817e81 Make Navigation::findItem() public
We need this method public for the navigation dashbaord.
2017-11-21 22:55:45 +01:00
Eric Lippmann 21dbe4ec47 Only render icons of root navigation items
The upcoming navigation dashboard creates its links from the menu items in configuration.php.
Now, we encourage users to specify icons for second-level menu items but do not want render them in our menu.
2017-11-21 22:55:45 +01:00
Eric Lippmann 3660606ca1 Allow to set a description for navigation items
We will introduce a navigation dashboard for root menu items which do not a have a URL but children.
2017-11-21 22:55:45 +01:00
lippserd a840a6d1f1
Merge pull request #3112 from Icinga/fix/filter-hints-for-ide-3111
Filter: new abstract methode and better IDE hints
2017-11-21 16:50:45 +01:00
lippserd df1e7683c8
Merge pull request #3041 from Icinga/feature/auto-detaching-dom-elements-3039
Implement auto-detaching DOM elements
2017-11-21 16:48:59 +01:00
Markus Frosch 2493cb8d63 Fix incorrect uses of translation around sprintf 2017-11-21 15:47:46 +01:00
Thomas Gelf 6e382093f4 Modules, Bootstrap: play nice with PHARs
fixes #3113
2017-11-21 14:15:41 +01:00
Alexander A. Klimov c7ffb41b02 Implement togglable flyover
refs #3024
2017-11-21 14:05:12 +01:00
Alexander A. Klimov b000c1ae4a Implement auto-detaching DOM elements
refs #3039
2017-11-21 13:17:55 +01:00