Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package icingaweb2-module-incubator for 
openSUSE:Factory checked in at 2023-10-02 20:04:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/icingaweb2-module-incubator (Old)
 and      /work/SRC/openSUSE:Factory/.icingaweb2-module-incubator.new.28202 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "icingaweb2-module-incubator"

Mon Oct  2 20:04:20 2023 rev:8 rq:1113012 version:0.20.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/icingaweb2-module-incubator/icingaweb2-module-incubator.changes
  2022-11-16 15:44:10.444033963 +0100
+++ 
/work/SRC/openSUSE:Factory/.icingaweb2-module-incubator.new.28202/icingaweb2-module-incubator.changes
       2023-10-02 20:05:10.760027225 +0200
@@ -1,0 +2,10 @@
+Fri Sep 22 13:17:14 UTC 2023 - ecsos <ec...@opensuse.org>
+
+- Update to 0.20.0
+  - improved am/pm formatting
+  - support db expressions in filter rendering
+  - fix background in action bar dropdowns
+  - JsonRPC no supports proxy handlers
+  - dbstore improved modification detection
+
+-------------------------------------------------------------------

Old:
----
  icingaweb2-module-incubator-0.19.0.tar.gz

New:
----
  icingaweb2-module-incubator-0.20.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ icingaweb2-module-incubator.spec ++++++
--- /var/tmp/diff_new_pack.w1exR8/_old  2023-10-02 20:05:11.704061175 +0200
+++ /var/tmp/diff_new_pack.w1exR8/_new  2023-10-02 20:05:11.708061319 +0200
@@ -1,7 +1,7 @@
 #
 # spec file
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
 %define basedir        %{_datadir}/icingaweb2
 %define module_name incubator
 Name:           icingaweb2-module-%{module_name}
-Version:        0.19.0
+Version:        0.20.0
 Release:        0
 Summary:        Bleeding edge Icinga Web 2 libraries
 License:        MIT

++++++ icingaweb2-module-incubator-0.19.0.tar.gz -> 
icingaweb2-module-incubator-0.20.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/icingaweb2-module-incubator-0.19.0/README.md 
new/icingaweb2-module-incubator-0.20.0/README.md
--- old/icingaweb2-module-incubator-0.19.0/README.md    2022-10-07 
16:11:28.000000000 +0200
+++ new/icingaweb2-module-incubator-0.20.0/README.md    2023-01-16 
15:09:28.000000000 +0100
@@ -12,7 +12,7 @@
 
 ```sh
 MODULE_NAME=incubator
-MODULE_VERSION=v0.19.0
+MODULE_VERSION=v0.20.0
 MODULES_PATH="/usr/share/icingaweb2/modules"
 MODULE_PATH="${MODULES_PATH}/${MODULE_NAME}"
 RELEASES="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}/archive";
@@ -27,7 +27,7 @@
 
 ```sh
 MODULE_NAME=incubator
-MODULE_VERSION=v0.19.0
+MODULE_VERSION=v0.20.0
 REPO="https://github.com/Icinga/icingaweb2-module-${MODULE_NAME}";
 MODULES_PATH="/usr/share/icingaweb2/modules"
 git clone ${REPO} "${MODULES_PATH}/${MODULE_NAME}" --branch "${MODULE_VERSION}"
@@ -47,11 +47,19 @@
 
 e.g.
 
-    ./bin/make-release.sh 0.19.0
+    ./bin/make-release.sh 0.20.0
 
 Changes
 -------
 
+### v0.20.0
+
+* improved am/pm formatting
+* support db expressions in filter rendering
+* fix background in action bar dropdowns
+* JsonRPC no supports proxy handlers
+* dbstore improved modification detection
+
 ### v0.19.0
 
 * improved ProcessInfo serialization
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/icingaweb2-module-incubator-0.19.0/composer.json 
new/icingaweb2-module-incubator-0.20.0/composer.json
--- old/icingaweb2-module-incubator-0.19.0/composer.json        2022-10-07 
16:11:28.000000000 +0200
+++ new/icingaweb2-module-incubator-0.20.0/composer.json        2023-01-16 
15:09:28.000000000 +0100
@@ -23,16 +23,16 @@
         "gipfl/data-type": ">=0.3.0",
         "gipfl/db-migration": ">=0.1.1",
         "gipfl/diff": ">=0.3",
-        "gipfl/format": ">=0.3",
+        "gipfl/format": ">=0.4",
         "gipfl/icinga-bundles": ">=0.7",
         "gipfl/icinga-cli-daemon": ">=0.3.2",
-        "gipfl/icingaweb2": ">=0.9",
+        "gipfl/icingaweb2": ">=0.10",
         "gipfl/influxdb": ">=0.5",
         "gipfl/json": ">=0.2",
         "gipfl/linux-health": ">=0.2",
         "gipfl/log": ">=0.7",
         "gipfl/process": ">=0.4",
-        "gipfl/protocol-jsonrpc": ">=0.10",
+        "gipfl/protocol-jsonrpc": ">=0.11",
         "gipfl/protocol-netstring": ">=0.1.1",
         "gipfl/react-utils": ">=0.3",
         "gipfl/simple-daemon": ">=0.6",
@@ -42,7 +42,7 @@
         "gipfl/translation": ">=0.1.1",
         "gipfl/web": ">=0.11",
         "gipfl/zfdb": ">=0.4",
