Hi all

I'm having some problems porting a page.  the page is
'/network/systems/custominfo/edit.pxt' and the problem is displaying
the list of systems with this custom data with the correct pagination.
 I can do it with out the pagination but the pxt file used the
pagination so I'm attempting to as well.

Could someone have a look and comment?  I'm sure what I've done is pretty close.

Thanks

CC

-- 
RHCE#805007969328369
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
index ebaf880..9d801e6 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
@@ -1819,5 +1819,26 @@ delete from rhnServerNotes where id = :id and server_id = :server_id
   </query>
 </write-mode>
 
+<!-- Lifted from web/modules/rhn/RHN/DB/DataSource/xml/System_queries.xml with slight changes -->
+<mode name="users_systems_with_value_for_key">
+  <query params="user_id, cikid">
+SELECT S.id,
+       S.name AS NAME,
+       SCDV.value,
+       TO_CHAR(SI.checkin, 'YYYY-MM-DD') as LAST_CHECKIN
+  FROM rhnServer S,
+       rhnServerCustomDataValue SCDV,
+       rhnUserServerPerms USP,
+       rhnServerInfo SI
+ WHERE USP.user_id = :user_id
+   AND USP.server_id = SCDV.server_id
+   AND SI.server_id = S.id
+   AND SCDV.key_id = :cikid
+   AND USP.server_id = S.id
+ORDER BY UPPER(NVL(S.NAME, '(none)')), S.ID
+  </query>
+  <elaborator name="system_overview" />
+</mode>
+
 </datasource_modes>
 
diff --git a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
index 766c989..965bea7 100644
--- a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
@@ -117,6 +117,23 @@ public class ServerFactory extends HibernateFactory {
                 "CustomDataValue.findByKey", params);
     }
 
+     /**
+     * Lookup all the systems with the specified CustomDataKey.
+     * @param userId The User ID of the user doing the query
+     * @param cikid The ID of the Key for the values you would like to lookup
+     * @return List of systems
+     */
+    public static List lookupServersWithCustomKey(Long userId, Long cikid) {
+        SelectMode m = ModeFactory.getMode("System_queries",
+                "users_systems_with_value_for_key");
+        Map inParams = new HashMap();
+
+        inParams.put("user_id", userId);
+        inParams.put("cikid", cikid);
+
+        return m.execute(inParams);
+    }
+
     /**
      * Lookup all storage Devices associated with the server.
      * @param s The server for the values you would like to lookup
diff --git a/java/code/src/com/redhat/rhn/frontend/action/systems/customkey/UpdateCustomKeyAction.java b/java/code/src/com/redhat/rhn/frontend/action/systems/customkey/UpdateCustomKeyAction.java
new file mode 100644
index 0000000..ebe7c53
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/frontend/action/systems/customkey/UpdateCustomKeyAction.java
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) 2009--2010 Red Hat, Inc.
+ *
+ * This software is licensed to you under the GNU General Public License,
+ * version 2 (GPLv2). There is NO WARRANTY for this software, express or
+ * implied, including the implied warranties of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
+ * along with this software; if not, see
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+ *
+ * Red Hat trademarks are not licensed under GPLv2. No permission is
+ * granted to use or replicate Red Hat trademarks that are incorporated
+ * in this software or its documentation.
+ */
+package com.redhat.rhn.frontend.action.systems.customkey;
+
+import com.redhat.rhn.domain.org.CustomDataKey;
+import com.redhat.rhn.domain.org.OrgFactory;
+import com.redhat.rhn.domain.server.ServerFactory;
+import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.frontend.struts.RequestContext;
+import com.redhat.rhn.frontend.struts.RhnAction;
+import com.redhat.rhn.frontend.taglibs.list.ListTagHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.ListSessionSetHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.Listable;
+
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.action.ActionMessage;
+import org.apache.struts.action.ActionMessages;
+import org.apache.struts.action.DynaActionForm;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Handles the deletion of a key.
+ */
+public class UpdateCustomKeyAction extends RhnAction implements Listable {
+
+    private final String CIKID_PARAM = "cikid";
+    private final String LABEL_PARAM = "label";
+    private final String DESC_PARAM = "description";
+    private final String CREATE_PARAM = "created";
+    private final String MODIFY_PARAM = "modified";
+    private final String CREATOR_PARAM = "creator";
+    private final String MODIFIER_PARAM = "modifier";
+
+    /** {...@inheritdoc} */
+    public ActionForward execute(ActionMapping mapping,
+            ActionForm formIn,
+            HttpServletRequest request,
+            HttpServletResponse response) {
+
+        RequestContext context = new RequestContext(request);
+        DynaActionForm form = (DynaActionForm)formIn;
+
+        User user =  context.getLoggedInUser();
+        Long cikid = context.getParamAsLong(CIKID_PARAM);
+        CustomDataKey key = OrgFactory.lookupKeyById(cikid);
+
+        request.setAttribute(CIKID_PARAM, cikid);
+        request.setAttribute(LABEL_PARAM, key.getLabel());
+        request.setAttribute(DESC_PARAM, key.getDescription());
+        request.setAttribute(CREATE_PARAM, key.getCreated());
+        request.setAttribute(MODIFY_PARAM, key.getModified());
+        request.setAttribute(CREATOR_PARAM, key.getCreator().getLogin());
+        request.setAttribute(MODIFIER_PARAM, key.getLastModifier().getLogin());
+
+        List servers = ServerFactory.lookupServersWithCustomKey(user.getId(), cikid);
+        request.setAttribute("server_count", servers.size());
+        request.setAttribute("pageList", servers);
+
+        ListSessionSetHelper helper = new ListSessionSetHelper(this, request);
+        helper.execute();
+
+        if (context.isSubmitted()) {
+            String desc = (String)form.get(DESC_PARAM);
+
+            key.setDescription(desc);
+            key.setModified(new Date());
+
+            ServerFactory.saveCustomKey(key);
+
+            return mapping.findForward("updated");
+        }
+
+        helper.destroy();
+        return mapping.findForward("default");
+    }
+
+    public  List getResult(RequestContext context) {
+        User user  = context.getLoggedInUser();
+        Long cikid = context.getParamAsLong(CIKID_PARAM);
+        List servers = ServerFactory.lookupServersWithCustomKey(user.getId(), cikid);
+
+        return servers;
+    }
+
+}
diff --git a/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml b/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
index c851b87..115c01a 100644
--- a/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
+++ b/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
@@ -13080,6 +13080,7 @@ the &lt;strong&gt;Red Hat Enterprise Linux System Administration Guide.&lt;/stro
        </trans-unit>
     </group>
 
