edit_user_permissions.aspx

来自「Bug管理系统」· ASPX 代码 · 共 245 行

ASPX
245
字号
<%@ Page language="C#"%>
<!--
Copyright 2002-2005 Corey Trager
Distributed under the terms of the GNU General Public License
-->
<!-- #include file = "inc.aspx" -->

<script language="C#" runat="server">

string usid;
String sql;
DbUtil dbutil;
Security security;


///////////////////////////////////////////////////////////////////////
void Page_Load(Object sender, EventArgs e)
{

	Util.do_not_cache(Response);
	dbutil = new DbUtil();
	security = new Security();
	security.check_security(dbutil, Request, Response, Security.MUST_BE_ADMIN);

	title.InnerText = Util.get_setting("AppTitle","BugTracker.NET") + " - " 
		+ "edit user per-project permissions";

	usid = Util.sanitize_integer(Request["id"]);

	if (!IsPostBack)
	{

		back_href.HRef = "edit_user.aspx?id=" + usid;

		// populate permissions grid
		sql = @"Select pj_name, pj_id, isnull(pu_permission_level,$dpl) [pu_permission_level]
			from projects
			left outer join project_user_xref on pj_id = pu_project
			and pu_user = $us
			order by pj_name";

		sql = sql.Replace("$us",usid);
		sql = sql.Replace("$dpl", Util.get_setting("DefaultPermissionLevel","2"));
		
        DataSet ds = dbutil.get_dataset(sql);

        MyDataGrid.DataSource=ds.Tables[0].DefaultView;
        MyDataGrid.DataBind();


		// populate project dropdown
		sql = @"select pj_id, pj_name
			from projects 
			order by pj_name";

		DataView projects_dv = dbutil.get_dataview(sql);

		forced_project.DataSource = projects_dv;
		forced_project.DataTextField = "pj_name";
		forced_project.DataValueField = "pj_id";
		forced_project.DataBind();

		forced_project.Items.Insert(0, new ListItem("[no forced project]", "0"));		

		// populate forced project
		sql = @"select isnull(us_forced_project,0) from users where us_id = $us";
		sql = sql.Replace("$us",usid);
		
		int current_forced_project = (int) dbutil.execute_scalar(sql);
		foreach (ListItem li in forced_project.Items)
		{
			if (Convert.ToInt32(li.Value) == current_forced_project)
			{
				li.Selected = true;
				break;
			}
		}



	}

}

void Page_Unload(Object sender, EventArgs e)
{
	if (dbutil != null) {dbutil.close();}
}


///////////////////////////////////////////////////////////////////////
void on_update (Object sender, EventArgs e)
{

	// first add the missing recs
	sql = @"insert into project_user_xref  (pu_project, pu_user)
		select pj_id, $us
		from projects
		where pj_id not in (select pu_project from project_user_xref where pu_user = $us)";

	sql = sql.Replace("$us",usid);		
	
	dbutil.execute_nonquery(sql);
	
	// now update all the recs
	string sql_batch = "";
	RadioButton rb;
	string permission_level;
		
	foreach (DataGridItem dgi in MyDataGrid.Items)
	{
		sql = "update project_user_xref set pu_permission_level = $pu where pu_user = $us and pu_project = $pj;\n";

		sql = sql.Replace("$us", usid);
		sql = sql.Replace("$pj", Convert.ToString(dgi.Cells[1].Text));
	
		rb = (RadioButton) dgi.FindControl("none");
		if (rb.Checked)
		{
			permission_level = "0";
		}
		else
		{
			rb = (RadioButton) dgi.FindControl("readonly");
			if (rb.Checked)
			{
				permission_level = "1";
			}
			else
			{
				rb = (RadioButton) dgi.FindControl("reporter");
				if (rb.Checked)
				{
					permission_level = "3";
				}
				else
				{
					permission_level = "2";
				}
			}
		}

			
		sql = sql.Replace("$pu", permission_level);
		

		// add to the batch
		sql_batch += sql;
		
	}


	sql = "update users set us_forced_project = $fp where us_id = $us";
	sql = sql.Replace("$us", usid);
	sql = sql.Replace("$fp", forced_project.SelectedItem.Value);

	sql_batch += sql;

	dbutil.execute_nonquery(sql_batch);
	msg.InnerText = "Permissions have been updated.";
}



</script>

<html>
<head>
<title id="title" runat="server">btnet edit user</title>
<link rel="StyleSheet" href="btnet.css" type="text/css">
</head>
<body>
<% security.write_menu(Response, "admin"); %>

<div class=align><table border=0><tr><td>
<a id="back_href" runat="server" href="">back to user "<% Response.Write(Request["label"]); %>"</a>

<p>

<form class=frm runat="server">
	<table border=0 cellpadding=3>


	<tr>
	<td colspan=2 class=lbl>Force user to add new <% Response.Write(Util.get_setting("PluralBugLabel","bug")); %> to this project:&nbsp;&nbsp;
	<asp:DropDownList id="forced_project" runat="server">
	</asp:DropDownList>
	</td>
	</tr>


	<tr>
	<td colspan=2>
	<ASP:DataGrid id="MyDataGrid" runat="server" BorderColor="black" CssClass="datat" CellPadding="3" AutoGenerateColumns="false">
		<HeaderStyle cssclass="datah"></HeaderStyle>
		<ItemStyle cssclass="datad"></ItemStyle>
		<Columns>
		

		<asp:BoundColumn HeaderText="Project" DataField="pj_name"/>

		<asp:BoundColumn HeaderText="Project" DataField="pj_id" Visible="False"/>

		<asp:TemplateColumn HeaderText="Permissions">
			<ItemTemplate>
				<asp:RadioButton GroupName="permissions" text="none" value=0 ID="none" runat="server"
				Checked=<%# ((int)(( DataRowView ) Container.DataItem ) [ "pu_permission_level" ] == 0 ) %>/>

				<asp:RadioButton GroupName="permissions" text="view only" value=1 ID="readonly" runat="server"
				Checked=<%# ((int)(( DataRowView ) Container.DataItem ) [ "pu_permission_level" ] == 1 ) %>/>

				<asp:RadioButton GroupName="permissions" text="report (add and comment only)" value=3 ID="reporter" runat="server"
				Checked=<%# ((int)(( DataRowView ) Container.DataItem ) [ "pu_permission_level" ] == 3 ) %>/>

				<asp:RadioButton GroupName="permissions" text="all (add and edit)" value=2 ID="edit" runat="server"
				Checked=<%# ((int)(( DataRowView ) Container.DataItem ) [ "pu_permission_level" ] == 2 ) %>/>

			</ItemTemplate>
		</asp:TemplateColumn>


		</Columns>
	</ASP:DataGrid>


	<tr>
	<td colspan=2 align=left>
	<span runat="server" class=err id="msg">&nbsp;</span>
	

	<tr>
	<td colspan=2 align=center>
	<input runat="server" class=btn type=submit id="sub" value="Update" OnServerClick="on_update">
	<td>&nbsp</td>
	</td>
	</tr>

	</table>
</form>
</td></tr></table></div>
</body>
</html>


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?