-        "gipfl/zfdbstore": ">=0.2.2"
+        "gipfl/zfdbstore": ">=0.3"
     },
     "scripts": {
         "post-update-cmd": [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/icingaweb2-module-incubator-0.19.0/composer.lock 
new/icingaweb2-module-incubator-0.20.0/composer.lock
--- old/icingaweb2-module-incubator-0.19.0/composer.lock        2022-10-07 
16:11:28.000000000 +0200
+++ new/icingaweb2-module-incubator-0.20.0/composer.lock        2023-01-16 
15:09:28.000000000 +0100
@@ -4,24 +4,24 @@
         "Read more about it at 
https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies";,
         "This file is @generated automatically"
     ],
-    "content-hash": "fcf9edab6e7aa9b3c469243974ea29c2",
+    "content-hash": "0f8615637bf4546ebf9fb8223d79bd6f",
     "packages": [
         {
             "name": "gipfl/calendar",
-            "version": "v0.3.0",
+            "version": "v0.3.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/gipfl/calendar.git";,
-                "reference": "3194897cd5181d63915b33946c20138ff4e732ef"
+                "reference": "fd57d12aa97dd4c2a115e5cae36097ffaed220b8"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/gipfl/calendar/zipball/3194897cd5181d63915b33946c20138ff4e732ef";,
-                "reference": "3194897cd5181d63915b33946c20138ff4e732ef",
+                "url": 
"https://api.github.com/repos/gipfl/calendar/zipball/fd57d12aa97dd4c2a115e5cae36097ffaed220b8";,
+                "reference": "fd57d12aa97dd4c2a115e5cae36097ffaed220b8",
                 "shasum": ""
             },
             "require": {
-                "gipfl/format": "^0.3.0",
+                "gipfl/format": ">=0.3",
                 "gipfl/icingaweb2": ">=0.4.0",
                 "gipfl/translation": ">=0.1.1",
                 "php": ">=5.4.0"
@@ -46,9 +46,9 @@
             ],
             "support": {
                 "issues": "https://github.com/gipfl/calendar/issues";,
-                "source": "https://github.com/gipfl/calendar/tree/v0.3.0";
+                "source": "https://github.com/gipfl/calendar/tree/v0.3.1";
             },
-            "time": "2022-09-19T09:45:03+00:00"
+            "time": "2023-01-16T14:08:24+00:00"
         },
         {
             "name": "gipfl/cli",
@@ -260,16 +260,16 @@
         },
         {
             "name": "gipfl/format",
-            "version": "v0.3.0",
+            "version": "v0.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/gipfl/format.git";,
-                "reference": "b777cd55d4a02312b1ec115231e54729a91dcc25"
+                "reference": "87bd240f80baac73d18aeaf11ef389d94c56c8a0"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/gipfl/format/zipball/b777cd55d4a02312b1ec115231e54729a91dcc25";,
-                "reference": "b777cd55d4a02312b1ec115231e54729a91dcc25",
+                "url": 
"https://api.github.com/repos/gipfl/format/zipball/87bd240f80baac73d18aeaf11ef389d94c56c8a0";,
+                "reference": "87bd240f80baac73d18aeaf11ef389d94c56c8a0",
                 "shasum": ""
             },
             "require": {
@@ -299,9 +299,9 @@
             "description": "Arbitrary collection of Format helpers",
             "support": {
                 "issues": "https://github.com/gipfl/format/issues";,
-                "source": "https://github.com/gipfl/format/tree/v0.3.0";
+                "source": "https://github.com/gipfl/format/tree/v0.4.0";
             },
-            "time": "2021-12-06T12:07:32+00:00"
+            "time": "2023-01-16T11:46:49+00:00"
         },
         {
             "name": "gipfl/icinga-bundles",
@@ -418,16 +418,16 @@
         },
         {
             "name": "gipfl/icingaweb2",
-            "version": "v0.9.0",
+            "version": "v0.10.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/gipfl/icingaweb2.git";,
-                "reference": "afcafce316faa27483ea9333bebf2636f0ba27ad"
+                "reference": "36a2ca4739a0de7ffc365e625bcb81979aca3435"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/gipfl/icingaweb2/zipball/afcafce316faa27483ea9333bebf2636f0ba27ad";,
-                "reference": "afcafce316faa27483ea9333bebf2636f0ba27ad",
+                "url": 
"https://api.github.com/repos/gipfl/icingaweb2/zipball/36a2ca4739a0de7ffc365e625bcb81979aca3435";,
+                "reference": "36a2ca4739a0de7ffc365e625bcb81979aca3435",
                 "shasum": ""
             },
             "require": {
@@ -448,9 +448,9 @@
             "homepage": "https://github.com/gipfl/icingaweb2";,
             "support": {
                 "issues": "https://github.com/gipfl/icingaweb2/issues";,
-                "source": "https://github.com/gipfl/icingaweb2/tree/v0.9.0";
+                "source": "https://github.com/gipfl/icingaweb2/tree/v0.10.0";
             },
-            "time": "2022-09-01T07:19:50+00:00"
+            "time": "2023-01-16T13:50:24+00:00"
         },
         {
             "name": "gipfl/influxdb",
@@ -754,16 +754,16 @@
         },
         {
             "name": "gipfl/protocol-jsonrpc",
-            "version": "v0.10.0",
+            "version": "v0.11.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/gipfl/protocol-jsonrpc.git";,
-                "reference": "12a8ada5f7d102288aad6e2a0139663d26ed66ad"
+                "reference": "30b0241c67019746fce0b464543d8f936bdb9b68"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/gipfl/protocol-jsonrpc/zipball/12a8ada5f7d102288aad6e2a0139663d26ed66ad";,
-                "reference": "12a8ada5f7d102288aad6e2a0139663d26ed66ad",
+                "url": 
"https://api.github.com/repos/gipfl/protocol-jsonrpc/zipball/30b0241c67019746fce0b464543d8f936bdb9b68";,
+                "reference": "30b0241c67019746fce0b464543d8f936bdb9b68",
                 "shasum": ""
             },
             "require": {
@@ -799,9 +799,9 @@
             "description": "JsonRPC Connection implementation",
             "support": {
                 "issues": "https://github.com/gipfl/protocol-jsonrpc/issues";,
-                "source": 
"https://github.com/gipfl/protocol-jsonrpc/tree/v0.10.0";
+                "source": 
"https://github.com/gipfl/protocol-jsonrpc/tree/v0.11.0";
             },
-            "time": "2022-03-28T10:31:32+00:00"
+            "time": "2023-01-16T13:58:38+00:00"
         },
         {
             "name": "gipfl/protocol-netstring",
@@ -1185,16 +1185,16 @@
         },
         {
             "name": "gipfl/zfdbstore",
-            "version": "0.2.2",
+            "version": "v0.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/gipfl/zfdbstore.git";,
-                "reference": "1fa1f7ea2a24a0536681923a30f8ccb4e2a3b377"
+                "reference": "5296226865a0c053f29f57a1bccd50b17cab5248"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/gipfl/zfdbstore/zipball/1fa1f7ea2a24a0536681923a30f8ccb4e2a3b377";,
-                "reference": "1fa1f7ea2a24a0536681923a30f8ccb4e2a3b377",
+                "url": 
"https://api.github.com/repos/gipfl/zfdbstore/zipball/5296226865a0c053f29f57a1bccd50b17cab5248";,
+                "reference": "5296226865a0c053f29f57a1bccd50b17cab5248",
                 "shasum": ""
             },
             "require": {
@@ -1210,9 +1210,9 @@
             "description": "Storable class helpers for ZfDb",
             "support": {
                 "issues": "https://github.com/gipfl/zfdbstore/issues";,
-                "source": "https://github.com/gipfl/zfdbstore/tree/0.2.2";
+                "source": "https://github.com/gipfl/zfdbstore/tree/v0.3.0";
             },
-            "time": "2021-11-05T17:49:57+00:00"
+            "time": "2023-01-16T13:54:52+00:00"
         },
         {
             "name": "psr/log",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/icingaweb2-module-incubator-0.19.0/module.info 
new/icingaweb2-module-incubator-0.20.0/module.info
--- old/icingaweb2-module-incubator-0.19.0/module.info  2022-10-07 
16:11:28.000000000 +0200
+++ new/icingaweb2-module-incubator-0.20.0/module.info  2023-01-16 
15:09:28.000000000 +0100
@@ -1,5 +1,5 @@
 Name: Incubator
-Version: 0.19.0
+Version: 0.20.0
 Depends: ipl (>=0.5.0), reactbundle (>=0.8.0)
 Description: Incubator provides bleeding-edge libraries
  This repository ships libraries useful for Icinga Web 2 modules. Please 
download
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/public/css/combined.less 
new/icingaweb2-module-incubator-0.20.0/public/css/combined.less
--- old/icingaweb2-module-incubator-0.19.0/public/css/combined.less     
2022-10-07 16:11:28.000000000 +0200
+++ new/icingaweb2-module-incubator-0.20.0/public/css/combined.less     
2023-01-16 15:09:28.000000000 +0100
@@ -195,9 +195,8 @@
     min-width: 10em;
     position: absolute;
     display: none;
-    background-color: @tr-active-color;
-    border-radius: 0.1em;
-    border-top-left-radius: 0;
+    background-color: @menu-flyout-bg-color;
+    border: 1px solid @gray-light;
     box-shadow: 0.3em 0.3em 0.3em 0 rgba(0, 0, 0, 0.2);
 
     a {
@@ -205,7 +204,7 @@
       padding: 0.3em 0.5em 0.3em 1em;
       margin: 0;
       outline: none;
-      color: @icinga-blue;
+      color: @menu-flyout-color;
 
       &:hover {
         text-decoration: underline;
@@ -254,162 +253,68 @@
         }
     }
 }
-table.gipfl-name-value-table {
-  width: 100%;
-  > tbody > tr > th {
-    color: @text-color-light;
-    // Reset default font-weight
-    font-weight: bold;
-    padding-left: 0;
-    text-align: right;
-    vertical-align: top;
-    width: 12em;
-  }
-  > tbody > tr > td {
-    vertical-align: top;
-  }
-}
-
-table.gipfl-name-value-table a {
-  color: @icinga-blue;
-}
-
-table.gipfl-name-value-table pre {
-  background-color: transparent;
-  margin: 0;
-  padding: 0;
-  font-size: unset;
-  display: inline;
-}
-#layout.minimal-layout div.content form.gipfl-form {
-  ul.extensible-set {
-    max-width: unset;
-    border: 1px solid @gray-light;
-  }
-
-  dd.active ul.extensible-set {
-    border: 1px solid @icinga-blue;
-
-    input[type=submit]:first-of-type {
-      border-width: 1px;
+@gipfl-color-low-sat-blue: #dae3e6;
+// map Icinga vars, to avoid warnings in other files
+@gipfl-color-main: @icinga-blue;
+@gipfl-color-text: @text-color;
+@gipfl-color-gray-light: @gray-light;
+@gipfl-bg-element: #f2f1f0;
+@gipfl-bg-element: @low-sat-blue;
+@gipfl-icon-font: 'ifont';
+/**
+ * Lightweight support for small collapsible components
+ *
+ * @since v0.6.0
+ */
+.gipfl-collapsible-control {
+    display: block;
+    border-bottom: 1px solid @gipfl-color-gray-light;
+    &:hover {
+        cursor: pointer;
+        text-decoration: none;
     }
-  }
-
-  dd input.related-action[type='submit'] {
-    display: none;
-  }
-
-  dd.active li.active input.related-action[type='submit'] {
-    display: inline-block;
-  }
-
-  dd.active ul.extensible-set, ul.extensible-set.sortable {
-    input[type=text], select {
-      width: 100%;
+    &::after {
+        font-family: @gipfl-icon-font;
+        content: '\f103';
+        float: right;
+        margin-right: 0.5em;
+        color: @gipfl-color-gray-light;
     }
-
-    input[type=text] {
-      // background-color: white;
-      border: 1px solid white;
+    &:hover {
+        &::after {
+            color: @gipfl-color-text;
+        }
     }
-  }
-}
-.Differences {
-    width: 100%;
-    table-layout: fixed;
-    empty-cells: show;
-}
-
-.Differences thead {
-    display: none;
-}
-
-.Differences thead th {
-    text-align: left;
-    padding-left: 4 / 14 * 16em;
-}
-.Differences tbody th {
-    text-align: right;
-    width: 4em;
-    padding: 1px 2px;
-    border-right: 1px solid @gray-light;
-    background: @gray-lightest;
-    font-weight: normal;
-    vertical-align: top;
-}
-
-.Differences tbody td {
-    width: 50%;
-    .preformatted();
-    word-break: break-all;
-}
-
-@color-diff-ins: #bfb;
-@color-diff-del: #faa;
-@color-diff-changed-old: #fdd;
-@color-diff-changed-new: #efe;
-
-.DifferencesSideBySide {
-    ins, del {
+    &:focus {
         text-decoration: none;
-    }
-
-    .ChangeInsert {
-        td.Left {
-            background: @gray-lighter;
-        }
-        td.Right {
-            background: @color-diff-ins;
+        &::after {
+            color: @gipfl-color-main;
         }
     }
+}
 
-    .ChangeDelete {
-        td.Left {
-            background: @color-diff-del;
-        }
-        td.Right {
-            background: @gray-lighter;
-        }
+.gipfl-collapsible .collapsed {
+    :not(.gipfl-collapsible-control) {
+        display: none;
     }
-
-    .ChangeReplace {
-        td.Left {
-            background: @color-diff-changed-old;
-            del {
-                background: @color-diff-del;
-            }
-        }
-
-        td.Right {
-            background: @color-diff-changed-new;
-            ins {
-                background: @color-diff-ins;
-            }
+    .gipfl-collapsible-control {
+        &::after {
+            content: '\e87a';
         }
-
     }
 }
 
-.Differences .Skipped {
-    background: @gray-lightest;
-}
-
-.DifferencesInline .ChangeReplace .Left,
-.DifferencesInline .ChangeDelete .Left {
-    background: #fdd;
-}
-
-.DifferencesInline .ChangeReplace .Right,
-.DifferencesInline .ChangeInsert .Right {
-    background: #dfd;
-}
-
-.DifferencesInline .ChangeReplace ins {
-    background: #9e9;
-}
-
-.DifferencesInline .ChangeReplace del {
-    background: #e99;
+ul.gipfl-collapsible {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+    li {
+        margin: 0;
+    }
+    .gipfl-collapsible-control {
+        font-weight: bold;
+        line-height: 2em;
+    }
 }
 /**
  * State Hints
@@ -468,14 +373,33 @@
         text-decoration: underline;
     }
 }
-@gipfl-color-low-sat-blue: #dae3e6;
-// map Icinga vars, to avoid warnings in other files
-@gipfl-color-main: @icinga-blue;
-@gipfl-color-text: @text-color;
-@gipfl-color-gray-light: @gray-light;
-@gipfl-bg-element: #f2f1f0;
-@gipfl-bg-element: @low-sat-blue;
-@gipfl-icon-font: 'ifont';
+table.gipfl-name-value-table {
+  width: 100%;
+  > tbody > tr > th {
+    color: @text-color-light;
+    // Reset default font-weight
+    font-weight: bold;
+    padding-left: 0;
+    text-align: right;
+    vertical-align: top;
+    width: 12em;
+  }
+  > tbody > tr > td {
+    vertical-align: top;
+  }
+}
+
+table.gipfl-name-value-table a {
+  color: @icinga-blue;
+}
+
+table.gipfl-name-value-table pre {
+  background-color: transparent;
+  margin: 0;
+  padding: 0;
+  font-size: unset;
+  display: inline;
+}
 form.gipfl-form {
   input[type="submit"] {
     margin-right: 0.5em;
@@ -545,61 +469,6 @@
     max-width: 36em;
   }
 }
-/**
- * Lightweight support for small collapsible components
- *
- * @since v0.6.0
- */
-.gipfl-collapsible-control {
-    display: block;
-    border-bottom: 1px solid @gipfl-color-gray-light;
-    &:hover {
-        cursor: pointer;
-        text-decoration: none;
-    }
-    &::after {
-        font-family: @gipfl-icon-font;
-        content: '\f103';
-        float: right;
-        margin-right: 0.5em;
-        color: @gipfl-color-gray-light;
-    }
-    &:hover {
-        &::after {
-            color: @gipfl-color-text;
-        }
-    }
-    &:focus {
-        text-decoration: none;
-        &::after {
-            color: @gipfl-color-main;
-        }
-    }
-}
-
-.gipfl-collapsible .collapsed {
-    :not(.gipfl-collapsible-control) {
-        display: none;
-    }
-    .gipfl-collapsible-control {
-        &::after {
-            content: '\e87a';
-        }
-    }
-}
-
-ul.gipfl-collapsible {
-    list-style-type: none;
-    margin: 0;
-    padding: 0;
-    li {
-        margin: 0;
-    }
-    .gipfl-collapsible-control {
-        font-weight: bold;
-        line-height: 2em;
-    }
-}
 form.gipfl-form {
   label {
     line-height: 2em;
@@ -939,6 +808,39 @@
   }
 }
 
+#layout.minimal-layout div.content form.gipfl-form {
+  ul.extensible-set {
+    max-width: unset;
+    border: 1px solid @gray-light;
+  }
+
+  dd.active ul.extensible-set {
+    border: 1px solid @icinga-blue;
+
+    input[type=submit]:first-of-type {
+      border-width: 1px;
+    }
+  }
+
+  dd input.related-action[type='submit'] {
+    display: none;
+  }
+
+  dd.active li.active input.related-action[type='submit'] {
+    display: inline-block;
+  }
+
+  dd.active ul.extensible-set, ul.extensible-set.sortable {
+    input[type=text], select {
+      width: 100%;
+    }
+
+    input[type=text] {
+      // background-color: white;
+      border: 1px solid white;
+    }
+  }
+}
 form.gipfl-inline-form {
     display: inline-block;
     select {
@@ -968,3 +870,100 @@
         box-sizing: border-box;
     }
 }
+.Differences {
+    width: 100%;
+    table-layout: fixed;
+    empty-cells: show;
+}
+
+.Differences thead {
+    display: none;
+}
+
+.Differences thead th {
+    text-align: left;
+    padding-left: 4 / 14 * 16em;
+}
+.Differences tbody th {
+    text-align: right;
+    width: 4em;
+    padding: 1px 2px;
+    border-right: 1px solid @gray-light;
+    background: @gray-lightest;
+    font-weight: normal;
+    vertical-align: top;
+}
+
+.Differences tbody td {
+    width: 50%;
+    .preformatted();
+    word-break: break-all;
+}
+
+@color-diff-ins: #bfb;
+@color-diff-del: #faa;
+@color-diff-changed-old: #fdd;
+@color-diff-changed-new: #efe;
+
+.DifferencesSideBySide {
+    ins, del {
+        text-decoration: none;
+    }
+
+    .ChangeInsert {
+        td.Left {
+            background: @gray-lighter;
+        }
+        td.Right {
+            background: @color-diff-ins;
+        }
+    }
+
+    .ChangeDelete {
+        td.Left {
+            background: @color-diff-del;
+        }
+        td.Right {
+            background: @gray-lighter;
+        }
+    }
+
+    .ChangeReplace {
+        td.Left {
+            background: @color-diff-changed-old;
+            del {
+                background: @color-diff-del;
+            }
+        }
+
+        td.Right {
+            background: @color-diff-changed-new;
+            ins {
+                background: @color-diff-ins;
+            }
+        }
+
+    }
+}
+
+.Differences .Skipped {
+    background: @gray-lightest;
+}
+
+.DifferencesInline .ChangeReplace .Left,
+.DifferencesInline .ChangeDelete .Left {
+    background: #fdd;
+}
+
+.DifferencesInline .ChangeReplace .Right,
+.DifferencesInline .ChangeInsert .Right {
+    background: #dfd;
+}
+
+.DifferencesInline .ChangeReplace ins {
+    background: #9e9;
+}
+
+.DifferencesInline .ChangeReplace del {
+    background: #e99;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/autoload.php 
new/icingaweb2-module-incubator-0.20.0/vendor/autoload.php
--- old/icingaweb2-module-incubator-0.19.0/vendor/autoload.php  2022-10-07 
16:11:28.000000000 +0200
+++ new/icingaweb2-module-incubator-0.20.0/vendor/autoload.php  2023-01-16 
15:09:28.000000000 +0100
@@ -4,4 +4,4 @@
 
 require_once __DIR__ . '/composer/autoload_real.php';
 
-return ComposerAutoloaderInit573004be9405631fe9f7a831f5ef7722::getLoader();
+return ComposerAutoloaderInit684800034bdac0af606e9381dda72632::getLoader();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/composer/autoload_real.php 
new/icingaweb2-module-incubator-0.20.0/vendor/composer/autoload_real.php
--- old/icingaweb2-module-incubator-0.19.0/vendor/composer/autoload_real.php    
2022-10-07 16:11:28.000000000 +0200
+++ new/icingaweb2-module-incubator-0.20.0/vendor/composer/autoload_real.php    
2023-01-16 15:09:28.000000000 +0100
@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInit573004be9405631fe9f7a831f5ef7722
+class ComposerAutoloaderInit684800034bdac0af606e9381dda72632
 {
     private static $loader;
 
@@ -24,15 +24,15 @@
 
         require __DIR__ . '/platform_check.php';
 
-        
spl_autoload_register(array('ComposerAutoloaderInit573004be9405631fe9f7a831f5ef7722',
 'loadClassLoader'), true, true);
+        
spl_autoload_register(array('ComposerAutoloaderInit684800034bdac0af606e9381dda72632',
 'loadClassLoader'), true, true);
         self::$loader = $loader = new 
\Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
-        
spl_autoload_unregister(array('ComposerAutoloaderInit573004be9405631fe9f7a831f5ef7722',
 'loadClassLoader'));
+        
spl_autoload_unregister(array('ComposerAutoloaderInit684800034bdac0af606e9381dda72632',
 'loadClassLoader'));
 
         $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') 
&& (!function_exists('zend_loader_file_encoded') || 
!zend_loader_file_encoded());
         if ($useStaticLoader) {
             require __DIR__ . '/autoload_static.php';
 
-            
call_user_func(\Composer\Autoload\ComposerStaticInit573004be9405631fe9f7a831f5ef7722::getInitializer($loader));
+            
call_user_func(\Composer\Autoload\ComposerStaticInit684800034bdac0af606e9381dda72632::getInitializer($loader));
         } else {
             $map = require __DIR__ . '/autoload_namespaces.php';
             foreach ($map as $namespace => $path) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/composer/autoload_static.php 
new/icingaweb2-module-incubator-0.20.0/vendor/composer/autoload_static.php
--- old/icingaweb2-module-incubator-0.19.0/vendor/composer/autoload_static.php  
2022-10-07 16:11:28.000000000 +0200
+++ new/icingaweb2-module-incubator-0.20.0/vendor/composer/autoload_static.php  
2023-01-16 15:09:28.000000000 +0100
@@ -4,7 +4,7 @@
 
 namespace Composer\Autoload;
 
-class ComposerStaticInit573004be9405631fe9f7a831f5ef7722
+class ComposerStaticInit684800034bdac0af606e9381dda72632
 {
     public static $prefixLengthsPsr4 = array (
         'g' => 
@@ -170,9 +170,9 @@
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->prefixLengthsPsr4 = 
ComposerStaticInit573004be9405631fe9f7a831f5ef7722::$prefixLengthsPsr4;
-            $loader->prefixDirsPsr4 = 
ComposerStaticInit573004be9405631fe9f7a831f5ef7722::$prefixDirsPsr4;
-            $loader->classMap = 
ComposerStaticInit573004be9405631fe9f7a831f5ef7722::$classMap;
+            $loader->prefixLengthsPsr4 = 
ComposerStaticInit684800034bdac0af606e9381dda72632::$prefixLengthsPsr4;
+            $loader->prefixDirsPsr4 = 
ComposerStaticInit684800034bdac0af606e9381dda72632::$prefixDirsPsr4;
+            $loader->classMap = 
ComposerStaticInit684800034bdac0af606e9381dda72632::$classMap;
 
         }, null, ClassLoader::class);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/composer/installed.json 
new/icingaweb2-module-incubator-0.20.0/vendor/composer/installed.json
--- old/icingaweb2-module-incubator-0.19.0/vendor/composer/installed.json       
2022-10-07 16:11:28.000000000 +0200
+++ new/icingaweb2-module-incubator-0.20.0/vendor/composer/installed.json       
2023-01-16 15:09:28.000000000 +0100
@@ -2,26 +2,26 @@
     "packages": [
         {
             "name": "gipfl/calendar",
-            "version": "v0.3.0",
-            "version_normalized": "0.3.0.0",
+            "version": "v0.3.1",
+            "version_normalized": "0.3.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/gipfl/calendar.git";,
-                "reference": "3194897cd5181d63915b33946c20138ff4e732ef"
+                "reference": "fd57d12aa97dd4c2a115e5cae36097ffaed220b8"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/gipfl/calendar/zipball/3194897cd5181d63915b33946c20138ff4e732ef";,
-                "reference": "3194897cd5181d63915b33946c20138ff4e732ef",
+                "url": 
"https://api.github.com/repos/gipfl/calendar/zipball/fd57d12aa97dd4c2a115e5cae36097ffaed220b8";,
+                "reference": "fd57d12aa97dd4c2a115e5cae36097ffaed220b8",
                 "shasum": ""
             },
             "require": {
-                "gipfl/format": "^0.3.0",
+                "gipfl/format": ">=0.3",
                 "gipfl/icingaweb2": ">=0.4.0",
                 "gipfl/translation": ">=0.1.1",
                 "php": ">=5.4.0"
             },
-            "time": "2022-09-19T09:45:03+00:00",
+            "time": "2023-01-16T14:08:24+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
@@ -43,7 +43,7 @@
             ],
             "support": {
                 "issues": "https://github.com/gipfl/calendar/issues";,
-                "source": "https://github.com/gipfl/calendar/tree/v0.3.0";
+                "source": "https://github.com/gipfl/calendar/tree/v0.3.1";
             },
             "install-path": "../gipfl/calendar"
         },
@@ -272,17 +272,17 @@
         },
         {
             "name": "gipfl/format",
-            "version": "v0.3.0",
-            "version_normalized": "0.3.0.0",
+            "version": "v0.4.0",
+            "version_normalized": "0.4.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/gipfl/format.git";,
-                "reference": "b777cd55d4a02312b1ec115231e54729a91dcc25"
+                "reference": "87bd240f80baac73d18aeaf11ef389d94c56c8a0"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/gipfl/format/zipball/b777cd55d4a02312b1ec115231e54729a91dcc25";,
-                "reference": "b777cd55d4a02312b1ec115231e54729a91dcc25",
+                "url": 
"https://api.github.com/repos/gipfl/format/zipball/87bd240f80baac73d18aeaf11ef389d94c56c8a0";,
+                "reference": "87bd240f80baac73d18aeaf11ef389d94c56c8a0",
                 "shasum": ""
             },
             "require": {
@@ -293,7 +293,7 @@
                 "phpunit/phpunit": "^9.3 || ^7.5 || ^6.5 || ^5.7",
                 "squizlabs/php_codesniffer": "^3.6"
             },
-            "time": "2021-12-06T12:07:32+00:00",
+            "time": "2023-01-16T11:46:49+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
@@ -314,7 +314,7 @@
             "description": "Arbitrary collection of Format helpers",
             "support": {
                 "issues": "https://github.com/gipfl/format/issues";,
-                "source": "https://github.com/gipfl/format/tree/v0.3.0";
+                "source": "https://github.com/gipfl/format/tree/v0.4.0";
             },
             "install-path": "../gipfl/format"
         },
@@ -438,17 +438,17 @@
         },
         {
             "name": "gipfl/icingaweb2",
-            "version": "v0.9.0",
-            "version_normalized": "0.9.0.0",
+            "version": "v0.10.0",
+            "version_normalized": "0.10.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/gipfl/icingaweb2.git";,
-                "reference": "afcafce316faa27483ea9333bebf2636f0ba27ad"
+                "reference": "36a2ca4739a0de7ffc365e625bcb81979aca3435"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/gipfl/icingaweb2/zipball/afcafce316faa27483ea9333bebf2636f0ba27ad";,
-                "reference": "afcafce316faa27483ea9333bebf2636f0ba27ad",
+                "url": 
"https://api.github.com/repos/gipfl/icingaweb2/zipball/36a2ca4739a0de7ffc365e625bcb81979aca3435";,
+                "reference": "36a2ca4739a0de7ffc365e625bcb81979aca3435",
                 "shasum": ""
             },
             "require": {
@@ -458,7 +458,7 @@
                 "ipl/html": ">=0.2.1",
                 "php": ">=5.6"
             },
-            "time": "2022-09-01T07:19:50+00:00",
+            "time": "2023-01-16T13:50:24+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
@@ -471,7 +471,7 @@
             "homepage": "https://github.com/gipfl/icingaweb2";,
             "support": {
                 "issues": "https://github.com/gipfl/icingaweb2/issues";,
-                "source": "https://github.com/gipfl/icingaweb2/tree/v0.9.0";
+                "source": "https://github.com/gipfl/icingaweb2/tree/v0.10.0";
             },
             "install-path": "../gipfl/icingaweb2"
         },
@@ -798,17 +798,17 @@
         },
         {
             "name": "gipfl/protocol-jsonrpc",
-            "version": "v0.10.0",
-            "version_normalized": "0.10.0.0",
+            "version": "v0.11.0",
+            "version_normalized": "0.11.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/gipfl/protocol-jsonrpc.git";,
-                "reference": "12a8ada5f7d102288aad6e2a0139663d26ed66ad"
+                "reference": "30b0241c67019746fce0b464543d8f936bdb9b68"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/gipfl/protocol-jsonrpc/zipball/12a8ada5f7d102288aad6e2a0139663d26ed66ad";,
-                "reference": "12a8ada5f7d102288aad6e2a0139663d26ed66ad",
+                "url": 
"https://api.github.com/repos/gipfl/protocol-jsonrpc/zipball/30b0241c67019746fce0b464543d8f936bdb9b68";,
+                "reference": "30b0241c67019746fce0b464543d8f936bdb9b68",
                 "shasum": ""
             },
             "require": {
@@ -825,7 +825,7 @@
                 "phpunit/phpunit": "^9.3 || ^7.5 || ^6.5 || ^5.7",
                 "squizlabs/php_codesniffer": "^3.6"
             },
-            "time": "2022-03-28T10:31:32+00:00",
+            "time": "2023-01-16T13:58:38+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
@@ -846,7 +846,7 @@
             "description": "JsonRPC Connection implementation",
             "support": {
                 "issues": "https://github.com/gipfl/protocol-jsonrpc/issues";,
-                "source": 
"https://github.com/gipfl/protocol-jsonrpc/tree/v0.10.0";
+                "source": 
"https://github.com/gipfl/protocol-jsonrpc/tree/v0.11.0";
             },
             "install-path": "../gipfl/protocol-jsonrpc"
         },
@@ -1259,23 +1259,23 @@
         },
         {
             "name": "gipfl/zfdbstore",
-            "version": "0.2.2",
-            "version_normalized": "0.2.2.0",
+            "version": "v0.3.0",
+            "version_normalized": "0.3.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/gipfl/zfdbstore.git";,
-                "reference": "1fa1f7ea2a24a0536681923a30f8ccb4e2a3b377"
+                "reference": "5296226865a0c053f29f57a1bccd50b17cab5248"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/gipfl/zfdbstore/zipball/1fa1f7ea2a24a0536681923a30f8ccb4e2a3b377";,
-                "reference": "1fa1f7ea2a24a0536681923a30f8ccb4e2a3b377",
+                "url": 
"https://api.github.com/repos/gipfl/zfdbstore/zipball/5296226865a0c053f29f57a1bccd50b17cab5248";,
+                "reference": "5296226865a0c053f29f57a1bccd50b17cab5248",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.6"
             },
-            "time": "2021-11-05T17:49:57+00:00",
+            "time": "2023-01-16T13:54:52+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
@@ -1287,7 +1287,7 @@
             "description": "Storable class helpers for ZfDb",
             "support": {
                 "issues": "https://github.com/gipfl/zfdbstore/issues";,
-                "source": "https://github.com/gipfl/zfdbstore/tree/0.2.2";
+                "source": "https://github.com/gipfl/zfdbstore/tree/v0.3.0";
             },
             "install-path": "../gipfl/zfdbstore"
         },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/composer/installed.php 
new/icingaweb2-module-incubator-0.20.0/vendor/composer/installed.php
--- old/icingaweb2-module-incubator-0.19.0/vendor/composer/installed.php        
2022-10-07 16:11:28.000000000 +0200
+++ new/icingaweb2-module-incubator-0.20.0/vendor/composer/installed.php        
2023-01-16 15:09:28.000000000 +0100
@@ -5,7 +5,7 @@
         'type' => 'library',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
-        'reference' => 'f016f00c9ff8355280b284ab65aed253d20b84ff',
+        'reference' => '03cc0aac078de25564d09c13ae7de6f0ce9c1b3b',
         'name' => 'icinga/incubator',
         'dev' => true,
     ),
@@ -95,12 +95,12 @@
             ),
         ),
         'gipfl/calendar' => array(
-            'pretty_version' => 'v0.3.0',
-            'version' => '0.3.0.0',
+            'pretty_version' => 'v0.3.1',
+            'version' => '0.3.1.0',
             'type' => 'library',
             'install_path' => __DIR__ . '/../gipfl/calendar',
             'aliases' => array(),
-            'reference' => '3194897cd5181d63915b33946c20138ff4e732ef',
+            'reference' => 'fd57d12aa97dd4c2a115e5cae36097ffaed220b8',
             'dev_requirement' => false,
         ),
         'gipfl/cli' => array(
@@ -149,12 +149,12 @@
             'dev_requirement' => false,
         ),
         'gipfl/format' => array(
-            'pretty_version' => 'v0.3.0',
-            'version' => '0.3.0.0',
+            'pretty_version' => 'v0.4.0',
+            'version' => '0.4.0.0',
             'type' => 'library',
             'install_path' => __DIR__ . '/../gipfl/format',
             'aliases' => array(),
-            'reference' => 'b777cd55d4a02312b1ec115231e54729a91dcc25',
+            'reference' => '87bd240f80baac73d18aeaf11ef389d94c56c8a0',
             'dev_requirement' => false,
         ),
         'gipfl/icinga-bundles' => array(
@@ -176,12 +176,12 @@
             'dev_requirement' => false,
         ),
         'gipfl/icingaweb2' => array(
-            'pretty_version' => 'v0.9.0',
-            'version' => '0.9.0.0',
+            'pretty_version' => 'v0.10.0',
+            'version' => '0.10.0.0',
             'type' => 'library',
             'install_path' => __DIR__ . '/../gipfl/icingaweb2',
             'aliases' => array(),
-            'reference' => 'afcafce316faa27483ea9333bebf2636f0ba27ad',
+            'reference' => '36a2ca4739a0de7ffc365e625bcb81979aca3435',
             'dev_requirement' => false,
         ),
         'gipfl/influxdb' => array(
@@ -248,12 +248,12 @@
             'dev_requirement' => false,
         ),
         'gipfl/protocol-jsonrpc' => array(
-            'pretty_version' => 'v0.10.0',
-            'version' => '0.10.0.0',
+            'pretty_version' => 'v0.11.0',
+            'version' => '0.11.0.0',
             'type' => 'library',
             'install_path' => __DIR__ . '/../gipfl/protocol-jsonrpc',
             'aliases' => array(),
-            'reference' => '12a8ada5f7d102288aad6e2a0139663d26ed66ad',
+            'reference' => '30b0241c67019746fce0b464543d8f936bdb9b68',
             'dev_requirement' => false,
         ),
         'gipfl/protocol-netstring' => array(
@@ -338,12 +338,12 @@
             'dev_requirement' => false,
         ),
         'gipfl/zfdbstore' => array(
-            'pretty_version' => '0.2.2',
-            'version' => '0.2.2.0',
+            'pretty_version' => 'v0.3.0',
+            'version' => '0.3.0.0',
             'type' => 'library',
             'install_path' => __DIR__ . '/../gipfl/zfdbstore',
             'aliases' => array(),
-            'reference' => '1fa1f7ea2a24a0536681923a30f8ccb4e2a3b377',
+            'reference' => '5296226865a0c053f29f57a1bccd50b17cab5248',
             'dev_requirement' => false,
         ),
         'guzzlehttp/psr7' => array(
@@ -358,7 +358,7 @@
             'type' => 'library',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
-            'reference' => 'f016f00c9ff8355280b284ab65aed253d20b84ff',
+            'reference' => '03cc0aac078de25564d09c13ae7de6f0ce9c1b3b',
             'dev_requirement' => false,
         ),
         'ipl/html' => array(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/calendar/composer.json 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/calendar/composer.json
--- old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/calendar/composer.json  
2022-10-07 16:11:28.000000000 +0200
+++ new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/calendar/composer.json  
2023-01-16 15:09:28.000000000 +0100
@@ -15,7 +15,7 @@
   },
   "require": {
     "php": ">=5.4.0",
-    "gipfl/format": "^0.3.0",
+    "gipfl/format": ">=0.3",
     "gipfl/icingaweb2": ">=0.4.0",
     "gipfl/translation": ">=0.1.1"
   },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/format/src/LocalTimeFormat.php
 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/format/src/LocalTimeFormat.php
