From f010b27b141d1e82df6da268bca060df4db19259 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sat, 3 Mar 2012 20:17:02 +0000
Subject: [PATCH] Home page:   - Convert ajax to use shared script   - CSS
 tweaks   - Add missing icons     Silk icons: See
 licenses/LICENSE-SilkIcons.txt

---
 .../src/net/i2p/router/web/HomeHelper.java    |   1 +
 apps/routerconsole/jsp/home.jsp               |  58 +++---------------
 apps/routerconsole/jsp/js/ajax.js             |   5 +-
 .../resources/themes/console/images/book.png  | Bin 0 -> 593 bytes
 .../themes/console/images/book_addresses.png  | Bin 0 -> 770 bytes
 .../resources/themes/console/images/bug.png   | Bin 0 -> 774 bytes
 .../resources/themes/console/images/film.png  | Bin 0 -> 653 bytes
 .../resources/themes/console/images/help.png  | Bin 0 -> 786 bytes
 .../themes/console/images/plugin.png          | Bin 0 -> 591 bytes
 .../themes/console/images/wrench_orange.png   | Bin 0 -> 584 bytes
 .../themes/console/light/console.css          |   4 +-
 11 files changed, 13 insertions(+), 55 deletions(-)
 create mode 100644 installer/resources/themes/console/images/book.png
 create mode 100644 installer/resources/themes/console/images/book_addresses.png
 create mode 100644 installer/resources/themes/console/images/bug.png
 create mode 100644 installer/resources/themes/console/images/film.png
 create mode 100644 installer/resources/themes/console/images/help.png
 create mode 100644 installer/resources/themes/console/images/plugin.png
 create mode 100644 installer/resources/themes/console/images/wrench_orange.png

