From 3ba448c7f08e3055ed7958777f848dc3f29a1ef4 Mon Sep 17 00:00:00 2001 From: Scott Main Date: Wed, 15 Jul 2009 15:38:17 -0700 Subject: [PATCH 1/4] AI 150535: add the Videos page to the site Automated import of CL 150535 --- tools/droiddoc/templates-sdk/header_tabs.cs | 7 +- .../assets/android-developer-core.css | 275 +++++++++++++++++- .../assets/images/arrow_bluelink_down.png | Bin 0 -> 180 bytes .../assets/images/arrow_bluelink_up.png | Bin 0 -> 181 bytes 4 files changed, 276 insertions(+), 6 deletions(-) create mode 100755 tools/droiddoc/templates/assets/images/arrow_bluelink_down.png create mode 100755 tools/droiddoc/templates/assets/images/arrow_bluelink_up.png diff --git a/tools/droiddoc/templates-sdk/header_tabs.cs b/tools/droiddoc/templates-sdk/header_tabs.cs index d77836e94c..7fd8486147 100644 --- a/tools/droiddoc/templates-sdk/header_tabs.cs +++ b/tools/droiddoc/templates-sdk/header_tabs.cs @@ -4,8 +4,7 @@ elif:sdk ?>sdkhomecommunitypublishabout"> + elif:videos ?>videos"> + -
  • +
  • + Blog + + + + ブログ 博客 網誌 +
  • - \ No newline at end of file + diff --git a/tools/droiddoc/templates/assets/android-developer-docs.js b/tools/droiddoc/templates/assets/android-developer-docs.js index 654e9a862c..af1b700cee 100644 --- a/tools/droiddoc/templates/assets/android-developer-docs.js +++ b/tools/droiddoc/templates/assets/android-developer-docs.js @@ -208,7 +208,7 @@ function resizeAll() { } function getBaseUri(uri) { - intlUrl = uri.substring(0,6) == "/intl/"; + var intlUrl = (uri.substring(0,6) == "/intl/"); if (intlUrl) { base = uri.substring(uri.indexOf('intl/')+5,uri.length); base = base.substring(base.indexOf('/')+1, base.length); @@ -220,6 +220,19 @@ function getBaseUri(uri) { } } +function requestAppendHL(uri) { +//append "?hl= to an outgoing request (such as to blog) + var lang = getLangPref(); + if (lang) { + var q = 'hl=' + lang; + uri += '?' + q; + window.location = uri; + return false; + } else { + return true; + } +} + function loadLast(cookiePath) { var location = window.location.href; if (location.indexOf("/"+cookiePath+"/") != -1) { @@ -418,5 +431,9 @@ function loadLangPref() { } function getLangPref() { - return $("#language").find(":selected").attr("value"); + var lang = $("#language").find(":selected").attr("value"); + if (!lang) { + lang = readCookie("pref_lang"); + } + return (lang != 0) ? lang : 'en'; } From 5db40c6db73db3f4433dd3456107efb4468a4a99 Mon Sep 17 00:00:00 2001 From: Scott Main Date: Tue, 21 Jul 2009 10:52:11 -0700 Subject: [PATCH 4/4] AI 150594: change the homepage markup and styles to allow variable height in the carousel bulletin items also move the IO announcement into the carousel and add an ADC2 announcement ALSO change the carousel script to write all bulletins to the DOM right away and show/hide them, instead of reading from the JSON and writing to the DOM each time on the fly Automated import of CL 150594 --- .../assets/android-developer-core.css | 66 +++++++++++------- tools/droiddoc/templates/assets/carousel.js | 53 +++++++++----- .../assets/images/home/android_adc.png | Bin 0 -> 1849 bytes .../images/home/bg_home_carousel_board.png | Bin 0 -> 1902 bytes .../images/home/bg_home_carousel_wheel.png | Bin 0 -> 2041 bytes .../templates/assets/images/home/io-large.png | Bin 0 -> 5522 bytes .../templates/assets/images/home/io-small.png | Bin 0 -> 1427 bytes 7 files changed, 76 insertions(+), 43 deletions(-) create mode 100644 tools/droiddoc/templates/assets/images/home/android_adc.png create mode 100755 tools/droiddoc/templates/assets/images/home/bg_home_carousel_board.png create mode 100755 tools/droiddoc/templates/assets/images/home/bg_home_carousel_wheel.png create mode 100755 tools/droiddoc/templates/assets/images/home/io-large.png create mode 100755 tools/droiddoc/templates/assets/images/home/io-small.png diff --git a/tools/droiddoc/templates/assets/android-developer-core.css b/tools/droiddoc/templates/assets/android-developer-core.css index 1c57e45d81..2841398577 100644 --- a/tools/droiddoc/templates/assets/android-developer-core.css +++ b/tools/droiddoc/templates/assets/android-developer-core.css @@ -774,65 +774,76 @@ td.gsc-search-button { } #carouselMain { + background: url('/assets/images/home/bg_home_carousel_board.png') 0 0 no-repeat; + height:auto; padding: 25px 21px 0; - height:185px; - background-position:top; overflow:hidden; position:relative; + zoom:1; /*IE6*/ } #carouselMain img { margin:0; } -#homeMiddle p { - margin:0; - padding-bottom: 1em; +#carouselMain .bulletinDesc h3 { + margin:0; + padding:0; +} + +#carouselMain .bulletinDesc p { + margin:0; + padding:0.7em 0 0; +} + +#carouselWheel { + background: url('/assets/images/home/bg_home_carousel_wheel.png') 0 0 no-repeat; + padding-top:40px; + height:150px; } .clearer { clear:both; } -#arrow-left, #arrow-right { +a#arrow-left, a#arrow-right { float:left; width:42px; height:42px; background-image:url(images/home/carousel_buttons_sprite.png); background-repeat:no-repeat; } -#arrow-left { +a#arrow-left { margin:35px 3px 0 10px; } -#arrow-right { +a#arrow-right { margin:35px 10px 0 0; } -.arrow-left-off, -#arrow-left.arrow-left-off:hover { +a.arrow-left-off, +a#arrow-left.arrow-left-off:hover { background-position:0 0; } -.arrow-right-off, -#arrow-right.arrow-right-off:hover { +a.arrow-right-off, +a#arrow-right.arrow-right-off:hover { background-position:-42px 0; } -#arrow-left:hover { +a#arrow-left:hover { background-position:0 -42px; } -#arrow-right:hover { +a#arrow-right:hover { background-position:-42px -42px; } -.arrow-left-on { +a.arrow-left-on { background-position:0 0; } -.arrow-right-on { +a.arrow-right-on { background-position:-42px 0; } -.arrow-right-off, -.arrow-left-off { +a.arrow-right-off, +a.arrow-left-off { cursor:default; } .app-list-container { - margin:37px 20px 0; - _margin-top:33px; + margin:0 20px; position:relative; width:100%; } @@ -907,13 +918,19 @@ div#app-list { padding-bottom:.25em; } +/*IE6*/ +* html #app-list a { zoom: 1; margin:0 24px 0 15px;} + +* html #list-clip { + width:430px !important; +} + /*carousel bulletin layouts*/ /*460px width*/ /*185px height*/ .img-left { float:left; width:230px; - height:165px; overflow:hidden; padding:8px 0 8px 8px; } @@ -925,7 +942,6 @@ div#app-list { .img-right { float:right; width:220px; - height:165px; overflow:hidden; padding:8px 8px 8px 0; } @@ -936,12 +952,10 @@ div#app-list { text-align:right; } .img-top { - height:80px; - text-align:center; + padding:20px 20px 0; } .desc-bottom { - height:100px; - margin:10px; + padding:10px; } diff --git a/tools/droiddoc/templates/assets/carousel.js b/tools/droiddoc/templates/assets/carousel.js index 4eebd89117..57eaff77cb 100644 --- a/tools/droiddoc/templates/assets/carousel.js +++ b/tools/droiddoc/templates/assets/carousel.js @@ -45,23 +45,8 @@ function droid(appName){ currentDroid = appName; var droid = droidList[appName]; - var layout = droid.layout; - var imgDiv = document.getElementById("bulletinImg"); - var descDiv = document.getElementById("bulletinDesc"); - - if (layout == "imgLeft") { - imgDiv.className = "img-left"; - descDiv.className = "desc-right"; - } else if (layout == "imgTop") { - imgDiv.className = "img-top"; - descDiv.className = "desc-bottom"; - } else if (layout == "imgRight") { - imgDiv.className = "img-right"; - descDiv.className = "desc-left"; - } - - imgDiv.innerHTML = ""; - descDiv.innerHTML = (droid.title != "") ? "

    " + droid.title + "

    " + droid.desc : droid.desc; + + $("#"+appName).show().siblings().hide(); if(oldDroid) oldDroid.removeClass("selected"); @@ -95,7 +80,41 @@ function buildCarousel() { a.appendChild(br); a.appendChild(span); appList.appendChild(a); + + + /* add the bulletins */ + var layout = droid.layout; + var div = document.createElement("div"); + var imgDiv = document.createElement("div"); + var descDiv = document.createElement("div"); + + div.setAttribute("id", x); + div.setAttribute("style", "display:none"); + imgDiv.setAttribute("class", "bulletinImg"); + descDiv.setAttribute("class", "bulletinDesc"); + + if (layout == "imgLeft") { + $(imgDiv).addClass("img-left"); + $(descDiv).addClass("desc-right"); + } else if (layout == "imgTop") { + $(imgDiv).addClass("img-top"); + $(descDiv).addClass("desc-bottom"); + } else if (layout == "imgRight") { + $(imgDiv).addClass("img-right"); + $(descDiv).addClass("desc-left"); + } + + imgDiv.innerHTML = ""; + descDiv.innerHTML = (droid.title != "") ? "

    " + droid.title + "

    " + droid.desc : droid.desc; + $(div).append(imgDiv); + $(div).append(descDiv); + + $("#carouselMain").append(div); + } + + + } // -- * slider * -- // diff --git a/tools/droiddoc/templates/assets/images/home/android_adc.png b/tools/droiddoc/templates/assets/images/home/android_adc.png new file mode 100644 index 0000000000000000000000000000000000000000..9fe7f8f6849b002b5d14d9dca23760cfebc4e7d8 GIT binary patch literal 1849 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 Qf1m_=yJLq+ZT}?y1y`ZzcmMzZ literal 0 HcmV?d00001 diff --git a/tools/droiddoc/templates/assets/images/home/bg_home_carousel_wheel.png b/tools/droiddoc/templates/assets/images/home/bg_home_carousel_wheel.png new file mode 100755 index 0000000000000000000000000000000000000000..aa224adc0f6a5b8b83d279d63cc6a642c28bf40c GIT binary patch literal 2041 zcmbW2dsGzn700)}5P?82Xf!IU!9v=iwYC_nMnuph5v$-)Q)?8El86N1;6Yr)BLOU} zL84&9q#7b(jRlX$Q;_#-7g%7I$IialU6$RQ*?I13c6N6<%Hf>!oc`5+X70T+_jkVE z&%JY|_|U=qJ}cI)V6j*}v7G357HbiQiQAShX0G*rscdC#YqDdGXD4L*H9IFUD}}Y^ zOh!^lP;7c)YD#=c;+fn`Udm1uYccE4fg>?CnjRL5-88Mh2|0$&&CMxICgtp`0z({D zn*>H&wA)2FX&3FH-2D=%48vt8rbST+3R~T@96_AS2@;7M!IXqqPGCxm0B}T(!kCpr z?G7b^C~!=H;!*^4yWK9AONOH|6j7Ni6iqvwP97kZqL>cHXEBVhQwkWyNJ@$!3Nx-i zQ85Ms8ZAXRW(b0&U8u#bLeU|q)MP>?4f;MnVxeik1PQfTrG>E4w9JBcj0&a@2q7K9 zX^Glyoq<5B)jFfoO9)gAnapOh)oxQFFot1nr_<%8l^8Z<1cznP5wS!JLo)_YgW-G$ zphi)?7_bl)fm$O_sb(-t07&hO2p6RWjT2g}%|VkiJ!3S8=JYBAH@j)4+l8A6lA-B# z%0WnLFlr12BMe(ehnBE9DOw7GVhHRN10aIxKxocl<;fKQ2%2o96oCmBJp~z+FvcKP zC=?)uY3B5L1L$@;Ns`nMxCTM=C=MW|88e|W=xK&Ogg6`ytqD>gkd{ErcG5=LO*X5_ z2pS=fA{`ow&1i%S1P)sW9gdnvn+%3$K*-^wtWF0`*`+3gCP@{J+pMGth5U6Tg+if7B$}9*n4FxP znwpxPo)(M6002lN5~)-wlgZ?AIYU6HRH_*AGc#(nTBFfuwc6R)S)ESDY^k0B!>~0P zK@fx>$Ye6XFpMAwilWS9aU3TIf|<3&VqvClv)Sx+JHwD+MNt&9b<7?z+sJtI&Pvy_ zSW9lkM(;UtQ36S)GZK!mIupN*juidkmrFQ5^hDPsKN5KcM=ta9ycQH0WL31D3+1k! zsDyvwB65eXx;!1EMcC?*0cX<84Pz}gI3`AI3IU>vGRStBz3(*9kpZZ`@Hv`e|{y4 zRlun|RTlcIs=2({e}ouALIR8YcsxsAp;>w}1;ZUC-u0m9Ebccaq<>6)novA@lIOvW zu1m|!{I&4fs4@QWS2bZC?ED&2cBYN(qd(Ylj>NS0DS8D#U zZC%x$$Eb}{cYN{(X9duwE0_4E{pMX^mG0hsxG`?v*^#>!UW_z+XM)P*277fQeE*&< zmgzsIHc~07&!f#YeN~dz&-H&dR*i&OG zK3OfuX|xE|iq2=Hca_$D+MI4FX786suSfpy$~9QJ@@Z3;Gbd!}-k+WxoIX0SPZZ$C z+5go#;pBzBq9eynuJSJ4C+b`A-ua;qzTD0gr;V%kt-j)2x$PZi%wVP*P1t&SUxqDd zFrsk%7wKKQxu9=tr)NOsvZiMH(qqA)MWyzPf{CU~1+SG#`SH8`$}11z`gR5Qn?K<+ zgb>1KQ-TcE_-@DYr;*Gm6Z%yv+Z28)YU%A9 zKitDnUM1nFH9dF2-t*pc9Fssb10@3BZD4CE-QE7P&BG`(VNvbR~(v(?A)OY?T*e5nWw6jWT?U3PkM q%L4(I+g()sHxF9xd)4c=tWxsq&f`~&dCb3@6&rIfx;E-`{(k_^ap8vm literal 0 HcmV?d00001 diff --git a/tools/droiddoc/templates/assets/images/home/io-large.png b/tools/droiddoc/templates/assets/images/home/io-large.png new file mode 100755 index 0000000000000000000000000000000000000000..986053c65a9940f6988d10d2550bbe93327c31e3 GIT binary patch literal 5522 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 UvVgzveEK4?M2tk~UR$Nu82%!>3LLww_ zCe+aot%RaT#1$bC#96B7wx!i^u0Lbn%zK}CzrUAi1G%rNd`cMr09Eh9uMr{B-$K`wh!?|KlKhr0LDHcFvMAKkhdSg4&m*C3F9LS06<~Z#>&CmJE}N2 zzY!9U3v$5@$vzr+;NEpgvS_@Z7v=h{X?oC99p@Bnr(~gc`o0g|#4Gb3WVT~yzAKs% zm02@7`N<1YgnCgPoK&F;P4$VPgMA6co*A%cT0$;6EQM+0j+0C*h(_lOAEny`6Y+Fj zMT1bsDP=%9>l?=?V0MHiS7w*Apc2cF@g+`S1^TYosgElLZfTiC%`Rw)8SIrUDle7X zBt;3Zq}u^bSu?&Mmt? zr8^t$Uq-vk=VdP!=u@X4aEJ}^1GHmJOg z-tq3iNkklDWPAaW@%kB|{%?jSdJ|eBEqi@{rS;@rAQom%D)zp`m%WmP14oc_5 zWAn-R9B#KXFrjR0`g3!a#6Fl*$>|k{CJU=OJtC>_7+NiNKq~+AG`+gBe?rSKd3Ser zzsLZ!w~1o39mIaG{;vhp7A3p{fPEyenXyBpY*{i9BC=Czzv8N z5Io0L&8OClm;n7`FVf;p{@||Cb~$F86zVkpTs}?=Wm4vqDe}H^>)6jL`-=5A*7VsF z2f~J`+Keh*hnulAgp?5=?{+TGz6Y_cTS!#ztf^F@r+qfXKagfBkbuqy;n{PfBa;d z{`h*{aB;&r_E;PeE!CZDmHK}`9lQN&t-uHbE7e}S0km9Q*(CDx3&qA(+{T8M_Tyq( zWL25+nTr0EVl{zxRJOPg?zT^cbL3Yn0a}~z8~}?3ZB%kJ!BnSuTf2a1AijRc4^X)a zIu7==rCp-ZoBA1I<+v?PeVo$3?>X~r>b91Kl*ve^vn5{+=cy1JRHjblTu(lV+`vR> zUhiRuw-4DxFbs=%fjcM<%Us=WmoN`3t6(5xSs)O!;WzhJntPTfIc>G$jOYOI%}^kK zQv*@)ou<0#GyLrhtyVmRr*Kn0cQ8fi=jpLO_&)#|oMb9K3|w1MUE-Bp>=HWfzxL6K zs|AT2h)g#Se`4r8pOs#mzkPYUE1bW3c@;`uKVZLRFYNUZU^TSmQ|(;rLy&3>?KO`5 z%X)j$(Wggt@IIY|!$`#3o%owhXn3l*o8m94=!?(+p&gc7@4p*4Lrzwy|Evs3s z3zR4P;xCBq?{ZHlU2!;Xc|qf