⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 edit_bug.aspx

📁 Bug管理系统
💻 ASPX
📖 第 1 页 / 共 4 页
字号:
	}


}

void display_bug_not_found(int id)
{
	Response.Write ("<link rel=StyleSheet href=btnet.css type=text/css>");
	security.write_menu(Response, Util.get_setting("PluralBugLabel","bugs"));
	Response.Write("<p>&nbsp;</p><div class=align>");
	Response.Write("<div class=err>");
	Response.Write(Util.capitalize_first_letter(Util.get_setting("SingularBugLabel","bug")));
	Response.Write(" not found:&nbsp;" + Convert.ToString(id) + "</div>");
	Response.Write("<p><a href=bugs.aspx>View ");
	Response.Write(Util.get_setting("PluralBugLabel","bug"));
	Response.Write("</a>");
	Response.End();
}

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


///////////////////////////////////////////////////////////////////////
void format_subcribe_cancel_link()
{

	bool notification_email_enabled = (btnet.Util.get_setting("NotificationEmailEnabled","1") == "1");
	if (notification_email_enabled)
	{
		int subscribed;
		if (!IsPostBack)
		{
			subscribed = (int) dr["subscribed"];
		}
		else
		{
			// User might have changed bug to a project where we automatically subscribe
			// so be prepared to format the link even if this isn't the first time in.
			sql = "select count(1) from bug_subscriptions where bs_bug = $bg and bs_user = $us";
			sql = sql.Replace("$bg",Convert.ToString(id));
			sql = sql.Replace("$us",Convert.ToString(security.this_usid));
			subscribed = (int) dbutil.execute_scalar(sql);
		}

		if (security.this_is_guest)
		{
			subscriptions.InnerHtml = "";
		}
		else
		{
			string subscription_link;
			if (subscribed > 0)
			{
				subscription_link = "<a href=subscribe.aspx?action=0&id="
					+ Convert.ToString(id)
					+ ">cancel notifications subscription</a>";
			}
			else
			{
				subscription_link = "<a href=subscribe.aspx?action=1&id="
					+ Convert.ToString(id)
					+ ">subscribe to notifications</a>";
			}
			subscriptions.InnerHtml = subscription_link;
		}
	}

}



///////////////////////////////////////////////////////////////////////
void set_controls_to_readonly()
{

	// get rid of the drop downs

	// turn on the spans to hold the data
	if (id != 0)
	{
		static_short_desc.Style["display"] = "";
	}

	static_project.Style["display"] = "";
	static_category.Style["display"] = "";
	static_priority.Style["display"] = "";
	static_status.Style["display"] = "";
	static_udf.Style["display"] = "";

	// fill in the static vars
	static_short_desc.InnerText = short_desc.Value;
	static_category.InnerText = category.SelectedItem.Text;
	static_priority.InnerText = priority.SelectedItem.Text;
	static_status.InnerText = status.SelectedItem.Text;
	static_udf.InnerText = udf.SelectedItem.Text;

	if (id != 0)
	{
		short_desc.Style["display"] = "none";
	}
	change_project_label.Style["display"] = "none";
	project.Style["display"] = "none";
	category.Style["display"] = "none";
	priority.Style["display"] = "none";
	reassign_label.Style["display"] = "none";
	assigned_to.Style["display"] = "none";
	status.Style["display"] = "none";
	udf.Style["display"] = "none";

	// even turn off commenting updating for read only
	if (permission_level == PERMISSION_READONLY)
	{
		sub.Disabled = true;
		sub.Style["display"] = "none";
		plus_label.Style["display"] = "none";
		comment_label.Style["display"] = "none";
		comment.Style["display"] = "none";
	}

}