diff --git a/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java
index 9a6567e6f2..189821cc2c 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java
@@ -47,6 +47,7 @@ public class HomeHelper extends HelperBase {
         _x("Key Server") + S + _x("OpenPGP Keyserver") + S + "http://keys.i2p/" + S + I + "book.png" + S +
         _x("Pastebin") + S + _x("I2P Pastebin") + S + "http://pastethis.i2p/" + S + I + "itoopie_sm.png" + S +
         "Planet I2P" + S + _x("I2P News") + S + "http://planet.i2p/" + S + I + "itoopie_sm.png" + S +
+        //_x("Plugins") + S + _x("Add-on directory") + S + "http://*TBD*.i2p/" + S + I + "plugin.png" + S +
         _x("Postman's Tracker") + S + _x("Bittorrent tracker") + S + "http://tracker2.postman.i2p/" + S + I + "itoopie_sm.png" + S +
         _x("Project Website") + S + _x("I2P home page") + S + "http://www.i2p2.i2p/" + S + I + "help.png" + S +
         "stats.i2p" + S + _x("I2P Netowrk Statistics") + S + "http://stats.i2p/cgi-bin/dashboard.cgi" + S + I + "itoopie_sm.png" + S +
diff --git a/apps/routerconsole/jsp/home.jsp b/apps/routerconsole/jsp/home.jsp
index 65cfef40e4..be6073b66b 100644
--- a/apps/routerconsole/jsp/home.jsp
+++ b/apps/routerconsole/jsp/home.jsp
@@ -1,59 +1,15 @@
 <%@page contentType="text/html"%>
 <%@page pageEncoding="UTF-8"%>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
 <html><head>
 <%@include file="css.jsi" %>
 <%=intl.title("home")%>
-
+<script src="/js/ajax.js" type="text/javascript"></script>
 <script type="text/javascript">
-var page = "home";
-function ajax(url,target) {
-  // native XMLHttpRequest object
-  if (window.XMLHttpRequest) {
-    req = new XMLHttpRequest();
-    req.onreadystatechange = function() {ajaxDone(target);};
-    req.open("GET", url, true);
-    req.send(null);
-    // IE/Windows ActiveX version
-  } else if (window.ActiveXObject) {
-    req = new ActiveXObject("Microsoft.XMLDOM");
-    if (req) {
-      req.onreadystatechange = function() {ajaxDone(target);};
-      req.open("GET", url, true);
-      req.send(null);
-    }
-  }
-  //setTimeout("ajax(page,'scriptoutput')", 5000);
-}
-
-function ajaxDone(target) {
-  // only if req is "loaded"
-  if (req.readyState == 4) {
-    // only if "OK"
-    if (req.status == 200) {
-      results = req.responseText;
-      document.getElementById(target).innerHTML = results;
-      document.getElementById("langbox").style.display="block";
-      document.getElementById("home").style.display="block";
-    } else {
-      document.getElementById(target).innerHTML="<b><%=intl._("Router is down")%></b>";
-      document.getElementById("home").style.display="none";
-      document.getElementById("langbox").style.display="none";
-    }
-  }
-}
-
-function requestAjax1() { ajax("/xhr1.jsp", "xhr"); }
-function initAjax() { setInterval(requestAjax1, 15000);  }
-
+  function requestAjax1() { ajax("/xhr1.jsp", "xhr", 15000); }
+  function initAjax() { setInterval(requestAjax1, 15000);  }
 </script>
-
-
-
 </head><body onload="initAjax()">
-
-
 <%
     String consoleNonce = System.getProperty("router.consoleNonce");
     if (consoleNonce == null) {
@@ -61,7 +17,6 @@ function initAjax() { setInterval(requestAjax1, 15000);  }
         System.setProperty("router.consoleNonce", consoleNonce);
     }
 %>
-
 <div class="routersummaryouter" id="appsummary">
  <div class="routersummary">
   <div style="height: 36px;">
@@ -81,12 +36,13 @@ function initAjax() { setInterval(requestAjax1, 15000);  }
     <a href="/home?lang=en&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=us" title="English" alt="English"></a> 
     <a href="/home?lang=ar&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
     <a href="/home?lang=zh&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=cn" title="中文" alt="中文"></a> 
+    <a href="/home?lang=cs&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=cz" title="Czech" alt="Czech"></a> 
     <a href="/home?lang=da&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=dk" title="Danish" alt="Danish"></a> 
     <a href="/home?lang=de&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> 
     <a href="/home?lang=ee&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=ee" title="Eesti" alt="Eesti"></a> 
     <a href="/home?lang=es&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=es" title="Español" alt="Español"></a> 
-    <a href="/home?lang=fi&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=fi" title="Suomi" alt="Suomi"></a> 
-    <a href="/home?lang=fr&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=fr" title="Français" alt="Français"></a><br>
+    <a href="/home?lang=fi&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=fi" title="Suomi" alt="Suomi"></a><br> 
+    <a href="/home?lang=fr&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=fr" title="Français" alt="Français"></a>
     <a href="/home?lang=it&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=it" title="Italiano" alt="Italiano"></a> 
     <a href="/home?lang=nl&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> 
     <a href="/home?lang=pl&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=pl" title="Polski" alt="Polski"></a> 
@@ -122,7 +78,7 @@ function initAjax() { setInterval(requestAjax1, 15000);  }
 <div class="home" id="home">
   <div class="search">
     <form action="/search.jsp" method="POST">
-      <table><tr><td align="right">
+      <table class="search"><tr><td align="right">
         <input size="50" type="text" class="search" name="query" />
       </td><td align="left">
         <button type="submit" value="search" class="search"><%=intl._("Search I2P")%></button>
diff --git a/apps/routerconsole/jsp/js/ajax.js b/apps/routerconsole/jsp/js/ajax.js
index dab3164a09..8219dc4242 100644
--- a/apps/routerconsole/jsp/js/ajax.js
+++ b/apps/routerconsole/jsp/js/ajax.js
@@ -23,10 +23,11 @@ function ajaxDone(url, target, refresh) {
     if (req.status == 200) {
       results = req.responseText;
       document.getElementById(target).innerHTML = results;
-      document.getElementById("lowersection").style.display="block";
+      //document.getElementsbyClassName("hideifdown").style.display="block";
     } else {
+      // TODO take from a translated variable
       document.getElementById(target).innerHTML="<b>Router is down</b>";
-      document.getElementById("lowersection").style.display="none";
+      //document.getElementByClassName("hideifdown").style.display="none";
     }
     setTimeout(function() {ajax(url, target, refresh);}, refresh);
   }
diff --git a/installer/resources/themes/console/images/book.png b/installer/resources/themes/console/images/book.png
new file mode 100644
index 0000000000000000000000000000000000000000..b0f4dd7928cc5714e002fd2a6e8f2faac0073f00
GIT binary patch
literal 593
zcmV-X0<QguP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz<4Ht8R5;6Z
zlfP<JK@i4&=j7g-5E~UmERvuoNa9VWf`Z@+C_aIOAa*{052J{c+9-&Eg|QQ~77J0d
zj79!{$=ThR`7HKCW4w1^8CZ6H^L@KBjU=w$d$1zusbB+fSqKS`s6l^rc%h`NZ|@%6
zKMgRTUbrJTH(p+B)_-mx?Il5l1q#^Q`o(S%p}{HoRRM5yyu8p{TU}uB<QP=~p{P}(
zRzH4tp82@}S8m+p9{|#k@yZgfK7L_iV+Tb55PK>l6k>CGhc0FIuigU9U^L+D`6bSr
zIEp(+L4<G@9)X3}?FvtxtxW<5_u%{bHlub(*L9SXv8d<941?i_V~1u5X#xNU56lZG
zC2n3kQ{`86NaEq!&y=|#2lD?aC?0q*%v&C>eIgaZT(|{B!*DbrTYc1t0J9*MLJm+n
zOEVloE20S^g6s|1rvjjuW1W$TV;&TbK2|slm=91)Q{X{Kg;c!Saglq7xo8`(>{A}G
zw@`8gScq(adr(4@;>^%e<~7+uNMv&?8L0#%0yj~@DW&fPImKeyFHkRKuNERO3(SOB
z?S)niZbFEN`0<|w+LjBKR#DU7F3d&rQGGY&Y)Fv0w002i=Jm_>x9jBX>wg3XCKK`E
f>xbvJ_5i;DeEQXvyE?}U00000NkvXXu0mjfKqCEw

literal 0
HcmV?d00001

diff --git a/installer/resources/themes/console/images/book_addresses.png b/installer/resources/themes/console/images/book_addresses.png
new file mode 100644
index 0000000000000000000000000000000000000000..b73419ba82098bbdca1989d31fa798756c987524
GIT binary patch
literal 770
zcmV+d1O5DoP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!lu1NER2Ufr
z!M|^mbsPZT=e>LHt}U(fC{;>Yum{xmD^Y@B5nN0h99fKm3?`0_{sl~q#>Lf`Xq^mk
zkPrtoHo*|Z3nt<ZY$=7HP)f^P?|Sd|`|){-bLY-I9}yQZH$Oi=-tYHK?7vC?Ifw|5
zGoumPoAJ-`7r%C(jEMKp>2x}Jy`Dy+VWv$$5Q(e+JC7mM8^t0(iL(m}3r?Oq>CBlk
z+U+S25g-Hs)ay<AE^M%m&p)_+!{H;Zl@ZaNoSby&(j|Z1{7_Cn1Q0<EV5i4B)d9;V
zzEa!#cWIZY5=E_6Gdnx$)HA0kvdAHXkVOs=38b{=>udKxvr*V(ri6%46oq;@1yc0P
zA3d#Jwv=Vd%^Q~uhdUw?5#qmljMYF15n(hM*?Rc9vGHS$KYP}#o8KGsA85A5J$?L5
z*MC`7uV)9h3*UUa-*A}z_>9dmBBYe0l)#gR7WI4g9iBg>J=3wbH*kCHJ4ZXOSYQ27
z<S=DSZG5ow{;sG+gq*YCa0sT`3pQ?DQ7>Dru6(55yX)S@&n6~krBum)TC;$e8swaf
zMkA1;lB<E7E2H5+<VuwWQne={li7&@fHETFoK;l?9&g`q;NUS6`(`}%@>^Q1DT^mw
z_wd1AvaF1rQ^f`GXt>pMc(a6@v#P4V>fhgb;ib1-`{@%;>^~y%NUa>Var+02W?K%X
zYERjjxIaDC&rwE%l#-mYDh<G$^(z*a-ViAnRl9!ceo37&Cjc5vm?<G5M1(XN$Z2SO
zZN=K^iYSPnXaG@Uf$iN}?7|@>z}(!NW^0=wBZMH5C_+RAIVF!K23~z}<<oArdp;|s
z%ZRwVy1M!<JRaVa5g7sG0H8o{vD@vQhnm>>ANUn_?}3M|H~;_u07*qoM6N<$f@<tw
A>;M1&

