From 88c2facbf42d18d05b65d48754469c7b44f52ade Mon Sep 17 00:00:00 2001 From: halex Date: Sat, 1 Sep 2007 11:15:21 +0000 Subject: [PATCH] * More icons for agents. * Provides a human-readable name on the agent list. * Hopefully updated linkies to right place. --- src/www/Bongo.rules | 7 ++++++- src/www/bongo/hawkeye/AgentView.py | 31 +++++++++++++++++++++++++++- src/www/hawkeye/agents/index.tpl | 4 ++-- src/www/img/agent-bongoimap.png | Bin 0 -> 3421 bytes src/www/img/agent-bongomailprox.png | Bin 0 -> 3165 bytes src/www/img/agent-bongopluspack.png | Bin 0 -> 703 bytes src/www/img/agent-bongopop3.png | Bin 0 -> 3421 bytes src/www/img/agent-bongosmtp.png | Bin 0 -> 2338 bytes 8 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 src/www/img/agent-bongoimap.png create mode 100644 src/www/img/agent-bongomailprox.png create mode 100644 src/www/img/agent-bongopluspack.png create mode 100644 src/www/img/agent-bongopop3.png create mode 100644 src/www/img/agent-bongosmtp.png diff --git a/src/www/Bongo.rules b/src/www/Bongo.rules index c68a445..7d50a3b 100644 --- a/src/www/Bongo.rules +++ b/src/www/Bongo.rules @@ -215,7 +215,12 @@ dist_img_DATA := \ src/www/img/system-users.png \ src/www/img/user.png \ src/www/img/user-desktop.png \ - src/www/img/agent-control.png + src/www/img/agent-control.png \ + src/www/img/agent-bongoimap.png \ + src/www/img/agent-bongomailprox.png \ + src/www/img/agent-bongopluspack.png \ + src/www/img/agent-bongopop3.png \ + src/www/img/agent-bongosmtp.png jsdir = $(htdocsdir)/js diff --git a/src/www/bongo/hawkeye/AgentView.py b/src/www/bongo/hawkeye/AgentView.py index db4167b..0814b48 100644 --- a/src/www/bongo/hawkeye/AgentView.py +++ b/src/www/bongo/hawkeye/AgentView.py @@ -16,7 +16,9 @@ class AgentHandler(HawkeyeHandler): # change things which eval. to False to empty elements if config != None and config.has_key("agents"): for agent in config["agents"]: - agent["url"] = "%(url|/)sagents/" + agent["name"] + # We can change this if needed? + agent["url"] = agent["name"] + agent["rname"] = self._humanReadableName(agent["name"]) agent["img"] = "../img/agent-" + agent["name"] + ".png" if not agent["enabled"]: agent["enabled"] = None @@ -50,6 +52,33 @@ class AgentHandler(HawkeyeHandler): # Operation completed OK. doneop = 1 return self.index_GET(req, rp) + + def _humanReadableName(self, agentname) + # TODO: Translation, once we have a system in place. + if agentname == "bongoqueue": + return "Queue" + elif agentname == "bongosmtp": + return "SMTP" + elif agentname == "bongoantispam": + return "Antispam" + elif agentname == "bongoavirus": + return "Antivirus" + elif agentname == "bongocollector": + return "Calendar collector" + elif agentname == "bongomailprox": + return "Mail proxy" + elif agentname == "bongopluspack": + return "Plus pack" + elif agentname == "bongorules": + return "Rules" + elif agentname == "bongoimap": + return "IMAP" + elif agentname == "bongopop3": + return "POP3" + elif agentname == "bongocalcmd": + return "iCal" + else: + return "Unknown agent" def _getAgents(self, req): config = {} diff --git a/src/www/hawkeye/agents/index.tpl b/src/www/hawkeye/agents/index.tpl index 672167f..2e21695 100644 --- a/src/www/hawkeye/agents/index.tpl +++ b/src/www/hawkeye/agents/index.tpl @@ -19,8 +19,8 @@
- diff --git a/src/www/img/agent-bongoimap.png b/src/www/img/agent-bongoimap.png new file mode 100644 index 0000000000000000000000000000000000000000..57ac1fc187d84abbe521464bb83d5e0fbfa7ec86 GIT binary patch literal 3421 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 literal 0 HcmV?d00001 diff --git a/src/www/img/agent-bongomailprox.png b/src/www/img/agent-bongomailprox.png new file mode 100644 index 0000000000000000000000000000000000000000..eec6a3c654a523b105a4a67f30f31c0dd1f6cbac GIT binary patch literal 3165 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 literal 0 HcmV?d00001 diff --git a/src/www/img/agent-bongopop3.png b/src/www/img/agent-bongopop3.png new file mode 100644 index 0000000000000000000000000000000000000000..57ac1fc187d84abbe521464bb83d5e0fbfa7ec86 GIT binary patch literal 3421 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 literal 0 HcmV?d00001 diff --git a/src/www/img/agent-bongosmtp.png b/src/www/img/agent-bongosmtp.png new file mode 100644 index 0000000000000000000000000000000000000000..9655f1ef4e066ed6effb3263e8505eee94079ab0 GIT binary patch literal 2338 zcmV+-3ElRIP)7a(C`2Og1-cm%;qEG~8u@9x~zj&O)gEN3IjS$mzmcrSge z;-R{Gs%LuEJ4V>Dlp~$#KGi)n-#Jy^Ij5&dN{J^~*y9H9zsjc$JZ>@427mjzvmXaR zFdEsM^Tom3;`qwy=t2+#qmSB-F#PC;uRgUS2ZA6NedWhL0TCc2P_548YW1p9$WPhD zV)>EV0C4V&-;AbVg_N>QUqAb6DW#Ch%lG8k+NunKKuRfO5Cn2_bK{ZQLI|lawPQ_P z0p%FLxdGqzu)4YoB0`jMZF}pH*}2>hs?|B0bH18}GnK@g^Tld)&hG2$Ppnky%Kd+B zfQW%HhFZO94dxcd)3Bzlz+i51yjHI|rBXSL#6R9!#aq|bK+#PU9jL|bEVSK4P0ACy z@YSO^01`q76!JxT{&Hghz|Kg#vO2m@$WPfqNGpoW%m-`u$`?mqFqQHT~7+Ls0a0FGm$SS(w$deut1zhf3E7R#{ht$2(PA!Bf?YQ2ruB2ef75rHv=YOP|83@_zU z?@t>HIbboSCLmIi8Ju7m1j8U027|#FOic|QT~qg&2EpX%YIIZv6(fR_fDi)3LdjlP z9bMS51BwGhTL>9v2SxxVg2@;R0Bd(Y0{KomIF_OvoG@DgU~;v>Y8BMB^gI`ZLdnuQ z16>}#0XrUxR)8}C;~crc5nO)fPgwtC348W^9=pd5;HmL1fE)Uhq|o^*q2 z9e9fuCSw@rH89X)AP9i9Ef4p%d=(&ylEQ;I(6J6wYZa$hEQ2vs2MB6;IU`6kv(DJ~ z1jfcEuyKDGjf;Q9r8ob8z2iqveBmYZ^z2GasryEHad5N`oF%>5aD05Uv;`KYAyo%T z#c8|VsHWC|jvOc!O12Op<^U1ExkhA-bS7sQ92~*(FTRXZU;i%d-C4l-KfaFl=P$sw zHxi^hwm*l%WBqO50iZ8y;K;s#IQjs=^IYWfh3+{}D3qYK55-xCg**sdYTw%g96FlE z-u;L0=imPd|El~Q?=>zUH}n|{j*Q~K{{5I3ItC1krTuI(s+x1AnL)i?dw34GuA?R; zz~lsvHy178g0@xMjde&7pr?Nqj+dUpy}P&Y@vWQq@cO&B__x2{*=J7U#c#g^!$|KX z2}urAsG(X*u@|aT=Pbq;nlU9X1{hJ#!zoOw zswXm7sGNa^YG}$B;r>>7C)+BdwGu)IOqWk|-wTzBWm||SY7|ytiaXLsIYV-c^lMEu z7-40@gD(VxklU)>PW!%(si}PTbs*w^E}z`@u<7_(q~f!L-O3H!zP)T?JL$8yR*3<_ zFwkf;x~~KEdM!6KmA5?4RX7;I@qBDKK?0QSL|j0lL&6~~%WTu#nVjNw8c-aVox9Zi z^FXCKt8qY0<_8i^5Woq9QX!h>K@i(+c+Cwo6-qtPKIUp;o)C$YDulp^>61<;4s25g zinb8Kf@FVU#QKaQwg^ z=5MZG`p^ij-@YHY4_}D*fd(KLhKc$4y2CkNNyFN)4%BKj+ceF@xEBaGUI5$k;dnuK z9>nL47r^n=(e*`mRAa6e;KJ2ASljgQx!paGQo{2EB!ICY3+2PZaQy&YkgOL(gqhh( z*@vhDiUUzTj#dF-l}w&DJ66)Z5VauDc=_-MK0DHj#T6Sj7B^5hIE)YPu47?o6L0@} zN!`~{%cYb!F@36g4wOp~2a-Y^j`6vK#)$}py7<=ByG@P&xV^j;|ACymxhaYRQ`wo> zceowOjv#8hW?%8u^ z&}cMV)6AgJXmnwlDRwkpz0J;KvaqZk{oO$?fUJ&_^cM?6WC5_wy>aH65OPmAw)EQ1 ze|Gw{U;Of)Qp(+r+Safwz52>e%K&TuTL5e+rQPZP2ViMlasbW#`SFPfMGP-g2g-qf zT3_vi1j#`0g8^{y_$3=21E_$yG6de{z>_9V{G0ku9eCXGUt%!6bPx3AJpcdz07*qo IM6N<$f