Commit Graph

940 Commits

Author SHA1 Message Date
Matthias Jentsch c18b6f26f0 Throw Ldap\Exception when something goes wrong in a Ldap connection 2014-06-25 12:41:17 +02:00
Matthias Jentsch e7548b6fc7 Return null for empty DNS query results 2014-06-25 12:41:17 +02:00
Matthias Jentsch f003c38abd Refractor InlinePie and Perfdata helper
Refractor InlinePie methods for better usability, fix several coding guideline
issues and fix some typos
2014-06-25 12:41:17 +02:00
Johannes Meyer 2fc793096a Use the preferred language sent by the browser, not the configured one
refs #6074
2014-06-25 12:15:41 +02:00
Johannes Meyer 461b050718 Add locale negotiation to Icinga\Util\Translator
Translator::getPreferredLocaleCode($header) can now be used with the
HTTP "Accept-Language" header to return the best matching locale using
the user's preferations reported by the browser and our available locale
stack. Additionally Translator::getLocale and Translator::getLanguage were
replaced by Translator::splitLocaleCode to provide a more flexible
implemenation in order to identify specific parts of a particular locale or
the current one.

refs #6074
2014-06-25 12:15:41 +02:00
Alexander Klimov 53de3686a8 Bootstrap: Only replace config dir with its canonicalised absolute pathname when the dir exists 2014-06-25 11:59:09 +02:00
Alexander Klimov ab1d8655f9 Config: Hard-code path to preferences INI files 2014-06-25 11:59:09 +02:00
Alexander Klimov a18058e185 lib: Assume relative path for Config::resolvePath() 2014-06-25 11:59:09 +02:00
Alexander Klimov ebca81b040 Revert "Make preferences INI path NOT be configurable"
This reverts commit f2693613d1.
2014-06-25 11:59:08 +02:00
Alexander Klimov fdf74c5e18 Revert "Make preferences INI path NOT be configurable"
This reverts commit 219869607d.
2014-06-25 11:59:08 +02:00
Thomas Gelf fac3c9f3a6 Util\Translator: fix language list
Reverted former redundant patch, got confused by legacy web modules
been translated with earlier versions. They had a different directory
structure and registered erraneous domain directories.

This patch fixes the list, does an additional safety check (dirname must
end with .UTF-8) and strips .UTF-8 from the locale name. Former regex
matched always and therefore blacklisted every translation.
2014-06-25 11:43:15 +02:00
Thomas Gelf 20cdb6e0b8 Revert "Util\Translator: show correct language list"
This reverts commit b7521f48b9.
2014-06-25 11:37:37 +02:00
Thomas Gelf 4591297e56 SortBox: use POST instead of GET
This avoids trouble with complex filter URLs

fixes #6556
2014-06-25 11:00:10 +02:00
Thomas Gelf 7ebdb2d378 FilterQueryString: add hidden debug feature
Might help to track down potential problems in the future, should
not be enabled by default
2014-06-25 10:47:03 +02:00
Thomas Gelf 9359f527db FilterQueryString: fix issues with not
NOT is a "chain" with just one subfilter and therefore behaves a little
bit different. Should work fine now.

fixes #6554
2014-06-25 10:39:48 +02:00
Thomas Gelf 1dcf44b9cd FilterEditor: fix buggy dropdown boxes
There were some issues with option names. Also cleaned up HTML a
little bit and added autosubmission.
2014-06-25 10:37:06 +02:00
Thomas Gelf b40d0f6a1e FilterWidget: POST instead of GET
Might have been a JS issue, but instead of messing with the URL just
POSTing is easier here - and works. Filters from the search box are
now added flawlessly to the filter tree.
2014-06-25 10:34:09 +02:00
Thomas Gelf b7521f48b9 Util\Translator: show correct language list
List was showing useless stuff such as LC_MESSAGES and no language
but the default one. We should have a look whether LC_MESSAGES is
really needed, it looks so ugly.
2014-06-25 10:31:03 +02:00
Thomas Gelf 2746b5ff9f ConfigController: switch over to new config tabs
Module configuration now takes place in module detail view and does no
longer pollute our config tabs. Modules are now able to provide a bunch
of own config tabs, we don't really care what they use them for.
2014-06-24 21:31:59 +02:00
Thomas Gelf b38bcfc19b Widget\FilterEditor: correct expression output
Filter expressions should be filled into form fields exactly as we
expect them at parse time.

fixes #6568
2014-06-24 21:00:01 +02:00
Thomas Gelf 47b893e1ea Widget\FilterEditor: handle custom vars
There was an issue with custom vars as they made only partially part
of the column dropdown. Sorted columns and tried to beautify column
names.

fixes #6569
2014-06-24 20:57:41 +02:00
Thomas Gelf 3f9f4bb9e1 ModuleActionController: module object shortcut
This helps modules with the need to know more about themselves. No
more App -> Module Manager -> Module voodoo.
2014-06-24 20:54:39 +02:00
Thomas Gelf 13ef06c700 Modules\Module: modules should register config tabs
This allows modules to register their config tabs and provides a
convenient way to fetch a modules fully instanced config tabs.
2014-06-24 20:47:03 +02:00
Thomas Gelf b7b99cfd67 Widget\AlertMessageBox: fix broken widget
This widget is pretty useless as the error view script can to it's
job. Interestingly nobody missed it, even the render() call was wrong.

I guess we will remove this soon, but for now it's fixed. Looks ugly,
but works.
2014-06-24 20:30:41 +02:00
Alexander Klimov 219869607d Make preferences INI path NOT be configurable
fixes #6567
2014-06-24 18:29:28 +02:00
Alexander Klimov f2693613d1 Make preferences INI path NOT be configurable
refs #6567
2014-06-24 18:00:40 +02:00
Alexander Klimov 3e31ff65a4 Prefer dirname rather than pathinfo 2014-06-24 15:57:13 +02:00
Alexander Klimov 6daccae30e Optimize IcingaConfig::resolvePath 2014-06-24 15:45:19 +02:00
Alexander Klimov 6e4bf73c36 Compute config file paths properly
fixes #6564
fixes #6534
2014-06-24 14:54:31 +02:00
Alexander Klimov 9bab7c0323 Signal that resolvePath doesn't support Windows
refs #6564
2014-06-24 13:22:43 +02:00
Alexander Klimov ff87588d96 Don't let config path seem absolute where it isn't
refs #6534
2014-06-24 10:12:07 +02:00
Johannes Meyer c563479888 Use Icinga\Util\File instead of fopen 2014-06-23 15:02:06 +02:00
Johannes Meyer 9066a0c2fa Fix deadlock when writing to the command pipe while noone is listening 2014-06-23 15:02:06 +02:00
Johannes Meyer 2862c5667c Make Icinga\Util\File an object
Was a class with just one static function beforehand and is now a fully
object oriented alternative for how files and pipes can be handled.
PHP warnings emitted by fopen, fwrite, fread and chmod are catched
and thrown as exceptions.
2014-06-23 15:02:06 +02:00
Matthias Jentsch 010466f8f9 Replace sizeof with count
Do not use sizeof to get the length of an array, as the function name 'sizeof'
is misleading
2014-06-23 14:19:55 +02:00
Matthias Jentsch 77a9dd1e6e Throw exception on fetchDN, when no row exists
Instead of fetchDN, authentication now uses hasUser to check if the user
exists before querying the password, to prevent the exception from messing
up the whole authentication process
2014-06-23 14:02:45 +02:00
Thomas Gelf ba9a633b73 Web\Form: relax form submission check
We have to live with some badly designed forms right now. Some have
submit buttons but don't know about, others don't have such but link
to foreign controllers fiddling with the form and adding different
button AFTER the form got submitted - it's a mess.

Relaxing the submission check to "just check whether btn_submit has
a value" fixes most of this. However I do not consider this being a
solution for the long run.

fixes #6423
fixes #5967
refs #6540
2014-06-23 13:31:34 +02:00
Thomas Gelf ea44de8698 ActionController/translate: detect domain only once 2014-06-22 20:09:23 +02:00
Thomas Gelf 23ed744747 params/_render: replace it everywhere
Cleaning up controllers and JS, using headers only and respecting
history.
2014-06-22 20:07:44 +02:00
Thomas Gelf 61600ae2d4 ModuleActionController: fix typo 2014-06-22 19:39:54 +02:00
Thomas Gelf 997587d729 Chart\InlinePie: remove ugly default border 2014-06-22 16:38:12 +02:00
Thomas Gelf 216f0f3f55 isIframe: clean up, load less html and js
We use isIframe only when we have no JS, therefore it makes no sense
to load JS files in an iFrame. Also removed sidebar.
2014-06-22 16:30:06 +02:00
Thomas Gelf 3b84078b2f Params/_render: get rid of it, start with iframe 2014-06-22 16:18:23 +02:00
Thomas Gelf bb23d0636c ModuleActionController: use isXhr() 2014-06-22 16:04:55 +02:00
Thomas Gelf 3774eb6889 ActionController: add isXhr() method
Makes things easier as we use this a lot
2014-06-22 15:36:41 +02:00
Thomas Gelf 331d756a2a ActionController: isolate ignoreXhrBody
This function is only a workaround for broken forms not redirecting
after submission. Will hopefully be removed soon.
2014-06-22 15:33:38 +02:00
Thomas Gelf b4f8ef74fa ActionController: remove obsolete code 2014-06-22 15:20:55 +02:00
Thomas Gelf 631603aba3 ActionController: create postDispatchXhr
Moved XHR-specific stuff to a dedicated post-dispatch function
2014-06-22 15:17:28 +02:00
Thomas Gelf cf995b366b ActionController: cleanup postDispatch
Make XHR handling more readable, move module-related stuff to the
module controller
2014-06-22 15:11:08 +02:00
Thomas Gelf 7d6fd45466 Application\Web: use same request everywhere 2014-06-22 14:13:00 +02:00
Thomas Gelf de19745eb2 ActionController: move moduleInit to Module controller 2014-06-22 13:54:02 +02:00
Thomas Gelf 2cd25b7376 ActionController: if/else should be easy to read 2014-06-22 13:52:40 +02:00
Thomas Gelf b7fc0b67a8 Web/controllers: use own Request/Response objects
* introduces Icinga\Web\Response
* uses ModuleActionController where necessary
* no module translationDomain voodoo in base ActionController
2014-06-22 13:49:21 +02:00
Thomas Gelf ef5e1b54fd Web\Window: fix it's usage, add helper function
Improved window handling, fixed controllers using it.
2014-06-22 13:21:21 +02:00
Thomas Gelf b350e3640d Web\Window: move window handle to dedicated class
One more step in cleaning up our ActionController
2014-06-22 13:01:48 +02:00
Thomas Gelf d69a6d1640 ActionController: remove getRequestUrl
Thie removes complexity and makes redirection to login less error-
prone.
2014-06-22 12:23:34 +02:00
Thomas Gelf 9608d8254d ActionController: remove addModuleContainer
This method was obsolete
2014-06-22 12:09:07 +02:00
Thomas Gelf 4980b700da ActionController: __construct() as first function 2014-06-22 12:07:50 +02:00
Thomas Gelf a4955df1a9 controller->Auth(): one more lazy-loading helper
Not sure about the capital A, but doesn't look so bad - and similar
to Config().
2014-06-22 12:06:09 +02:00
Thomas Gelf 373e1c5ecb Web\Controller: re-introduce ModuleActionController
This will help getting rid of a couple of if/else constructs
2014-06-22 12:03:37 +02:00
Thomas Gelf 469eb3dc98 Web\Url: remove forgotten "debug" line 2014-06-22 11:59:24 +02:00
Thomas Gelf b3cdeee35d monitoring/timeline: should benefit from new filter
Different changes have been applied:

* Allow integer unix timestamps as parameters for timestamp columns
* Remove alias-rewriting from Url class
* Remove all traces of raw_timestamp
* Use new filters
2014-06-21 03:09:40 +02:00
Thomas Gelf 78193137f0 config/modules: show metadata, improve usability
Well... I didn't want to commit this before creating single-button
forms for enabling/disabling modules. However part of this accidentally
made it through, so let's finish it.

Still some work to do, but it already looks far better like this.

refs #4095
2014-06-21 02:27:27 +02:00
Thomas Gelf 216c2ca770 Autorefresh: should work also on initial page load
fixes #6296
2014-06-21 01:54:32 +02:00
Thomas Gelf e2f7a1054e CSV/JSON export: work with new query interfaces
NB: I do not like the fact that we have to do as follows:

  DataView->getQuery()->fetchWhatever();