+    <!-- custdata/deletekey.jsp -->
     <group>
        <context-group name="ctx">
          <context context-type="sourcefile">/rhn/systems/customdata/DeleteKey.do</context>
@@ -13093,6 +13094,26 @@ the &lt;strong&gt;Red Hat Enterprise Linux System Administration Guide.&lt;/stro
        </trans-unit>
     </group>
 
+    <!-- custdata/updatekey.jsp -->
+    <group>
+       <context-group name="ctx">
+         <context context-type="sourcefile">/rhn/systems/customdata/UpdateCustomKey.do</context>
+       </context-group>
+
+       <trans-unit id="system.jsp.customkey.updatetitle">
+         <source>Edit Custom Info Key</source>
+       </trans-unit>
+       <trans-unit id="system.jsp.customkey.updatemsg">
+         <source>Define infomation about this key below.</source>
+       </trans-unit>
+       <trans-unit id="system.jsp.customkey.updateheader">
+         <source>Systems with a value for this key</source>
+       </trans-unit>
+       <trans-unit id="system.jsp.customkey.noservers">
+         <source>No systems exist which have a value for this key.</source>
+       </trans-unit>
+    </group>
+
      <!-- System Common -->
      <group>
        <context-group name="ctx">
@@ -22013,6 +22034,9 @@ given channel.</source>
       <trans-unit id="system.jsp.customkey.modified">
          <source>Last Modified</source>
        </trans-unit>
+      <trans-unit id="system.jsp.customkey.created">
+         <source>Created</source>
+       </trans-unit>
       <trans-unit id="system.jsp.customkey.createlink">
          <source>create new key</source>
        </trans-unit>
diff --git a/java/code/webapp/WEB-INF/pages/systems/customkey/listcustomkeys.jsp b/java/code/webapp/WEB-INF/pages/systems/customkey/listcustomkeys.jsp
index fd296bd..42d9d4f 100644
--- a/java/code/webapp/WEB-INF/pages/systems/customkey/listcustomkeys.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/customkey/listcustomkeys.jsp
@@ -47,7 +47,7 @@
 					defaultsort="asc"
                            styleclass="first-column">
 
-                        <a href="/network/systems/custominfo/edit.pxt?cikid=${current.id}">
+                        <a href="/rhn/systems/customdata/UpdateCustomKey.do?cikid=${current.id}">
                         <c:out value="${current.label}" />
                         </a>
                 </rl:column>
diff --git a/java/code/webapp/WEB-INF/pages/systems/customkey/updatekey.jsp b/java/code/webapp/WEB-INF/pages/systems/customkey/updatekey.jsp
new file mode 100644
index 0000000..3c1dff8
--- /dev/null
+++ b/java/code/webapp/WEB-INF/pages/systems/customkey/updatekey.jsp
@@ -0,0 +1,118 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c" %>
+<%@ taglib uri="http://rhn.redhat.com/rhn"; prefix="rhn" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"; prefix="bean" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-html"; prefix="html" %>
+<%@ taglib uri="http://rhn.redhat.com/tags/list"; prefix="rl" %>
+
+<html:html xhtml="true">
+<body>
+<br>
+
+
+
+<div>
+  <div class="toolbar-h1">
+    <div class="toolbar">
+      <span class="toolbar">
+        <a href="/rhn/systems/customdata/DeleteCustomKey.do?cikid=${cikid}">
+        <img src="/img/action-del.gif" alt="delete key" title="delete key" />delete key</a>
+      </span>
+    </div>
+    <img src="/img/rhn-icon-keyring.gif" alt="" /> 
+    <bean:message key="system.jsp.customkey.updatetitle"/>
+
+    <a href="/rhn/help/reference/en-US/s1-sm-systems.jsp#s2-sm-system-cust-info" target="_new" class="help-title">
+      <img src="/img/rhn-icon-help.gif" alt="Help Icon" />
+    </a>
+  </div>
+
+  <div class="page-summary">
+    <p><bean:message key="system.jsp.customkey.updatemsg"/></p>
+  </div>
+
+  <hr />
+
+  <form action="/rhn/systems/customdata/UpdateCustomKey.do?cikid=${cikid}" name="edit_token" method="post">
+    <table class="details">
+      <tr>
+        <th><bean:message key="system.jsp.customkey.keylabel"/>:</th>
+        <td>${label}</td>
+      </tr>
+
+      <tr>
+        <th><bean:message key="system.jsp.customkey.description"/>:</th>
+        <td>
+          <textarea wrap="virtual" rows="6" cols="50" name="description"><c:out value="${description}" /></textarea>
+        </td>
+      </tr>
+
+      <tr>
+        <th><bean:message key="system.jsp.customkey.created"/>:</th>
+        <td>${created} by ${creator}</td>
+      </tr>
+
+      <tr>
+        <th><bean:message key="system.jsp.customkey.modified"/>:</th>
+        <td>${modified} by ${modifier}</td>
+      </tr>
+    </table>
+
+    <div align="right">
+      <hr />
+
+      <input type="submit" name="UpdateKey" value="Update Key" />
+
+      <rhn:submitted/>
+    </div>
+  </form>
+
+</div>
+
+  <h2><bean:message key="system.jsp.customkey.updateheader"/></h2>
+<%--
+    <c:if test="${server_count == 0}">
+      <bean:message key="system.jsp.customkey.noservers"/>
+    </c:if>
+    <c:if test="${server_count != 0}">
+      <rl:listset name="systemListSet" legend="system">
+        <rl:list
+            dataset="pageList"
+            name="systemList"
+            emptykey="nosystems.message"
+            alphabarcolumn="name"
+            filter="com.redhat.rhn.frontend.taglibs.list.filters.SystemOverviewFilter" >
+
+          <rl:decorator name="ElaborationDecorator"/>
+          <rl:decorator name="PageSizeDecorator"/>
+
+          <!-- Name Column -->
+          <rl:column sortable="true"
+              bound="false"
+              headerkey="systemlist.jsp.system"
+              sortattr="name"
+              defaultsort="asc"
+              styleclass="first-column">
+            <a href="/rhn/systems/details/Overview.do?sid=${current.id}">${current.name}</a>
+          </rl:column>
+
+          <!-- Values Column -->
+            <rl:column sortable="false"
+                bound="false"
+                headerkey="cik.update.jsp.value">
+              <c:out value="${current.value}" />
+            </rl:column>		
+
+          <!-- Last Checkin Column -->
+          <rl:column sortable="false"
+                bound="false"
+                headerkey="cik.update.jsp.last_checkin"
+                styleclass="last-column">
+              <c:out value="${current.last_checkin}" />
+          </rl:column>
+
+        </rl:list>
+      </rl:listset>
+    </c:if>
+--%>
+  </body>
+</html:html>
diff --git a/java/code/webapp/WEB-INF/struts-config.xml b/java/code/webapp/WEB-INF/struts-config.xml
index c7bd894..50b9612 100644
--- a/java/code/webapp/WEB-INF/struts-config.xml
+++ b/java/code/webapp/WEB-INF/struts-config.xml
@@ -1102,6 +1102,14 @@
       <form-property name="submitted" type="java.lang.Boolean" />
     </form-bean>
 
+    <form-bean name="updateCustomDataForm"
+               type="com.redhat.rhn.frontend.struts.ScrubbingDynaActionForm" >
+      <form-property name="cikid" type="java.lang.Long" />
+      <form-property name="label" type="java.lang.String" />
+      <form-property name="description" type="java.lang.String" />
+      <form-property name="submitted" type="java.lang.Boolean" />
+    </form-bean>
+
   </form-beans>
 
   <global-exceptions>
@@ -6890,6 +6898,15 @@
         <forward name="deleted" path="/systems/customdata/CustomDataList.do" redirect="true"/>
       </action>
 
+   <action path="/systems/customdata/UpdateCustomKey"
+        scope="request"
+        input="/WEB-INF/pages/systems/customkey/updatekey.jsp"
+        type="com.redhat.rhn.frontend.action.systems.customkey.UpdateCustomKeyAction"
+        name="updateCustomDataForm"
+        className="com.redhat.rhn.frontend.struts.RhnActionMapping">
+        <forward name="default" path="/WEB-INF/pages/systems/customkey/updatekey.jsp" />
+        <forward name="updated" path="/systems/customdata/CustomDataList.do" redirect="true"/>
+      </action>
 
    <action path="/software/manage/packages/PackageList"
         scope="request"
_______________________________________________
Spacewalk-devel mailing list
Spacewalk-devel@redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-devel

Reply via email to