Implementation made wrong assumptions. A form is submitted when the
submit button has been pressed. It's value is then filled, it also
is when you're just pressing "RETURN". RETURN triggers the FIRST
submit button in a form. This way we are also able to find out which
form button has been pressed.
Current implementation is still poor, however isSubmitted works as
expected right now - and so does autosubmission.
fixes#5967
We would loose our focus if autorefresh takes place. So we don't render
the new content in case a form field in the very same container carries
the focus. It would be great to have a better solution one far day, but
for now it plays fine like this.
* Removed obsolete checks (event is only triggered for multiselect tables)
* allows deselecting last row, closing "detail view"
* fix bug when unselecting one of two rows, it used to keep the wrong one
* play nice with other involved non-row-level links
Show current title, a well-formated value and a label for each area in a
tooltip and add the ability to customize tooltip labels of InlinePies
refs #6117
We used to do this to blacklist certain parameters to not trigger
heavvy actions twice when navigating through history. We also do
never want to see such parameters in our address bar.
This conflicts with our slightly more complicated new filter URLs,
unless we are able to handle them on client side this is disabled
for now. IMO it should be handled server-side and eventually invol-
ving one more redirect.
SVG chart was fetched although we removed image tags
from DOM. This happens when text is converted into
browser DOM model to use with javascript. Small
regex remove img source attribute to avoid using
network bandwidth for unknown resources.
fixes#6124
First step: get rid of the messy workaround for the problem that
notifications got lost once the whole body is re-rendered. This
should be solved either on server side or by detaching and re-
attaching existing notifications in such scenario.
Especially on browsers with slow JS like IE8 iterating again and again
over all rows used to harm response rendering. Immagine a dasboard with
a total of a few hundred rows refreshing every 10 seconds while taking
3 secs to render one dashlet... it's far better right now.
refs #6417
There is a workaround for a nasty Chrome missbehaviour, however I have
no longer been able to reproduce it. Temporarily disabled the workaround,
could you please try whether behaviour is better / correct like this?
Please also check for requests firing twice on initial page load.
refs #6277
Ongoing error handling cleanup silently dropped notifications for
requests with "invalid" target (e.g. commands not redirecting after
submission - they should not exist, but they do).
This is redundant code, but that's ok for now - response handling will
be restructured.
fixes#6327
refs #6280
This is just a first step, trying to catch a few gotchas:
* it doesn't send notifications to the browser when issueing a redirect
as redirects can currently not be catched in jQuery response handlers
* it tries to find a better notification handling place in the response
handler (JS) - still imperfect
* it explicitely stores sessions once modified by notifications. Still
need to crosscheck whether this is really needed and how we can get
rid of this.
refs #6280
This allows us to scroll menus not fitting into available screen height.
Plays nice with menu hovering, however once you scroll down your menu
you'll temporarily disable the hover-menu-feature.
fixes#6283
I missused the "impact" CSS class for this as it perfectly fit's this
use case. A container loading slow IS an impact. Added CSS transitions,
this way it feels better on modern browsers. The longer it takes to
load a page the darker will get it's background.
This used to be nasty since "search" is the field with the initial
focus. Right now we detect "real" changes, this might be implemented
in a more generic way for all autocompleting fields later on.
Still uncomplete, there are a number of edge cases that need to be
handled. Keyboard navigation is one of them, hover/click distinction
is another one.
refs #6167
Add the abillity to select multiple rows, with a multi-selection using the
CTRL-key or a range-selection using the shift-key. Also fix several issues in
the Multi-Controller of the Backend.
refs #5765
* introduce 'rendered' event for modules
* use this.module.on() instead of registerEventHandlers()
* no CSS filter creates event handlers on module containers
Add code to handle single, multi and no selection. Add the class 'hover' to
table rows, that are selectable to indicate when a row is selectable.
refs #3788
Add views for every possible action, fix some bugs in the JavaScript multi selection,
make selection hrefs in the list controllers unique to be able to handle the selection
properly
refs #3788
Now the whole page gets refreshed on container changes, if
we encounter issues with that we can improve it afterwards
or roll back some cahnges already made in previous commits
refs #4611
This commit introduces the following changes (although they are not
implemented in the templates, this follows):
- links in the top and navigation bar are loaded in the background
- generic main/detail container component handling click/load delegation
- mainDetailGrid implementation handling selection and render targets
- Generic history implementation handling URI change detection and reloading
refs #4611
configForm.js is now form.js and applied on all forms,
the autosubmit is now a special attribute for input fields,
so the PHP code doesn't create JS snippets anymore
refs #4622
Remove old (now-unusable) module loader and components and corresponding unit
tests. Give the component loader and the component registry more meaningful names.
refs #4456
Add a component loader that finds components by searching for elements with the
"data-icinga-component" attribute and loads the corresponding JavaScript file
from the backend to render the component.
refs #4456
- Rename ConfigurationController to ConfigController
- ConfigController and PreferenceController are now subclasses of
BaseConfigController and BasePreferenceController
- Module and Application Config/Preference Tabs are detected via
the ControllerTabCollector
- Moved Controller classes to Icinga/Web/Controller (this is why
so many files are modified)
refs #4530
Added a date and time form-element which are implemented based on the
new "date" and "time" input-types introduced with html5. If those are not
available two bootstrap javascript-modules will be enabled.
refs #4355
The history API encoded components multiple times, e.g. causing a [ to
be converted to %5B in the first link, then to %255B on the second link,
%25255B on the third, etc.
refs #4408
Fix a wrongly named class causing ClassNotFound issues,
also added additional checks for empty module folder and
added en moduleFolder directive to configure module location
refs #4092
When the X-Icinga-Module-Enable header is send, the
modulemanager automatically tries to load javascript files for
that module. This is realized by adding the 'registerHeaderListener'
method to the async manager, which allows to listen to specific headers
and firing callbacks if a response with the specified header is retrieved.
Also the tests have changed a bit, requireNow should be used when using
the requiremock, so a require always loads files new.
refs #4092
refs #3753
the js/modules/%modulename%/%file% is now mapped to the module
path (if existing). To prevent name clashing, the modules folder
has been renamed to components.
QLinks can now define the target for their link. Additionally, the
targte 'body' is now always the <body> tag. This allows the
modulemanager to reload the whole page (with the navigation bar).
refs #4092
When the X-Icinga-Module-Enable header is send, the
modulemanager automatically tries to load javascript files for
that module. This is realized by adding the 'registerHeaderListener'
method to the async manager, which allows to listen to specific headers
and firing callbacks if a response with the specified header is retrieved.
Also the tests have changed a bit, requireNow should be used when using
the requiremock, so a require always loads files new.
refs #4092
refs #3753
the js/modules/%modulename%/%file% is now mapped to the module
path (if existing). To prevent name clashing, the modules folder
has been renamed to components.
QLinks can now define the target for their link. Additionally, the
targte 'body' is now always the <body> tag. This allows the
modulemanager to reload the whole page (with the navigation bar).
refs #4092
All JS Files now call 'requirejs' instead of 'require', also
the holder.js reference is removed and the history api added.
Tests are following in the next commit
refs #4303
refs #4315
All JS Files now call 'requirejs' instead of 'require', also
the holder.js reference is removed and the history api added.
Tests are following in the next commit
refs #4303
refs #4315
Behaviours are now modules and icinga.js automatically
requests module/list (which should be served by the application
and is non static) and retrieves a list of modules to request and
enable.
refs #3753