Author: pnguyen Date: 2008-12-16 17:31:02 -0800 (Tue, 16 Dec 2008) New Revision: 12059 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=12059 Added: trunk/src/org/hyperic/hq/ui/taglib/display/AlertCheckBoxDecorator.java Modified: trunk/src/org/hyperic/hq/ui/taglib/display/CheckBoxDecorator.java trunk/ui_plugins/alertcenter/views/alert/index.gsp trunk/web/WEB-INF/tld/display.tld trunk/web/common/components/ListToolbar.jsp trunk/web/js/lib/lib.js trunk/web/js/requests.js trunk/web/portal/DashboardLayout.jsp trunk/web/portlet/criticalAlerts/View.jsp trunk/web/resource/common/monitor/alerts/ListAlerts.jsp Log: HQ 4.1 Iteration 5: Add "Acknowledge Alerts" Bulk Action to Resource Alert page and Dashboard Recent Alert portlet Added: trunk/src/org/hyperic/hq/ui/taglib/display/AlertCheckBoxDecorator.java =================================================================== --- trunk/src/org/hyperic/hq/ui/taglib/display/AlertCheckBoxDecorator.java (rev 0) +++ trunk/src/org/hyperic/hq/ui/taglib/display/AlertCheckBoxDecorator.java 2008-12-17 01:31:02 UTC (rev 12059) @@ -0,0 +1,138 @@ +/* + * NOTE: This copyright does *not* cover user programs that use HQ + * program services by normal system calls through the application + * program interfaces provided as part of the Hyperic Plug-in Development + * Kit or the Hyperic Client Development Kit - this is merely considered + * normal use of the program, and does *not* fall under the heading of + * "derived work". + * + * Copyright (C) [2004-2008], Hyperic, Inc. + * This file is part of HQ. + * + * HQ is free software; you can redistribute it and/or modify + * it under the terms version 2 of the GNU General Public License as + * published by the Free Software Foundation. This program is distributed + * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without + * even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + */ + +package org.hyperic.hq.ui.taglib.display; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspTagException; +import javax.servlet.jsp.tagext.Tag; +import javax.servlet.jsp.tagext.TagSupport; +import javax.servlet.jsp.PageContext; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.taglibs.standard.tag.common.core.NullAttributeException; +import org.apache.taglibs.standard.tag.el.core.ExpressionUtil; + +/** + * This class is a two in one decorator/tag for use within the display:table + * tag, it is a ColumnDecorator tag that that creates a column of checkboxes. + */ +public class AlertCheckBoxDecorator extends CheckBoxDecorator +{ + + //----------------------------------------------------static variables + + private static Log log = + LogFactory.getLog(AlertCheckBoxDecorator.class.getName()); + + //----------------------------------------------------instance variables + + /** The class property of the checkbox. + */ + private String fixable = null; + + /** The name="foo" property of the checkbox. + */ + private String acknowledgeable = null; + + + // ctors + public AlertCheckBoxDecorator() { + } + + // accessors + public String getFixable() { + return this.fixable; + } + + public void setFixable(String b) { + this.fixable = b; + } + + public String getAcknowledgeable() { + return this.acknowledgeable; + } + + public void setAcknowledgeable(String b) { + this.acknowledgeable = b; + } + + + public String decorate(Object obj) { + Boolean isFixable; + Boolean isAcknowledgeable; + + try { + isFixable = (Boolean) evalAttr("fixable", + this.fixable, + Boolean.class); + } + catch (NullAttributeException ne) { + log.debug("bean " + this.fixable + " not found"); + return ""; + } + catch (JspException je) { + log.debug("can't evaluate name [" + this.fixable + "]: ", je); + return ""; + } + + try { + isAcknowledgeable = (Boolean) evalAttr("acknowledgeable", + this.acknowledgeable, + Boolean.class); + } + catch (NullAttributeException ne) { + log.debug("bean " + this.acknowledgeable + " not found"); + return ""; + } + catch (JspException je) { + log.debug("can't evaluate name [" + this.acknowledgeable + "]: ", je); + return ""; + } + + if (isAcknowledgeable.booleanValue()) { + setStyleClass("ackableAlert"); + } else if (isFixable.booleanValue()){ + setStyleClass("fixableAlert"); + } else { + return ""; + } + + return super.decorate(obj); + } + + public void release() { + super.release(); + fixable = null; + acknowledgeable = null; + } + + private Object evalAttr(String name, String value, Class type) + throws JspException, NullAttributeException { + return ExpressionUtil.evalNotNull("alertcheckboxdecorator", name, value, + type, this, context); + } +} Modified: trunk/src/org/hyperic/hq/ui/taglib/display/CheckBoxDecorator.java =================================================================== --- trunk/src/org/hyperic/hq/ui/taglib/display/CheckBoxDecorator.java 2008-12-17 01:28:41 UTC (rev 12058) +++ trunk/src/org/hyperic/hq/ui/taglib/display/CheckBoxDecorator.java 2008-12-17 01:31:02 UTC (rev 12059) @@ -138,6 +138,7 @@ String value = null; String label = null; String click = ""; + String style = ""; try { name = (String) evalAttr("name", this.name, String.class); @@ -207,10 +208,18 @@ try { click = (String) evalAttr("onclick", this.getOnclick(), String.class); } catch (NullAttributeException e) { - // Onclick is empty - } catch (JspException e) { - // Onclick is empty + log.debug("bean " + this.getOnclick() + " not found"); + } catch (JspException je) { + log.debug("can't evaluate onclick [" + this.getOnclick() + "]: ", je); } + + try { + style = (String) evalAttr("styleClass", this.getStyleClass(), String.class); + } catch (NullAttributeException e) { + log.debug("bean " + this.getStyleClass() + " not found"); + } catch (JspException je) { + log.debug("can't evaluate styleClass [" + this.getStyleClass() + "]: ", je); + } StringBuffer buf = new StringBuffer(); @@ -221,7 +230,7 @@ buf.append("<input type=\"checkbox\" onclick=\""); buf.append(click); buf.append("\" class=\""); - buf.append(getStyleClass()); + buf.append(style); buf.append("\" id=\""); buf.append(elementId); buf.append("\" name=\""); Modified: trunk/ui_plugins/alertcenter/views/alert/index.gsp =================================================================== --- trunk/ui_plugins/alertcenter/views/alert/index.gsp 2008-12-17 01:28:41 UTC (rev 12058) +++ trunk/ui_plugins/alertcenter/views/alert/index.gsp 2008-12-17 01:31:02 UTC (rev 12059) @@ -157,26 +157,7 @@ </form> </div> </div> - <div id="FixedNoteDialog" style="display:none;"> - <table cellspacing="0" cellpadding="0"> - <tr> - <td colspan="2"> - <span class="BoldText">Resolution for Fix for Selected Alerts (Optional):</span> - <br/> - <textarea id="FixedNoteTextArea" cols="70" rows="5"></textarea> - </td> - </tr> - <tr> - <td class="buttonLeft"></td> - <td class="buttonRight" valign="middle" nowrap="nowrap" style="padding-top: 6px; padding-bottom: 6px;"> - <span id="button"><a href="javascript:MyAlertCenter.fixAlert();">FIXED</a></span> - <span style="padding-left: 3px;"><img src="/images/icon_fixed.gif" align="middle" alt="Click to mark as Fixed"></span> - <span>Click the "Fixed" button to mark alert condition as fixed</span> - </td> - </tr> - </table> - </div> - + <div id="AlertCenterFixedNoteDialog" style="display:none;"></div> <script type="text/javascript"> dojo11.require("dijit.dijit"); dojo11.require("dijit.Dialog"); @@ -185,11 +166,10 @@ dojo11.addOnLoad(function(){ MyAlertCenter = new hyperic.alert_center(); - dojo11.connect("Alerts_refreshTable", function() { MyAlertCenter.resetAlertTable(document.Alerts_FixForm); }); - dojo11.connect("GroupAlerts_refreshTable", function() { MyAlertCenter.resetAlertTable(document.GroupAlerts_FixForm); }); + dojo11.connect("Alerts_refreshTable", function() { MyAlertCenter.resetAlertTable(dojo11.byId('Alerts_FixForm')); }); + dojo11.connect("GroupAlerts_refreshTable", function() { MyAlertCenter.resetAlertTable(dojo11.byId('GroupAlerts_FixForm')); }); }); - </script> - + </script> </div> <div style="clear:both;height:1px;"></div> </div> Modified: trunk/web/WEB-INF/tld/display.tld =================================================================== --- trunk/web/WEB-INF/tld/display.tld 2008-12-17 01:28:41 UTC (rev 12058) +++ trunk/web/WEB-INF/tld/display.tld 2008-12-17 01:31:02 UTC (rev 12059) @@ -516,6 +516,68 @@ </attribute> </tag> <tag> + <name>alertcheckboxdecorator</name> + <tag-class>org.hyperic.hq.ui.taglib.display.AlertCheckBoxDecorator</tag-class> + <body-content>JSP</body-content> + <!-- the name="" attribute to associate with the checkbox --> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>false</rtexprvalue> + <type>String</type> + </attribute> + <!-- the value="" attribute to associate with the checkbox --> + <attribute> + <name>value</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + <type>String</type> + </attribute> + <!-- the class="" attribute to associate with the checkbox --> + <attribute> + <name>styleClass</name> + <required>true</required> + <rtexprvalue>false</rtexprvalue> + <type>String</type> + </attribute> + <attribute> + <name>onclick</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + <type>String</type> + </attribute> + <attribute> + <name>elementId</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <type>String</type> + </attribute> + <attribute> + <name>label</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <type>String</type> + </attribute> + <attribute> + <name>suppress</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + <type>String</type> + </attribute> + <attribute> + <name>fixable</name> + <required>true</required> + <rtexprvalue>false</rtexprvalue> + <type>Boolean</type> + </attribute> + <attribute> + <name>acknowledgeable</name> + <required>true</required> + <rtexprvalue>false</rtexprvalue> + <type>Boolean</type> + </attribute> + </tag> + <tag> <name>labeldecorator</name> <tag-class>org.hyperic.hq.ui.taglib.display.LabelDecorator</tag-class> <body-content>JSP</body-content> Modified: trunk/web/common/components/ListToolbar.jsp =================================================================== --- trunk/web/common/components/ListToolbar.jsp 2008-12-17 01:28:41 UTC (rev 12058) +++ trunk/web/common/components/ListToolbar.jsp 2008-12-17 01:31:02 UTC (rev 12059) @@ -117,7 +117,15 @@ </td> </c:if> <c:if test="${alerts}"> - <td align="left" id="<c:out value="${widgetInstanceName}"/>FixedButtonTd"><div id="<c:out value="${widgetInstanceName}"/>FixedButtonDiv"><input type="submit" name="buttonAction" value="<fmt:message key="resource.common.alert.action.fixed.label"/>" class="CompactButtonInactive" disabled="true"></div></td> + <td align="left" id="<c:out value="${widgetInstanceName}"/>FixedButtonTd" style="white-space: nowrap"> + <div id="<c:out value="${widgetInstanceName}"/>FixedButtonDiv"> + <input type="button" id="<c:out value="${widgetInstanceName}"/>_FixButton" value="<fmt:message key="resource.common.alert.action.fixed.label"/>" class="CompactButtonInactive" disabled="disabled" onclick="MyAlertCenter.processButtonAction(this)" /> + + <input type="button" id="<c:out value="${widgetInstanceName}"/>_AckButton" value="<fmt:message key="resource.common.alert.action.acknowledge.label"/>" class="CompactButtonInactive" disabled="disabled" onclick="MyAlertCenter.processButtonAction(this)" /> + <input type="hidden" name="buttonAction" value="" /> + <input type="hidden" name="fixedNote" value="" /> + </div> + </td> </c:if> <c:choose> <c:when test="${not empty pageSizeAction}"> Modified: trunk/web/js/lib/lib.js =================================================================== --- trunk/web/js/lib/lib.js 2008-12-17 01:28:41 UTC (rev 12058) +++ trunk/web/js/lib/lib.js 2008-12-17 01:31:02 UTC (rev 12059) @@ -2551,59 +2551,82 @@ hyperic.alert_center = function() { var that = this; - that.dialog = null; + that.dialogs = {}; that.form = null; that.subgroup = null; - that.fixedNote = dojo11.byId("FixedNoteTextArea"); + that.fixedNote = null; that.init = function(myForm) { - if(!that.dialog){ - var pane = dojo11.byId("FixedNoteDialog"); - pane.style.width = "600px"; - that.dialog = new dijit11.Dialog({ - id: "Alert_Center_Dialog", + if(!that.dialogs.FixAlert){ + var pane = dojo11.byId("AlertCenterFixedNoteDialog"); + pane.innerHTML = + '<table cellspacing="0" cellpadding="0">' + + '<tr><td colspan="2">' + + ' <span class="BoldText">Resolution for Fix for Selected Alerts (Optional):</span><br/>' + + ' <textarea id="FixedNoteTextArea" cols="70" rows="5"></textarea>' + + '</td></tr>' + + '<tr><td class="buttonLeft"></td>' + + '<td class="buttonRight" valign="middle" nowrap="nowrap" style="padding-top: 6px; padding-bottom: 6px;">' + + ' <span id="button"><a href="javascript:MyAlertCenter.fixAlert();">FIXED</a></span>' + + ' <span style="padding-left: 3px;"><img src="/images/icon_fixed.gif" align="middle" alt="Click to mark as Fixed"></span>' + + ' <span>Click the "Fixed" button to mark alert condition as fixed</span>' + + '</td></tr>' + + '</table>'; + + that.dialogs.FixAlert = new dijit11.Dialog({ + id: "Alert_Center_Fix_Alert_Dialog", refocus: true, autofocus: false, title: "Alert Center" - }, pane); + }, pane); + + that.fixedNote = dojo11.byId("FixedNoteTextArea"); } if (myForm) { that.form = myForm; - that.subgroup = that.form.name.substring(0, that.form.name.indexOf("_")); + that.subgroup = that.form.id.substring(0, that.form.id.indexOf("_FixForm")); } } that.startAutoRefresh = function() { - eval("_hqu_" + that.subgroup + "_autoRefresh();"); + eval("if (window._hqu_" + that.subgroup + "_autoRefresh) { window._hqu_" + that.subgroup + "_autoRefresh(); }"); } that.stopAutoRefresh = function() { - eval("clearTimeout(_hqu_" + that.subgroup + "_refreshTimeout);"); + eval("if (window._hqu_" + that.subgroup + "_refreshTimeout) { clearTimeout(window._hqu_" + that.subgroup + "_refreshTimeout); }"); } that.confirmFixAlert = function() { that.stopAutoRefresh(); - that.dialog.show(); + that.dialogs.FixAlert.show(); } that.fixAlert = function() { that.form.fixedNote.value = that.fixedNote.value; //alert(Form.serialize(that.form)); - that.submit(); - that.dialog.hide(); + if (that.form.output && that.form.output.value == "json") { + that.xhrSubmit(that.form); + } else { + that.form.submit(); + } + that.dialogs.FixAlert.hide(); } that.acknowledgeAlert = function() { //alert(Form.serialize(that.form)); that.stopAutoRefresh(); - that.submit(); + if (that.form.output && that.form.output.value == "json") { + that.xhrSubmit(that.form); + } else { + that.form.submit(); + } } - that.submit = function() { + that.xhrSubmit = function(myForm) { dojo11.xhrPost( { - url: that.form.action, - content: Form.serialize(that.form,true), + url: myForm.action, + content: Form.serialize(myForm,true), handleAs: 'json', load: function(data){ that.startAutoRefresh(); @@ -2616,7 +2639,7 @@ } that.resetAlertTable = function(myForm) { - var subgroup = myForm.name.substring(0, myForm.name.indexOf("_")); + var subgroup = myForm.id.substring(0, myForm.id.indexOf("_FixForm")); var checkAllBox = dojo11.byId(subgroup + "_CheckAllBox"); checkAllBox.checked = false; that.toggleAll(checkAllBox); @@ -2632,7 +2655,8 @@ for (var i = 0; i < len; i++) { var e = uList.elements[i]; - if (e.className == "fixableAlert" || e.className == "ackableAlert") { + if (e.className.indexOf("fixableAlert") >= 0 + || e.className.indexOf("ackableAlert") >= 0) { e.checked = checkedState; } } @@ -2641,15 +2665,18 @@ that.toggleAlertButtons = function(myCheckBox) { var myList = myCheckBox.form; - var subgroup = myList.name.substring(0, myList.name.indexOf("_")); + var subgroup = myList.id.substring(0, myList.id.indexOf("_FixForm")); var refreshDelay = 60000; var checkAllBox = dojo11.byId(subgroup + "_CheckAllBox"); var fixedButton = dojo11.byId(subgroup + "_FixButton"); var ackButton = dojo11.byId(subgroup + "_AckButton"); // delay refresh for X milliseconds if checkbox is clicked - eval("clearTimeout(_hqu_" + subgroup + "_refreshTimeout);"); - eval("_hqu_" + subgroup + "_refreshTimeout = setTimeout('_hqu_" + subgroup + "_autoRefresh()', refreshDelay);"); + var adhocScript = "if (window._hqu_" + subgroup + "_refreshTimeout) { "; + adhocScript += "clearTimeout(window._hqu_" + subgroup + "_refreshTimeout);"; + adhocScript += "window._hqu_" + subgroup + "_refreshTimeout = setTimeout('window._hqu_" + subgroup + "_autoRefresh()', refreshDelay);"; + adhocScript += " }"; + eval(adhocScript); if (myCheckBox.id != checkAllBox.id) { checkAllBox.checked = false; Modified: trunk/web/js/requests.js =================================================================== --- trunk/web/js/requests.js 2008-12-17 01:28:41 UTC (rev 12058) +++ trunk/web/js/requests.js 2008-12-17 01:31:02 UTC (rev 12059) @@ -179,11 +179,14 @@ var checkbox = document.createElement('input'); checkbox.setAttribute("type", "checkbox"); checkbox.setAttribute("name", "ealerts"); - checkbox.setAttribute("class", "listMember"); - //checkbox.setAttribute("onclick", "ToggleSelection(this, widgetProperties, false);"); - checkbox.onclick = new Function("ToggleSelection(this, widgetProperties, false)"); + checkbox.onclick = new Function("MyAlertCenter.toggleAlertButtons(this)"); checkbox.setAttribute("value", aList[i].alertType + ":" + aList[i].alertId); + if (aList[i].acknowledgeable) { + checkbox.setAttribute("class", "ackableAlert"); + } else { + checkbox.setAttribute("class", "fixableAlert"); + } td1.appendChild(checkbox); } @@ -221,7 +224,6 @@ td6.setAttribute("align", "center"); if (aList[i].acknowledgeable) { var ackAnchor = document.createElement("a"); - //ackAnchor .setAttribute("href", "."); td6.appendChild(ackAnchor); ackAnchor.setAttribute("text-decoration", "none"); @@ -233,13 +235,6 @@ imgNode.setAttribute('id', 'ack_'+ aList[i].alertId); ackAnchor.appendChild(imgNode); - ackAnchor.setAttribute("href", "javascript:acknowledgeAlert(this,'" + aList[i].appdefKey + "'," + aList[i].alertId + ");"); - - //imgNode.onclick = new Function("imgHide", "this.parentNode.innerHTML='';"); - //ackAnchor.onclick = new Function("imgHide", "this.parentNode.innerHTML=' ';"); - - - imgNode.onclick = new Function("imgHide", "this.src ='images/spacer.gif';this.border='0';"); ackInstruction.style.display = ""; } else { @@ -264,11 +259,6 @@ $('modifiedCritTime' + (token != null ? token : '')).innerHTML = 'Updated: ' + refreshTime(); - //rTimer = setTimeout(alertFunc, 60000); - // Refresh in 60 seconds - unCheck(); - - ToggleRecentAlertButton(document.FixAlertsForm); } function showAvailSummary(originalRequest) { Modified: trunk/web/portal/DashboardLayout.jsp =================================================================== --- trunk/web/portal/DashboardLayout.jsp 2008-12-17 01:28:41 UTC (rev 12058) +++ trunk/web/portal/DashboardLayout.jsp 2008-12-17 01:31:02 UTC (rev 12059) @@ -120,6 +120,7 @@ } } + /* for (i = 0; i < getRecentForm.length; i++) { if (/RemoveAlerts/.test(getRecentForm[i].action)) { @@ -140,8 +141,8 @@ } } } + */ - if (problemPortlet) { setInterval("requestProblemResponse()", 30000); } Modified: trunk/web/portlet/criticalAlerts/View.jsp =================================================================== --- trunk/web/portlet/criticalAlerts/View.jsp 2008-12-17 01:28:41 UTC (rev 12058) +++ trunk/web/portlet/criticalAlerts/View.jsp 2008-12-17 01:31:02 UTC (rev 12059) @@ -38,6 +38,7 @@ <script type="text/javascript"> var pageData = new Array(); +var _hqu_<c:out value="${widgetInstanceName}"/>_refreshTimeout; initializeWidgetProperties('<c:out value="${widgetInstanceName}"/>'); widgetProperties = getWidgetProperties('<c:out value="${widgetInstanceName}"/>'); @@ -47,15 +48,22 @@ new Ajax.Request(critAlertUrl, {method: 'get', onSuccess:showRecentAlerts, onFailure :reportError}); } -onloads.push(requestRecentAlerts<c:out value="${portlet.token}"/>); +function _hqu_<c:out value="${widgetInstanceName}"/>_autoRefresh() { + _hqu_<c:out value="${widgetInstanceName}"/>_refreshTimeout = setTimeout("_hqu_<c:out value="${widgetInstanceName}"/>_autoRefresh()", 30000); + requestRecentAlerts<c:out value="${portlet.token}"/>(); +} -function acknowledgeAlert(img, eid, aid) { - //new Effect.Shrink(img, {duration: 1.5}); - var ackAlertUrl = "<html:rewrite page="/alerts/Alerts.do?mode=ACKNOWLEDGE&eid="/>" - var pars = eid + "&a=" + aid; - var url = ackAlertUrl + pars; - new Ajax.Request(url); -} +dojo11.require("dijit.dijit"); +dojo11.require("dijit.Dialog"); + +var MyAlertCenter = null; +dojo11.addOnLoad(function(){ + MyAlertCenter = new hyperic.alert_center(); + + dojo11.connect("requestRecentAlerts<c:out value="${portlet.token}"/>", function() { MyAlertCenter.resetAlertTable(dojo11.byId('<c:out value="${widgetInstanceName}"/>_FixForm')); }); + + _hqu_<c:out value="${widgetInstanceName}"/>_autoRefresh(); +}); </script> <c:set var="rssUrl" value="/rss/ViewCriticalAlerts.rss"/> @@ -77,12 +85,13 @@ </tiles:insert> <!-- JSON available at /dashboard/ViewCriticalAlerts.do --> - <html:form method="POST" action="/alerts/RemoveAlerts.do"> + <html:form styleId="${widgetInstanceName}_FixForm" method="POST" action="/alerts/RemoveAlerts.do"> + <html:hidden property="output" value="json" /> <table width="100%" cellpadding="0" cellspacing="0" border="0" id="<c:out value="${tableName}"/>" class="portletLRBorder"> <thead> <tr class="ListRow"> <td width="1%" class="ListHeaderCheckbox"> - <input type="checkbox" onclick="ToggleAll(this, widgetProperties, false);" name="listToggleAll" id="listToggleAll"> + <input type="checkbox" onclick="MyAlertCenter.toggleAll(this)" name="listToggleAll" id="<c:out value="${widgetInstanceName}"/>_CheckAllBox"> </td> <td width="30%" class="ListHeaderInactiveSorted" align="left"> Date / Time<html:img page="/images/tb_sortdown.gif" height="9" width="9" border="0" /> @@ -110,10 +119,7 @@ </tr> <tr class="ListRow" id="<c:out value="ackInstruction${portlet.token}"/>" style="display: none;"> <td class="ListCell" colspan="6" align="right" style="font-style: italic;"> - <c:url var="path" value="/"/> - <fmt:message key="dash.settings.criticalAlerts.ack.instruction"> - <fmt:param value="${path}"/> - </fmt:message> + </td> </tr> <tr> <td colspan="5"> @@ -131,5 +137,6 @@ </tr> </tfoot> </table> + <div id="AlertCenterFixedNoteDialog" style="display:none;"></div> </html:form> </div> Modified: trunk/web/resource/common/monitor/alerts/ListAlerts.jsp =================================================================== --- trunk/web/resource/common/monitor/alerts/ListAlerts.jsp 2008-12-17 01:28:41 UTC (rev 12058) +++ trunk/web/resource/common/monitor/alerts/ListAlerts.jsp 2008-12-17 01:31:02 UTC (rev 12059) @@ -15,7 +15,7 @@ normal use of the program, and does *not* fall under the heading of "derived work". - Copyright (C) [2004, 2005, 2006], Hyperic, Inc. + Copyright (C) [2004-2008], Hyperic, Inc. This file is part of HQ. HQ is free software; you can redistribute it and/or modify @@ -261,7 +261,7 @@ </script> <!-- FORM --> -<html:form method="GET" action="/alerts/RemoveAlerts"> +<html:form styleId="${widgetInstanceName}_FixForm" method="POST" action="/alerts/RemoveAlerts"> <html:hidden property="eid" value="${Resource.entityId}"/> <c:if test="${not empty param.year}"> <input type="hidden" name="year" value="<c:out value="${param.year}"/>"/> @@ -277,16 +277,22 @@ <tiles:insert definition=".portlet.confirm"/> <tiles:insert definition=".portlet.error"/> +<script type="text/javascript"> + dojo11.require("dijit.dijit"); + dojo11.require("dijit.Dialog"); + + var MyAlertCenter = null; + dojo11.addOnLoad(function(){ + MyAlertCenter = new hyperic.alert_center(); + }); +</script> + <table width="100%" style="background-color:#fff;border-left:1px solid gray;border-right:1px solid gray"><tr> <td><a href="javascript:previousDay()"><html:img page="/images/schedule_left.gif" border="0"/></a></td> <td nowrap="true" class="BoldText"><hq:dateFormatter value="${date}" showTime="false"/></td> <td><a href="javascript:nextDay()"><html:img page="/images/schedule_right.gif" border="0"/></a></td> <td><html:link href="javascript:popupCal()"><html:img page="/images/schedule_iconCal.gif" width="19" height="17" alt="" border="0"/></html:link></td> <td class="ButtonCaptionText" width="100%" style="text-align: right; font-style: italic;"> - <c:url var="path" value="/"/> - <fmt:message key="dash.settings.criticalAlerts.ack.instruction"> - <fmt:param value="${path}"/> - </fmt:message> </td> </tr></table> @@ -302,11 +308,12 @@ <display:table cellspacing="0" cellpadding="0" width="100%" order="${so}" action="${sortAction}" items="${Alerts}" var="Alert"> <display:column width="1%" property="id" title="<input -type=\"checkbox\" onclick=\"ToggleAll(this, widgetProperties)\" -name=\"listToggleAll\">" isLocalizedTitle="false" +type=\"checkbox\" onclick=\"MyAlertCenter.toggleAll(this)\" +id=\"${widgetInstanceName}_CheckAllBox\">" isLocalizedTitle="false" styleClass="ListCellCheckbox" headerStyleClass="ListHeaderCheckbox"> -<display:checkboxdecorator name="alerts" -onclick="ToggleSelection(this,widgetProperties)" +<display:alertcheckboxdecorator name="alerts" +onclick="MyAlertCenter.toggleAlertButtons(this)" +fixable="${!Alert.fixed}" acknowledgeable="${Alert.acknowledgeable}" styleClass="listMember"/> </display:column> <display:column width="10%" property="priority" @@ -338,8 +345,7 @@ </display:column> <display:column width="11%" property="acknowledgeable" align="center" - title="alerts.alert.AlertList.ListHeader.Acknowledge" - href="/alerts/RemoveAlerts.do?eid=${Resource.entityId.appdefKey}&alerts=${Alert.id}&buttonAction=ACKNOWLEDGE"> + title="alerts.alert.AlertList.ListHeader.Acknowledge"> <display:booleandecorator flagKey="acknowledgeable"/> </display:column> @@ -355,6 +361,7 @@ <tiles:put name="defaultSortColumn" value="2"/> <tiles:put name="widgetInstanceName" beanName="widgetInstanceName"/> </tiles:insert> +<div id="AlertCenterFixedNoteDialog" style="display:none;"></div> <tiles:insert definition=".page.footer"> </tiles:insert> </html:form> |