--- 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/format/src/LocalTimeFormat.php
  2022-10-07 16:11:28.000000000 +0200
+++ 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/format/src/LocalTimeFormat.php
  2023-01-16 15:09:28.000000000 +0100
@@ -156,7 +156,7 @@
     public function getShortTime($time)
     {
         if ($this->wantsAmPm()) {
-            return $this->format($time, 'h:mm a');
+            return $this->format($time, 'K:mm a');
         }
 
         return $this->format($time, 'H:mm');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/format/src/LocaleAwareness.php
 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/format/src/LocaleAwareness.php
--- 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/format/src/LocaleAwareness.php
  2022-10-07 16:11:28.000000000 +0200
+++ 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/format/src/LocaleAwareness.php
  2023-01-16 15:09:28.000000000 +0100
@@ -72,6 +72,12 @@
 
     protected static function timeZonesAreEqual($left, $right)
     {
+        if ($left === null && $right !== null) {
+            return false;
+        }
+        if ($left !== null && $right === null) {
+            return false;
+        }
         if ($left instanceof DateTimeZone) {
             return $right instanceof DateTimeZone && $left->getName() === 
$right->getName();
         }
@@ -80,7 +86,8 @@
         }
 
         throw new RuntimeException(sprintf(
-            'Valid timezone expected, got %s',
+            'Valid timezone expected, got left=%s, right=%s',
+            is_object($left) ? get_class($left) : gettype($left),
             is_object($right) ? get_class($right) : gettype($right)
         ));
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/icingaweb2/public/css/11-action-bar.less
 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/icingaweb2/public/css/11-action-bar.less
--- 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/icingaweb2/public/css/11-action-bar.less
        2022-10-07 16:11:28.000000000 +0200
+++ 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/icingaweb2/public/css/11-action-bar.less
        2023-01-16 15:09:28.000000000 +0100
@@ -62,9 +62,8 @@
     min-width: 10em;
     position: absolute;
     display: none;
-    background-color: @tr-active-color;
-    border-radius: 0.1em;
-    border-top-left-radius: 0;
+    background-color: @menu-flyout-bg-color;
+    border: 1px solid @gray-light;
     box-shadow: 0.3em 0.3em 0.3em 0 rgba(0, 0, 0, 0.2);
 
     a {
@@ -72,7 +71,7 @@
       padding: 0.3em 0.5em 0.3em 1em;
       margin: 0;
       outline: none;
-      color: @icinga-blue;
+      color: @menu-flyout-color;
 
       &:hover {
         text-decoration: underline;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/icingaweb2/src/Zf1/Db/FilterRenderer.php
 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/icingaweb2/src/Zf1/Db/FilterRenderer.php
--- 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/icingaweb2/src/Zf1/Db/FilterRenderer.php
        2022-10-07 16:11:28.000000000 +0200
+++ 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/icingaweb2/src/Zf1/Db/FilterRenderer.php
        2023-01-16 15:09:28.000000000 +0100
@@ -118,6 +118,7 @@
         foreach ($columns as $col) {
             if ($col[1] instanceof Expr || $col[1] instanceof DbExpr) {
                 $map[$col[2]] = (string) $col[1];
+                $map[$col[2]] = $col[1];
             } else {
                 $map[$col[2]] = $col[0] . '.' . $col[1];
             }
@@ -179,7 +180,7 @@
     protected function renderFilterExpression(FilterExpression $filter)
     {
         $col = $this->lookupColumnAlias($filter->getColumn());
-        if (! ctype_digit($col)) {
+        if (! $col instanceof Expr && ! $col instanceof DbExpr && ! 
ctype_digit($col)) {
             $col = $this->db->quoteIdentifier($col);
         }
         $sign = $filter->getSign();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/protocol-jsonrpc/src/Error.php
 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/protocol-jsonrpc/src/Error.php
--- 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/protocol-jsonrpc/src/Error.php
  2022-10-07 16:11:28.000000000 +0200
+++ 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/protocol-jsonrpc/src/Error.php
  2023-01-16 15:09:28.000000000 +0100
@@ -4,6 +4,7 @@
 
 use Exception;
 use JsonSerializable;
+use TypeError;
 
 class Error implements JsonSerializable
 {
@@ -96,6 +97,18 @@
         ), $data);
     }
 
+    public static function forTypeError(TypeError $error)
+    {
+        $code = self::INVALID_PARAMS;
+
+        return new Error($code, sprintf(
+            '%s in %s(%d)',
+            $error->getMessage(),
+            $error->getFile(),
+            $error->getLine()
+        ));
+    }
+
     /**
      * @return int
      */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/protocol-jsonrpc/src/Handler/NamespacedPacketHandler.php
 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/protocol-jsonrpc/src/Handler/NamespacedPacketHandler.php
--- 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/protocol-jsonrpc/src/Handler/NamespacedPacketHandler.php
        2022-10-07 16:11:28.000000000 +0200
+++ 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/protocol-jsonrpc/src/Handler/NamespacedPacketHandler.php
        2023-01-16 15:09:28.000000000 +0100
@@ -10,6 +10,7 @@
 use gipfl\Protocol\JsonRpc\Notification;
 use gipfl\Protocol\JsonRpc\Request;
 use RuntimeException;
+use TypeError;
 use function call_user_func_array;
 use function method_exists;
 use function preg_split;
@@ -36,6 +37,8 @@
             $this->call($namespace, $method, $notification);
         } catch (Exception $exception) {
             // Well... we might want to log this
+        } catch (TypeError $exception) {
+            // Well... we might want to log this
         }
     }
 
@@ -47,6 +50,8 @@
             return $this->call($namespace, $method, $request);
         } catch (Exception $exception) {
             return Error::forException($exception);
+        } catch (TypeError $error) {
+            return Error::forTypeError($error);
         }
     }
 
