📄 clidb.cpp
字号:
return true;
}
bool editClientForm(WWWconnection& con)
{
if (con.get("new")) {
return addClientForm(con);
}
ThreadContext& the = ThreadContext::of(con);
char* client = con.get("client");
if (client == NULL) {
return error(con, "No client was selected");
}
the.clientId = atoi(client);
if (the.clients.select(the.qClient) == 0) {
return error(con, "No such client");
}
the.name = con.get("manager");
if (the.managers.select(the.qManager) == 0) {
return error(con, "No such manager");
}
con << TAG <<
HTML_HEAD "<TITLE>Edit client form</TITLE></HEAD>"
BODY
"<H2>Update client</H2>"
"<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" << con.getAddress() <<
"\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\"editClient\">"
"<INPUT TYPE=hidden NAME=\"manager\" VALUE=\"" << the.name << "\">"
"<INPUT TYPE=hidden NAME=\"client\" VALUE=" << client << "\">"
"<TABLE>"
"<TR><TH ALIGN=LEFT>Organization</TH>"
"<TD><INPUT TYPE=text NAME=\"organization\" SIZE=40 VALUE=\""
<< the.clients->organization << "\"></TD></TR>"
"<TR><TH ALIGN=LEFT>Phone</TH>"
"<TD><INPUT TYPE=text NAME=\"phone\" SIZE=20 VALUE=\""
<< the.clients->phone << "\"></TD></TR>"
"<TR><TH ALIGN=LEFT>Phone2</TH>"
"<TD><INPUT TYPE=text NAME=\"phone2\" SIZE=20 VALUE=\""
<< the.clients->phone2 << "\"></TD></TR>"
"<TR><TH ALIGN=LEFT>Fax</TH>"
"<TD><INPUT TYPE=text NAME=\"fax\" SIZE=20 VALUE=\""
<< the.clients->fax << "\"></TD></TR>"
"<TR><TH ALIGN=LEFT>E-Mail</TH>"
"<TD><INPUT TYPE=text NAME=\"email\" SIZE=30 VALUE=\""
<< the.clients->email << "\"></TD></TR>"
"<TR><TH ALIGN=LEFT>WWW address</TH>"
"<TD><INPUT TYPE=text NAME=\"www\" SIZE=30 VALUE=\""
<< the.clients->www << "\"></TD></TR>"
"<TR><TH ALIGN=LEFT>Person</TH>"
"<TD><INPUT TYPE=text NAME=\"person\" SIZE=40 VALUE=\""
<< the.clients->person << "\"></TD></TR>"
"<TR><TH ALIGN=LEFT>Person2</TH>"
"<TD><INPUT TYPE=text NAME=\"person2\" SIZE=40 VALUE=\""
<< the.clients->person2 << "\"></TD></TR>"
"<TR><TH ALIGN=LEFT>CEO</TH>"
"<TD><INPUT TYPE=text NAME=\"lpr\" SIZE=40 VALUE=\""
<< the.clients->lpr << "\"></TD></TR>"
"<TR><TH ALIGN=LEFT>Address</TH>"
"<TD><INPUT TYPE=text NAME=\"addr\" SIZE=40 VALUE=\""
<< the.clients->addr << "\"></TD></TR>"
"<TR><TH ALIGN=LEFT>Information</TH>"
"<TD><INPUT TYPE=text NAME=\"info\" SIZE=40 VALUE=\""
<< the.clients->info << "\"></TD></TR>"
"<TR><TH ALIGN=LEFT>Status</TH>"
"<TD><INPUT TYPE=text NAME=\"status\" SIZE=40 VALUE=\""
<< the.clients->status << "\"></TD></TR></TABLE><P>";
if (the.managers->flags & (Manager::isAdministrator|Manager::isMinAdmin)) {
con << TAG
<< "<INPUT TYPE=submit NAME=\"action\" VALUE=\"Update\"> ";
}
if (the.managers->flags & Manager::isAdministrator) {
con << TAG << "<INPUT TYPE=submit NAME=\"action\" VALUE=\"Remove\">";
}
con << TAG << "</FORM><P>"
"<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" << con.getAddress() <<
"\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\"editHistoryForm\">"
"<INPUT TYPE=hidden NAME=\"manager\" VALUE=\"" << the.name << "\">"
"<INPUT TYPE=hidden NAME=\"client\" VALUE=" << client << "\">"
"<SELECT SIZE=10 NAME=\"messageId\">";
the.managerForm = false;
the.messagesArray = &the.clients->history;
if (the.messages.select(the.qMessages) != 0) {
print(con, the.messages);
con << TAG <<
"</SELECT><BR><INPUT TYPE=submit VALUE=\"Select\"> ";
} else {
con << TAG << EMPTY_LIST;
}
con << TAG <<
"<INPUT TYPE=submit NAME=\"new\" VALUE=\"New message\"></FORM>";
mainMenuReference(con);
return true;
}
bool editSegmentForm(WWWconnection& con)
{
if (con.get("new")) {
return addSegmentForm(con);
}
ThreadContext& the = ThreadContext::of(con);
the.name = con.get("name");
if (the.name == NULL) {
return error(con, "No segment was selected");
}
if (the.segments.select(the.qSegment) == 0) {
return error(con, "No such segment");
}
char* manager = con.get("manager");
con << TAG <<
HTML_HEAD "<TITLE>Edit segment</TITLE></HEAD>"
BODY
"<H2>Update segment</H2>"
"<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" << con.getAddress() <<
"\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\"editSegment\">"
"<INPUT TYPE=hidden NAME=\"manager\" VALUE=\"" << manager << "\">"
"<INPUT TYPE=hidden NAME=\"oldName\" VALUE=\"" << the.name << "\">"
"<TABLE><TR><TH ALIGN=LEFT>Segment name </TH>"
"<TD><INPUT TYPE=text NAME=\"name\" SIZE=30 VALUE=\""
<< the.segments->name << "\"></TD></TR>"
"</TD></TR></TABLE><P>"
"<INPUT TYPE=submit NAME=\"action\" VALUE=\"Update\"> "
"<INPUT TYPE=submit NAME=\"action\" VALUE=\"Remove\"></FORM><P>"
"<H2>Select manager</H2>"
"<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" << con.getAddress() <<
"\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\"editManagerForm\">"
"<INPUT TYPE=hidden NAME=\"segment\" VALUE=\"" << the.name << "\">"
"<INPUT TYPE=hidden NAME=\"manager\" VALUE=\"" << manager << "\">"
"<SELECT NAME=\"name\" SIZE=10>";
the.managersArray = &the.segments->managers;
if (the.managers.select(the.qManagers) != 0) {
print(con, the.managers);
con << TAG <<
"</SELECT><BR><INPUT TYPE=submit VALUE=\"Select\"> ";
} else {
con << TAG << EMPTY_LIST;
}
con << TAG << "<INPUT TYPE=submit NAME=\"new\" VALUE=\"New\"></FORM><P>"
"<H2>Select client</H2>"
"<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" << con.getAddress() <<
"\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\"editClientForm\">"
"<INPUT TYPE=hidden NAME=\"manager\" VALUE=\"" << manager << "\">"
"<INPUT TYPE=hidden NAME=\"segment\" VALUE=\"" << the.name << "\">"
"<SELECT NAME=\"client\" SIZE=10>";
the.clientsArray = &the.segments->clients;
if (the.clients.select(the.qClients) != 0) {
print(con, the.clients);
con << TAG <<
"</SELECT><BR><INPUT TYPE=submit VALUE=\"Select\"> ";
} else {
con << TAG << EMPTY_LIST;
}
con << TAG << "<INPUT TYPE=submit NAME=\"new\" VALUE=\"New\"></FORM>";
mainMenuReference(con);
return true;
}
bool editHistoryForm(WWWconnection& con)
{
if (con.get("new")) {
return addHistoryForm(con);
}
ThreadContext& the = ThreadContext::of(con);
char buf[64];
char* messageId = con.get("messageId");
if (messageId == NULL) {
return error(con, "No message was selected");
}
the.messageId = atoi(messageId);
if (the.messages.select(the.qMessage) == 0) {
return error(con, "No such message");
}
the.name = con.get("manager");
the.clients.at(the.messages->client);
if (the.messages->manager != null) {
the.managers.at(the.messages->manager);
}
con << TAG <<
HTML_HEAD "<TITLE>Edit message</TITLE></HEAD>"
BODY
"<H2>Edit message</H2>"
"<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\"" << con.getAddress() <<
"\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\"editHistory\">"
"<INPUT TYPE=hidden NAME=\"manager\" VALUE=\"" << the.name << "\">"
"<INPUT TYPE=hidden NAME=\"messageId\" VALUE=" << messageId << "\">"
"<TABLE><TR><TH ALIGN=LEFT>Client</TH>"
"<TD><A HREF=\"" << con.getStub() << "?socket=" << con.getAddress()
<< "&page=editClientForm&manager=" << URL << the.name
<< "&client=" << the.clients->clientId << "\">"
<< the.clients->organization << "</A></TD></TR>";
if (the.messages->manager != null) {
con << TAG <<
"<TR><TH ALIGN=LEFT>Manager</TH><TD><A HREF=\""
<< con.getStub() << "?socket=" << con.getAddress()
<< "&page=editManagerForm&manager=" << URL << the.name
<< "&name=" << URL << the.managers->name << "\">"
<< the.managers->name << "</A></TD></TR>";
}
con << TAG <<
"<TR><TH ALIGN=LEFT>Date</TH>"
"<TD><INPUT TYPE=text SIZE=30 VALUE=\""
<< the.messages->date.asString(buf, sizeof buf) << "\"></TD></TR>"
"</TABLE><P>"
"<TEXTAREA NAME=\"message\" ROWS=10 COLS=60>"
<< the.messages->message << "</TEXTAREA><P>";
if (the.managers.select(the.qManager) == 0) {
return error(con, "No such manager");
}
if ((the.managers->flags & (Manager::isAdministrator|Manager::isMinAdmin))
|| the.managers.currentId() == the.messages->manager)
{
con << TAG
<< "<INPUT TYPE=submit NAME=\"action\" VALUE=\"Update\"> "
"<INPUT TYPE=submit NAME=\"action\" VALUE=\"Remove\">";
}
con << TAG << "</FORM>";
mainMenuReference(con);
return true;
}
bool managerForm(WWWconnection& con)
{
ThreadContext& the = ThreadContext::of(con);
the.name = con.get("manager");
if (the.managers.select(the.qManager) == 0) {
return error(con, "No such manager");
}
if (the.managers->flags & Manager::isAdministrator) {
con << TAG <<
HTML_HEAD "<TITLE>Administrator menu</TITLE></HEAD>"
BODY
"<H2>Administrator menu</H2>"
"<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""<< con.getAddress() <<
"\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\"editManager\">"
"<INPUT TYPE=hidden NAME=\"manager\" VALUE=\"" << the.name << "\">"
"<INPUT TYPE=hidden NAME=\"oldName\" VALUE=\"" << the.name << "\">"
"<TABLE><TR><TH ALIGN=LEFT>Manager name</TH>"
"<TD><INPUT TYPE=text NAME=\"name\" SIZE=30 VALUE=\""
<< the.managers->name << "\"></TD></TR>"
"<TR><TH ALIGN=LEFT>Manager host IP address</TH>"
"<TD><INPUT TYPE=text NAME=\"ipaddr\" SIZE=16 VALUE=\""
<< the.managers->IPaddr << "\"</TD></TR></TABLE>"
"<INPUT TYPE=submit NAME=\"action\" VALUE=\"Change\"></FORM><P>"
"<H2>Select segment</H2>"
"<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""<< con.getAddress() <<
"\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\"editSegmentForm\">"
"<INPUT TYPE=hidden NAME=\"manager\" VALUE=\"" << the.name << "\">"
"<SELECT SIZE=15 NAME=\"name\">";
if (the.segments.select() != 0) {
print(con, the.segments);
con << TAG <<
"</SELECT><BR><INPUT TYPE=submit VALUE=\"Select\"> ";
} else {
con << TAG << EMPTY_LIST;
}
con << TAG <<
"<INPUT TYPE=submit NAME=\"new\" VALUE=\"New segment\"></FORM>"
"<P><HR>"
"<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""<< con.getAddress() <<
"\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\"shutdown\">"
"<CENTER><INPUT TYPE=submit VALUE=\"Shutdown server\"></CENTER>"
"</FORM>";
} else {
con << TAG <<
HTML_HEAD "<TITLE>Manager menu</TITLE></HEAD>"
BODY
"<H2>Manager menu</H2>"
"<FORM METHOD=POST ACTION=\"" << con.getStub() << "\">"
"<INPUT TYPE=HIDDEN NAME=\"socket\" VALUE=\""<< con.getAddress() <<
"\"><INPUT TYPE=hidden NAME=\"page\" VALUE=\"editManager\">"
"<INPUT TYPE=hidden NAME=\"manager\" VALUE=\"" << the.name << "\">"
"<INPUT TYPE=hidden NAME=\"oldName\" VALUE=\"" << the.name << "\">";
if (the.managers->flags & Manager::isMinAdmin) {
con << TAG <<"<INPUT TYPE=hidden NAME=\"miniadmin\" VALUE=\"on\">";
}
the.segments.at(the.managers->segment);
con << TAG <<
"<TABLE><TR><TH ALIGN=LEFT>Manager name</TH>"
"<TD><INPUT TYPE=text NAME=\"name\" SIZE=30 VALUE=\""
<< the.managers->name << "\"></TD></TR>"
"<TR><TH ALIGN=LEFT>Manager host IP address</TH>"
"<TD><INPUT TYPE=text NAME=\"ipaddr\" SIZE=16 VALUE=\""
<< the.managers->IPaddr << "\"</TD></TR></TABLE>"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -