Module: check_mk
Branch: master
Commit: 6a82d6e925f6a88f4b7dc67209529b925fc56b27
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6a82d6e925f6a8…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Jan 20 15:54:16 2012 +0100
Hiding site filter in multisite views in single site setups
---
ChangeLog | 1 +
web/htdocs/views.py | 31 ++++++++++++++++++++++---------
web/plugins/views/filters.py | 3 +++
3 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 3f17220..bae1265 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -43,6 +43,7 @@
* New painter for normal and retry check interval (added to detail views)
* Site filter shows "(local)" in case of non multi-site setup
* Made "wato folder" columns sortable
+ * Hiding site filter in multisite views in single site setups
* FIX: Fixed auth problem when following logwatch icon links while using
the form based auth
* FIX: Fix problem with Umlaut in contact alias
diff --git a/web/htdocs/views.py b/web/htdocs/views.py
index 9f1d56e..899e887 100644
--- a/web/htdocs/views.py
+++ b/web/htdocs/views.py
@@ -108,15 +108,20 @@ def show_filter_form(is_open, filters):
s.sort()
col = 0
for sort_index, title, f in s:
- if col == 0:
- html.write("<tr>")
- html.write("<td class=legend>%s</td>" % title)
- html.write("<td class=content>")
- f.display()
- html.write("</td>")
- if col == config.filter_columns - 1:
- html.write("</tr>\n")
- col = (col + 1) % config.filter_columns
+ if not f.visible():
+ html.write('<div style="display:none">')
+ f.display()
+ html.write('</div>')
+ else:
+ if col == 0:
+ html.write("<tr>")
+ html.write("<td class=legend>%s</td>" % title)
+ html.write("<td class=content>")
+ f.display()
+ html.write("</td>")
+ if col == config.filter_columns - 1:
+ html.write("</tr>\n")
+ col = (col + 1) % config.filter_columns
if col == 1:
html.write("<td class=legend></td>\n<td
class=content></td></tr>\n")
html.write('<tr><td class="legend button" colspan=%d>'
% (config.filter_columns * 2))
@@ -191,6 +196,14 @@ class Filter:
def available(self):
return True
+ # Some filters can be invisible. This is useful to hide filters which have always
+ # the same value but can not be removed using available() because the value needs
+ # to be set during runtime.
+ # A good example is the "site" filter which does not need to be available
to the
+ # user in single site setups.
+ def visible(self):
+ return True
+
def display(self):
raise MKInternalError("Incomplete implementation of filter %s '%s':
missing display()" % \
(self.name, self.title))
diff --git a/web/plugins/views/filters.py b/web/plugins/views/filters.py
index aac424e..e8e59b4 100644
--- a/web/plugins/views/filters.py
+++ b/web/plugins/views/filters.py
@@ -325,6 +325,9 @@ class FilterSite(Filter):
Filter.__init__(self, name, _("Site"), None, ["site"], [])
self.enforce = enforce
+ def visible(self):
+ return config.is_multisite()
+
def display(self):
site_selector(html, "site", self.enforce)