@@ -90,7 +95,7 @@
     protected function call($namespace, $method, Notification $notification)
     {
         if (! isset($this->handlers[$namespace])) {
-            return $this->notFound($notification);
+            return $this->notFound($notification, ', no handler for ' . 
$namespace);
         }
 
         $handler = $this->handlers[$namespace];
@@ -112,14 +117,14 @@
         }
         if ($notification instanceof Request) {
             $rpcMethod = $method . 'Request';
-            if (method_exists($handler, $rpcMethod)) {
+            if (is_callable([$handler, $rpcMethod])) {
                 return call_user_func_array([$handler, $rpcMethod], $params);
             }
 
-            return $this->notFound($notification);
+            return $this->notFound($notification, ', no ' . $rpcMethod);
         } else {
             $rpcMethod = $method . 'Notification';
-            if (method_exists($handler, $rpcMethod)) {
+            if (is_callable([$handler, $rpcMethod])) {
                 call_user_func_array([$handler, $rpcMethod], $params);
             }
 
@@ -198,11 +203,11 @@
         return preg_split($this->nsRegex, $method, 2);
     }
 
-    protected function notFound(Notification $notification)
+    protected function notFound(Notification $notification, $suffix = '')
     {
         $error = new Error(Error::METHOD_NOT_FOUND);
         $error->setMessage(sprintf(
-            '%s: %s',
+            '%s: %s' . $suffix,
             $error->getMessage(),
             $notification->getMethod()
         ));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/protocol-jsonrpc/src/JsonRpcConnection.php
 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/protocol-jsonrpc/src/JsonRpcConnection.php
--- 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/protocol-jsonrpc/src/JsonRpcConnection.php
      2022-10-07 16:11:28.000000000 +0200
+++ 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/protocol-jsonrpc/src/JsonRpcConnection.php
      2023-01-16 15:09:28.000000000 +0100
@@ -120,7 +120,7 @@
                 $this->sendResultForRequest($request, $result);
             }, function ($error) use ($request) {
                 $response = Response::forRequest($request);
-                if ($error instanceof Exception) {
+                if ($error instanceof Exception || $error instanceof 
\Throwable) {
                     $response->setError(Error::forException($error));
                 } else {
                     $response->setError(new Error(Error::INTERNAL_ERROR, 
$error));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/zfdbstore/src/BaseStore.php 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/zfdbstore/src/BaseStore.php
--- 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/zfdbstore/src/BaseStore.php 
    2022-10-07 16:11:28.000000000 +0200
+++ 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/zfdbstore/src/BaseStore.php 
    2023-01-16 15:09:28.000000000 +0100
@@ -34,7 +34,7 @@
             $this->emit('insert', [$storable]);
             $affected = true;
         } else {
-            if ($this->updateStore($storable)) {
+            if ($storable->isModified() && $this->updateStore($storable)) {
                 $this->emit('update', [$storable]);
                 $affected = true;
             }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/zfdbstore/src/ZfDbStore.php 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/zfdbstore/src/ZfDbStore.php
--- 
old/icingaweb2-module-incubator-0.19.0/vendor/gipfl/zfdbstore/src/ZfDbStore.php 
    2022-10-07 16:11:28.000000000 +0200
+++ 
new/icingaweb2-module-incubator-0.20.0/vendor/gipfl/zfdbstore/src/ZfDbStore.php 
    2023-01-16 15:09:28.000000000 +0100
@@ -182,7 +182,6 @@
             ));
         }
 
-        $storable->setProperties((array) $result[0]);
         $storable->setStoredProperties((array) $result[0]);
 
         return $storable;

Reply via email to