///////////////////////////////////////////////////////////////////////
void format_prev_next_bug()
{
	// for next/prev bug links
	DataView dv_bugs = (DataView) Session["bugs"];
	int prev_bug = 0;
	int next_bug = 0;
	int this_bug = 0;
	bool this_bug_found = false;
	if (dv_bugs != null)
	{
		foreach (DataRowView drv in dv_bugs)
		{
			if (this_bug_found)
			{
				next_bug = (int) drv[1];
				break;
			}
			else if (id == (int) drv[1])
			{
				this_bug_found = true;
			}
			else
			{
				prev_bug = (int) drv[1];
			}
		}

		string prev_next_link = "";

		if (this_bug_found)
		{
			if (prev_bug != 0)
			{
				prev_next_link =
					"&nbsp;&nbsp;&nbsp;&nbsp;<a href=edit_bug.aspx?id="
					+ Convert.ToString(prev_bug)
					+ ">prev</a>";
			}
			else
			{
				prev_next_link = "&nbsp;&nbsp;&nbsp;&nbsp;<span class=gray_link>prev</span>";
			}

			if (next_bug != 0)
			{
				prev_next_link +=
					"&nbsp;&nbsp;&nbsp;&nbsp;<a href=edit_bug.aspx?id="
					+ Convert.ToString(next_bug)
					+ ">next</a>";

			}
			else
			{
				prev_next_link += "&nbsp;&nbsp;&nbsp;&nbsp;<span class=gray_link>next</span>";
			}

			prev_next.InnerHtml = prev_next_link;
		}

	}

}

///////////////////////////////////////////////////////////////////////
private void on_project_changed(object sender, System.EventArgs e)
{
   project_changed = true;

}

///////////////////////////////////////////////////////////////////////
private void on_assigned_to_changed(object sender, System.EventArgs e)
{
   assigned_to_changed = true;
}

///////////////////////////////////////////////////////////////////////
void load_drop_downs()
{

	// only show projects where user has permissions
	sql = @"select pj_id, pj_name
		from projects
		left outer join project_user_xref on pj_id = pu_project
		and pu_user = $us
		where pj_active = 1
		and isnull(pu_permission_level,$dpl) <> 0
		order by pj_name";

	sql = sql.Replace("$us",Convert.ToString(security.this_usid));
	sql = sql.Replace("$dpl", Util.get_setting("DefaultPermissionLevel","2"));

	project.DataSource = dbutil.get_dataview(sql);
	project.DataTextField = "pj_name";
	project.DataValueField = "pj_id";
	project.DataBind();
	project.Items.Insert(0, new ListItem("[no project]", "0"));

	category.DataSource =
		dbutil.get_dataview("select ct_id, ct_name from categories order by ct_sort_seq, ct_name");
	category.DataTextField = "ct_name";
	category.DataValueField = "ct_id";
	category.DataBind();
	category.Items.Insert(0, new ListItem("[no category]", "0"));

	priority.DataSource =
		dbutil.get_dataview("select pr_id, pr_name from priorities order by pr_sort_seq, pr_name");
	priority.DataTextField = "pr_name";
	priority.DataValueField = "pr_id";
	priority.DataBind();
	priority.Items.Insert(0, new ListItem("[no priority]", "0"));

	status.DataSource =
		dbutil.get_dataview("select st_id, st_name from statuses order by st_sort_seq, st_name");
	status.DataTextField = "st_name";
	status.DataValueField = "st_id";
	status.DataBind();
	status.Items.Insert(0, new ListItem("[no status]", "0"));

	udf.DataSource =
		dbutil.get_dataview("select udf_id, udf_name from user_defined_attribute order by udf_sort_seq, udf_name");
	udf.DataTextField = "udf_name";
	udf.DataValueField = "udf_id";
	udf.DataBind();
	udf.Items.Insert(0, new ListItem("[none]", "0"));


}

///////////////////////////////////////////////////////////////////////
string get_dropdown_text_from_value(DropDownList dropdown, string value)
{
	foreach (ListItem li in dropdown.Items)
	{
		if (li.Value == value)
		{
			return li.Text;
		}
	}

	return null;
}


