java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml |
19 ++
java/code/src/com/redhat/rhn/frontend/action/channel/manage/ManageChannelsAction.java |
55 +++++++
java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml |
19 ++
java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java |
16 ++
java/code/webapp/WEB-INF/nav/sitenav-authenticated.xml |
2
java/code/webapp/WEB-INF/pages/channel/manage/manage.jsp |
71 ++++++++++
java/code/webapp/WEB-INF/struts-config.xml |
9 +
web/html/nav/sitenav-authenticated.xml |
2
web/html/network/software/channels/manage/delete_confirm.pxt |
2
web/html/network/software/channels/manage/errata/clone_confirm.pxt |
3
web/html/network/software/channels/manage/index.pxt |
45 ------
web/modules/sniglets/Sniglets/ListView/ErrataList.pm |
2
12 files changed, 194 insertions(+), 51 deletions(-)
New commits:
commit 11a4fa108adaa30a743c8ff6c1e3a304e2f7fdc0
Author: Jason Dobies <jason.dobies(a)redhat.com>
Date: Wed Apr 29 10:40:48 2009 -0400
481578 - Ported manage software channels page from perl to java
The bug was to add a filter box to this page. Porting to ListTag 3.0 to use the built
in filter functionality.
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
index 4cd84c8..4d860a8 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
@@ -720,6 +720,25 @@ ORDER BY rhn_channel.channel_priority(UACh.parent_or_self_id),
UACh.parent_or_s
<elaborator name="visible_server_count"/>
</mode>
+<mode name="owned_channels_tree">
+ <query params="user_id">
+SELECT CTV.name, CTV.id, CTV.depth, CTV.channel_arch_id, C.org_id,
+ (SELECT COUNT (cp.package_id)
+ FROM rhnchannelpackage cp
+ WHERE cp.channel_id = CTV.id) AS package_count,
+ CTV.parent_or_self_label, CTV.label AS channel_label
+ FROM rhnchannel C, rhnChannelTreeView CTV
+ WHERE CTV.id = C.ID
+ AND (rhn_channel.user_role_check(C.id, :user_id, 'manage') = 1
+ OR EXISTS (
+ SELECT 1
+ FROM rhnChannel C2
+ WHERE C2.parent_channel = C.ID
+ AND rhn_channel.user_role_check(C2.id, :user_id, 'manage') =
1))
+ORDER BY rhn_channel.channel_priority(CTV.parent_or_self_id), CTV.parent_or_self_id,
CTV.depth, UPPER(CTV.name)
+ </query>
+</mode>
+
<query name="visible_server_count" params="user_id, org_id">
SELECT SC.channel_id AS ID, count(SC.server_id) as system_count
diff --git
a/java/code/src/com/redhat/rhn/frontend/action/channel/manage/ManageChannelsAction.java
b/java/code/src/com/redhat/rhn/frontend/action/channel/manage/ManageChannelsAction.java
new file mode 100644
index 0000000..1c1fa4c
--- /dev/null
+++
b/java/code/src/com/redhat/rhn/frontend/action/channel/manage/ManageChannelsAction.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) 2009 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.channel.manage;
+
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.action.ActionForm;
+import com.redhat.rhn.frontend.taglibs.list.helper.Listable;
+import com.redhat.rhn.frontend.taglibs.list.helper.ListHelper;
+import com.redhat.rhn.frontend.struts.RhnAction;
+import com.redhat.rhn.frontend.struts.RequestContext;
+import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.manager.channel.ChannelManager;
+import com.redhat.rhn.common.db.datasource.DataResult;
+
+/**
+ * Action responsible for displaying the list of user created software channels.
+ */
+public class ManageChannelsAction extends RhnAction implements Listable {
+
+ /** {@inheritDoc} */
+ public ActionForward execute(ActionMapping actionMapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
+ throws Exception {
+
+ ListHelper helper = new ListHelper(this, request);
+ helper.execute();
+
+ return actionMapping.findForward("default");
+ }
+
+ /** {@inheritDoc} */
+ public List getResult(RequestContext context) {
+ User user = context.getLoggedInUser();
+ DataResult result = ChannelManager.ownedChannelsTree(user);
+ return result;
+ }
+}
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 7ca186d..bb2f580 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
@@ -11537,6 +11537,25 @@ the <strong>Red Hat Enterprise Linux System
Administration Guide.</stro
<source>The software channels listed below are
<strong>retired channels</strong> that your organization
<a href="/rhn/channels/software/Entitlements.do"> is
entitled to </a>but are no longer supported by Red Hat because they have
reached their 'end-of-life' date.</source>
</trans-unit>
+ <trans-unit id="channels.manage.jsp.toolbar">
+ <source>Software Channel Management</source>
+ </trans-unit>
+
+ <trans-unit id="channels.manage.jsp.header1">
+ <source>The following software channels are owned by your
organization.</source>
+ </trans-unit>
+
+ <trans-unit id="channels.manage.jsp.header2">
+ <source>Modify an existing software channel by selecting it from the list
below, or create a new software channel. </source>
+ </trans-unit>
+
+ <trans-unit id="toolbar.create.channel">
+ <source>create new channel</source>
+ </trans-unit>
+
+ <trans-unit id="toolbar.clone.channel">
+ <source>clone channel</source>
+ </trans-unit>
<trans-unit id="kickstart.troubleshooting.jsp.header1">
<source>Troubleshooting</source>
diff --git a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
index 4de9af4..efd45fd 100644
--- a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
+++ b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
@@ -496,6 +496,22 @@ public class ChannelManager extends BaseManager {
DataResult dr = makeDataResult(params, params, lc, m);
return dr;
}
+
+ /**
+ * Returns a list of channels owned by the user.
+ *
+ * @param user cannot be <code>null</code>
+ * @return list of maps containing the channel data
+ */
+ public static DataResult ownedChannelsTree(User user) {
+ SelectMode m = ModeFactory.getMode("Channel_queries",
"owned_channels_tree");
+
+ Map params = new HashMap();
+ params.put("user_id", user.getId());
+
+ DataResult dr = makeDataResult(params, params, null, m);
+ return dr;
+ }
/**
* Returns a list of ChannelTreeNodes containing shared channels
diff --git a/java/code/webapp/WEB-INF/nav/sitenav-authenticated.xml
b/java/code/webapp/WEB-INF/nav/sitenav-authenticated.xml
index 906845a..99ec11d 100644
--- a/java/code/webapp/WEB-INF/nav/sitenav-authenticated.xml
+++ b/java/code/webapp/WEB-INF/nav/sitenav-authenticated.xml
@@ -122,7 +122,7 @@
<rhn-tab name="Manage Software Channels"
acl="user_can_manage_channels()">
<rhn-tab-directory>/network/software/channels/manage</rhn-tab-directory>
<rhn-tab-directory>/rhn/channels/manage</rhn-tab-directory>
- <rhn-tab-url>/network/software/channels/manage/index.pxt</rhn-tab-url>
+ <rhn-tab-url>/rhn/channels/manage/Manage.do</rhn-tab-url>
<rhn-tab-url>/rhn/channels/manage/errata/Add.do</rhn-tab-url>
<rhn-tab-url>/rhn/channels/manage/errata/AddRedHatErrata.do</rhn-tab-url>
<rhn-tab-url>/rhn/channels/manage/errata/AddCustomErrata.do</rhn-tab-url>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/manage.jsp
b/java/code/webapp/WEB-INF/pages/channel/manage/manage.jsp
new file mode 100644
index 0000000..7c84f8f
--- /dev/null
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/manage.jsp
@@ -0,0 +1,71 @@
+<%@ 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>
+<body>
+
+<html:errors/>
+<html:messages id="message" message="true">
+ <rhn:messages><c:out escapeXml="false"
value="${message}"/></rhn:messages>
+</html:messages>
+
+<rhn:toolbar base="h1" img="/img/rhn-icon-channels.gif"
+ imgAlt="channels.overview.toolbar.imgAlt"
+ creationUrl="/rhn/channels/manage/Edit.do"
+ creationType="channel"
+ creationAcl="user_role(channel_admin)"
+
cloneUrl="/network/software/channels/manage/clone.pxt?pxt:trap=rhn:empty_set&set_label=errata_clone_actions"
+ cloneType="channel"
+ cloneAcl="user_role(channel_admin)"
+ helpUrl="channel-mgmt-Custom_Channel_and_Package_Management.jsp"
+ >
+ <bean:message key="channels.manage.jsp.toolbar"/>
+</rhn:toolbar>
+
+<p><bean:message key="channels.manage.jsp.header1"/></p>
+<p><bean:message key="channels.manage.jsp.header2"/></p>
+
+<rl:listset name="groupSet">
+
+ <rl:list emptykey="foo">
+
+ <rl:decorator name="PageSizeDecorator"/>
+
+ <rl:column styleclass="first-column"
+ headerkey="channel.edit.jsp.name"
+ filterattr="name">
+ <c:choose>
+ <c:when test="${current.depth > 1}">
+ <img style="margin-left: 4px;"
+ src="/img/channel_child_node.gif"
+ alt="<bean:message
+ key='channels.childchannel.alt' />"/>
+ <html:link
href="/rhn/channels/manage/Edit.do?cid=${current.id}">
+ ${current.name}
+ </html:link>
+ </c:when>
+ <c:otherwise>
+ <html:link
href="/rhn/channels/manage/Edit.do?cid=${current.id}">
+ ${current.name}
+ </html:link>
+ </c:otherwise>
+ </c:choose>
+ </rl:column>
+
+ <rl:column styleclass="last-column"
+ headerkey="channels.overview.packages">
+ <html:link
href="/rhn/channels/manage/ChannelPackages.do?cid=${current.id}">
+ ${current.package_count}
+ </html:link>
+ </rl:column>
+
+
+ </rl:list>
+</rl:listset>
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/java/code/webapp/WEB-INF/struts-config.xml
b/java/code/webapp/WEB-INF/struts-config.xml
index 277defb..aa68d39 100644
--- a/java/code/webapp/WEB-INF/struts-config.xml
+++ b/java/code/webapp/WEB-INF/struts-config.xml
@@ -6207,7 +6207,7 @@
<forward name="success" path="/channels/ChannelDetail.do"
redirect="true" />
</action>
- <action path="/channels/manage/ChannelPackages"
+ <action path="/channels/manage/ChannelPackages"
scope="request"
type="com.redhat.rhn.frontend.action.channel.manage.ChannelPackagesAction"
className="com.redhat.rhn.frontend.struts.RhnActionMapping">
@@ -6215,6 +6215,13 @@
<forward name="default"
path="/WEB-INF/pages/channel/manage/listremovepackages.jsp" />
</action>
+ <action path="/channels/manage/Manage"
+ scope="request"
+
type="com.redhat.rhn.frontend.action.channel.manage.ManageChannelsAction"
+ className="com.redhat.rhn.frontend.struts.RhnActionMapping">
+ <forward name="default"
path="/WEB-INF/pages/channel/manage/manage.jsp"/>
+ </action>
+
<action path="/channels/manage/Edit"
scope="request"
name="channelEditForm"
diff --git a/web/html/nav/sitenav-authenticated.xml
b/web/html/nav/sitenav-authenticated.xml
index 79a12f6..b1fa89f 100644
--- a/web/html/nav/sitenav-authenticated.xml
+++ b/web/html/nav/sitenav-authenticated.xml
@@ -105,7 +105,7 @@
</rhn-tab>
<rhn-tab name="Manage Software Channels"
acl="user_can_manage_channels()">
<rhn-tab-directory>/network/software/channels/manage</rhn-tab-directory>
- <rhn-tab-url>/network/software/channels/manage/index.pxt</rhn-tab-url>
+ <rhn-tab-url>/rhn/channels/manage/Manage.do</rhn-tab-url>
<rhn-tab name="Manage Software Packages"
acl="user_role(channel_admin)" node-id="manage_packages">
<rhn-tab-directory>/rhn/software/manage/packages</rhn-tab-directory>
<rhn-tab-url>/rhn/software/manage/packages/PackageList.do</rhn-tab-url>
diff --git a/web/html/network/software/channels/manage/delete_confirm.pxt
b/web/html/network/software/channels/manage/delete_confirm.pxt
index 68d6045..1bd485f 100644
--- a/web/html/network/software/channels/manage/delete_confirm.pxt
+++ b/web/html/network/software/channels/manage/delete_confirm.pxt
@@ -94,7 +94,7 @@
<input type="hidden" name="cid" value="{channel_id}"
/>
<input type="hidden" name="pxt:trap"
value="rhn:channel_delete_cb" />
<input type="hidden" name="servers_link"
value="/rhn/channels/ChannelSubscribers.do" />
- <input type="hidden" name="redirect_to"
value="/network/software/channels/manage/index.pxt" />
+ <input type="hidden" name="redirect_to"
value="/rhn/channels/manage/Manage.do" />
<input type="hidden" name="orphaned_packages_redirect"
value="/rhn/software/manage/packages/PackageList.do" />
</div>
</pxt-form>
diff --git a/web/html/network/software/channels/manage/errata/clone_confirm.pxt
b/web/html/network/software/channels/manage/errata/clone_confirm.pxt
index d2bf9c4..5279d97 100644
--- a/web/html/network/software/channels/manage/errata/clone_confirm.pxt
+++ b/web/html/network/software/channels/manage/errata/clone_confirm.pxt
@@ -36,7 +36,8 @@
<empty_list_message>No Errata.</empty_list_message>
- <action name="Update Errata" label="confirm_errata_application"
url="/network/software/channels/manage/index.pxt" />
+ <action name="Update Errata" label="confirm_errata_application"
url="/rhn/channels/manage/Manage.do" />
+
</rhn-listview>
</grail-canvas-template>
diff --git a/web/html/network/software/channels/manage/index.pxt
b/web/html/network/software/channels/manage/index.pxt
deleted file mode 100644
index 9c74218..0000000
--- a/web/html/network/software/channels/manage/index.pxt
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf8"?>
-<pxt-passthrough>
- <pxt-use class="Grail::Frame" />
- <pxt-use class="Sniglets::HTML" />
- <pxt-use class="Sniglets::ChannelEditor" />
- <pxt-use class="Sniglets::Channel" />
- <pxt-use class="Sniglets::Lists" />
- <pxt-use class="Sniglets::Users" />
-
- <rhn-verify-channel-family />
-
- <grail-canvas-template base="/templates/c.pxt"
mode="main_canvas">
-
- <rhn-toolbar base="h1" img="/img/rhn-icon-channels.gif"
creation-type="channel" creation-url="/rhn/channels/manage/Edit.do"
help-guide="channel-mgmt"
help-url="channel-mgmt-Custom_Channel_and_Package_Management.jsp"
creation-acl="user_role(channel_admin)"
misc-url="clone.pxt?pxt:trap=rhn:empty_set&set_label=errata_clone_actions"
misc-img="/img/action-clone.gif" misc-alt="clone channel"
misc-text="clone channel" misc-acl="user_role(channel_admin)">
- Software Channel Management
- </rhn-toolbar>
-
-
- <div class="page-summary">
- <p>
- The following software channels are owned by your organization.
- </p>
- <p>
- Modify an existing software channel by selecting it from the list
below<rhn-require acl="user_role(channel_admin)">, or create a new
software channel</rhn-require>.
- </p>
- </div>
-
-<rhn-listview class="Sniglets::ListView::ChannelList"
mode="owned_channels_tree"
template="/network/software/channel_tree.xml">
- <column name="Channel Name" label="name">
- <url>/rhn/channels/manage/Edit.do?cid={column:id}</url>
- </column>
-
- <column name="Actions" label="package_list_modified"
align="center" width="5%">
-
<url>/network/software/channels/manage/index.pxt?pxt:trap=rhn:update_channel_cache&cid={column:id}</url>
- </column>
-
- <column name="Packages" label="package_count"
align="center" width="10%">
- <url>/rhn/channels/manage/ChannelPackages.do?cid={column:id}</url>
- </column>
- <empty_list_message>You do not own any channels.</empty_list_message>
-</rhn-listview>
-
- </grail-canvas-template>
-</pxt-passthrough>
-
diff --git a/web/modules/sniglets/Sniglets/ListView/ErrataList.pm
b/web/modules/sniglets/Sniglets/ListView/ErrataList.pm
index a249d9b..9810b8a 100644
--- a/web/modules/sniglets/Sniglets/ListView/ErrataList.pm
+++ b/web/modules/sniglets/Sniglets/ListView/ErrataList.pm
@@ -328,7 +328,7 @@ sub clonable_errata_list_provider {
foreach my $row (@{$data}) {
$row->{RELATED_CHANNELS} =
join "<br />\n",
- map { PXT::HTML->link('/network/software/channels/manage/index.pxt?cid=' .
$_->{CHANNEL_ID},
+ map { PXT::HTML->link('/rhn/channels/manage/Manage.do?cid=' .
$_->{CHANNEL_ID},
$_->{CHANNEL_NAME}) } @{$row->{__data__} };
$row->{CLONED} = $row->{ALREADY_CLONED} ? 'Yes' : 'No';
}