From e0063c2951d9d0ae90194ea2f639f29abf7d7665 Mon Sep 17 00:00:00 2001 From: kohsuke Date: Sat, 4 Aug 2007 19:33:27 +0000 Subject: [PATCH] added the search GUI. git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@4062 71c3de6d-444a-0410-be80-ed276b4c234a --- core/src/main/java/hudson/Functions.java | 17 +++++++++++++++++ .../src/main/resources/lib/layout/layout.jelly | 16 ++++++++-------- war/resources/css/style.css | 4 ++++ war/resources/images/16x16/search.gif | Bin 1042 -> 591 bytes 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/hudson/Functions.java b/core/src/main/java/hudson/Functions.java index 44f27d73e5..f816b3586e 100644 --- a/core/src/main/java/hudson/Functions.java +++ b/core/src/main/java/hudson/Functions.java @@ -14,6 +14,7 @@ import hudson.model.Project; import hudson.model.Run; import hudson.model.TopLevelItem; import hudson.model.View; +import hudson.search.SearchableModelObject; import org.apache.commons.jexl.parser.ASTSizeFunction; import org.kohsuke.stapler.Ancestor; import org.kohsuke.stapler.Stapler; @@ -355,6 +356,19 @@ public class Functions { return null; } + /** + * Finds the inner-most {@link SearchableModelObject} in scope. + */ + public static String getSearchURL() { + List list = Stapler.getCurrentRequest().getAncestors(); + for( int i=list.size()-1; i>=0; i-- ) { + Ancestor anc = (Ancestor) list.get(i); + if(anc.getObject() instanceof SearchableModelObject) + return anc.getUrl()+"/search"; + } + return null; + } + public static String appendSpaceIfNotNull(String n) { if(n==null) return null; else return n+' '; @@ -583,4 +597,7 @@ public class Functions { } return buf.toString(); } + + // the switch to enable search feature + public static boolean searchFeature = System.getProperty("search")!=null; } diff --git a/core/src/main/resources/lib/layout/layout.jelly b/core/src/main/resources/lib/layout/layout.jelly index eaeb5985d1..7ad12b2c38 100644 --- a/core/src/main/resources/lib/layout/layout.jelly +++ b/core/src/main/resources/lib/layout/layout.jelly @@ -52,15 +52,15 @@ title - + +
+
+ +
+
+
+ logout diff --git a/war/resources/css/style.css b/war/resources/css/style.css index dcee260315..3db0759f4d 100644 --- a/war/resources/css/style.css +++ b/war/resources/css/style.css @@ -36,6 +36,10 @@ table.center-align td { text-decoration: none; } +#search-box { + background: white url(../images/16x16/search.gif) no-repeat 2px center; + padding-left: 20px; +} #left-top-nav { text-align: left; border-left: 10px solid #fff; diff --git a/war/resources/images/16x16/search.gif b/war/resources/images/16x16/search.gif index 62ecc8cff7ecfdca0218ab4960a8f8b453b38500..ea1072ec3a4ccfb0550f6e37d07d29bae113e9b4 100644 GIT binary patch literal 591 zcmV-V0SYo}Qthp{1pzsHmu|t*x-I zu(7eRwY9alxVXQ+zk!~`hNQ-Zrpt+?$BU)Jh^EMouhWsK#FeVYkgLm(tSI;P2kx;nU#o z)8X*d;_=qw@Ydt;*yHioFMd} z>gwz3>+J08?d|RE?(XmJ@8Ih5;_LO}?DgdB_UP~T>G1dP@bK~R@$>WZ_4W1l_xJet z`1$$y`uh6&`}_R-{Qdp?{{H^||NsC0{{R30000000000000000A^8LW004RbEC2ui z01yBW000N9fO&#~V_kEDh=@5nJvTrxZ;694B@iPd86iAnl0Y^cS8QodAR#Z3G80E= zqFE;qMq`OF6ir!aqbL0R79~wSJ1_X7IIx#>-GA#-U00NPcaMM}`3IPINiRQp@L(q*D0tpNt5F~Jn!!d5Y d7|~*6K#m4*80P!ZMN5~D4jpLuMp95906R$&Xe0mt literal 1042 zcmeIx+fUK~6bJC%NDG=XQd{b*CAHNSs~&pjtp_j7&E)nIFIcNtUc$=^ zwTp{X0u?WXST^uBK|t{bD3?IFD9G=Ci%-V` zcwiF%vU9R>h}lGPHj(s%M9v{ob0{E@LM2f_5;d0u(#X_Y3P_`Xxm1uwrRAdm^YX#` zLRtYmk6u(z^sF$8Ib75*L}86n8{|(}lKf8!uxTQ(Qz=IN`x=-z+VedyKK_nO%PIe$RO8J_8btR2$1 zuVapG1uRe?-^LN4+9{lHid3*@(mAMc4r*P4TKAC7B^HY%63K{EB9qDFa`_laF$zKB zN+qOJL29*1qn(tibXuLpXf$dKrk_UB)U?@Tnl_u!vY1hpJ!Xq_W_D(FcGhOIiS=%& zVL@v2$P6Bt(K9yfQJB4u*{ifHDlI+Q=^$jTJ5 zYC={_$f|XI&E{US&)FRg2Mjw91fHLFy4^0H&u2&H?sfaZI_yESfp|AuOPhbJ7x?d=7l`%;{N113>w7-|V3&aFxZeoo)k_RMiyo<1zF%^lta=-- z50soJZ;pycgEMbngCkyuFDx^n_g#uhboI5IImkFp3=fiFxYz?X8)6^E{wyu2J^CmB zla`r;Bc#@a1rji)4nzVNoM0|7g-N)@@ZNKew-<{sU}B861bg_{wLH$_G?wCqq=@beSa@VKP?A;FO?QGGyiP-Vz|0Ilo<>?tQSp3QA(~$xF%)YA{eH;9-jxv&541`z9 Kk7fj6frLNAkh@+0 -- GitLab