branding/img/rhn-icon-package_extra.gif |binary java/code/src/com/redhat/rhn/common/db/datasource/xml/Package_queries.xml | 32 +++ java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml | 31 +++ java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ExtraPackagesListAction.java | 37 ++++ java/code/src/com/redhat/rhn/frontend/action/rhnpackage/RemoveExtraConfirmSetupAction.java | 29 +++ java/code/src/com/redhat/rhn/frontend/action/systems/ExtraPackagesSystemsAction.java | 51 ++++++ java/code/src/com/redhat/rhn/frontend/dto/SystemOverview.java | 15 + java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml | 23 ++ java/code/src/com/redhat/rhn/frontend/strings/nav/StringResource_en_US.xml | 7 java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/SystemOverviewSerializer.java | 1 java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java | 68 ++++++++ java/code/src/com/redhat/rhn/manager/system/SystemManager.java | 34 ++++ java/code/webapp/WEB-INF/nav/sitenav-authenticated.xml | 1 java/code/webapp/WEB-INF/nav/system_detail.xml | 4 java/code/webapp/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf | 21 +- java/code/webapp/WEB-INF/pages/systems/details/packages/extra-packages-list.jsp | 84 ++++++++++ java/code/webapp/WEB-INF/pages/systems/extra-packages-systems-list.jsp | 26 +++ java/code/webapp/WEB-INF/struts-config.xml | 39 ++++ 18 files changed, 496 insertions(+), 7 deletions(-)
New commits: commit 8dd8609c681e750eb283f22f64203d352e146844 Author: Milan Zazrivec mzazrivec@redhat.com Date: Tue Oct 23 11:23:48 2012 +0200
Expose extra packages / systems with extra packages
Extra packages in this context mean packages installed on a registered system which are not present in any of the system's subscribed channel (with the option to remove these packages).
This change adds the following pages: * systems/ExtraPackagesSystems * systems/details/packages/ExtraPackagesList * systems/details/packages/RemoveExtraConfirm
and the following two API calls: * system.listSystemsWithExtraPackages() * system.listExtraPackages()
This is a re-work of a code originally found in SUSE Manager 1.7.
diff --git a/branding/img/rhn-icon-package_extra.gif b/branding/img/rhn-icon-package_extra.gif new file mode 100644 index 0000000..9291fa7 Binary files /dev/null and b/branding/img/rhn-icon-package_extra.gif differ diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Package_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Package_queries.xml index eb91858..5b48954 100644 --- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Package_queries.xml +++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Package_queries.xml @@ -465,6 +465,38 @@ SELECT PN.id || '|' || SPE.id AS ID_COMBO, </query> </mode>
+<mode name="extra_packages_for_system" class="com.redhat.rhn.frontend.dto.PackageListItem"> + <query params="serverid"> +select p.id, + pn.id || '|' || pe.id || '|' || pa.id as id_combo, + pn.name || '-' || pe.version || '-' || pe.release as nvre, + pn.name || '-' || evr_t_as_vre_simple(pe.evr) || '.' || pa.label as nvrea, + pn.name as name, + pe.version as version, + pe.release as release, + pe.epoch as epoch, + pn.id as name_id, + pe.id as evr_id, + pa.label as arch, + sp.installTime + from rhnServerPackage sp + left outer join rhnPackage p on (sp.name_id = p.name_id and + sp.evr_id = p.evr_id and + sp.package_arch_id = p.package_arch_id) + left outer join (select sc.server_id, cp.package_id + from rhnServerChannel sc + join rhnChannelPackage cp on (sc.channel_id = cp.channel_id) + ) scp on (scp.package_id = p.id and + scp.server_id = sp.server_id) + left outer join rhnPackageName pn on (pn.id = sp.name_id) + left outer join rhnPackageArch pa on (pa.id = sp.package_arch_id) + left outer join rhnPackageEvr pe on (pe.id = sp.evr_id) + where sp.server_id = :serverid and + (p.id is null or scp.package_id is null) + order by nvre + </query> +</mode> + <mode name="packages_from_server_set" class="com.redhat.rhn.frontend.dto.SsmRemovePackageListItem"> <query params="user_id, set_label"> SELECT PN.ID || '|' || PE.ID || '|' || X.package_arch_id AS id_combo, 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 9914d3e..dc031dd 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 @@ -1977,5 +1977,34 @@ ORDER BY UPPER(COALESCE(S.NAME, '(none)')), S.ID <elaborator name="system_monitoring" /> </mode>
-</datasource_modes> +<mode name="extra_packages_systems_count" + class="com.redhat.rhn.frontend.dto.SystemOverview"> + <query params="userid, orgid"> +select s.id as id, + s.name as name, + 1 as selectable, + count(sp.name_id) as extra_pkg_count + from rhnServer s + join rhnUserServerPerms usp on (usp.server_id = s.id and + usp.user_id = :userid) + join rhnServerPackage sp on (s.id = sp.server_id) + left outer join rhnPackage p on (sp.name_id = p.name_id and + sp.evr_id = p.evr_id and + sp.package_arch_id = p.package_arch_id) + left outer join (select sc.server_id, cp.package_id + from rhnServerChannel sc + join rhnChannelPackage cp on (sc.channel_id = cp.channel_id) + ) scp on (scp.package_id = p.id and + scp.server_id = sp.server_id) + where (p.id is null or scp.package_id is null) and + s.org_id = :orgid + group by s.name, s.id + order by name, id; + </query> + <elaborator name="system_overview" /> + <elaborator name="entitlements" /> + <elaborator name="is_virtual_guest" /> + <elaborator name="is_virtual_host" /> +</mode>
+</datasource_modes> diff --git a/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ExtraPackagesListAction.java b/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ExtraPackagesListAction.java new file mode 100644 index 0000000..6f66f56 --- /dev/null +++ b/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/ExtraPackagesListAction.java @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2012 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. + */ + +/** + * Copyright (c) 2012 Novell + */ + +package com.redhat.rhn.frontend.action.rhnpackage; + +import com.redhat.rhn.common.db.datasource.DataResult; +import com.redhat.rhn.domain.server.Server; +import com.redhat.rhn.manager.system.SystemManager; + +/** + * ExtraPackagesListAction + */ +public class ExtraPackagesListAction extends BaseSystemPackagesAction { + private static final String LIST_NAME = "extraPackageList"; + public static final String DATA_SET = "extras"; + + @Override + protected DataResult getDataResult(Server server) { + return SystemManager.listExtraPackages(server.getId()); + } +} diff --git a/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/RemoveExtraConfirmSetupAction.java b/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/RemoveExtraConfirmSetupAction.java new file mode 100644 index 0000000..71c2389 --- /dev/null +++ b/java/code/src/com/redhat/rhn/frontend/action/rhnpackage/RemoveExtraConfirmSetupAction.java @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2012 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.rhnpackage; + +/** + * RemoveExtraConfirmSetupAction + */ +public class RemoveExtraConfirmSetupAction extends RemoveConfirmSetupAction { + private static final ExtraPackagesListAction DECL_ACTION = + new ExtraPackagesListAction(); + + @Override + protected String getDecl(Long sid) { + return DECL_ACTION.getDecl(sid); + } +} diff --git a/java/code/src/com/redhat/rhn/frontend/action/systems/ExtraPackagesSystemsAction.java b/java/code/src/com/redhat/rhn/frontend/action/systems/ExtraPackagesSystemsAction.java new file mode 100644 index 0000000..c009741 --- /dev/null +++ b/java/code/src/com/redhat/rhn/frontend/action/systems/ExtraPackagesSystemsAction.java @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2012 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. + */ + +/** + * Copyright (c) 2012 Novell + */ + +package com.redhat.rhn.frontend.action.systems; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; + +import com.redhat.rhn.common.db.datasource.DataResult; +import com.redhat.rhn.domain.user.User; +import com.redhat.rhn.frontend.dto.SystemOverview; +import com.redhat.rhn.frontend.listview.PageControl; +import com.redhat.rhn.manager.system.SystemManager; + + +/** + * ExtraPackagesSystemsAction + */ +public class ExtraPackagesSystemsAction extends BaseSystemsAction { + /** {@inheritDoc} */ + public ActionForward execute(ActionMapping mapping, ActionForm formIn, + HttpServletRequest request, HttpServletResponse response) { + request.setAttribute("extraPackagesMode", Boolean.TRUE); + return super.execute(mapping, formIn, request, response); + } + + protected DataResult<SystemOverview> getDataResult(User user, PageControl pc, + ActionForm formIn) { + return (DataResult<SystemOverview>) SystemManager.getExtraPackagesSystems(user, pc); + } +} diff --git a/java/code/src/com/redhat/rhn/frontend/dto/SystemOverview.java b/java/code/src/com/redhat/rhn/frontend/dto/SystemOverview.java index 932ceb8..2be6320 100644 --- a/java/code/src/com/redhat/rhn/frontend/dto/SystemOverview.java +++ b/java/code/src/com/redhat/rhn/frontend/dto/SystemOverview.java @@ -71,6 +71,7 @@ public class SystemOverview extends BaseDto implements Serializable { private String lastCheckinString; private boolean isVirtualHost; private boolean isVirtualGuest; + private Long extraPkgCount; private static final String NONE_VALUE = "(none)";
@@ -732,5 +733,19 @@ public class SystemOverview extends BaseDto implements Serializable { return enhancementErrata + securityErrata + bugErrata; }
+ /** + * Sets a number of extra packages in the system. + * @param packagesCount extra packages to set + */ + public void setExtraPkgCount(Long packagesCount) { + this.extraPkgCount = packagesCount; + } + + /** + * @return Retuns the extraPkgCount + */ + public Long getExtraPkgCount() { + return this.extraPkgCount; + }
} 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 cc7993e..d284688 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 @@ -2586,6 +2586,21 @@ button below, and <b>will be unable to log back in</b>.</source> <context context-type="sourcefile">/rhn/systems/details/packages/patches/PatchConfirm</context> </context-group> </trans-unit> + + <trans-unit id="packagelist.jsp.extrapackages"> +<source>Extra Packages</source> + <context-group name="ctx"> + <context context-type="sourcefile">/rhn/systems/details/packages/PackageList</context> + </context-group> + </trans-unit> + +<trans-unit id="packagelist.jsp.extrapackagessummary"> +<source>The following packages are installed on this system and are not present in any of its channels.</source> + <context-group name="ctx"> + <context context-type="sourcefile">/rhn/systems/details/packages/ForeignPackages</context> + </context-group> + </trans-unit> + <!-- upgradable.jsp --> <trans-unit id="upgradable.jsp.header"> <source>Upgradable Packages</source> @@ -5132,6 +5147,14 @@ value for this entitlement, excluding the default organization's consumption.</s </context-group> </trans-unit>
+ <trans-unit id="extrapackagessystemslist.jsp.header"> + <source>Systems with Extra Packages</source> + <context-group name="ctx"> + <context context-type="sourcefile">/rhn/systems/ExtraPackagesSystems.do</context> + <context context-type="sourcefile">/rhn/systems/YourRhn.do</context> + </context-group> + </trans-unit> + <trans-unit id="inactivelist.jsp.header"> <source>Inactive Systems</source> <context-group name="ctx"> diff --git a/java/code/src/com/redhat/rhn/frontend/strings/nav/StringResource_en_US.xml b/java/code/src/com/redhat/rhn/frontend/strings/nav/StringResource_en_US.xml index e3930ce..2f306f9 100644 --- a/java/code/src/com/redhat/rhn/frontend/strings/nav/StringResource_en_US.xml +++ b/java/code/src/com/redhat/rhn/frontend/strings/nav/StringResource_en_US.xml @@ -118,6 +118,13 @@ http://www.oasis-open.org/committees/xliff/documents/xliff-core-1.1.xsd" </context-group> </trans-unit>
+ <trans-unit id="Extra Packages"> + <source>Extra Packages</source> + <context-group name="ctx"> + <context context-type="sourcefile">Systems Navigation Menu</context> + </context-group> + </trans-unit> + <trans-unit id="duplicate.systems.nav.ips"> <source>Duplicate IP Address</source> <context-group name="ctx"> diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/SystemOverviewSerializer.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/SystemOverviewSerializer.java index b4e16b0..808b2fc 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/SystemOverviewSerializer.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/SystemOverviewSerializer.java @@ -61,6 +61,7 @@ public class SystemOverviewSerializer implements XmlRpcCustomSerializer { helper.add("id", system.getId()); helper.add("name", system.getName()); helper.add("last_checkin", system.getLastCheckinDate()); + helper.add("extra_pkg_count", system.getExtraPkgCount()); helper.writeTo(output); } } diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java index 072e62e..5d5be49 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java @@ -76,6 +76,7 @@ import com.redhat.rhn.domain.user.User; import com.redhat.rhn.frontend.dto.ActivationKeyDto; import com.redhat.rhn.frontend.dto.ErrataOverview; import com.redhat.rhn.frontend.dto.EssentialChannelDto; +import com.redhat.rhn.frontend.dto.PackageListItem; import com.redhat.rhn.frontend.dto.ServerPath; import com.redhat.rhn.frontend.dto.SystemCurrency; import com.redhat.rhn.frontend.dto.SystemOverview; @@ -5033,4 +5034,71 @@ public class SystemHandler extends BaseHandler { ServerFactory.removeTagFromSnapshot(server.getId(), tag); return 1; } + + /** + * List systems with extra packages + * @param sessionKey the session key + * @return Array of systems with extra packages + * + * @xmlrpc.doc List systems with extra packages + * @xmlrpc.param #param("string", "sessionKey") + * @xmlrpc.returntype + * #array() + * #struct() + * #prop_desc("int", "id", "System ID") + * #prop_desc("string", "name", "System profile name") + * #prop_desc("int", "extra_pkg_count", "Extra packages count") + * #struct_end() + * #array_end() + */ + public Object[] listSystemsWithExtraPackages(String sessionKey) { + User loggedInUser = getLoggedInUser(sessionKey); + return SystemManager.getExtraPackagesSystems(loggedInUser, null).toArray(); + } + + /** + * List extra packages for given system + * @param sessionKey Session key + * @param serverId Server ID + * @return Array of extra packages for given system + * + * @xmlrpc.doc List extra packages for a system + * @xmlrpc.param #param("string", "sessionKey") + * @xmlrpc.param #param("int", "serverId") + * @xmlrpc.returntype + * #array() + * #struct("package") + * #prop("string", "name") + * #prop("string", "version") + * #prop("string", "release") + * #prop_desc("string", "epoch", "returned only if non-zero") + * #prop("string", "arch") + * #prop_desc("date", "installtime", "returned only if known") + * #struct_end() + * #array_end() + */ + public List listExtraPackages(String sessionKey, Integer serverId) { + User loggedInUser = getLoggedInUser(sessionKey); + DataResult dr = SystemManager.listExtraPackages(new Long(serverId)); + + List returnList = new ArrayList(); + + for (Iterator itr = dr.iterator(); itr.hasNext();) { + PackageListItem row = (PackageListItem) itr.next(); + Map pkg = new HashMap(); + + pkg.put("name", row.getName()); + pkg.put("version", row.getVersion()); + pkg.put("release", row.getRelease()); + if (row.getEpoch() != null) { + pkg.put("epoch", row.getEpoch()); + } + pkg.put("arch", row.getArch()); + pkg.put("installtime", row.getInstallTime()); + + returnList.add(pkg); + } + + return returnList; + } } diff --git a/java/code/src/com/redhat/rhn/manager/system/SystemManager.java b/java/code/src/com/redhat/rhn/manager/system/SystemManager.java index 2689fb6..4ed71cd 100644 --- a/java/code/src/com/redhat/rhn/manager/system/SystemManager.java +++ b/java/code/src/com/redhat/rhn/manager/system/SystemManager.java @@ -231,6 +231,40 @@ public class SystemManager extends BaseManager { }
/** + * Returns a list of systems with extra packages installed. + * + * @param user User to check the systems for + * @param pc Page control + * + * @return list of SystemOverviews. + */ + public static DataResult getExtraPackagesSystems(User user, PageControl pc) { + SelectMode m = ModeFactory.getMode("System_queries", + "extra_packages_systems_count"); + Map params = new HashMap(); + params.put("userid", user.getId()); + params.put("orgid", user.getOrg().getId()); + + return makeDataResult(params, new HashMap<String, Object>(), pc, m); + } + + /** + * Returns the list of extra packages for a system. + * @param serverId Server ID in question + * @return List of extra packages + */ + public static DataResult listExtraPackages(Long serverId) { + SelectMode m = ModeFactory.getMode("Package_queries", + "extra_packages_for_system"); + Map params = new HashMap(); + params.put("serverid", serverId); + Map elabParams = new HashMap(); + + DataResult dataResult = makeDataResult(params, elabParams, null, m); + return dataResult; + } + + /** * Gets the latest upgradable packages for a system * @param sid The id for the system we want packages for * @return Returns a list of the latest upgradable packages for a system diff --git a/java/code/webapp/WEB-INF/nav/sitenav-authenticated.xml b/java/code/webapp/WEB-INF/nav/sitenav-authenticated.xml index 92248d2..97b59ac 100644 --- a/java/code/webapp/WEB-INF/nav/sitenav-authenticated.xml +++ b/java/code/webapp/WEB-INF/nav/sitenav-authenticated.xml @@ -42,6 +42,7 @@ <rhn-tab name="Virtual Systems" url="/rhn/systems/VirtualSystemsList.do"/> <rhn-tab name="Out of Date" url="/rhn/systems/OutOfDate.do"/> <rhn-tab name="Requiring Reboot" url="/rhn/systems/RequiringReboot.do"/> + <rhn-tab name="Extra Packages" url="/rhn/systems/ExtraPackagesSystems.do"/> <rhn-tab name="Unentitled" url="/rhn/systems/Unentitled.do"/> <rhn-tab name="Ungrouped" url="/rhn/systems/Ungrouped.do" acl="org_entitlement(sw_mgr_enterprise); user_role(org_admin)"/> <rhn-tab name="Inactive" url="/rhn/systems/Inactive.do"/> diff --git a/java/code/webapp/WEB-INF/nav/system_detail.xml b/java/code/webapp/WEB-INF/nav/system_detail.xml index 45bdebc..ec5b11a 100644 --- a/java/code/webapp/WEB-INF/nav/system_detail.xml +++ b/java/code/webapp/WEB-INF/nav/system_detail.xml @@ -75,6 +75,10 @@ <rhn-tab-url>/rhn/systems/details/packages/profiles/CompareSystems.do</rhn-tab-url> <rhn-tab-url>/rhn/systems/details/packages/profiles/CompareProfiles.do</rhn-tab-url> </rhn-tab> + <rhn-tab name="Extra Packages" node-id="extra_packages_list" acl="system_feature(ftr_package_remove)"> + <rhn-tab-url>/rhn/systems/details/packages/ExtraPackagesList.do</rhn-tab-url> + <rhn-tab-url>/rhn/systems/details/packages/RemoveConfirm.do</rhn-tab-url> + </rhn-tab> </rhn-tab>
<rhn-tab name="Software Channels" acl="system_feature(ftr_package_updates)"> diff --git a/java/code/webapp/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf b/java/code/webapp/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf index e18c28b..642fa7b 100644 --- a/java/code/webapp/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf +++ b/java/code/webapp/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf @@ -44,7 +44,7 @@ </rl:column> - <c:if test = "${empty noUpdates}"> + <c:if test = "${empty noUpdates and empty extraPackagesMode}"> <!--Updates Column --> <rl:column sortable="false" bound="false" @@ -55,12 +55,12 @@ </rl:column> </c:if> - <c:if test = "${empty noMonitoring}"> + <c:if test = "${empty noMonitoring and empty extraPackagesMode}"> <!-- Health Column --> <%@ include file="monitoring_status_systems.jspf" %> </c:if>
- <c:if test = "${empty noErrata}"> + <c:if test = "${empty noErrata and empty extraPackagesMode}"> <!-- errata Column --> <rl:column sortable="false" bound="false" @@ -77,7 +77,7 @@ </c:choose> </rl:column> </c:if> - <c:if test = "${empty noPackages}"> + <c:if test = "${empty noPackages and empty extraPackagesMode}"> <!-- Packages Column --> <rl:column sortable="false" bound="false" @@ -95,7 +95,14 @@ </c:choose> </rl:column> </c:if> - <c:if test = "${empty noConfigFiles}"> + <!-- Extra packages column --> + <c:if test = "${extraPackagesMode}"> + <rl:column sortable="false" bound="false" headerkey="systemlist.jsp.packages" styleclass="center" headerclass="thin-column"> +<c:out value="<a href='/rhn/systems/details/packages/ExtraPackagesList.do?sid=${current.id}'>${current.extraPkgCount}</a>" escapeXml="false" /> + </rl:column> + </c:if> + + <c:if test = "${empty noConfigFiles} and empty extraPackagesMode"> <rl:column sortable="false" bound="false" headerkey="systemlist.jsp.configfiles" @@ -126,12 +133,14 @@ </rl:column> <!-- Entitlement Column --> + <c:if test="${empty extraPackagesMode}"> <rl:column sortable="false" bound="false" headerkey="systemlist.jsp.entitlement" styleclass="last-column"> <c:out value="${current.entitlementLevel}" escapeXml="false"/> - </rl:column> + </rl:column> + </c:if> diff --git a/java/code/webapp/WEB-INF/pages/systems/details/packages/extra-packages-list.jsp b/java/code/webapp/WEB-INF/pages/systems/details/packages/extra-packages-list.jsp new file mode 100644 index 0000000..69cc56d --- /dev/null +++ b/java/code/webapp/WEB-INF/pages/systems/details/packages/extra-packages-list.jsp @@ -0,0 +1,84 @@ +<%@ taglib uri="http://rhn.redhat.com/rhn" prefix="rhn" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> +<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> +<%@ taglib uri="http://rhn.redhat.com/tags/list" prefix="rl" %> +<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> + + +html:xhtml/ +<html> + +<body> + +<%@ include file="/WEB-INF/pages/common/fragments/systems/system-header.jspf" %> + +<h2> + <img src="/img/rhn-icon-package_extra.gif" /> + <bean:message key="packagelist.jsp.extrapackages" /> +</h2> + +<div class="page-summary"> + <p><bean:message key="packagelist.jsp.extrapackagessummary" /></p> +</div> + +<c:set var="pageList" value="${requestScope.all}" /> + +<rl:listset name="packageListSet"> + <rhn:csrf /> + <rhn:submitted /> + + <rl:list dataset="pageList" + width="100%" + styleclass="list" + name="packageList" + emptykey="packagelist.jsp.nopackages" + alphabarcolumn="nvre"> + + <rl:decorator name="PageSizeDecorator"/> + <rl:decorator name="SelectableDecorator"/> + <rl:selectablecolumn value="${current.selectionKey}" + selected="${current.selected}" + disabled="${not current.selectable}" + styleclass="first-column"/> + + <rl:column headerkey="packagelist.jsp.packagename" + bound="false" + sortattr="nvre" + sortable="true" + filterattr="nvre">${current.nvre}</rl:column> + <rl:column headerkey="packagelist.jsp.packagearch" + bound="false"> + <c:choose> + <c:when test ="${not empty current.arch}">${current.arch}</c:when> + <c:otherwise><bean:message key="packagelist.jsp.notspecified"/></c:otherwise> + </c:choose> + </rl:column> + <rl:column headerkey="packagelist.jsp.installtime" + bound="false" + styleclass="last-column" + sortattr="installTimeObj" + sortable="true"> + <c:choose> + <c:when test ="${not empty current.installTime}">${current.installTime}</c:when> + <c:otherwise><bean:message key="packagelist.jsp.notspecified"/></c:otherwise> + </c:choose> + </rl:column> + </rl:list> + +<c:if test="${not empty requestScope.all}"> + <div align="right"> + rhn:submitted/ + <hr/> + <rhn:require acl="system_feature(ftr_package_remove)"> + <input type="submit" + name ="dispatch" + value='<bean:message key="packagelist.jsp.removepackages"/>'/> + </rhn:require> + </div> +</c:if> + +</rl:listset> +</body> +</html> diff --git a/java/code/webapp/WEB-INF/pages/systems/extra-packages-systems-list.jsp b/java/code/webapp/WEB-INF/pages/systems/extra-packages-systems-list.jsp new file mode 100644 index 0000000..e0ea646 --- /dev/null +++ b/java/code/webapp/WEB-INF/pages/systems/extra-packages-systems-list.jsp @@ -0,0 +1,26 @@ +<%@ taglib uri="http://rhn.redhat.com/rhn" prefix="rhn" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> +<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> +<%@ taglib uri="http://rhn.redhat.com/tags/list" prefix="rl" %> + +html:xhtml/ +<html> +<head> + <meta name="page-decorator" content="none" /> +</head> +<body> +<rhn:toolbar base="h1" img="/img/rhn-icon-system.gif" imgAlt="system.common.systemAlt" + helpUrl="/rhn/help/reference/en-US/s1-sm-systems.jsp#s3-sm-system-list-inact"> + <bean:message key="extrapackagessystemslist.jsp.header"/> +</rhn:toolbar> + +<rl:listset name="systemListSet" legend="system"> + <rhn:csrf /> + <rhn:submitted /> + <%@ include file="/WEB-INF/pages/common/fragments/systems/system_listdisplay.jspf" %> +</rl:listset> + + +</body> +</html> diff --git a/java/code/webapp/WEB-INF/struts-config.xml b/java/code/webapp/WEB-INF/struts-config.xml index e59ab1e..dd3cc10 100644 --- a/java/code/webapp/WEB-INF/struts-config.xml +++ b/java/code/webapp/WEB-INF/struts-config.xml @@ -3038,6 +3038,18 @@ redirect="true" /> </action>
+ <action path="/systems/details/packages/ExtraPackagesList" + scope="request" + type="com.redhat.rhn.frontend.action.rhnpackage.ExtraPackagesListAction" + className="com.redhat.rhn.frontend.struts.RhnActionMapping"> + <set-property property="postRequiredIfSubmitted" value="true" /> + <forward name="default" + path="/WEB-INF/pages/systems/details/packages/extra-packages-list.jsp"/> + <forward name="confirm" + path="/systems/details/packages/RemoveExtraConfirm.do" + redirect="true" /> + </action> + <action path="/systems/details/packages/RemoveConfirm" scope="request" name="datePickerForm" @@ -3055,6 +3067,24 @@ redirect="true" /> </action>
+ <action path="/systems/details/packages/RemoveExtraConfirm" + scope="request" + name="datePickerForm" + input="/WEB-INF/pages/systems/details/packages/packageconfirm.jsp" + type="com.redhat.rhn.frontend.action.rhnpackage.RemoveExtraConfirmSetupAction" + className="com.redhat.rhn.frontend.struts.RhnActionMapping"> + <set-property property="postRequiredIfSubmitted" value="true" /> + <forward name="default" + path="/WEB-INF/pages/systems/details/packages/packageconfirm.jsp"/> + <forward name="confirm" + path="/systems/details/packages/Packages.do" + redirect="true" /> + <forward name="remotecmd" + path="/systems/details/packages/ScheduleRemoteCommand.do" + redirect="true" /> + </action> + + <action path="/systems/details/packages/UpgradableList" scope="request" input="/WEB-INF/pages/systems/details/packages/upgradable.jsp" @@ -7850,6 +7880,15 @@ path="/account/Credentials.do" /> </action>
+ <action path="/systems/ExtraPackagesSystems" + scope="request" + input="/WEB-INF/pages/systems/extra-packages-systems-list.jsp" + type="com.redhat.rhn.frontend.action.systems.ExtraPackagesSystemsAction" + className="com.redhat.rhn.frontend.struts.RhnActionMapping"> + <forward name="default" + path="/WEB-INF/pages/systems/extra-packages-systems-list.jsp"/> + </action> + </action-mappings>
<!-- ===================================== -->
spacewalk-commits@lists.fedorahosted.org