///////////////////////////////////////////////////////////////////////
bool did_something_change()
{
	bool something_changed = false;
	
	if (prev_short_desc.Value != short_desc.Value
	|| comment.Value.Length > 0
	|| project_changed
	|| prev_category.Value != category.SelectedItem.Value
	|| prev_priority.Value != priority.SelectedItem.Value
	|| assigned_to_changed
	|| prev_status.Value != status.SelectedItem.Value
	|| (Util.get_setting("ShowUserDefinedBugAttribute","1") == "1" &&
		prev_udf.Value != udf.SelectedItem.Value))
	{
		something_changed = true;
	}
	

	if (!something_changed)
	{
		foreach (DataRow drcc in ds_custom_cols.Tables[0].Rows)
		{
			string var = (string)drcc["name"];
			string before = hash_prev_custom_cols[var].ToString();
			string after = hash_custom_cols[var].ToString();

			if (before != after)
			{
				something_changed = true;
				break;
			}	

		}	
	}
	

	if (!something_changed)
	{
		if ((Request["pcd1"] != null && prev_pcd1.Value != Request["pcd1"])
		|| (Request["pcd2"] != null && prev_pcd2.Value != Request["pcd2"])
		|| (Request["pcd3"] != null && prev_pcd3.Value != Request["pcd3"]))
		{
			something_changed = true;
		}
	}
	
	return something_changed;
		
}

