Webadmin: Add GUI for character encoding

This commit is contained in:
Alexey Sokolov
2014-12-19 00:05:16 +00:00
parent 86e5ca3fd3
commit bd9450b99e
10 changed files with 189 additions and 3 deletions

View File

@@ -280,6 +280,24 @@ public:
pNewUser->SetAutoClearQueryBuffer(WebSock.GetParam("autoclearquerybuffer").ToBool());
pNewUser->SetMaxQueryBuffers(WebSock.GetParam("maxquerybuffers").ToUInt());
#ifdef HAVE_ICU
CString sEncodingUtf = WebSock.GetParam("encoding_utf");
if (sEncodingUtf == "legacy") {
pNewUser->SetClientEncoding("");
}
CString sEncoding = WebSock.GetParam("encoding");
if (sEncoding.empty()) {
sEncoding = "UTF-8";
}
if (sEncodingUtf == "send") {
pNewUser->SetClientEncoding("^" + sEncoding);
} else if (sEncodingUtf == "receive") {
pNewUser->SetClientEncoding("*" + sEncoding);
} else if (sEncodingUtf == "simple") {
pNewUser->SetClientEncoding(sEncoding);
}
#endif
if (spSession->IsAdmin()) {
pNewUser->SetDenyLoadMod(WebSock.GetParam("denyloadmod").ToBool());
pNewUser->SetDenySetBindHost(WebSock.GetParam("denysetbindhost").ToBool());
@@ -825,6 +843,29 @@ public:
Tmpl["IRCConnectEnabled"] = CString(pNetwork->GetIRCConnectEnabled());
#ifdef HAVE_ICU
for (const CString& sEncoding : CUtils::GetEncodings()) {
CTemplate& l = Tmpl.AddRow("EncodingLoop");
l["Encoding"] = sEncoding;
}
const CString& sEncoding = pNetwork->GetEncoding();
if (sEncoding.empty()) {
Tmpl["EncodingUtf"] = "legacy";
} else if (sEncoding[0] == '*') {
Tmpl["EncodingUtf"] = "receive";
Tmpl["Encoding"] = sEncoding.substr(1);
} else if (sEncoding[0] == '^') {
Tmpl["EncodingUtf"] = "send";
Tmpl["Encoding"] = sEncoding.substr(1);
} else {
Tmpl["EncodingUtf"] = "simple";
Tmpl["Encoding"] = sEncoding;
}
#else
Tmpl["EncodingDisabled"] = "true";
Tmpl["EncodingUtf"] = "legacy";
#endif
const vector<CServer*>& vServers = pNetwork->GetServers();
for (unsigned int a = 0; a < vServers.size(); a++) {
CTemplate& l = Tmpl.AddRow("ServerLoop");
@@ -951,6 +992,24 @@ public:
pNetwork->SetJoinDelay(WebSock.GetParam("joindelay").ToUShort());
#ifdef HAVE_ICU
CString sEncodingUtf = WebSock.GetParam("encoding_utf");
if (sEncodingUtf == "legacy") {
pNetwork->SetEncoding("");
}
CString sEncoding = WebSock.GetParam("encoding");
if (sEncoding.empty()) {
sEncoding = "UTF-8";
}
if (sEncodingUtf == "send") {
pNetwork->SetEncoding("^" + sEncoding);
} else if (sEncodingUtf == "receive") {
pNetwork->SetEncoding("*" + sEncoding);
} else if (sEncodingUtf == "simple") {
pNetwork->SetEncoding(sEncoding);
}
#endif
VCString vsArgs;
pNetwork->DelServers();
@@ -1166,6 +1225,29 @@ public:
l["TZ"] = *i;
}
#ifdef HAVE_ICU
for (const CString& sEncoding : CUtils::GetEncodings()) {
CTemplate& l = Tmpl.AddRow("EncodingLoop");
l["Encoding"] = sEncoding;
}
const CString& sEncoding = pUser->GetClientEncoding();
if (sEncoding.empty()) {
Tmpl["EncodingUtf"] = "legacy";
} else if (sEncoding[0] == '*') {
Tmpl["EncodingUtf"] = "receive";
Tmpl["Encoding"] = sEncoding.substr(1);
} else if (sEncoding[0] == '^') {
Tmpl["EncodingUtf"] = "send";
Tmpl["Encoding"] = sEncoding.substr(1);
} else {
Tmpl["EncodingUtf"] = "simple";
Tmpl["Encoding"] = sEncoding;
}
#else
Tmpl["EncodingDisabled"] = "true";
Tmpl["EncodingUtf"] = "legacy";
#endif
// To change BindHosts be admin or don't have DenySetBindHost
if (spSession->IsAdmin() || !spSession->GetUser()->DenySetBindHost()) {
Tmpl["BindHostEdit"] = "true";