991 Commits

Author SHA1 Message Date
Johannes Meyer
ec40efe157 Only open trusted iframe sources by default
Trusted in this case means, it was Icinga Web that
rendered a link and the user followed it. Whether
a source is trustworthy or not is detected by use
of the user's session id to hash it combined with
the source similar to how CSRF tokens are assembled.
2025-03-26 10:25:31 +01:00
Johannes Meyer
aad020511f js: Only load URLs prefixed by the base URL 2025-03-26 10:25:05 +01:00
Johannes Meyer
ca2778eb46 form.js: Ignore buttons again when being asked to render content
This slipped through, as I thought the CSS selector `:input`, which
was used previously, is invalid. Although, it's a jQuery specific
selector -.-, which was also previously used.

fixes #5293
2024-11-28 16:57:19 +01:00
Johannes Meyer
eef276be93 js: Use a submit event's submitter property to identify the submit button 2024-11-04 16:07:10 +01:00
Sukhwinder Dhillon
cc9572d9c5 Flyout menu: Render menu bottom-up if it exceeds the viewport height 2024-08-14 16:29:33 +02:00
Johannes Meyer
9ef4c71cec js: Fix error on app startup
jQuery seems to re-cycle event object references oO
2024-08-07 14:35:14 +02:00
Johannes Meyer
97f8767970 js: Only add .impact to a container's content 2024-08-07 14:33:14 +02:00
Johannes Meyer
8ec42b05f8 js: Explicitly update history when col2 is closed
Instead of doing this by default. There are too many
cases where this isn't necessary at all.

fixes #5178
2024-08-07 13:39:41 +02:00
Johannes Meyer
bb47844646 js: Don't adjust style by using element.cssText
That's prohibited if using `script-src 'self';` in the csp header
2024-08-07 11:39:58 +02:00
Johannes Meyer
6964bd19a2 js: Improve rejection of autorefresh responses
Don't reject autorefreshes if an autosubmit
element is focused but not interacted with

fixes #4996
2024-08-07 11:20:11 +02:00
Johannes Meyer
a48a6ebcb5 js: Really stop rendering if a hook discards content
This is a potential breaking change for behaviors which
rely on being able to change content in-place even if
the response's content is not applied. This is the case
for grafana's iframe behavior, though that's more a hack
than a necessity so it doesn't break. I've found no other
implementations so I guess it's fine including it here.
2024-08-07 11:20:11 +02:00
Johannes Meyer
c79b513066 js: Apply render hooks in a defined order
Currently, form first and detach second.
Any other last. (e.g. grafana's iframe)
2024-08-07 11:20:11 +02:00
Johannes Meyer
30b540952a loader.js: Don't consider redirected form submits as auto submits
A redirect caused by a form submit is **never** an automatic submit.
Unless I'm missing something here. There is one way this may be true,
as ipl forms without a submit button are indeed successful due to a
autosubmit element, but they don't redirect by default. So if the
controller redirects in such a case, the form should have a submit
button, I guess..

Anyway, this is necessary due to the previous commit as this may
otherwise cause form submits, that re-render layout during a redirect,
are considered being auto submitted. (Such as the login form)
2023-10-27 10:15:47 +02:00
Johannes Meyer
4743c5f5c8 loader.js: Really don't push redirects to history
refs #4879
2023-10-27 10:15:47 +02:00
Johannes Meyer
9194378c3c js: Don't refresh twice upon __BACK__ 2023-09-26 15:04:07 +02:00
Yonas Habteab
d186604b62 Allow to define row count after which a collapsible can be collapsed 2023-09-19 14:37:55 +02:00
Johannes Meyer
6e16ded825 loader.js: Don't attempt to load an extra update to a closed column 2023-09-07 13:00:45 +02:00
Johannes Meyer
a3c04f9108 loader.js: Allow to initiate a refresh with __REFRESH__ 2023-09-07 12:59:53 +02:00
Johannes Meyer
8f5b62f532 loader.js: Perform a proper redirect upon __CLOSE__
This allows the temporary adjustment of the autorefresh
interval.
2023-09-07 12:07:48 +02:00
Johannes Meyer
03f62887b8 loader.js: Don't refresh twice upon __CLOSE__ 2023-09-07 09:42:05 +02:00
Sukhwinder Dhillon
9dd21841a3 loader.js: Push current state to history only on onComplete.
- Previously, in case of `abort` the url was already pushed to history at the beginning of `onFailure`, setting `addToHistory` to true only prevents it from being added twice (again in `onComplete`).
- Now we only push the url to history in `onComplete`, so setting `addToHistory` to false is only necessary if req is scripted.
- We intentionally push the canceled url into history to continue navigating with the browser`s back/forward key.
2023-09-07 09:22:24 +02:00
Sukhwinder Dhillon
d794439537 ui.js: Update browser address bar url when container closes
`stopPendingRequestsFor()` cancel the pending request but push the canceled url to history (by calling `loader::OnFailure` internally).
Now the `icingaUrl` is set again, remove it and push again the current state to history.
2023-09-07 09:22:24 +02:00
Sukhwinder Dhillon
f3f35f86fd ui.js: Add event column-moved
- Param1 is the event itself (event.target.id == #col where the content is moved)
- Param2 is the soucre col id, form which the content is moved
2023-09-07 08:57:37 +02:00
Johannes Meyer
c3b1ad12ab loader.js: Don't update history for redirects
A redirect now also does NOT:

* Remove `.impact` from the container
* Try to set a menu item active..

fixes #4879
2023-08-29 15:02:44 +02:00
raviks789
da1bf7048d Remove inline scripts
Remove inline scripts present in `layout.phtml` and `logout.phtml` to prevent CSP violation.
2023-08-28 16:40:37 +02:00
raviks789
459f4198c3 Replace static inline styles with css class
The static inline styles are replaced with css class to avoid Content-Security-Policy violations.
2023-08-28 16:30:12 +02:00
Yonas Habteab
9c7d19ea95 JS: Don't always prefix extra updates containers with # 2023-08-11 16:14:17 +02:00
Johannes Meyer
4a52a653e4 js: Always load redirects to their designated target
The server applies the redirection magic now, but only
for compatibility reasons.

resolves #4881
2023-08-11 16:08:00 +02:00
Johannes Meyer
51992f414e modal.js: Use a modal toggle's container as redirect target by default
Not the container's base target. The redirect target may still be
overridden by `data-base-target` on the `form` or by the response
using `X-Icinga-Container`.
2023-08-11 10:32:29 +02:00
Johannes Meyer
257a7070a1 js: Support __CLOSE__ as extra update 2023-08-11 10:32:29 +02:00
Johannes Meyer
eed6374dd2 js: Enhance server side container closing
* Let response header `X-Icinga-Container` either influence a request's `$target` or `$redirectTarget`, but not both
* Close a request's `$target` instead of the `$redirectTarget` upon the redirect url `__CLOSE__`

* Issuing a `__CLOSE__` in a detail url still closes `#col2` and refreshes `#col1`
* Issuing a `__CLOSE__` for a nested container still empties it
* Issuing a `__CLOSE__` in a modal, now refreshes the modal openers container
* If `X-Icinga-Extra-Updates` is set, automatic refreshing won't happen
2023-08-11 10:32:29 +02:00
Yonas Habteab
4ccebb78b5 loader.js: Allow to override the actual form action using formaction attr 2023-07-18 10:47:52 +02:00
Johannes Meyer
10d3fb64f9 js: Automatically transform .time-until widgets into .time-ago ones 2023-06-22 15:02:37 +02:00
raviks789
f74041e00a Javascript: Add copy-to-clipboard behavior
Utilizes `CopyToClipboard.js` from ipl-web
2023-06-20 12:06:27 +02:00
Eric Lippmann
a3235555bb js: Also preserve scroll-y upon auto-refresh 2023-05-19 15:29:44 +02:00
Johannes Meyer
cb6a0c120f events.js: Trigger a real submit upon autosubmit 2023-05-19 14:53:31 +02:00
Johannes Meyer
7da5eb0972 modal.js: Trigger a real submit upon autosubmit 2023-05-19 14:53:31 +02:00
Johannes Meyer
63eae12d33 loader.js: Transmit nearest identifiable parent as origin..
..upon autosubmit if the real element has no id or name.
2023-05-19 14:42:00 +02:00
Johannes Meyer
88caf3c141 loader.js: Empty nested containers upon __CLOSE__ 2023-05-19 14:17:41 +02:00
Johannes Meyer
cbf8cfc738 js: Transmit X-Icinga-AutoSubmittedBy upon autosubmits
This header contains the name or id of the element responsible
for triggering the automatic form submission.
2023-01-12 09:54:18 +01:00
Johannes Meyer
4641d8e820 js: Don't disable inputs upon auto-submits at all 2023-01-12 09:39:31 +01:00
Johannes Meyer
7cea0d78e4 js: Only disable submit buttons on form submit
Previously all `input` elements (text, date, number, ...)
got also disabled. This is unecessary.
2023-01-12 09:39:31 +01:00
Johannes Meyer
8cd892359d form.js: Don't ignore autosubmit elements
A while ago this already has changed so that autosubmit
responses are guaranteed to be applied. Thus this
exception is now obsolete.

fixes #4942
2022-12-07 11:57:10 +01:00
Johannes Meyer
9b3e6165ea collapsible.js: Fix invalid default selectors
refs #4884
2022-11-03 16:41:25 +01:00
Johannes Meyer
aef6e99cf8 collapsible.js: Add support for external controls 2022-10-10 15:55:33 +02:00
Florian Strohmaier
f13161b69d collapsible.js: Enhance markup flexibility 2022-10-10 15:54:24 +02:00
Johannes Meyer
22cb1f2143 utils.js: Optimize performance of getCSSPath() 2022-10-10 10:42:45 +02:00
Johannes Meyer
c4ce98159c collapsible.js: Use ES6's class syntax 2022-10-10 10:42:45 +02:00
Johannes Meyer
b0622dcde2 collapsible.js: Don't use jQuery, but some ES6 features 2022-10-10 10:42:45 +02:00
Johannes Meyer
917e68d68d collapsible.js: Minor performance improvements 2022-10-10 10:42:45 +02:00