literal 0
HcmV?d00001

diff --git a/installer/resources/themes/console/images/bug.png b/installer/resources/themes/console/images/bug.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d5fb90ec6ee08f53947e0266a87b03f75893446
GIT binary patch
literal 774
zcmV+h1Nr=kP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!m`OxIR5;6>
zlgUq0Q544c8(ae&UR$8ps&snq6^bPY3v3xAmMW74Di$h~GCH6E3TaYs2#6A<7K*gC
z777H71_Wa;(dfp+g-drPCSWu)#PInZi72LJ;o?i~$-U=y&UbQ89Dul3%3P+Axkzc*
zbH-y;QF=hR{qLItf%ci2_&e5wNo0gnVatG?ul6Zw=o$I9Ljfn*ic3`U?>IfEim3g{
zujU&$-hy6wn;w(xme|zJm;lWJxtTFfM)q0`kX!Vu0+d${$}LCddK1<^htTe-fUYL3
zB`SdNsZD>RgvLj1<^@h6_+cDRK2Brcr2~>%$*5S)hyV33PV^teac3%|4lz@8p4?)5
z?t5o^?q+%^%)Yygo~I^U4VR!bTnWuE35hcWrfCDR3q+sxJ79e7Fg`&)RCqLA^2^y^
z0laVfadW90_Fz8Brm|r47sB^u1VgI>kanj)Z4`zMSfHlm8>CwXa$JVM`$2RrmZB-3
zN10m-!;BvH*Br3V8t`DH7m`jf#2upVDXl{5ff<mavWU@F1lMyb8vQzyPGq6ja~k(n
zyJ4LwMAcX>18_pzCPK1Zu$$CKKvd8FGeFf)+K<|x33pc7P&S#3GZT4mEw;nr(Ze*F
z3&*?-4U-lm*#t<gCyuZ=gqeG7A3)z#^rg8Z=vrz+@wg7Ig$`KUI#iD2pl8ko>ber5
z%S_ceqB`b3ko6r~BbvDwdohTvP(3a(pq{x#T$yQsu#OKwEe}KuH^Mh@nxg_(Nw136
zq#a^3xNBke)In+!?<ES&ylN&<%d1G-<d!CYb1t5U3SgCL7rB$H{GWnLOhq#n{3_0?
zSPK_-*fz4_U*K%;$`ipopFsQ<fEC9WzmsT)-->qk3%4wB69{pF`Tzg`07*qoM6N<$
Eg55P&8UO$Q

literal 0
HcmV?d00001

diff --git a/installer/resources/themes/console/images/film.png b/installer/resources/themes/console/images/film.png
new file mode 100644
index 0000000000000000000000000000000000000000..b0ce7bb198a3b268bd634d2b26e9b710f3797d37
GIT binary patch
literal 653
zcmV;80&@L{P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!A4x<(R5;6}
zlTT<9K^Vo~Zo8Yz8k>WO3(`_cf+b25@DJ#zdQm}8GzWtq2-QnZ8W6mB^kfeK5f%S{
zUW%tGMCwrwic~ZrQcG=4f?5bkV+3dRk8hw6bk~y$KX#b!y*J<R?HXYi;(wmO{-Ro~
zz7K+6lzgkzYPmRZxm^CBl*)OYw^Fay3x5RAnD>4EJ~>;dRASqrSu;ZpM>?P}K~6AT
zWv6Dmq?v&9LdXC(m%WCO6ma_di$R(v$@ad_>@R41N3N5lSJq9@6CGhX84-$%Xrd_6
z;){?{E|Ytt5$S-&Au>t4wDlIxdkfe-a22LMj``McG};r8@{GsRPm*+8fFey6C)@<E
zXHyDoIgRf>ifDBXVyT<e_Ya8HxRC&E%JqO9huj=&!-0n}^wO)qmInw7h1*hMJz!^C
zzz{j+x^8Ly;^&wdn7o4ArZrj{7qCX=n$4y+etB+};1rY(NDg!=a|6RE1N-*BUSyY#
zsVhgOz;v68k%5;#uVBqzLE!6P;8S-qhP*fW5L0XTwj&*|V6mW!#=oYZ)FV@C*o778
zfQ1g3C6=DTQGPj2W*Xkc3s?=G;90k=H5SdYq!ZUciGovP>w(N@Xd41b45OFg6x_QA
zpwLiigyy~cVoPxW^r~C7ZQpr%>1$*HKmv~AY-qJw4;gUecS--wnqslISSS=^KA&Ic
n@BK|Onfz#3R%n{$a)0j^sqv5F(1NTL00000NkvXXu0mjf3S}fX

literal 0
HcmV?d00001

diff --git a/installer/resources/themes/console/images/help.png b/installer/resources/themes/console/images/help.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c870176d4dea68aab9e51166cc3d7a582f326d6
GIT binary patch
literal 786
zcmV+t1MU2YP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!q)9|UR5;6}
zlig2}VHn2!Ti{P<t>$XgYMs^AIOw1Qr{*Wn)N-{9ma}x2(<~`9Go1=*>YR!KZvrBS
zCd!u}@M0og%Ev@_;Z?Kk>Wwv=%h_57zmt2<_1msz_niYE=YRNPpd%02TK9oK<J>1z
z>ooPno}v^sikz_|1XHFx_L%~;ljh7i(jiay5F0x*+(9aXXFCl?AdQj5XlQ65%sEv+
ztfe?|YcjPN*@yYtE~ImQh{l|#A6Z8iu>pf43Rj52CzU_dMQm|S2xR62YjQOn+z8WH
zaK=!}ggOZi{4pB7SQ=xC0n|vXP_Bkx_a)FeNd}w8U97BNbSWxa^QW-li9<MO$KxI|
z(g#NjKYnwB+Cd9y`c0U(N1$DcpiXKPW(9q7A=1Tk?It!+-D5&k_X_;cG^UmVP}{aa
zGXk|O2yVL$ty2zIy}NkQZ6vdT4uzL?2a^y=EU5fw1h3P;Jl12{=)*2`fSp|$y|XTq
zwrNrMK@W#-4?MA+&I($_U9>BZ#M1!_xE*?wzt^GcoeoL*JGLSe_+l-JT2#2tz!z&^
z_s5anq&^nBklIMwRvcoP3%qs%%Ea?1c{_*V*Xj&~uLu-2Dp1fUN4<0zMo$EH>*U83
zm_9;<F#x?Ig31m<HW*9nBeF*$Pc)OEP$UDf>Vt%-bE{_J_!If!1y=c+`QVZ>0_BPy
z+%^pgnv`f8H)Z%0&Tp8&u*MCIC4igNW5MeWM_DHpDNi)Zxz|9XboOnitwFq$ETN=X
zj-tkCJnz**Y4k#6_Ty^B=hWo~L!47r`HoP=x&3T1)JLr2t2+#fH<n@1xq~j54Y@pN
z=wi8qbLKJKcr?nsRy88HQZY<k;tx`}Tq$*-Y=Asp+Ala)+{gawHU29<0oShuqP<PM
Q!~g&Q07*qoM6N<$g7{Wp+W-In

literal 0
HcmV?d00001

diff --git a/installer/resources/themes/console/images/plugin.png b/installer/resources/themes/console/images/plugin.png
new file mode 100644
index 0000000000000000000000000000000000000000..6187b15aec001b7080b51a5f944f07591f26cc15
GIT binary patch
literal 591
zcmV-V0<iswP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz;Ymb6R5;6}
zl08V3aTLaXuVw{)TtAV-EQp(VZ&;&yOGCA^HyY7UV+BnWv^BakMQc+OB&0Z27AkkL
zxPppG-9jbH?t7kd8eTEus*7hi@aLT8f1cktNknjvIJDd2gQ>eEcNHZMNv|IbJ-M`(
zKwWL~opzjJe^WpCmV9E;(0&ut2;4va_(#>M8)>9$R5viQnf(Nkh~VM$y>J(jqb$cj
z+nL1Nm|mV)Gm|9MnHf*7Ja4OEAQz__^LRKOLEwqpiGV^^A*T=#&inGm-62Xs;dnSp
zKj&H9T*boh2<no0+=ElOJZ83sfQeG2L`y@C?#3Rz{i>i)W+(n27l!C)>fq|L%VB1i
ziC4p;NwV_}ZjW7$LRW#(_bKF#hp=!IqNO26Z*w2+LEwx{PVnZ&Sn}T;m<fe2Wm#Lz
za$)sCo<WYS+HDKB-VTSEXg%7B+({$Nn7A;{*z`8{F+2a6g_Xssq{Gq<0W(qT9zX<h
z>tzb<gWDVNaLQ|6kUI-2i;UhJKT-oRHNy~7Uq5lS^Bm=sIhHERNTM^>$;qA*nT@@+
zV5uQ@iXDTPoTbV#FRr~z04|PPh`wXTNoCm9*tG&?e3+fYl>K6+&3|Cc$KOpL`ER+_
dcRl5U#9zn6ZO}GF<yZg!002ovPDHLkV1oCe4!{5a

literal 0
HcmV?d00001

diff --git a/installer/resources/themes/console/images/wrench_orange.png b/installer/resources/themes/console/images/wrench_orange.png
new file mode 100644
index 0000000000000000000000000000000000000000..565a9330e0a156dff5bed2c9fad8c95a44344ba4
GIT binary patch
literal 584
zcmV-O0=NB%P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz+DSw~R5;6(
zle=qEQ5?tfe>g}f4o)2%U3C;eEDoiEh?94d(rV57VIF#8VqzW$HrDC|#U`x@QDbgi
zVl)t9GGz&YY#D?gc%>hISA+_EBpnXt#pnC`p6@xw0$8TCbULjhlgVx(kuc)%xbgqq
zR5+DNDFRN0!y)7Gm}oT0i39}h4h928qY?Rho^UvPGJ#kuW|-Amtrn`Pmd&+bFo@sp
z$LI4IQw7BG?|#2ewOS<<3VjL$0=lMY^m;wqZujv5kx1l%Sl;V&Iy4#$ip3&@LV<F*
zOr=u6>2!7vhhN=PCz%^9v24`qb(+m4W?!q-&~=?ssf5GfnAmJK<siIuU1iq_*)@J_
z-lE-Zlgs7sdcAw5WvOb|?e?zKYE=$~xM{+7;oBB`eF2)n_{kC;kLRb$<(fat?fxXQ
ztg^Evuz(*Q!2A2qcnTZK{BocBd{j>V;3bvpDm0(NhahZ=&^sqo6Odj6>)Dq_3p~4~
zvb`d3Mydwjt&Df<pvNJ371qya$K8~L)Mfax0Y$O=<~HQ+2^<sn3f!63ro9sjk&955
zv+hdO>^hVmLtI2x=U&h9(JVYX-!y~z3zi;1>=LY;o(bL$(Yf$lf)dMf0-u^0HrpTG
Wk@)HE*94aU0000<MNUMnLSTXwQVY`n

literal 0
HcmV?d00001

diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css
index 6db7c481ea..e658539961 100644
--- a/installer/resources/themes/console/light/console.css
+++ b/installer/resources/themes/console/light/console.css
@@ -630,12 +630,12 @@ div.appgroup {
 }
 
 div.search {
-     margin: 20px;
+     margin: 20px 20px 20px 240px;
      padding: 8px;
      width: auto;
 }
 
-div.search table {
+table.search {
      background: none;
      margin: 20px;
      padding: 8px;
-- 
GitLab