Guess this is worth a few more proxy functions.
2014-06-21 00:09:11 +02:00
Thomas Gelf c0c7a815f8 Merge remote-tracking branch 'origin/master' into feature/query-interfaces-6018 2014-06-20 19:18:38 +02:00
Thomas Gelf a904ff51aa monitoring/eventhistory: improve query performance
This takes care of timestamp columns, modifies queries in a way not
depending on db functions, filters are passed through to subqueries
for better performance.
2014-06-20 19:14:34 +02:00
Thomas Gelf 3e24a2cbe4 Paginator/SlidingWithBorder: use less space
Showing less items right now. It would be great if we could steer
this by parameter. IMO we should also think about dropping ZF
pagination and use a custom tiny widget.
2014-06-20 17:31:32 +02:00
Thomas Gelf afd6b11b7b Web\Url: add set/mergeValues support 2014-06-20 15:50:55 +02:00
Thomas Gelf 2cf79fe9a7 Widget\SortBox: hardcode some styles
This is a quickfix, should be moved to CSS once we know how our HTML
elements will definitively look like
2014-06-20 14:55:43 +02:00
Thomas Gelf 916c9c027e forms: fix isSubmitted
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
2014-06-20 14:32:22 +02:00
Thomas Gelf 01631720cc Dashboard\Component: don't pass on limit
Dashlets might be limited to just a few line, we shoultn't pass on
this parameters when showing the "large" variant
2014-06-20 14:29:45 +02:00
Thomas Gelf ac7354295a Accessibiltiy: add alt tag for icons
Screen readers to not read title tags per default
2014-06-20 14:28:19 +02:00
Thomas Gelf 27e7839d1b Widget\Limiter: initial commit
This allows one to easily switch  row count shown on a single page
2014-06-20 13:48:17 +02:00
Thomas Gelf 07134cf931 JS/XHR: handle multiple notifications
As there seems to be problems with sending the same header multiple
times we put multiple notifications in one header.
2014-06-20 13:20:20 +02:00
Thomas Gelf 617741c62f helpers/widget: options are opional 2014-06-20 13:18:52 +02:00
Thomas Gelf dbf03ee647 ActionController: refine url handling on redirect 2014-06-20 13:18:03 +02:00
Thomas Gelf 7cad4de3be ActionController: allow to disable autorefresh 2014-06-20 13:17:11 +02:00
Thomas Gelf 262dcff3a5 Util\Translator: tell us current locale and lang 2014-06-20 13:12:23 +02:00
Thomas Gelf ecbdb07bea FilterQueryString: fix handling encoded <> signs
Those signs are URL-encoded and therefore not "seen" before decoding
the "key" part when the sit in front of the = sign. Same goes for
standalone ones. Fixed.
2014-06-20 13:06:07 +02:00
Thomas Gelf f2605b89ff FilterQueryString: fix parsing expression lists
The parser sometimes failed when reaching a=b&b=(c|d|e) - fixed.
2014-06-20 13:04:53 +02:00
Thomas Gelf 1ea15e1f66 FilterQueryString: fix sub-expression parsing
In a string like !(b=c)&a=d the parser used to fail once it reached
the &, fixed now.
2014-06-20 13:02:02 +02:00
Thomas Gelf a3a2e97f18 FilterQueryString: just cleaning up a little bit 2014-06-20 13:01:10 +02:00
Thomas Gelf 4bada86731 Authentication\Manager: fix fromRemoteUser boolean
This used to be always true in case an autologin backend was enabled.
We only have a REMOTE_USER if there is such.
2014-06-20 12:58:17 +02:00
Thomas Gelf 559457f730 Bootstrap/timezone: do not enforce config
The current way forces people running a correctly configured PHP
to configure timezone once again in Icinga Web. We want LESS config,
so this tries to fix this.
2014-06-20 12:54:37 +02:00
Thomas Gelf f498cd0c81 Web\Url: small fixes, allow override queryString 2014-06-20 12:41:16 +02:00
Thomas Gelf d504c27641 timeUntil/timeSince: add timestamp hover title
It's sometimes easier to read "full" timestamps.
2014-06-20 12:28:55 +02:00
Thomas Gelf 317094aed3 Widget\FilterWidget: ui cleanup 2014-06-20 12:16:33 +02:00
Thomas Gelf 644dd5e33e Widget\FilterEditor: improve the filter editor
This adds quite a bunch of changes. Part of the filter-modifying
complexity has been moved to the filter, the editor widget itself
now makes use of new filter capabilities such as changing operator
or expression type.
2014-06-20 12:03:22 +02:00
Thomas Gelf 1bfc4058f2 Data\Filter: automagically handle hierarchy
This adds a few more functions assisting filters in replacing
themselves or subnodes. Introducing Filter::chain().
2014-06-20 12:00:29 +02:00
Thomas Gelf 18e49f6b9a Data\Filter: add setters for all properties
To keep our filter editor simple we want our filters to handle also
operations replacing themselves.
2014-06-20 11:57:31 +02:00
Thomas Gelf 97f88bf636 Data\Filter: clean up a few things
* throw useful exceptions
* our "id" should always be treated as a string
2014-06-20 11:55:27 +02:00
Matthias Jentsch aae49ce0c0 Do not show tooltips for piechart areas that indicate empty or free areas
refs #6117
2014-06-18 17:38:25 +02:00
Matthias Jentsch 6555d347a7 Escape InlinePie html and adjust chart size
fixes #6117
2014-06-18 14:43:14 +02:00
Matthias Jentsch be0c5d4b23 Add more meaningful tooltip labels to InlinePies
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
2014-06-18 14:43:14 +02:00
Matthias Jentsch 521cc0cac4 Refactor Ldap and Dns utility functions and conform to coding guidelines
refs #6507
2014-06-18 14:38:44 +02:00
Thomas Gelf 21febddad2 Widget\Filter*: rudimentary filter widgets
Initial implementation, more to come
2014-06-17 14:00:38 +00:00
Thomas Gelf 54e97f114d Widget\SortBox: hardcode element width
Temporarily added inline CSS, shall be removed soon
2014-06-17 13:54:32 +00:00
Thomas Gelf d63d8fe451 view/helpers: add $this->widget() 2014-06-17 13:53:05 +00:00
Thomas Gelf e3e6826d9d Icinga\Filter: remove 2014-06-17 13:26:57 +00:00