📄 edit_query.aspx
字号:
<%@ 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">
int id;
String sql;
DbUtil dbutil;
Security security;
///////////////////////////////////////////////////////////////////////
void Page_Load(Object sender, EventArgs e)
{
Util.do_not_cache(Response);
dbutil = new DbUtil();
security = new Security();
if (Util.get_setting("AllowQueryEditingForNonAdmins","0") == "1")
{
security.check_security(dbutil, Request, Response, Security.ANY_USER_OK_EXCEPT_GUEST);
}
else
{
security.check_security(dbutil, Request, Response, Security.MUST_BE_ADMIN);
}
title.InnerText = Util.get_setting("AppTitle","BugTracker.NET") + " - "
+ "edit query";
msg.InnerText = "";
string var = Request.QueryString["id"];
if (var == null)
{
id = 0;
}
else
{
id = Convert.ToInt32(var);
}
if (!IsPostBack)
{
// add or edit?
if (id == 0)
{
sub.Value = "Create";
sql_text.Value = Request.Form["sql_text"]; // if coming from search.aspx
public_query.Checked = true;
}
else
{
sub.Value = "Update";
// Get this entry's data from the db and fill in the form
sql = @"select
qu_desc, qu_sql, isnull(qu_user,0) [visibility], qu_default
from queries where qu_id = $1";
sql = sql.Replace("$1", Convert.ToString(id));
DataRow dr = dbutil.get_datarow(sql);
// Fill in this form
desc.Value = (string) dr["qu_desc"];
sql_text.Value = Server.HtmlEncode((string) dr["qu_sql"]);
default_query.Checked = Convert.ToBoolean((int) dr["qu_default"]);
if ((int) dr["visibility"] == 0)
{
public_query.Checked = true;
}
else
{
private_query.Checked = true;
}
}
}
}
void Page_Unload(Object sender, EventArgs e)
{
if (dbutil != null) {dbutil.close();}
}
///////////////////////////////////////////////////////////////////////
Boolean validate()
{
Boolean good = true;
if (desc.Value == "")
{
good = false;
desc_err.InnerText = "Description is required.";
}
else
{
desc_err.InnerText = "";
}
default_err.InnerText = "";
if (default_query.Checked)
{
if (public_query.Checked)
{
if (id == 0)
{
sql = @"select count(1) from queries where qu_default = 1 and isnull(qu_user,0) = 0";
}
else
{
sql = @"select count(1) from queries where qu_default = 1 and isnull(qu_user,0) = 0 and qu_id <> $id";
sql = sql.Replace("$id",Convert.ToString(id));
}
int number_of_default_queries = (int) dbutil.execute_scalar(sql);
if (number_of_default_queries != 0)
{
default_err.InnerText = "There already is a public default query. There can be ony one.";
good = false;
}
}
else
{
default_err.InnerText = "A private query cannot be a default query.";
good = false;
}
}
return good;
}
///////////////////////////////////////////////////////////////////////
void on_update (Object sender, EventArgs e)
{
Boolean good = validate();
if (good)
{
if (id == 0) // insert new
{
sql = @"insert into queries
(qu_desc, qu_sql, qu_default, qu_user)
values (N'$de', N'$sq', $df, $us)";
}
else // edit existing
{
sql = @"update queries set
qu_desc = N'$de',
qu_sql = N'$sq',
qu_default = $df,
qu_user = $us
where qu_id = $id";
sql = sql.Replace("$id", Convert.ToString(id));
}
sql = sql.Replace("$de", desc.Value.Replace("'","''"));
sql = sql.Replace("$sq", Server.HtmlDecode(sql_text.Value.Replace("'","''")));
sql = sql.Replace("$df", Util.bool_to_string(default_query.Checked));
if (public_query.Checked)
{
sql = sql.Replace("$us", "0");
}
else
{
sql = sql.Replace("$us", Convert.ToString(security.this_usid));
}
dbutil.execute_nonquery(sql);
Server.Transfer ("queries.aspx");
}
else
{
if (id == 0) // insert new
{
msg.InnerText = "Query was not created.";
}
else // edit existing
{
msg.InnerText = "Query was not updated.";
}
}
}
</script>
<html>
<head>
<title id="title" runat="server">btnet edit query</title>
<link rel="StyleSheet" href="btnet.css" type="text/css">
</head>
<body>
<% security.write_menu(Response, "queries"); %>
<div class=align><table border=0><tr><td>
<a href=queries.aspx>back to queries</a>
<form class=frm runat="server">
<table border=0>
<tr>
<td class=lbl>Description:</td>
<td><input runat="server" type=text class=txt id="desc" maxlength=80 size=80></td>
<td runat="server" class=err id="desc_err"> </td>
</tr>
<tr>
<td class=lbl>Visibility:</td>
<td>
<asp:RadioButton text="Public" runat="server" class=txt GroupName="visibility" id="public_query"/>
<asp:RadioButton text="Private" runat="server" class=txt GroupName="visibility" id="private_query"/>
<span class=smallnote>Public = visibile to everybody. Private = visible just to you..</span>
</td>
<td runat="server" class=err id="public_err"> </td>
</tr>
<tr>
<td class=lbl>Default:</td>
<td><asp:checkbox runat="server" class=txt id="default_query"/>
<span runat="server" class=err id="default_err"></span>
</td>
<td> </td>
</tr>
<tr>
<td class=lbl>SQL:</td>
<td colspan=2><textarea rows=10 cols=70 runat="server" class=txt name="sql_text" id="sql_text"></textarea></td>
<tr><td colspan=3 align=center>
<span runat="server" class=err id="msg"> </span>
</td></tr>
<tr>
<td colspan=2 align=center>
<input runat="server" class=btn type=submit id="sub" value="Create or Edit" OnServerClick="on_update">
<td> </td>
</td>
</tr>
<tr>
<td> </td>
<td colspan=2 class=cmt>
In order to work with the bugs.aspx page, your SQL must be structured in a particular way.
<br><br>
The first column must be a color starting with "#" or it will be interpreted as a CSS style class.
<br>
Write your query so as to get your background color from the priority's background color<br>
or your CSS style class from either the priority or status. See the admin pages.
<br>
<br>
The second column must be "bg_id".
<br>
You can use the pseudo-variable $ME in your query which will be replaced by your user ID.
<br>
For example:
<br>
<ul>
select isnull(pr_background_color,'#ffffff'). bg_short_desc<br>
from bugs
<br>
left outer join priorities on bg_priority = pr_id
<br>
where bg_assigned_to_user = $ME
</ul>
</span>
</td>
</tr>
</table>
</form>
</td></tr></table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -