Changeset 233
- Timestamp:
- 10/24/11 18:22:18 (13 years ago)
- Location:
- ether_megapoli/trunk/web/resources
- Files:
-
- 3 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
ether_megapoli/trunk/web/resources/css/megapoliApple.css
r230 r233 62 62 } 63 63 64 .containerSmallLogoEther { 65 float: right; 66 margin-right: 15px; 67 } 68 64 69 .containerMegapoli { 65 70 -moz-border-radius: 4px 4px 4px 4px; … … 184 189 /** ************************ SLIDES ********************** **/ 185 190 /** ***************************************************** **/ 186 .container LeftSlides{191 .containerSlide { 187 192 position: absolute; 188 193 top: 300px; 189 }190 191 #slideCredits, #slideMentions, #slideInfos {192 -moz-border-radius: 4px 4px 0 0;193 -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);194 -webkit-border-radius: 4px 4px 0 0;195 -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);196 194 } 197 195 … … 204 202 -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); 205 203 padding: 10px; 204 margin-right: 1px; 206 205 display: none; 207 } 208 209 .containerSlides { 210 float: left; 211 position: relative; 212 top: 20px; 213 margin-left: 1px; 214 } 215 216 #buttonSlideCredits { 217 background-image: url("../icons/man_credits.gif"); 218 width: 10px; 219 height: 10px; 220 } 221 222 /*#buttonSlideMentions {*/ 223 /*background-image: url("../images/elements/button_middle_3.png");*/ 224 /*}*/ 225 226 /*#buttonSlideHelp {*/ 227 /*background-image: url("../images/elements/button_middle_3.png");*/ 228 /*}*/ 206 background-color: white; 207 } 208 209 .containerSlideButton { 210 float: left; 211 -moz-border-radius: 4px; 212 -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); 213 -webkit-border-radius: 4px; 214 -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); 215 } 216 217 .containerSlideButtonMentions { 218 margin-top: 51px; 219 } 220 221 .containerSlideButtonInfos { 222 margin-top: 102px; 223 } 224 225 #creditSlide { 226 z-index: 2; 227 } 228 229 #mentionSlide { 230 z-index: 1; 231 } 232 233 #infoSlide { 234 z-index: 0; 235 } 229 236 230 237 /** ***************************************************** **/ … … 249 256 -webkit-border-radius: 4px; 250 257 } 251 252 /** ***************************************************** **/253 /** ************************ MENU ********************** **/254 /** ***************************************************** **/255 256 /*#verticalMenu {*/257 /*width: 644px;*/258 /*list-style-type: none;*/259 /*margin: 0;*/260 /*padding: 0;*/261 /*border: 0;*/262 /*position: absolute;*/263 /*top: 0;*/264 /*left: 0;*/265 /*}*/266 267 /*#verticalMenu li {*/268 /*float: left;*/269 /*margin: 0;*/270 /*padding: 0;*/271 /*border: 0;*/272 /*}*/273 274 /*#verticalMenu .subMenu {*/275 /*display: none;*/276 /*list-style-type: none;*/277 /*margin: 0;*/278 /*padding: 0;*/279 /*border: 0;*/280 /*}*/281 282 /*#verticalMenu .subMenu li {*/283 /*float: none;*/284 /*margin: 0;*/285 /*padding: 0;*/286 /*border: 0;*/287 /*float: none;*/288 /*width: 149px;*/289 /*border-top: 1px solid transparent;*/290 /*border-right: 1px solid transparent;*/291 /*}*/292 293 /*#verticalMenu li a:link, #verticalMenu li a:visited {*/294 /*display: block;*/295 /*height: 1%;*/296 /*color: #FFF;*/297 /*background: #3B4E77;*/298 /*margin: 0;*/299 /*padding: 4px 8px;*/300 /*border-right: 1px solid #fff;*/301 /*text-decoration: none;*/302 /*}*/303 304 /*#verticalMenu li a:hover {*/305 /*background-color: #F2462E;*/306 /*}*/307 308 /*#verticalMenu li a:active {*/309 /*background-color: #5F879D;*/310 /*}*/311 312 /*#verticalMenu .subMenu li a:link, #verticalMenu .subMenu li a:visited {*/313 /*display: block;*/314 /*color: #FFF;*/315 /*margin: 0;*/316 /*border: 0;*/317 /*text-decoration: none;*/318 /*background: transparent url("fondTR.png") repeat;*/319 /*}*/320 321 /*#verticalMenu .subMenu li a:hover {*/322 /*background-image: none;*/323 /*background-color: #F2462E;*/324 /*}*/325 326 /*#verticalMenu li:hover > .subMenu { display: block; }*/327 258 328 259 /** ***************************************************** **/ -
ether_megapoli/trunk/web/resources/js/classesForJQuery/Slide.js
r172 r233 1 1 //******************************************************** 2 // Class S elect3 // Display a S elect2 // Class Slide 3 // Display a Slide 4 4 // 5 // obj objParam: {id, [parent], [specificClass], [maxOptionSize], [isDisable], [isDisplayed]} 6 // int objParam.id: id of the dom element 7 // [dom objParam.parent]: in which dom element to draw the button 8 // [str objParam.specificClass] 9 // [int objParam.maxOptionSize]: define a max number of line to display 10 // [int objParam.isDisable]: is the Select disable by default? 11 // [int objParam.isDisplayed]: is the Select opened by default? 12 // 13 // Public functions 14 // Select.getValue 15 // Select.getName 16 // Select.disable 17 // Select.enable 18 // Select.add 19 // Select.remove 20 // Select.clear 21 // Select.select 22 // Select.selectFirst 5 // use jQuery 23 6 //******************************************************** 24 7 25 var S elect= Class.create( {8 var Slide = Class.create( { 26 9 27 10 // Public functions ******************************************************** … … 30 13 { 31 14 // Param 32 this.id = objectParameter.id;33 15 this.parent = objectParameter.parent ? objectParameter.parent : document.body; 34 this.isDisplayed = (true == objectParameter.isDisplayed) ? true : false; 35 this.isDisable = (true == objectParameter.isDisable) ? true : false; 36 this.maxOptionSize = objectParameter.maxOptionSize ? objectParameter.maxOptionSize : 0; 37 this.indexOption = 0; 38 this.isHover = false; 39 this.arrayOptions = $A(); 40 this.className = objectParameter.className ? "select_container " + objectParameter.className : "select_container"; 41 this.classNameOption = objectParameter.classNameOption ? "select_choicelist " + objectParameter.classNameOption : "select_choicelist"; 16 this.contentId = objectParameter.contentId; 17 this.buttonId = objectParameter.buttonId; 18 this.specificContentClass = objectParameter.specificContentClass ? objectParameter.specificContentClass : false; 19 this.specificButtonClass = objectParameter.specificButtonClass ? objectParameter.specificButtonClass : false; 20 this.timeToSlide = objectParameter.timeToSlide ? objectParameter.timeToSlide : 500; 21 this.contentSlide = objectParameter.contentSlide ? objectParameter.contentSlide : false; 22 this.contentButton = objectParameter.contentButton; 23 this.isIndexToChange = objectParameter.isIndexToChange ? objectParameter.isIndexToChange : false; 24 this.zIndex = this.parent.css( "z-index" ); 42 25 43 // Select div 44 this.divSelect = document.createElement( "div" ); 45 this.divSelect.id = this.id; 46 this.divSelect.className = this.className; 26 // Content div 27 this.divSlideContent = $( document.createElement( "div" ) ); 28 this.divSlideContent.attr( {id:this.contentId, class:"containerSlideContent"} ); 29 if( this.specificContentClass ) 30 this.divSlideContent.addClass( this.specificContentClass ); 31 if( this.contentId ) 32 this.divSlideContent.html( this.contentSlide ); 33 this.parent.append( this.divSlideContent ); 47 34 48 this.divSelectLeft = document.createElement( "div" ); 49 this.divSelectLeft.className = "select_selectLeft"; 50 this.divSelect.appendChild( this.divSelectLeft ); 51 52 this.divSelectMiddle = document.createElement( "div" ); 53 this.divSelectMiddle.className = "select_selectMiddle"; 54 this.divSelect.appendChild( this.divSelectMiddle ); 55 56 this.divSelectRight = document.createElement( "div" ); 57 this.divSelectRight.className = "select_selectRight"; 58 this.divSelect.appendChild( this.divSelectRight ); 59 60 this.parent.appendChild( this.divSelect ); 61 62 // Options div 63 this.divOption = document.createElement( "div" ); 64 this.divSelect.id = this.id; 65 this.divOption.className = this.classNameOption; 66 this.parent.appendChild( this.divOption ); 67 68 Event.observe( this.divSelect, "mouseup", this.toggleOption.bindAsEventListener( this ) ); 69 Event.observe( document.body, "mousedown", this.hideOption.bindAsEventListener( this ) ); 70 Event.observe( this.divSelect, 'mouseover', this.onMouseHover.bindAsEventListener( this ) ); 71 Event.observe( this.divSelect, 'mouseout', this.onMouseOut.bindAsEventListener( this ) ); 72 Event.observe( this.divOption, 'mouseover', this.onMouseHover.bindAsEventListener( this ) ); 73 Event.observe( this.divOption, 'mouseout', this.onMouseOut.bindAsEventListener( this ) ); 74 75 if( this.isDisplayed ) 76 this.showOption(); 77 78 if( this.isDisable ) 79 this.hideOption(); 35 // Button div 36 this.divSlideButton = $( document.createElement( "div" ) ); 37 this.divSlideButton.attr( {id:this.buttonId} ); 38 this.divSlideButton.attr( {id:this.buttonId, class:"containerSlideButton"} ); 39 if( this.specificButtonClass ) 40 this.divSlideButton.addClass( this.specificButtonClass ); 41 this.divSlideButton.append( this.contentButton ); 42 this.divSlideButton.bind( "click", jQuery.proxy( this.onClickButton, this ) ); 43 this.parent.append( this.divSlideButton ); 80 44 }, 81 45 82 get Name: function()46 getContent: function() 83 47 { 84 return this. itemName;48 return this.divSlideContent.html(); 85 49 }, 86 50 87 getValue: function()51 setContent: function( newContent ) 88 52 { 89 return this.itemValue;53 this.divSlideContent.html( newContent ); 90 54 }, 91 55 92 getSize: function()56 isContentVisible: function() 93 57 { 94 return this.arrayOptions.size(); 95 }, 96 97 // private 98 toggleOption:function() 99 { 100 if( this.isDisplayed ) 101 { 102 this.isHover = false; 103 this.hideOption(); 104 } 105 else 106 this.showOption(); 107 }, 108 109 // private 110 showOption:function() 111 { 112 if( this.isDisable ) 113 return; 114 115 this.isDisplayed = true; 116 this.displayOptions(); 117 this.divOption.style.display = "block"; 118 }, 119 120 // private 121 hideOption: function() 122 { 123 if( this.isHover ) 124 return; 125 126 this.isDisplayed = false; 127 this.divOption.style.display = "none"; 58 return (this.divSlideContent.css( "display" ) == "block"); 128 59 }, 129 60 130 61 // public 131 disable: function()62 onClickButton: function() 132 63 { 133 this.isDisable = true; 134 this.divSelect.addClassName( "disable" ); 135 this.hideOption(); 136 }, 64 if( this.isIndexToChange ) 65 if( this.isContentVisible() ) 66 this.parent.css( "z-index", this.zIndex ); 67 else 68 this.parent.css( "z-index", 100 ); 137 69 138 // public 139 enable: function() 140 { 141 this.isDisable = false; 142 this.divSelect.removeClassName( "disable" ); 143 }, 144 145 // public 146 /** 147 * This method indicates if the itemValue is already in the array 148 */ 149 content: function( itemValue ) 150 { 151 var resu = false; 152 this.arrayOptions.each( function( divOption ) 153 { 154 if( divOption.itemValue == itemValue ) 155 { 156 resu = true; 157 throw $break; 158 } 159 }.bind( this ) ); 160 return resu; 161 }, 162 163 // public 164 add: function( itemValue, itemName, callback ) 165 { 166 var divOption = document.createElement( "div" ); 167 divOption.className = "select_item_middle"; 168 divOption.innerHTML = itemName; 169 divOption.itemName = itemName; 170 divOption.itemValue = itemValue; 171 divOption.callback = callback; 172 this.divOption.appendChild( divOption ); 173 174 Event.observe( divOption, 'click', this.onOptionClick.bind( this, divOption ) ); 175 176 this.arrayOptions.push( divOption ); 177 }, 178 179 // public 180 remove: function( itemValue ) 181 { 182 this.arrayOptions.each( function( divOption ) 183 { 184 if( divOption.itemValue == itemValue ) 185 { 186 this.divOption.removeChild( divOption ); 187 this.arrayOptions = this.arrayOptions.without( divOption ); 188 throw $break; 189 } 190 }.bind( this ) ); 191 }, 192 193 // public 194 clear: function() 195 { 196 this.arrayOptions.each( function( divOption ) 197 { 198 this.divOption.removeChild( divOption ); 199 this.arrayOptions = this.arrayOptions.without( divOption ); 200 }.bind( this ) ); 201 }, 202 203 // public 204 /** 205 * This method changes only the content of the divSelect without add the item to the array 206 * @param itemValue 207 * @param itemName 208 * @param callback 209 */ 210 changeSelectMiddle: function( itemValue, itemName, callback ) 211 { 212 this.add( itemValue, itemName, callback ); 213 this.select( itemValue, callback ); 214 this.remove( itemValue ); 215 }, 216 217 // public 218 // @itemValue : code of the selected line 219 // @ execute : true / false. Execute the callback. 220 select: function( itemValue, execute ) 221 { 222 this.arrayOptions.each( function( divOption ) 223 { 224 if( divOption.itemValue == itemValue ) 225 { 226 this.selectOption( divOption ); 227 if( execute && undefined != divOption.callback ) 228 divOption.callback( divOption.itemValue ); 229 throw $break; 230 } 231 }.bind( this ) ); 232 }, 233 234 // public 235 // @ execute : true / false. Execute the callback. 236 selectFirst: function( execute ) 237 { 238 var divOption = this.arrayOptions.first(); 239 if( undefined == divOption ) 240 return; 241 242 this.selectOption( divOption ); 243 if( execute && undefined != divOption.callback ) 244 divOption.callback( divOption.itemValue ); 245 }, 246 247 // private 248 selectOption: function( divOption ) 249 { 250 this.itemName = divOption.itemName; 251 this.itemValue = divOption.itemValue; 252 this.divSelectMiddle.innerHTML = divOption.itemName; 253 }, 254 255 // private 256 onOptionClick: function( divOption ) 257 { 258 this.isHover = false; 259 this.hideOption(); 260 this.select( divOption.itemValue, true ); 261 if( undefined != divOption.callback ) 262 divOption.callback( divOption.itemValue ); 263 }, 264 265 // private 266 onMouseHover: function() 267 { 268 this.isHover = true; 269 }, 270 271 // private 272 onMouseOut: function() 273 { 274 this.isHover = false; 275 }, 276 277 // private 278 displayOptions: function() 279 { 280 var fromOption = this.indexOption; 281 var toOption = this.indexOption + this.maxOptionSize - 1; 282 for( var i = 0; i < this.arrayOptions.size(); i++ ) 283 { 284 if( 0 == this.maxOptionSize ) 285 this.arrayOptions[i].style.display = ""; 286 else if( i >= fromOption && i <= toOption ) 287 this.arrayOptions[i].style.display = ""; 288 else 289 this.arrayOptions[i].style.display = "none"; 290 } 70 this.divSlideContent.animate( {width:"toggle"}, this.timeToSlide ); 291 71 } 292 72 } ); -
ether_megapoli/trunk/web/resources/jsp/apple_etherHead.jsp
r230 r233 9 9 this.containerTitle = $( "#title" ); 10 10 this.containerTools = $( "#tools" ); 11 this.containerSlides = $( "#slides" );12 this.containerSlide = $( "#slideContent" );13 11 14 12 /** *********** VARIABLES *********** **/ … … 18 16 this.relativePageUri = "<%=Context.getRelativePath( request )%>?<%=request.getQueryString()%>"; 19 17 this.jSONUser = <%=Context.getUser( request )%> ? <%=Context.getUser( request )%> : false; 20 this. isContainerSlideDisplayed = this.containerSlide.attr( "style" ) ? (this.containerSlide.attr( "style" ) == "display: block;" ) : false;18 this.screenWidthLimit = 1336; 21 19 22 20 /** ************ CREATE ************ **/ 23 21 this.createTitleTools(); 24 22 this.createLeftSlides(); 23 this.updateLogoEther(); 25 24 }, 26 25 … … 40 39 var languageButton = new ComplexButton( {value:valueLanguage, parent:this.containerTools, id:"button_language", onClick:jQuery.proxy( this.onClickLanguage, this )} ); 41 40 var homeButton = new ComplexButton( {value:interfaceTexts["app.home"], parent:this.containerTools, id:"button_home", onClick:this.onClickHome} ); 41 42 var divSmallLogoEther = $( document.createElement( "div" ) ); 43 divSmallLogoEther.attr( {id:"smallLogoEther", class:"containerSmallLogoEther"} ); 44 divSmallLogoEther.append( '<a href="http://ether.ipsl.jussieu.fr" target="help"><img src="resources/images/logo_Ether.jpg" width="40px" height="40px"/></a>' ); 45 this.containerTools.append( divSmallLogoEther ); 42 46 }, 43 47 … … 108 112 createLeftSlides: function() 109 113 { 110 var divSlideCredits = $( document.createElement( "div" ) ); 111 divSlideCredits.attr( {id:"slideCredits"} ); 112 divSlideCredits.append( "<img src='resources/icons/man_credits.gif' width='50px' height='50px'/><br/>" ); 113 divSlideCredits.bind( "click", jQuery.proxy( this.onClickSlideCredits, this ) ); 114 this.containerSlides.append( divSlideCredits ); 114 var divSlideCredits = new Slide( { contentId:"slideContentCredits", buttonId: "slideCredits", parent:$( "#creditSlide" ), isIndexToChange:true, 115 contentButton:"<img src='resources/icons/man_credits.gif' width='50px' height='50px'/><br/>" , contentSlide:"CREDDDDIIITS"} ); 115 116 116 var divSlideMentions = $( document.createElement( "div" ) ); 117 divSlideMentions.attr( {id:"slideMentions"} ); 118 divSlideMentions.append( "<img src='resources/icons/man_mentions_2.png' width='50px' height='50px'/><br/>" ); 119 divSlideMentions.bind( "click", jQuery.proxy( this.onClickSlideMentions, this ) ); 120 this.containerSlides.append( divSlideMentions ); 117 var divSlideMentions = new Slide( { contentId:"slideContentMentions", buttonId: "slideMentions", parent:$( "#mentionSlide" ),specificButtonClass:"containerSlideButtonMentions", isIndexToChange:true, 118 contentButton:"<img src='resources/icons/man_mentions_2.png' width='50px' height='50px'/><br/>", contentSlide:"MENTIIIOOONNSS"} ); 121 119 122 var divSlideInfos = $( document.createElement( "div" ) ); 123 divSlideInfos.attr( {id:"slideInfos"} ); 124 divSlideInfos.append( "<img src='resources/icons/man_info.gif' width='50px' height='50px'/>" ); 125 divSlideInfos.bind( "click", jQuery.proxy( this.onClickSlideInfos, this ) ); 126 this.containerSlides.append( divSlideInfos ); 120 var divSlideInfos = new Slide( { contentId:"slideContentInfos", buttonId: "slideInfos", parent:$( "#infoSlide" ), specificButtonClass:"containerSlideButtonInfos", isIndexToChange:true, 121 contentButton:"<img src='resources/icons/man_info.gif' width='50px' height='50px'/>", contentSlide:"IINNFFFOOOOSSS"} ); 127 122 }, 128 123 … … 151 146 }, 152 147 153 onClickSlideCredits: function() 148 /** 149 * This method display a small Ether logo if the screen is too small to contain the big one 150 */ 151 updateLogoEther: function() 154 152 { 155 this.onClickSlide( $( "#slideMentions" ), $( "#slideInfos" ), "CREDITS" ); 156 }, 157 158 onClickSlideMentions: function() 159 { 160 this.onClickSlide( $( "#slideCredits" ), $( "#slideInfos" ), "MENTIONS LEGALES" ); 161 }, 162 163 onClickSlideInfos: function() 164 { 165 this.onClickSlide( $( "#slideCredits" ), $( "#slideMentions" ), "INFOS" ); 166 }, 167 168 onClickSlide: function( unClickedSlide1, unClickedSlide2, slideContent ) 169 { 170 this.isContainerSlideDisplayed = ("display: block;" == this.containerSlide.attr( "style" ) ); 171 if( this.isContainerSlideDisplayed ) 153 if( this.screenWidthLimit > innerWidth ) 172 154 { 173 this.containerSlide.animate( {width:"toggle"}, 500);174 unClickedSlide1.delay( 500 ).animate( {width:"toggle"}, 500);175 unClickedSlide2.delay( 500 ).animate( {width:"toggle"}, 500);155 $( "#logoEther" ).hide(); 156 $( "#linkLogoEther" ).hide(); 157 $( "#smallLogoEther" ).show(); 176 158 } 177 159 else 178 160 { 179 unClickedSlide1.animate( {width:"toggle"}, 500 ); 180 unClickedSlide2.animate( {width:"toggle"}, 500 ); 181 this.containerSlide.delay( 500 ).animate( {width:"toggle"}, 500 ); 182 $( "#slideContent" ).html( slideContent ); 161 $( "#logoEther" ).show(); 162 $( "#linkLogoEther" ).show(); 163 $( "#smallLogoEther" ).hide(); 183 164 } 184 165 } -
ether_megapoli/trunk/web/resources/templates/appleTemplate.jsp
r230 r233 28 28 <ether:htmlJs jsFile="etherHelper"/> 29 29 <ether:htmlJs jsFile="classesForJQuery/ComplexButton"/> 30 <ether:htmlJs jsFile="classesForJQuery/Slide"/> 30 31 <ether:htmlJs jsFile="apycom.com-4-steel-blue/menu"/> 31 32 <ether:htmlJs jsFile="TwitterLogin/javascripts/jquery.tipsy"/> … … 53 54 <html:link href="http://ether.ipsl.jussieu.fr" target="help"><img src="resources/images/logo_Ether.jpg" width="80px" height="80px"/></html:link> 54 55 </div> 55 56 56 57 57 <%-- ************************************************************************************************************** --%> … … 175 175 <%-- **************************************************** SLIDES ************************************************** --%> 176 176 <%-- ************************************************************************************************************** --%> 177 <div id="leftSlides" class="containerLeftSlides"> 178 <div id="slideContent" class="containerSlideContent"></div> 179 <div id="slides" class="containerSlides"></div> 180 </div> 177 <div id="creditSlide" class="containerSlide"></div> 178 <div id="mentionSlide" class="containerSlide"></div> 179 <div id="infoSlide" class="containerSlide"></div> 181 180 182 181 <script type="text/javascript">
Note: See TracChangeset
for help on using the changeset viewer.