///////////////////////////////////////////////////////////////////////
void record_changes()
{

	string base_sql = @"
		insert into bug_comments
		(bc_bug, bc_user, bc_date, bc_comment, bc_type)
		values($id, $us, getdate(), N'$3', 'update')";

	base_sql = base_sql.Replace("$id", Convert.ToString(id));
	base_sql = base_sql.Replace("$us", Convert.ToString(security.this_usid));

	string from;
	string to;
	sql = "";
	
	bool do_update = false;

	if (prev_short_desc.Value != short_desc.Value)
	{

		do_update = true;
		sql += base_sql.Replace(
			"$3",
			"changed desc from \""
			+ prev_short_desc.Value.Replace("'","''") + "\" to \""
			+ short_desc.Value.Replace("'","''") + "\"");

		prev_short_desc.Value = short_desc.Value;
	}

	if (project_changed)
	{

		from = get_dropdown_text_from_value(project, prev_project.Value);

		do_update = true;
		sql += base_sql.Replace(
			"$3",
			"changed project from \"" 
			+ from.Replace("'","''") + "\" to \""
			+ project.SelectedItem.Text.Replace("'","''") + "\"");

		prev_project.Value = project.SelectedItem.Value;
		current_project.InnerText = project.SelectedItem.Text;

	}

	if (prev_category.Value != category.SelectedItem.Value)
	{

		from = get_dropdown_text_from_value(category, prev_category.Value);

		do_update = true;
		sql += base_sql.Replace(
			"$3",
			"changed category from \"" 
			+ from.Replace("'","''") + "\" to \""
			+ category.SelectedItem.Text.Replace("'","''") + "\"");

		prev_category.Value = category.SelectedItem.Value;
	}

	if (prev_priority.Value != priority.SelectedItem.Value)
	{

		from = get_dropdown_text_from_value(priority, prev_priority.Value);

		do_update = true;
		sql += base_sql.Replace(
			"$3",
			"changed priority from \""
			+ from.Replace("'","''") + "\" to \""
			+ priority.SelectedItem.Text.Replace("'","''") + "\"");

		prev_priority.Value = priority.SelectedItem.Value;
	}

	if (assigned_to_changed)
	{

		from = get_dropdown_text_from_value(assigned_to, prev_assigned_to.Value);

		// not sure why i have to do this, but I do, otherwise
		// program writes an extra bug_history entry.
		if (assigned_to.SelectedItem.Text != from)
		{
			do_update = true;
			sql += base_sql.Replace(
				"$3",
				"changed assigned_to from \"" 
				+ from.Replace("'","''") + "\" to \""
				+ assigned_to.SelectedItem.Text.Replace("'","''") + "\"");

		}
		prev_assigned_to.Value = assigned_to.SelectedItem.Value;
		assigned_to_username.InnerText = assigned_to.SelectedItem.Text;
	}

	if (prev_status.Value != status.SelectedItem.Value)
	{
		status_changed = true;

		from = get_dropdown_text_from_value(status, prev_status.Value);

		do_update = true;
		sql += base_sql.Replace(
			"$3",
			"changed status from \""
			+ from.Replace("'","''") + "\" to \""
			+ status.SelectedItem.Text.Replace("'","''") + "\"");
			
		prev_status.Value = status.SelectedItem.Value;
	}

	if (Util.get_setting("ShowUserDefinedBugAttribute","1") == "1")
	{
		if (prev_udf.Value != udf.SelectedItem.Value)
		{

			from = get_dropdown_text_from_value(udf, prev_udf.Value);

			do_update = true;
			sql += base_sql.Replace(
				"$3",
				"changed " 	+ Util.get_setting("UserDefinedBugAttributeName","YourAttribute")
				+ " from \"" 
				+ from.Replace("'","''") + "\" to \""
				+ udf.SelectedItem.Text.Replace("'","''") + "\"");

			prev_udf.Value = udf.SelectedItem.Value;
		}
	}


	// Handle custom columns

	foreach (DataRow drcc in ds_custom_cols.Tables[0].Rows)
	{
		string var = (string)drcc["name"];
		string before = hash_prev_custom_cols[var].ToString();
		string after = hash_custom_cols[var].ToString();

		if (before != after)
		{

			do_update = true;
			sql += base_sql.Replace(
				"$3",
				"changed " + var + " from \"" + before.Replace("'","''") + "\" to \"" + after.Replace("'","''")  + "\"");

			hash_prev_custom_cols[(string)drcc["name"]]	= hash_custom_cols[(string)drcc["name"]];
		}
	}


	// Handle project custom dropdowns
	if (Request["pcd1"] != null && prev_pcd1.Value != Request["pcd1"])
	{

		do_update = true;
		sql += base_sql.Replace(
			"$3",
			"changed "
			+ Request["label_pcd1"]
			+ " from \"" + prev_pcd1.Value  + "\" to \"" + Request["pcd1"] + "\"");

		prev_pcd1.Value = Request["pcd1"];
	}
	if (Request["pcd2"] != null && prev_pcd2.Value != Request["pcd2"])
	{

		do_update = true;
		sql += base_sql.Replace(
			"$3",
			"changed "
			+ Request["label_pcd2"]
			+ " from \"" + prev_pcd2.Value  + "\" to \"" + Request["pcd2"] + "\"");

		prev_pcd2.Value = Request["pcd2"];
	}
	if (Request["pcd3"] != null && prev_pcd3.Value != Request["pcd3"])
	{

		do_update = true;
		sql += base_sql.Replace(
			"$3",
			"changed "
			+ Request["label_pcd3"]
			+ " from \"" + prev_pcd3.Value  + "\" to \"" + Request["pcd3"] + "\"");

		prev_pcd3.Value = Request["pcd3"];
	}


	if (do_update
	&& Util.get_setting("TrackBugHistory","1") == "1")
	{
		dbutil.execute_nonquery(sql);
	}


	if (project_changed)
	{
		permission_level = fetch_permission_level();
	}


}

///////////////////////////////////////////////////////////////////////
int fetch_permission_level()
{

	// fetch the revised permission level
	sql = @"declare @permission_level int
		set @permission_level = -1
		select @permission_level = isnull(pu_permission_level,$dpl)
		from project_user_xref
		where pu_project = $pj
		and pu_user = $us
		if @permission_level = -1 set @permission_level = $dpl
		select @permission_level";

	sql = sql.Replace("$dpl", Util.get_setting("DefaultPermissionLevel","2"));
	sql = sql.Replace("$pj", project.SelectedItem.Value);
	sql = sql.Replace("$us", Convert.ToString(security.this_usid));
	int pl = (int) dbutil.execute_scalar(sql);
	
	// reduce permissions for guest
	if (security.this_is_guest && permission_level == PERMISSION_ALL)
	{
		pl = PERMISSION_REPORTER;
	}
	
	return pl;

}
///////////////////////////////////////////////////////////////////////
Boolean validate()
{

	Boolean good = true;
	if (short_desc.Value == "")
	{
		good = false;
		short_desc_err.InnerText = "Short Description is required.";
	}
	else

⌨️ 快捷键说明

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