Changeset 306
- Timestamp:
- 12/15/11 14:29:01 (13 years ago)
- Location:
- ether_megapoli/trunk
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
ether_megapoli/trunk/common/Common.iml
r230 r306 22 22 </library> 23 23 </orderEntry> 24 <orderEntry type="module" module-name="Domain" />25 24 </component> 26 25 </module> -
ether_megapoli/trunk/service/implementation/com/medias/megapoli/struts/actions/LogonAction.java
r283 r306 46 46 Personne pers = annu.getPersonne (login, pwd); 47 47 if (pers == null) 48 errors.add (ActionErrors.GLOBAL_MESSAGE, new ActionError (" errors.logon.notFound",Context.getWebmaster(request)));48 errors.add (ActionErrors.GLOBAL_MESSAGE, new ActionError ("login.error.notFound",Context.getWebmaster(request))); 49 49 else { 50 50 request.getSession().setAttribute( "SES_USER", pers); … … 56 56 System.out.println ("exception_logonAction"); 57 57 e.printStackTrace (); 58 errors.add (ActionErrors.GLOBAL_MESSAGE, new ActionError (" errors.logon.failed",Context.getWebmaster(request)));58 errors.add (ActionErrors.GLOBAL_MESSAGE, new ActionError ("login.error.failed",Context.getWebmaster(request))); 59 59 } 60 60 -
ether_megapoli/trunk/service/implementation/com/medias/megapoli/struts/forms/DatasForm.java
r304 r306 263 263 if( person == null ) 264 264 { 265 errors.add( "dateFin", new ActionError( " errors.access.login" ) );265 errors.add( "dateFin", new ActionError( "login.error.unknown" ) ); 266 266 return errors; 267 267 } -
ether_megapoli/trunk/web/WEB-INF/validation.xml
r270 r306 23 23 property="login" 24 24 depends="required"> 25 <arg0 key=" errors.logon.login"/>25 <arg0 key="login.error.login"/> 26 26 </field> 27 27 <field 28 28 property="password" 29 29 depends="required"> 30 <arg0 key=" errors.logon.password"/>30 <arg0 key="login.error.password"/> 31 31 </field> 32 32 </form> -
ether_megapoli/trunk/web/backoffice/user.jsp
r287 r306 173 173 <td> 174 174 <button id="add_or_modify_user" class="small positive"></button> 175 <button id="init" class="small positive"><bean:message key=" data.visualization.button.init"/></button>175 <button id="init" class="small positive"><bean:message key="visualization.button.init"/></button> 176 176 </td> 177 177 </tr> … … 212 212 interfaceTexts["<%=UserRole.TECHNICIEN%>"] = "<bean:message key="bo.user.technician"/>"; 213 213 214 interfaceTexts["<%=WebException.WebCode.USER_ALREADY_EXISTS%>"] = "<bean:message key=" app.dataProtocol.alreadyExist"/>";214 interfaceTexts["<%=WebException.WebCode.USER_ALREADY_EXISTS%>"] = "<bean:message key="login.dataProtocol.alreadyExist"/>"; 215 215 interfaceTexts["<%=WebException.WebCode.ERROR_EMAIL_CANNOT_BE_SEND%>"] = "<bean:message key="bo.user.emailNotSend"/>"; 216 216 -
ether_megapoli/trunk/web/data/parameter.jsp
r298 r306 41 41 <script type="text/javascript"> 42 42 var interfaceTexts = $A( "" ); 43 interfaceTexts[" data.visualization.noParameter"] = '<bean:message key="data.visualization.noParameter"/>';43 interfaceTexts["visualization.noParameter"] = '<bean:message key="visualization.noParameter"/>'; 44 44 interfaceTexts["data.access.param2"] = '<bean:message key="data.access.param2" arg0=""/>'; 45 45 interfaceTexts["data.access.param2.s"] = '<bean:message key="data.access.param2" arg0="s"/>'; … … 78 78 this.parameters.addOpenListener( jQuery.proxy( this.onSelectParameter, this ) ); 79 79 this.loadingParameters.hide(); 80 this.parameters.displayByCategory( this.containerParameters, "NoParameter", interfaceTexts[" data.visualization.noParameter"], "parameterElement" );80 this.parameters.displayByCategory( this.containerParameters, "NoParameter", interfaceTexts["visualization.noParameter"], "parameterElement" ); 81 81 }, 82 82 -
ether_megapoli/trunk/web/data/plateform.jsp
r303 r306 42 42 <script type="text/javascript"> 43 43 var interfaceTexts = $A( "" ); 44 interfaceTexts[" data.visualization.noPlateform"] = '<bean:message key="data.visualization.noPlateform"/>';44 interfaceTexts["visualization.noPlateform"] = '<bean:message key="visualization.noPlateform"/>'; 45 45 interfaceTexts["data.access.plat2"] = '<bean:message key="data.access.plat2" arg0=""/>'; 46 46 interfaceTexts["data.access.plat2.s"] = '<bean:message key="data.access.plat2" arg0="s"/>'; … … 145 145 { 146 146 var divNoPlateform = $( document.createElement( "div" ) ); 147 divNoPlateform.html( " " + interfaceTexts[" data.visualization.noPlateform"] );147 divNoPlateform.html( " " + interfaceTexts["visualization.noPlateform"] ); 148 148 this.containerMobilePlateforms.append( divNoPlateform ); 149 149 } … … 153 153 { 154 154 var divNoPlateform = $( document.createElement( "div" ) ); 155 divNoPlateform.html( " " + interfaceTexts[" data.visualization.noPlateform"] );155 divNoPlateform.html( " " + interfaceTexts["visualization.noPlateform"] ); 156 156 this.containerFixePlateforms.append( divNoPlateform ); 157 157 } -
ether_megapoli/trunk/web/project/errors.jsp
r247 r306 3 3 <%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html"%> 4 4 <%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean"%> 5 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 5 6 6 7 <tiles:insert page="/resources/templates/templateMegapoli.jsp" flush="true"> … … 18 19 <tiles:put name="body" type="string"> 19 20 <html:errors/> 21 22 <c:if test="${not empty errors}"> 23 <BR/><BR/><BR/><BR/> 24 <div id="errors"><bean:message key="${errors}"/></div> 25 </c:if> 26 20 27 </tiles:put> 21 28 </tiles:insert> -
ether_megapoli/trunk/web/project/login.jsp
r281 r306 10 10 11 11 12 <tiles:put name="title" type="string"><bean:message key="app.title"/> - <bean:message key=" data.authentification"/></tiles:put>12 <tiles:put name="title" type="string"><bean:message key="app.title"/> - <bean:message key="login.authentification"/></tiles:put> 13 13 <tiles:put name="nav" type="string"> 14 14 <html:link page="/index.jsp"><bean:message key="app.home"/></html:link> > 15 15 <html:link page="/data?methodName=viewDataResume"><bean:message key="app.data"/></html:link> > 16 <html:link page="/project?methodName=viewLogin"><bean:message key=" data.authentification"/></html:link>16 <html:link page="/project?methodName=viewLogin"><bean:message key="login.authentification"/></html:link> 17 17 </tiles:put> 18 18 19 19 <%--****************** CONTENT ****************** --%> 20 <tiles:put name="bodytitle" type="string"><bean:message key=" data.authentification"/></tiles:put>20 <tiles:put name="bodytitle" type="string"><bean:message key="login.authentification"/></tiles:put> 21 21 22 22 <tiles:put name="body" type="string"> 23 <bean:message key=" data.authentification.intro"/>23 <bean:message key="login.intro"/> 24 24 25 25 <script type="text/javascript"> 26 26 window.onload = function() 27 27 { 28 getLoginModule().showLogin( "<bean:message key=" data.authentification.text"/>" );28 getLoginModule().showLogin( "<bean:message key="login.text"/>" ); 29 29 } 30 30 </script> -
ether_megapoli/trunk/web/resources/js/classesForJQuery/LoginButton.js
r290 r306 24 24 // Texts 25 25 this.connexionText = param.connexionText ? param.connexionText : loginTexts["app.connexion"]; 26 this.loginText = param.loginText ? param.loginText : loginTexts[" data.authentification.login"];27 this.pwdText = param.pwdText ? param.pwdText : loginTexts[" data.authentification.password"];28 this.submitText = param.submitText ? param.submitText : loginTexts[" data.authentification.sign"];29 this.forgotPText = param.forgotPText ? param.forgotPText : loginTexts[" data.authentification.pwdForget"];30 this.forgotUNPHelpText = param.forgotUNPHelpText ? param.forgotUNPHelpText : loginTexts[" data.authentification.loginForget.help"];31 this.forgotUNPText = param.forgotUNPText ? param.forgotUNPText : loginTexts[" data.authentification.loginForget"];32 this.inscriptionText = param.inscriptionText ? param.inscriptionText : loginTexts[" data.authentification.inscription"];26 this.loginText = param.loginText ? param.loginText : loginTexts["login"]; 27 this.pwdText = param.pwdText ? param.pwdText : loginTexts["login.password"]; 28 this.submitText = param.submitText ? param.submitText : loginTexts["login.sign"]; 29 this.forgotPText = param.forgotPText ? param.forgotPText : loginTexts["login.pwdForget"]; 30 this.forgotUNPHelpText = param.forgotUNPHelpText ? param.forgotUNPHelpText : loginTexts["loginForget.help"]; 31 this.forgotUNPText = param.forgotUNPText ? param.forgotUNPText : loginTexts["loginForget"]; 32 this.inscriptionText = param.inscriptionText ? param.inscriptionText : loginTexts["login.inscription"]; 33 33 this.errorText = param.errorText ? param.errorText : loginTexts[this.errors]; 34 34 }, -
ether_megapoli/trunk/web/resources/js/classesForJQuery/etherHelper.js
r290 r306 49 49 { 50 50 if( !getJSONUser() ) 51 getLoginModule().showLogin( loginTexts[" data.authentification.text"] );51 getLoginModule().showLogin( loginTexts["login.text"] ); 52 52 else 53 53 document.location.href = getPath() + href; -
ether_megapoli/trunk/web/resources/jsp/megapoliHead.jsp
r290 r306 151 151 .dialog( { 152 152 autoOpen: false, 153 title: loginTexts[" data.authentification.inscription"],153 title: loginTexts["login.inscription"], 154 154 height: 700, 155 155 width: 600 … … 196 196 if( '' == $( "#lastName" ).val() || '' == $( "#email" ).val() || '' == $( "#password" ).val() ) 197 197 { 198 showErrorAccount( null, templateTexts[" app.dataProtocolFields"] );198 showErrorAccount( null, templateTexts["login.dataProtocolFields"] ); 199 199 return; 200 200 } … … 203 203 createAccount(); 204 204 else 205 showErrorAccount( null, templateTexts[" app.dataProtocolAccept"] );205 showErrorAccount( null, templateTexts["login.dataProtocolAccept"] ); 206 206 } 207 207 … … 221 221 $( "#infosAccount" ).removeClass( "containerErrors" ); 222 222 $( "#infosAccount" ).addClass( "containerInfos" ); 223 $( "#infosAccount" ).html( templateTexts[" app.dataProtocol.account"] );223 $( "#infosAccount" ).html( templateTexts["login.dataProtocol.account"] ); 224 224 $( "#infosAccount" ).show(); 225 225 } -
ether_megapoli/trunk/web/resources/templates/template.jsp
r299 r306 198 198 <li><br/> 199 199 <html:link page="/visualization?methodName=view"> 200 <bean:message key=" all.visualization"/>200 <bean:message key="visualization"/> 201 201 </html:link> 202 202 </li> 203 203 <li> > 204 204 <html:link page="/visualization?methodName=viewParametersByPlateform"> 205 <bean:message key=" data.visualization"/>205 <bean:message key="visualization"/> 206 206 </html:link> 207 207 </li> -
ether_megapoli/trunk/web/resources/templates/templateBackoffice.jsp
r305 r306 108 108 var loginTexts = $A( "" ); 109 109 loginTexts["app.connexion"] = '<bean:message key="app.connexion"/>'; 110 loginTexts[" data.authentification.login"] = '<bean:message key="data.authentification.login"/>';111 loginTexts[" data.authentification.password"] = '<bean:message key="data.authentification.password"/>';112 loginTexts[" data.authentification.sign"] = '<bean:message key="data.authentification.sign"/>';113 loginTexts[" data.authentification.pwdForget"] = '<bean:message key="data.authentification.pwdForget"/>';114 loginTexts[" data.authentification.loginForget.help"] = '<bean:message key="data.authentification.loginForget.help"/>';115 loginTexts[" data.authentification.loginForget"] = '<bean:message key="data.authentification.loginForget"/>';116 loginTexts[" errors.logon.notFound"] = "<bean:message key='errors.logon.notFound' arg0="<%=Context.getWebmaster( request )%>"/>";117 loginTexts[" errors.logon.wrongPassword"] = "<bean:message key='errors.logon.wrongPassword'/>";118 loginTexts[" errors.logon.failed"] = "<bean:message key='errors.logon.failed' arg0="<%=Context.getWebmaster( request )%>"/>";119 loginTexts[" errors.logon.notAccepted"] = "<bean:message key='errors.logon.notAccepted'/>";110 loginTexts["login"] = '<bean:message key="login"/>'; 111 loginTexts["login.password"] = '<bean:message key="login.password"/>'; 112 loginTexts["login.sign"] = '<bean:message key="login.sign"/>'; 113 loginTexts["login.pwdForget"] = '<bean:message key="login.pwdForget"/>'; 114 loginTexts["login.loginForget.help"] = '<bean:message key="login.loginForget.help"/>'; 115 loginTexts["login.loginForget"] = '<bean:message key="login.loginForget"/>'; 116 loginTexts["login.error.notFound"] = "<bean:message key='login.error.notFound' arg0="<%=Context.getWebmaster( request )%>"/>"; 117 loginTexts["login.error.wrongPassword"] = "<bean:message key='login.error.wrongPassword'/>"; 118 loginTexts["login.error.failed"] = "<bean:message key='login.error.failed' arg0="<%=Context.getWebmaster( request )%>"/>"; 119 loginTexts["login.error.notAccepted"] = "<bean:message key='login.error.notAccepted'/>"; 120 120 loginTexts["<%=UserRole.ADMINISTRATOR%>"] = '<bean:message key="app.administrator"/>'; 121 121 loginTexts["<%=UserRole.TECHNICIEN%>"] = '<bean:message key="app.technician"/>'; -
ether_megapoli/trunk/web/resources/templates/templateMegapoli.jsp
r299 r306 109 109 110 110 <li class="last"> 111 <html:link page="/visualization?methodName=view"><span><bean:message key=" all.visualization"/></span></html:link>111 <html:link page="/visualization?methodName=view"><span><bean:message key="visualization"/></span></html:link> 112 112 <div> 113 113 <ul> 114 <li><html:link page="/visualization?methodName=viewParametersByPlateform"><span><bean:message key=" data.visualization"/></span></html:link></li>114 <li><html:link page="/visualization?methodName=viewParametersByPlateform"><span><bean:message key="visualization"/></span></html:link></li> 115 115 <li><html:link page="/visualization?methodName=viewInWork"><span><bean:message key="simulation.visualization"/></span></html:link></li> 116 116 </ul> … … 160 160 templateTexts["app.mentions"] = '<bean:message key="app.mentions"/>'; 161 161 templateTexts["app.infos"] = '<bean:message key="app.infos"/>'; 162 templateTexts[" app.dataProtocolAccept"] = "<bean:message key="app.dataProtocolAccept"/>";163 templateTexts[" app.dataProtocolFields"] = "<bean:message key="app.dataProtocolFields"/>";164 templateTexts[" app.dataProtocol.account"] = "<bean:message key="app.dataProtocol.account"/>";165 templateTexts["<%=WebException.WebCode.USER_ALREADY_EXISTS%>"] = "<bean:message key=" app.dataProtocol.alreadyExist"/>";162 templateTexts["login.dataProtocolAccept"] = "<bean:message key="login.dataProtocolAccept"/>"; 163 templateTexts["login.dataProtocolFields"] = "<bean:message key="login.dataProtocolFields"/>"; 164 templateTexts["login.dataProtocol.account"] = "<bean:message key="login.dataProtocol.account"/>"; 165 templateTexts["<%=WebException.WebCode.USER_ALREADY_EXISTS%>"] = "<bean:message key="login.dataProtocol.alreadyExist"/>"; 166 166 167 167 // Needed texts if you use the library LoginButton.js 168 168 var loginTexts = $A( "" ); 169 169 loginTexts["app.connexion"] = '<bean:message key="app.connexion"/>'; 170 loginTexts[" data.authentification.login"] = '<bean:message key="data.authentification.login"/>';171 loginTexts[" data.authentification.password"] = '<bean:message key="data.authentification.password"/>';172 loginTexts[" data.authentification.sign"] = '<bean:message key="data.authentification.sign"/>';173 loginTexts[" data.authentification.pwdForget"] = '<bean:message key="data.authentification.pwdForget"/>';174 loginTexts[" data.authentification.loginForget.help"] = '<bean:message key="data.authentification.loginForget.help"/>';175 loginTexts[" data.authentification.loginForget"] = '<bean:message key="data.authentification.loginForget"/>';176 loginTexts[" data.authentification.inscription"] = '<bean:message key="data.authentification.inscription"/>';177 loginTexts[" errors.logon.notFound"] = "<bean:message key='errors.logon.notFound'/>";178 loginTexts[" errors.logon.wrongPassword"] = "<bean:message key='errors.logon.wrongPassword'/>";179 loginTexts[" errors.logon.failed"] = "<bean:message key='errors.logon.failed' arg0="<%=Context.getWebmaster( request )%>"/>";180 loginTexts[" errors.logon.notAccepted"] = "<bean:message key='errors.logon.notAccepted'/>";181 loginTexts[" data.authentification.text"] = "<bean:message key="data.authentification.text"/>";170 loginTexts["login"] = '<bean:message key="login"/>'; 171 loginTexts["login.password"] = '<bean:message key="login.password"/>'; 172 loginTexts["login.sign"] = '<bean:message key="login.sign"/>'; 173 loginTexts["login.pwdForget"] = '<bean:message key="login.pwdForget"/>'; 174 loginTexts["login.loginForget.help"] = '<bean:message key="login.loginForget.help"/>'; 175 loginTexts["login.loginForget"] = '<bean:message key="login.loginForget"/>'; 176 loginTexts["login.inscription"] = '<bean:message key="login.inscription"/>'; 177 loginTexts["login.error.notFound"] = "<bean:message key='login.error.notFound'/>"; 178 loginTexts["login.error.wrongPassword"] = "<bean:message key='login.error.wrongPassword'/>"; 179 loginTexts["login.error.failed"] = "<bean:message key='login.error.failed' arg0="<%=Context.getWebmaster( request )%>"/>"; 180 loginTexts["login.error.notAccepted"] = "<bean:message key='login.error.notAccepted'/>"; 181 loginTexts["login.text"] = "<bean:message key="login.text"/>"; 182 182 loginTexts["<%=UserRole.ADMINISTRATOR%>"] = '<bean:message key="app.administrator"/>'; 183 183 loginTexts["<%=UserRole.TECHNICIEN%>"] = '<bean:message key="app.technician"/>'; -
ether_megapoli/trunk/web/src/ApplicationResources.properties
r303 r306 35 35 app.version=Version 36 36 37 app.credits=Cr\u00E9dits 38 app.mentions=Mentions l\u00E9gales 39 app.infos=Informations 40 app.backoffice=Backoffice 41 app.backoffice.help=Acc\u00E8s au backoffice 42 app.administrator=Administrateur 43 app.coordinator=Coordinateur 44 app.technician=Technicien 45 app.measure.days=Jours de mesures 46 inWork=Page en cours de construction.. 47 48 37 49 #contacts 38 50 contact=Contactez nous … … 82 94 data.intro0=Cette zone est r\u00E9serv\u00E9e aux participants du projet. 83 95 data.intro1=Vous pouvez demander l'ouverture d'un compte personnalis\u00E9 en envoyant un email au 84 data.authentification=Authentification85 data.authentification.intro=Veuillez vous identifier afin d'acc\u00E9der aux zones prot\u00E9g\u00E9es de ce site.86 data.authentification.login=Login87 data.authentification.password=Mot de passe88 data.authentification.sign=Connection89 data.authentification.loginForget=Oubli du login ?90 data.authentification.loginForget.help=Si vous vous souvenez de votre mot de passe, essayez de vous connecter avec votre email91 data.authentification.pwdForget=Oubli du mot de passe ?92 data.authentification.inscription=Nouvelle inscription93 96 94 97 data.upload=D\u00E9p\u00F4t de donn\u00E9es … … 375 378 errors.init.failed=Echec \u00E0 l'initialisation de l'application \: vous ne pourrez pas d\u00E9poser de nouveaux fichiers de donn\u00E9es sur le serveur \!<br> 376 379 377 errors.logon.failed=Echec de l\'op\u00E9ration d'authentification.<br> Veuillez contacter le <a href\='mailto\:{0}?subject\=[MEGAPOLI]'>webmaster</a> pour lui signaler le probl\u00E8me.<br>378 errors.logon.notFound=Ce login est inconnu.<br> Si vous voulez vous enregistrer pour obtenir l'acc\u00E8s aux zones prot\u00E9g\u00E9es du site, veuillez cliquez sur 'Nouvelle inscription'. <br>379 errors.logon.wrongPassword=Ce mot de passe est incorrect.380 errors.logon.login=Veuillez saisir votre login (normalement : votre mail).<br>381 errors.logon.password=Veuillez saisir votre mot de passe.<br>382 errors.logon.notAccepted=Vous n'\u00EAtes pas autoris\u00E9 \u00E0 acc\u00E9der aux zones prot\u00E9g\u00E9s.383 384 380 errors.upload.file=Vous devez s\u00E9lectionner un fichier\!<br> 385 381 errors.upload.failed=Echec du d\u00E9p\u00F4t...<br> … … 434 430 errors.access.failed.sel=Vous devez choisir au moins 1 param\u00E8tre ou 1 capteur ou 1 plate-forme ou 1 jeu de donn\u00E9es 435 431 errors.access.novalues=Pas d'extraction possible 436 errors.access.login=Vous n'\u00EAtes pas identifi\u00E9 ou vous avez perdu votre session, veuillez cliquer sur "Acc\u00E8s aux donn\u00E9es" pour vous identifier \u00E0 nouveau. 437 438 439 440 ################################################################ 441 ####################### ETHER ################################## 442 ################################################################ 443 app.credits=Cr\u00E9dits 444 app.mentions=Mentions l\u00E9gales 445 app.infos=Informations 446 app.dataProtocolAccept=Vous devez accepter le protocole d'utilisation des donn\u00E9es pour demander un compte 447 app.dataProtocolFields=Les champs 'Nom', 'Email' et 'Mot de passe' sont incomplets 448 app.dataProtocol.account=Votre compte est en attente de validation par l'administrateur. Vous recevrez un email lors de son activation. 449 app.dataProtocol.alreadyExist=Cette email est d\u00E9j\u00E0 utilis\u00E9 par un compte, veuillez en fournir un autre. 450 app.backoffice=Backoffice 451 app.backoffice.help=Acc\u00E8s au backoffice 452 app.administrator=Administrateur 453 app.coordinator=Coordinateur 454 app.technician=Technicien 455 app.measure.days=Jours de mesures 456 457 data.visualization.general.text=Dans cette zone, vous pouvez visualiser en ligne les donn\u00E9es disponibles. Plusieurs types de visualisations vous sont propos\u00E9s :<ul><li>un param\u00E8tre pour un site</li><li>un param\u00E8tre pour plusieurs sites</li><li>diff\u00E9rents param\u00E8tre pour un site</li><li>des visualisations en 2D</li></ul> 458 data.visualization.general.text2=Vous pouvez visualiser au maximum deux types de param\u00E8tres diff\u00E9rents sur autant de plateformes disponibles. 459 data.visualization.general.example=Exemples de s\u00E9ries temporelles : 460 data.visualization.general.example.param.site=Ozone au LHVP 461 data.visualization.general.example.param.sites=Ozone au LHVP et au SIRTA 462 data.visualization.general.example.params.site=Ozone et Temp\u00E9rature au SIRTA 463 data.visualization.general.example.params.sites=Ozone (LHVP et SIRTA) <BR/> Temp\u00E9rature (SIRTA) 464 data.visualization.general.example.2D=Exemple de visualisation 2D : 465 data.visualization.general.example.2D.ATR42=Mesures \u00E0 bord de l'ATR-42 466 467 ####################### VISUALIZATION ####################### 468 inWork=Page en cours de construction.. 469 all.visualization=Visualisation 470 all.visualization.cap=VISUALISATION 471 data.visualization.add=Ajouter 432 433 434 ################################################################ 435 ####################### LOGIN ################################## 436 ################################################################ 437 login.authentification=Authentification 438 login.intro=Veuillez vous identifier afin d'acc\u00E9der aux zones prot\u00E9g\u00E9es de ce site. 439 login=Login 440 login.password=Mot de passe 441 login.sign=Connection 442 login.loginForget=Oubli du login ? 443 login.loginForget.help=Si vous vous souvenez de votre mot de passe, essayez de vous connecter avec votre email 444 login.pwdForget=Oubli du mot de passe ? 445 login.inscription=Nouvelle inscription 446 login.text=Veuillez vous identifier afin d'acc\u00E9der aux zones prot\u00E9g\u00E9es de ce site. 447 448 login.dataProtocolAccept=Vous devez accepter le protocole d'utilisation des donn\u00E9es pour demander un compte 449 login.dataProtocolFields=Les champs 'Nom', 'Email' et 'Mot de passe' sont incomplets 450 login.dataProtocol.account=Votre compte est en attente de validation par l'administrateur. Vous recevrez un email lors de son activation. 451 login.dataProtocol.alreadyExist=Cette email est d\u00E9j\u00E0 utilis\u00E9 par un compte, veuillez en fournir un autre. 452 453 login.error.notAccepted=Vous n'\u00EAtes pas autoris\u00E9 \u00E0 acc\u00E9der aux zones prot\u00E9g\u00E9s. 454 login.error.bo.notAccepted=Vous n'\u00EAtes pas autoris\u00E9 \u00E0 acc\u00E9der au backoffice. 455 login.error.notFound=Ce login est inconnu.<br> Si vous voulez vous enregistrer pour obtenir l'acc\u00E8s aux zones prot\u00E9g\u00E9es du site, veuillez cliquez sur 'Nouvelle inscription'. <br> 456 login.error.wrongPassword=Ce mot de passe est incorrect. 457 login.error.failed=Echec de l\'op\u00E9ration d'authentification.<br> Veuillez contacter le <a href\='mailto\:{0}?subject\=[MEGAPOLI]'>webmaster</a> pour lui signaler le probl\u00E8me.<br> 458 login.error.unknown=Vous n'\u00EAtes pas identifi\u00E9 ou vous avez perdu votre session, veuillez vous connecter. 459 460 # TODO : remove theses 2 lignes after remove InitLogonAccess... 461 login.error.login=Veuillez saisir votre login (normalement : votre mail).<br> 462 login.error.password=Veuillez saisir votre mot de passe.<br> 463 464 ################################################################ 465 ##################### VISUALIZATION ############################ 466 ################################################################ 467 468 visualization.general.text=Dans cette zone, vous pouvez visualiser en ligne les donn\u00E9es disponibles. Plusieurs types de visualisations vous sont propos\u00E9s :<ul><li>un param\u00E8tre pour un site</li><li>un param\u00E8tre pour plusieurs sites</li><li>diff\u00E9rents param\u00E8tre pour un site</li><li>des visualisations en 2D</li></ul> 469 visualization.general.text2=Vous pouvez visualiser au maximum deux types de param\u00E8tres diff\u00E9rents sur autant de plateformes disponibles. 470 visualization.general.example=Exemples de s\u00E9ries temporelles : 471 visualization.general.example.param.site=Ozone au LHVP 472 visualization.general.example.param.sites=Ozone au LHVP et au SIRTA 473 visualization.general.example.params.site=Ozone et Temp\u00E9rature au SIRTA 474 visualization.general.example.params.sites=Ozone (LHVP et SIRTA) <BR/> Temp\u00E9rature (SIRTA) 475 visualization.general.example.2D=Exemple de visualisation 2D : 476 visualization.general.example.2D.ATR42=Mesures \u00E0 bord de l'ATR-42 477 478 visualization=Visualisation 479 visualization.cap=VISUALISATION 480 visualization.add=Ajouter 472 481 473 482 data.visualization=Des donn\u00E9es 474 data.visualization.2D=2D 475 data.visualization.title=Visualisation des observations 476 data.visualization.noPlateform=Pas de plateforme 477 data.visualization.selectPf=Plateformes 478 data.visualization.noParameter=Pas de param\u00E8tre 479 data.visualization.selectParameter=Param\u00E8tres 480 data.visualization.selectPeriod=P\u00E9riode 481 data.visualization.selectDate=Choisissez une date 482 data.visualization.selectYear=Ann\u00E9e 483 data.visualization.selectMonth=Mois 484 data.visualization.selectDay=Jour 485 data.visualization.selectTime=Choisissez un temps 486 data.visualization.selectHour=Heure 487 data.visualization.selectMinute=Minute 488 data.visualization.BeginDate=Date de d\u00E9but : 489 data.visualization.EndDate=Date de fin : 490 data.visualization.Unvalid_Period=P\u00E9riode non valide ! 491 data.visualization.titleChoice=Titre (modifiable) 492 data.visualization.type=Type de trac\u00E9 493 data.visualization.graph=Quicklook final : 494 data.visualization.graph.noPlot=Aucun quicklook 495 data.visualization.button.clear=Effacer 496 data.visualization.button.init=Initialiser 497 data.visualization.button.visualize=Visualisation 498 data.visualization.button.download=T\u00E9l\u00E9chargement 499 data.visualization.button.download.info=(fichier .tgz) 500 data.visualization.loading.data=Chargement des donn\u00E9es 501 data.visualization.quicklook=Quicklook 502 data.visualization.parameter=param\u00E8tre(s) 503 data.visualization.parameter.buttons.help=Aide 504 data.visualization.parameter.buttons.help.text=En cliquant sur 'Ajouter', vous int\u00E9grez le param\u00E8tre s\u00E9lectionn\u00E9 au quicklook final. Pour une s\u00E8rie temporelle, vous pouvez visualiser jusqu'\u00E0 deux types de param\u00E9tres diff\u00E8rents sur autant de plateformes souhait\u00E8es.Pour un 2D par contre, un seul param\u00E9tre est visualisable.<BR><BR>Le bouton 'Initialiser' vide la liste des param\u00E8tres. 505 506 data.visualization.axeType.TimeLine=S\u00E9rie temporelle (ligne) 507 data.visualization.axeType.TimePoints=S\u00E9rie temporelle (points) 508 data.visualization.axeType.2DContour=2D (contour) 509 data.visualization.axeType.2DPoints=2D (points) 510 data.authentification.text=Veuillez vous identifier afin d'acc\u00E9der aux zones prot\u00E9g\u00E9es de ce site. 483 visualization.2D=2D 484 visualization.title=Visualisation des observations 485 visualization.noPlateform=Pas de plateforme 486 visualization.selectPf=Plateformes 487 visualization.noParameter=Pas de param\u00E8tre 488 visualization.selectParameter=Param\u00E8tres 489 visualization.selectPeriod=P\u00E9riode 490 visualization.selectDate=Choisissez une date 491 visualization.selectYear=Ann\u00E9e 492 visualization.selectMonth=Mois 493 visualization.selectDay=Jour 494 visualization.selectTime=Choisissez un temps 495 visualization.selectHour=Heure 496 visualization.selectMinute=Minute 497 visualization.BeginDate=Date de d\u00E9but : 498 visualization.EndDate=Date de fin : 499 visualization.Unvalid_Period=P\u00E9riode non valide ! 500 visualization.titleChoice=Titre (modifiable) 501 visualization.type=Type de trac\u00E9 502 visualization.graph=Quicklook final : 503 visualization.graph.noPlot=Aucun quicklook 504 visualization.button.clear=Effacer 505 visualization.button.init=Initialiser 506 visualization.button.visualize=Visualisation 507 visualization.button.download=T\u00E9l\u00E9chargement 508 visualization.button.download.info=(fichier .tgz) 509 visualization.loading.data=Chargement des donn\u00E9es 510 visualization.quicklook=Quicklook 511 visualization.parameter=param\u00E8tre(s) 512 visualization.parameter.buttons.help=Aide 513 visualization.parameter.buttons.help.text=En cliquant sur 'Ajouter', vous int\u00E9grez le param\u00E8tre s\u00E9lectionn\u00E9 au quicklook final. Pour une s\u00E8rie temporelle, vous pouvez visualiser jusqu'\u00E0 deux types de param\u00E9tres diff\u00E8rents sur autant de plateformes souhait\u00E8es.Pour un 2D par contre, un seul param\u00E9tre est visualisable.<BR><BR>Le bouton 'Initialiser' vide la liste des param\u00E8tres. 514 515 visualization.axeType.TimeLine=S\u00E9rie temporelle (ligne) 516 visualization.axeType.TimePoints=S\u00E9rie temporelle (points) 517 visualization.axeType.2DContour=2D (contour) 518 visualization.axeType.2DPoints=2D (points) 511 519 data.access.extract.process.short=L'extraction des donn\u00E9es est en cours...<br/>Vous allez recevoir un e-mail pour r\u00E9cup\u00E9rer le(s) fichier(s) g\u00E9n\u00E9r\u00E9s. 512 520 data.access.extract.process.error=Erreur de t\u00E9l\u00E9chargement. <BR>Veuillez essayer de corriger les erreurs suivantes ou contacter l'administrateur en indiquant les erreurs rencontr\u00E9es. 513 521 522 ################################################################ 523 ###################### SIMULATION ############################## 524 ################################################################ 514 525 simulation.visualization=Simulations 515 526 516 ####################### PLOT ####################### 527 ################################################################ 528 ######################## PLOT ################################## 529 ################################################################ 517 530 plot.published=Publi\u00E9 le 518 531 plot.dataNumber=Nombre de donn\u00E9es extraites : -
ether_megapoli/trunk/web/src/ApplicationResources_en.properties
r305 r306 35 35 app.version=Version 36 36 37 app.credits=Credits 38 app.mentions=Legals 39 app.infos=Informations 40 app.backoffice=Backoffice 41 app.backoffice.help=Access to the backoffice 42 app.administrator=Administrator 43 app.coordinator=Coordinator 44 app.technician=Technician 45 app.measure.days=Measures days 46 47 inWork=Work in progress.. 48 49 37 50 #contacts 38 51 contact=Contact us … … 82 95 data.intro0=This area is accessible for Megapoli project members only. 83 96 data.intro1=You can ask for a login account by sending an email to the 84 data.authentification=Authentification85 data.authentification.intro=Please login to access the protected areas of this website.86 data.authentification.login=Login87 data.authentification.password=Password88 data.authentification.sign=Sign in89 data.authentification.loginForget=Forgot your username ?90 data.authentification.loginForget.help=If you remember your password, try logging in with your email91 data.authentification.pwdForget=Forgot your password ?92 data.authentification.inscription=New inscription93 97 94 98 data.upload=Data upload … … 375 379 errors.init.failed=The application initiation failed: you won't be able to upload new data to the server!<br> 376 380 377 errors.logon.failed=The logon transaction failed. Please contact the <a href\='mailto\:{0}?subject\=[MEGAPOLI]'>webmaster</a> to report this problem.<br>378 errors.logon.notFound=Unknown login.<br> To register and access the protected areas of this site, please click on 'New inscription'.<br>379 errors.logon.wrongPassword=Wrong password.380 errors.logon.login=Please type your login (should be your email).<br>381 errors.logon.password=Please type your password.<br>382 errors.logon.notAccepted=You are not allowed to access to protected areas.383 384 381 errors.upload.file=You must select a file!<br> 385 382 errors.upload.failed=The upload failed...<br> … … 434 431 errors.access.failed.sel=You must select at least 1 parameter or 1 sensor or 1 platform or 1 data set 435 432 errors.access.novalues=No download possible 436 errors.access.login=You lost your session, please click on "Data access" to enter again your login and your password. 437 438 439 ################################################################ 440 ####################### ETHER ################################## 441 ################################################################ 442 app.credits=Credits 443 app.mentions=Legals 444 app.infos=Informations 445 app.dataProtocolAccept=You have to accept the data protocol to ask for an account 446 app.dataProtocolFields=Fields 'LastName', 'Email' and 'Password' must be filled 447 app.dataProtocol.account=Your account is waiting for administrator validation. You will receive an email when it will be activated. 448 app.dataProtocol.alreadyExist=This email is already used, you have to give another one 449 app.unknown.login=Unknown login 450 app.access.not.allowed=You are not authorized to access to backoffice 451 app.backoffice=Backoffice 452 app.backoffice.help=Access to the backoffice 453 app.administrator=Administrator 454 app.coordinator=Coordinator 455 app.technician=Technician 456 app.measure.days=Measures days 457 458 data.visualization.general.text=In this area you can visualize available data with the following types of visualization : <ul><li>one parameter by plateform</li><li>one parameter by many plateforms</li><li>differents parameters by plateform</li><li>2D visualizations</li></ul> 459 data.visualization.general.text2=You can visualize up two differents parameters at the same time for many plateforms 460 data.visualization.general.example=Examples of time series : 461 data.visualization.general.example.param.site=Ozone at the LHVP 462 data.visualization.general.example.param.sites=Ozone at the LHVP and the SIRTA 463 data.visualization.general.example.params.site=Ozone and Temperature at the SIRTA 464 data.visualization.general.example.params.sites=Ozone (at the LHVP and SIRTA) and Temperature (at the SIRTA) 465 data.visualization.general.example.2D=Example of 2D : 466 data.visualization.general.example.2D.ATR42=Measurements on ATR-42 board 467 468 ####################### VISUALIZATION ####################### 469 inWork=Work in progress.. 470 all.visualization=Visualization 471 all.visualization.cap=VISUALIZATION 472 data.visualization.add=Add 433 434 ################################################################ 435 ####################### LOGIN ################################## 436 ################################################################ 437 login.authentification=Authentification 438 login.intro=Please login to access the protected areas of this website. 439 login=Login 440 login.password=Password 441 login.sign=Sign in 442 login.loginForget=Forgot your username ? 443 login.loginForget.help=If you remember your password, try logging in with your email 444 login.pwdForget=Forgot your password ? 445 login.inscription=New inscription 446 login.text=Please login to access the protected areas of this website. 447 448 login.dataProtocolAccept=You have to accept the data protocol to ask for an account 449 login.dataProtocolFields=Fields 'LastName', 'Email' and 'Password' must be filled 450 login.dataProtocol.account=Your account is waiting for administrator validation. You will receive an email when it will be activated. 451 login.dataProtocol.alreadyExist=This email is already used, you have to give another one 452 453 login.error.notAccepted=You are not allowed to access to protected areas. 454 login.error.bo.notAccepted=You are not authorized to access to backoffice. 455 login.error.notFound=Unknown login.<br> To register and access the protected areas of this site, please click on 'New inscription'.<br> 456 login.error.wrongPassword=Wrong password. 457 login.error.failed=The logon transaction failed. Please contact the <a href\='mailto\:{0}?subject\=[MEGAPOLI]'>webmaster</a> to report this problem.<br> 458 login.error.unknown=You are not authentified or you lost your session, please register. 459 460 # TODO : remove theses 2 lignes after remove InitLogonAccess... 461 login.error.login=Please type your login (should be your email).<br> 462 login.error.password=Please type your password.<br> 463 464 ################################################################ 465 ##################### VISUALIZATION ############################ 466 ################################################################ 467 468 visualization.general.text=In this area you can visualize available data with the following types of visualization : <ul><li>one parameter by plateform</li><li>one parameter by many plateforms</li><li>differents parameters by plateform</li><li>2D visualizations</li></ul> 469 visualization.general.text2=You can visualize up two differents parameters at the same time for many plateforms 470 visualization.general.example=Examples of time series : 471 visualization.general.example.param.site=Ozone at the LHVP 472 visualization.general.example.param.sites=Ozone at the LHVP and the SIRTA 473 visualization.general.example.params.site=Ozone and Temperature at the SIRTA 474 visualization.general.example.params.sites=Ozone (at the LHVP and SIRTA) and Temperature (at the SIRTA) 475 visualization.general.example.2D=Example of 2D : 476 visualization.general.example.2D.ATR42=Measurements on ATR-42 board 477 478 visualization=Visualization 479 visualization.cap=VISUALIZATION 480 visualization.add=Add 473 481 474 482 data.visualization=Data 475 data.visualization.2D=2D 476 data.visualization.title=Observations visualisation 477 data.visualization.noPlateform=No plateform 478 data.visualization.selectPf=Plateforms 479 data.visualization.noParameter=No parameter 480 data.visualization.selectParameter=Parameters 481 data.visualization.selectPeriod=Period 482 data.visualization.selectDate=Select a date 483 data.visualization.selectYear=Year 484 data.visualization.selectMonth=Month 485 data.visualization.selectDay=Day 486 data.visualization.selectTime=Select a time 487 data.visualization.selectHour=Hour 488 data.visualization.selectMinute=Minute 489 data.visualization.BeginDate=Start date : 490 data.visualization.EndDate=End date : 491 data.visualization.Unvalid_Period=Unvalid periode ! 492 data.visualization.titleChoice=Title (modifiable) 493 data.visualization.type=Plot's type 494 data.visualization.graph=Final quicklook : 495 data.visualization.graph.noPlot=No quicklook 496 data.visualization.button.clear=Clear 497 data.visualization.button.init=Init 498 data.visualization.button.visualize=Visualization 499 data.visualization.button.download=Download 500 data.visualization.button.download.info=(file .tgz) 501 data.visualization.loading.data=Data downloading 502 data.visualization.quicklook=Quicklook 503 data.visualization.parameter=parameter(s) 504 data.visualization.parameter.buttons.help=Help 505 data.visualization.parameter.buttons.help.text=By clicking on 'Add' you add the selected parameter to the final quicklook. For a time serie you can visualize up to two differents parameters at the same time for many plateforms.For a 2D only one parameter is available.<BR><BR>The button 'Init' remove the parameters from the list. 506 507 data.visualization.axeType.TimeLine=Time serie (line) 508 data.visualization.axeType.TimePoints=Time serie (dots) 509 data.visualization.axeType.2DContour=2D (contour) 510 data.visualization.axeType.2DPoints=2D (dots) 511 512 data.authentification.text=Please login to access the protected areas of this website. 483 visualization.2D=2D 484 visualization.title=Observations visualisation 485 visualization.noPlateform=No plateform 486 visualization.selectPf=Plateforms 487 visualization.noParameter=No parameter 488 visualization.selectParameter=Parameters 489 visualization.selectPeriod=Period 490 visualization.selectDate=Select a date 491 visualization.selectYear=Year 492 visualization.selectMonth=Month 493 visualization.selectDay=Day 494 visualization.selectTime=Select a time 495 visualization.selectHour=Hour 496 visualization.selectMinute=Minute 497 visualization.BeginDate=Start date : 498 visualization.EndDate=End date : 499 visualization.Unvalid_Period=Unvalid periode ! 500 visualization.titleChoice=Title (modifiable) 501 visualization.type=Plot's type 502 visualization.graph=Final quicklook : 503 visualization.graph.noPlot=No quicklook 504 visualization.button.clear=Clear 505 visualization.button.init=Init 506 visualization.button.visualize=Visualization 507 visualization.button.download=Download 508 visualization.button.download.info=(file .tgz) 509 visualization.loading.data=Data downloading 510 visualization.quicklook=Quicklook 511 visualization.parameter=parameter(s) 512 visualization.parameter.buttons.help=Help 513 visualization.parameter.buttons.help.text=By clicking on 'Add' you add the selected parameter to the final quicklook. For a time serie you can visualize up to two differents parameters at the same time for many plateforms.For a 2D only one parameter is available.<BR><BR>The button 'Init' remove the parameters from the list. 514 515 visualization.axeType.TimeLine=Time serie (line) 516 visualization.axeType.TimePoints=Time serie (dots) 517 visualization.axeType.2DContour=2D (contour) 518 visualization.axeType.2DPoints=2D (dots) 519 513 520 data.access.extract.process.short=The downloading is in progress. You will receive an e-mail to get back the generated data file(s). 514 521 data.access.extract.process.error=Download error. <BR>Please try to correct the following errors or contact the administrator with the detected errors. 515 522 523 ################################################################ 524 ###################### SIMULATION ############################## 525 ################################################################ 516 526 simulation.visualization=Simulations 517 527 518 ####################### PLOT ####################### 528 ################################################################ 529 ######################## PLOT ################################## 530 ################################################################ 519 531 plot.published=Published 520 532 plot.dataNumber=Number of extracted datas : … … 526 538 527 539 528 ####################### BACKOFFICE ####################### 540 ################################################################ 541 ##################### BACKOFFICE ############################### 542 ################################################################ 529 543 bo.fulltitle=MEGAPOLI Backoffice 530 544 bo.site=Megapoli -
ether_megapoli/trunk/web/src/com/ether/ControllerEponge.java
r293 r306 67 67 final String encryptedPassword = EtherHelper.encryptPassword( password ); 68 68 if( user == null ) 69 result.put( "errors", " errors.logon.notFound" );69 result.put( "errors", "login.error.notFound" ); 70 70 else if( !encryptedPassword.equals( user.getPassword() ) ) 71 result.put( "errors", " errors.logon.wrongPassword" );71 result.put( "errors", "login.error.wrongPassword" ); 72 72 else if( !UserState.ACCEPTED.equals( user.getState() ) ) 73 result.put( "errors", " errors.logon.notAccepted" );73 result.put( "errors", "login.error.notAccepted" ); 74 74 else 75 75 { … … 95 95 catch( Exception e ) 96 96 { 97 result.put( "errors", " errors.logon.failed" );97 result.put( "errors", "login.error.failed" ); 98 98 } 99 99 } -
ether_megapoli/trunk/web/src/com/ether/ControllerEther.java
r294 r306 90 90 final Object[] params = buildParams( methodDescription, request ); 91 91 92 // TODO : super crados !! A REVOIR !!! 93 if( methodDescription.isLoginMandatory() ) 94 { 95 final User user = (User) request.getSession().getAttribute( "SES_USER" ); 96 params[params.length - 1] = user; 97 } 98 99 // TODO : super crados !! A REVOIR !!! 92 // TODO : boarf, trouver meilleur moyen pour passer la requête 100 93 if( methodDescription.isRequestMandatory() ) 101 94 params[params.length - 1] = request; 95 96 if( methodDescription.isLoginMandatory() ) 97 { 98 final String defaultView = null != methodDescription.getDefaultView() ? methodDescription.getDefaultView() : methodDescription.getView(); 99 final Personne people = (Personne) request.getSession().getAttribute( "SES_USER" ); 100 if( null == people ) 101 return new ModelAndView( defaultView, "errors", "login.error.unknown" ); 102 } 102 103 103 104 if( methodDescription.isBackofficeMethod() ) … … 109 110 if( null == user ) 110 111 { 111 return new ModelAndView( defaultView, "errors", " app.unknown.login" );112 return new ModelAndView( defaultView, "errors", "login.error.unknown" ); 112 113 } 113 114 else if( null != user && !user.isAccessToBO() ) 114 115 { 115 return new ModelAndView( defaultView, "errors", " app.access.not.allowed" );116 return new ModelAndView( defaultView, "errors", "login.error.bo.notAccepted" ); 116 117 } 117 118 } -
ether_megapoli/trunk/web/src/com/ether/ControllerVisualization.java
r297 r306 48 48 throws ServiceException 49 49 { 50 return new ModelAndView( "index");50 return new ModelAndView( VIEW_ERRORS ); 51 51 } 52 52 … … 97 97 } 98 98 99 @ControllerMethod(jsonResult = true, loginMandatory = true)99 @ControllerMethod(jsonResult = true, requestMandatory = true, loginMandatory = true, defaultView = VIEW_ERRORS) 100 100 public JSONObject downloadData( @ParamName(ParameterConstants.PARAMETER_DATE_BEGIN) final String dateBegin, 101 101 @ParamName(ParameterConstants.PARAMETER_DATE_END) final String dateEnd, 102 102 @ParamName(ParameterConstants.PARAMETER_PFID_PID_LIST) final String pIdPIdArrayString, 103 @NotNull final Personne personne)103 @NotNull final HttpServletRequest request ) 104 104 throws ServiceException, WebException 105 105 { 106 106 final JSONObject result = new JSONObject(); 107 final Personne person = (Personne) request.getSession().getAttribute( "SES_USER" ); 107 108 108 109 final List<Pair<String, String>> pfIdPIdList = EtherHelper.extractpfIdPIdListFromString( pIdPIdArrayString, String.class, String.class ); … … 113 114 114 115 final XMLOutputter outXml = new XMLOutputter(); 115 final Document docXml = Requete.toXml( dataForm, person ne);116 final Document docXml = Requete.toXml( dataForm, person ); 116 117 final String requete = outXml.outputString( docXml ); 117 118 try … … 248 249 private static final Log LOGGER = LogFactory.getLog( ControllerVisualization.class ); 249 250 251 private static final String VIEW_ERRORS = "project/errors"; 250 252 private static final String VIEW_WORK = "visualization/inWork"; 251 253 private static final String VIEW_VISUALIZATION = "visualization/visu"; -
ether_megapoli/trunk/web/visualization/visu.jsp
r294 r306 18 18 19 19 20 <tiles:put name="title" type="string"><bean:message key="app.title"/> - <bean:message key=" all.visualization"/></tiles:put>20 <tiles:put name="title" type="string"><bean:message key="app.title"/> - <bean:message key="visualization"/></tiles:put> 21 21 <tiles:put name="nav" type="string"> 22 22 <html:link page="/index.jsp"><bean:message key="app.home"/></html:link> > 23 <html:link page="/visualization?methodName=view"><bean:message key=" all.visualization"/></html:link>23 <html:link page="/visualization?methodName=view"><bean:message key="visualization"/></html:link> 24 24 </tiles:put> 25 25 26 26 27 27 <%--****************** CONTENT ****************** --%> 28 <tiles:put name="bodytitle" type="string"><bean:message key=" all.visualization.cap"/></tiles:put>28 <tiles:put name="bodytitle" type="string"><bean:message key="visualization.cap"/></tiles:put> 29 29 30 30 <tiles:put name="body" type="string"> 31 31 <div class="textExamples"> 32 <bean:message key=" data.visualization.general.text"/>33 <bean:message key=" data.visualization.general.text2"/>32 <bean:message key="visualization.general.text"/> 33 <bean:message key="visualization.general.text2"/> 34 34 </div> 35 35 36 36 <BR/> 37 37 38 <div class="textExamples"><bean:message key=" data.visualization.general.example"/></div>38 <div class="textExamples"><bean:message key="visualization.general.example"/></div> 39 39 <table class="roundTable" border="1"> 40 40 <tr> 41 41 <td width="25%"> 42 <div class="textExamplesTD"><bean:message key=" data.visualization.general.example.param.site"/></div>42 <div class="textExamplesTD"><bean:message key="visualization.general.example.param.site"/></div> 43 43 </td> 44 44 <td width="25%"> 45 <div class="textExamplesTD"><bean:message key=" data.visualization.general.example.param.sites"/></div>45 <div class="textExamplesTD"><bean:message key="visualization.general.example.param.sites"/></div> 46 46 </td> 47 47 <td width="25%"> 48 <div class="textExamplesTD"><bean:message key=" data.visualization.general.example.params.site"/></div>48 <div class="textExamplesTD"><bean:message key="visualization.general.example.params.site"/></div> 49 49 </td> 50 50 <td width="25%"> 51 <div class="textExamplesTD"><bean:message key=" data.visualization.general.example.params.sites"/></div>51 <div class="textExamplesTD"><bean:message key="visualization.general.example.params.sites"/></div> 52 52 </td> 53 53 </tr> … … 56 56 <td> 57 57 <center> 58 <a href="/megapoli/resources/images/CaptureOzone.png" rel="lightbox" title="<bean:message key=" data.visualization.general.example.param.site"/>">58 <a href="/megapoli/resources/images/CaptureOzone.png" rel="lightbox" title="<bean:message key="visualization.general.example.param.site"/>"> 59 59 <img src="/megapoli/resources/images/CaptureOzone.png" height="150px" width="150px" class="imageExamples"> 60 60 </a> … … 63 63 <td> 64 64 <center> 65 <a href="/megapoli/resources/images/Capture2Ozones.png" rel="lightbox" title="<bean:message key=" data.visualization.general.example.param.sites"/>">65 <a href="/megapoli/resources/images/Capture2Ozones.png" rel="lightbox" title="<bean:message key="visualization.general.example.param.sites"/>"> 66 66 <img src="/megapoli/resources/images/Capture2Ozones.png" height="150px" width="150px" class="imageExamples"> 67 67 </a> … … 70 70 <td> 71 71 <center> 72 <a href="/megapoli/resources/images/Capture1Ozone1TempPoints.png" rel="lightbox" title="<bean:message key=" data.visualization.general.example.params.site"/>">72 <a href="/megapoli/resources/images/Capture1Ozone1TempPoints.png" rel="lightbox" title="<bean:message key="visualization.general.example.params.site"/>"> 73 73 <img src="/megapoli/resources/images/Capture1Ozone1TempPoints.png" height="150px" width="150px" class="imageExamples"> 74 74 </a> … … 77 77 <td> 78 78 <center> 79 <a href="/megapoli/resources/images/Capture2Ozones1Temp.png" rel="lightbox" title="<bean:message key=" data.visualization.general.example.params.sites"/>">79 <a href="/megapoli/resources/images/Capture2Ozones1Temp.png" rel="lightbox" title="<bean:message key="visualization.general.example.params.sites"/>"> 80 80 <img src="/megapoli/resources/images/Capture2Ozones1Temp.png" height="150px" width="150px" class="imageExamples"> 81 81 </a> … … 87 87 <BR/> 88 88 89 <div class="textExamples"><bean:message key=" data.visualization.general.example.2D"/></div>89 <div class="textExamples"><bean:message key="visualization.general.example.2D"/></div> 90 90 <table class="smallRoundTable" border="1"> 91 91 <tr> 92 92 <td> 93 93 <center> 94 <a href="/megapoli/resources/images/Capture2D.png" rel="lightbox" title="<bean:message key=" data.visualization.general.example.2D.ATR42"/>">94 <a href="/megapoli/resources/images/Capture2D.png" rel="lightbox" title="<bean:message key="visualization.general.example.2D.ATR42"/>"> 95 95 <img src="/megapoli/resources/images/Capture2D.png" height="150px" width="150px" class="imageExamples"> 96 96 </a> -
ether_megapoli/trunk/web/visualization/visu_parameter_by_pf-script.jsp
r285 r306 60 60 61 61 AnyTime.picker( "beginDate", { format: this.calendarFormat, firstDOW: 1, 62 labelTitle: interfaceTexts[" data.visualization.selectDate"], labelYear: interfaceTexts["data.visualization.selectYear"], labelMonth: interfaceTexts["data.visualization.selectMonth"], labelDayOfMonth: interfaceTexts["data.visualization.selectDay"],63 labelHour: interfaceTexts[" data.visualization.selectHour"], labelMinute: interfaceTexts["data.visualization.selectMinute"],62 labelTitle: interfaceTexts["visualization.selectDate"], labelYear: interfaceTexts["visualization.selectYear"], labelMonth: interfaceTexts["visualization.selectMonth"], labelDayOfMonth: interfaceTexts["visualization.selectDay"], 63 labelHour: interfaceTexts["visualization.selectHour"], labelMinute: interfaceTexts["visualization.selectMinute"], 64 64 methodToCall: jQuery.proxy( this.onClickBeginDate, this ) 65 65 } ); 66 66 67 67 AnyTime.picker( "endDate", { format: this.calendarFormat, firstDOW: 1, 68 labelTitle: interfaceTexts[" data.visualization.selectDate"], labelYear: interfaceTexts["data.visualization.selectYear"], labelMonth: interfaceTexts["data.visualization.selectMonth"], labelDayOfMonth: interfaceTexts["data.visualization.selectDay"],69 labelHour: interfaceTexts[" data.visualization.selectHour"], labelMinute: interfaceTexts["data.visualization.selectMinute"],68 labelTitle: interfaceTexts["visualization.selectDate"], labelYear: interfaceTexts["visualization.selectYear"], labelMonth: interfaceTexts["visualization.selectMonth"], labelDayOfMonth: interfaceTexts["visualization.selectDay"], 69 labelHour: interfaceTexts["visualization.selectHour"], labelMinute: interfaceTexts["visualization.selectMinute"], 70 70 methodToCall: jQuery.proxy( this.onClickEndDate, this ), 71 71 idToUpdateEarliest: "beginDate" … … 74 74 $( "#beginDate" ).val( this.firstDate ); 75 75 $( "#endDate" ).val( this.lastDate ); 76 this.clearCalendarButton = new Button( {value:interfaceTexts[" data.visualization.button.clear"], parent:this.containerOptionCalendar, id:"button_clear_calendar", className:"small", onClick:jQuery.proxy( this.onClickClear, this )} );76 this.clearCalendarButton = new Button( {value:interfaceTexts["visualization.button.clear"], parent:this.containerOptionCalendar, id:"button_clear_calendar", className:"small", onClick:jQuery.proxy( this.onClickClear, this )} ); 77 77 78 78 // Buttons and axe's types … … 84 84 createButtons: function() 85 85 { 86 this.visualizeButton = new Button( {value:interfaceTexts[" data.visualization.button.visualize"], parent:this.containerButtons, id:"button_visualize", onClick:jQuery.proxy( this.onClickVisualize, this )} );86 this.visualizeButton = new Button( {value:interfaceTexts["visualization.button.visualize"], parent:this.containerButtons, id:"button_visualize", onClick:jQuery.proxy( this.onClickVisualize, this )} ); 87 87 this.visualizeButton.disable(); 88 this.downloadButton = new Button( {value:interfaceTexts[" data.visualization.button.download"], parent:this.containerButtons, id:"button_download", onClick:jQuery.proxy( this.onClickDownload, this )} );88 this.downloadButton = new Button( {value:interfaceTexts["visualization.button.download"], parent:this.containerButtons, id:"button_download", onClick:jQuery.proxy( this.onClickDownload, this )} ); 89 89 this.downloadButton.disable(); 90 90 }, … … 106 106 this.selectPlots = new Select( paramSelect ); 107 107 this.selectParameters = $(); 108 this.selectPlots.add( null, interfaceTexts[" data.visualization.graph.noPlot"] );108 this.selectPlots.add( null, interfaceTexts["visualization.graph.noPlot"] ); 109 109 this.selectPlots.selectFirst( false ); 110 110 111 111 this.selectPlotsPlateformType = false; 112 112 113 this.addPlotButton = new Button( {value:interfaceTexts[" data.visualization.add"], parent:this.containerOptionPlotsButtons, id:"button_add_plot", className:"small", onClick:jQuery.proxy( this.onClickAddPlot, this )} );113 this.addPlotButton = new Button( {value:interfaceTexts["visualization.add"], parent:this.containerOptionPlotsButtons, id:"button_add_plot", className:"small", onClick:jQuery.proxy( this.onClickAddPlot, this )} ); 114 114 this.addPlotButton.disable(); 115 this.initPlotButton = new Button( {value:interfaceTexts[" data.visualization.button.init"], parent:this.containerOptionPlotsButtons, id:"button_init_plot", className:"small", onClick:jQuery.proxy( this.onClickInitPlot, this )} );115 this.initPlotButton = new Button( {value:interfaceTexts["visualization.button.init"], parent:this.containerOptionPlotsButtons, id:"button_init_plot", className:"small", onClick:jQuery.proxy( this.onClickInitPlot, this )} ); 116 116 }, 117 117 … … 168 168 this.plateforms.addOpenListener( jQuery.proxy( this.onSelectPlateform, this ) ); 169 169 this.loadingPlateforms.hide(); 170 this.plateforms.display( this.containerPlateforms, "NoPlateform", interfaceTexts[" data.visualization.noPlateform"] );170 this.plateforms.display( this.containerPlateforms, "NoPlateform", interfaceTexts["visualization.noPlateform"] ); 171 171 172 172 // Select the first plateform by default … … 185 185 this.parameters.addOpenListener( jQuery.proxy( this.onSelectParameter, this ) ); 186 186 this.loadingParameters.hide(); 187 this.parameters.display( this.containerParameters, "NoParameter", interfaceTexts[" data.visualization.noParameter"], "containerParameter" );187 this.parameters.display( this.containerParameters, "NoParameter", interfaceTexts["visualization.noParameter"], "containerParameter" ); 188 188 }, 189 189 … … 304 304 .dialog( { 305 305 autoOpen: false, 306 title: interfaceTexts["app.title"] + "-" + interfaceTexts[" data.visualization.quicklook"],306 title: interfaceTexts["app.title"] + "-" + interfaceTexts["visualization.quicklook"], 307 307 minHeight: <%=EtherPlotServiceImpl.getMaxHeight()%>, 308 308 minWidth: <%=EtherPlotServiceImpl.getMaxWidth()%> + 28 … … 312 312 { 313 313 var $dialog = $( '<div></div>' ) 314 .html( '<BR/><center>' + interfaceTexts[" data.visualization.graph.noPlot"] + '</center>' )314 .html( '<BR/><center>' + interfaceTexts["visualization.graph.noPlot"] + '</center>' ) 315 315 .dialog( { 316 316 autoOpen: false, 317 title: interfaceTexts["app.title"] + "-" + interfaceTexts[" data.visualization.quicklook"],317 title: interfaceTexts["app.title"] + "-" + interfaceTexts["visualization.quicklook"], 318 318 height: 50, 319 319 width: 400 … … 328 328 if( !getJSONUser() ) 329 329 // Method showLogin writen in megapoliHead.jsp 330 getLoginModule().showLogin( templateTexts[" data.authentification.text"] );330 getLoginModule().showLogin( templateTexts["login.text"] ); 331 331 else 332 332 this.requestDownload(); … … 385 385 386 386 this.numberParameterToDisplay = 1; 387 $( "#messages_number_parameters" ).html( this.numberParameterToDisplay + " " + interfaceTexts[" data.visualization.parameter"] );387 $( "#messages_number_parameters" ).html( this.numberParameterToDisplay + " " + interfaceTexts["visualization.parameter"] ); 388 388 } 389 389 else 390 390 { 391 this.selectPlots.add( null, interfaceTexts[" data.visualization.graph.noPlot"] );391 this.selectPlots.add( null, interfaceTexts["visualization.graph.noPlot"] ); 392 392 this.selectPlots.selectFirst( false ); 393 393 … … 407 407 408 408 this.selectPlots.changeSelectMiddle( this.selectedPlateform.getId() + "-" + this.selectedParameter.getId(), this.selectedPlateform.getName() + " - " + this.selectedParameter.getName() ); 409 $( "#messages_number_parameters" ).html( this.numberParameterToDisplay + " " + interfaceTexts[" data.visualization.parameter"] );409 $( "#messages_number_parameters" ).html( this.numberParameterToDisplay + " " + interfaceTexts["visualization.parameter"] ); 410 410 break; 411 411 … … 425 425 } 426 426 427 $( "#messages_number_parameters" ).html( this.numberParameterToDisplay + " " + interfaceTexts[" data.visualization.parameter"] );427 $( "#messages_number_parameters" ).html( this.numberParameterToDisplay + " " + interfaceTexts["visualization.parameter"] ); 428 428 break; 429 429 } … … 462 462 { 463 463 var helpWindow = new Window( {className: "dialog", zIndex: 100, resizable: true, draggable:true, wiredDrag: true, showEffect:Effect.BlindDown, hideEffect: Effect.SwitchOff } ); 464 helpWindow.setTitle( interfaceTexts[" data.visualization.parameter.buttons.help"] );465 helpWindow.getContent().innerHTML = '<div class="textExamplesTD">' + interfaceTexts[" data.visualization.parameter.buttons.help.text"] + '</div>';464 helpWindow.setTitle( interfaceTexts["visualization.parameter.buttons.help"] ); 465 helpWindow.getContent().innerHTML = '<div class="textExamplesTD">' + interfaceTexts["visualization.parameter.buttons.help.text"] + '</div>'; 466 466 helpWindow.setSize( 350, 100 ); 467 467 helpWindow.show(); -
ether_megapoli/trunk/web/visualization/visu_parameter_by_pf.jsp
r297 r306 27 27 </tiles:put> 28 28 29 <tiles:put name="title" type="string"><bean:message key="app.title"/> - <bean:message key=" data.visualization.title"/></tiles:put>29 <tiles:put name="title" type="string"><bean:message key="app.title"/> - <bean:message key="visualization.title"/></tiles:put> 30 30 <tiles:put name="nav" type="string"> 31 31 <html:link page="/index.jsp"><bean:message key="app.home"/></html:link> > 32 <html:link page="/visualization?methodName=view"><bean:message key=" all.visualization"/></html:link> >33 <html:link page="/visualization?methodName=viewParametersByPlateform"><bean:message key=" data.visualization"/></html:link>32 <html:link page="/visualization?methodName=view"><bean:message key="visualization"/></html:link> > 33 <html:link page="/visualization?methodName=viewParametersByPlateform"><bean:message key="visualization"/></html:link> 34 34 </tiles:put> 35 35 36 36 37 37 <%--****************** CONTENT ****************** --%> 38 <tiles:put name="bodytitle" type="string"><bean:message key=" data.visualization.title"/></tiles:put>38 <tiles:put name="bodytitle" type="string"><bean:message key="visualization.title"/></tiles:put> 39 39 40 40 <tiles:put name="body" type="string"> 41 41 42 42 <div id="generalContainerPlateforms" class="span-5 colborder"> 43 <div id="messages"><bean:message key=" data.visualization.selectPf"/></div>43 <div id="messages"><bean:message key="visualization.selectPf"/></div> 44 44 45 45 <div id="containerPlateforms"></div> … … 47 47 48 48 <div id="generalContainerParameters" class="span-6 colborder"> 49 <div id="messages"><bean:message key=" data.visualization.selectParameter"/></div>49 <div id="messages"><bean:message key="visualization.selectParameter"/></div> 50 50 51 51 <div id="containerParameters"></div> … … 54 54 <div id="generalContainerOptions" class="span-11 last"> 55 55 <div id="containerOptionCalendar" class="span-10"> 56 <div id="messages" class="messagesHeight"><bean:message key=" data.visualization.selectPeriod"/></div>56 <div id="messages" class="messagesHeight"><bean:message key="visualization.selectPeriod"/></div> 57 57 <input type="text" id="beginDate" size="15"/> 58 58 <input type="text" id="endDate" size="15"/> … … 60 60 61 61 <div id="containerOptionTitle" class="span-5"> 62 <div id="messages" class="messagesHeight"><bean:message key=" data.visualization.titleChoice"/></div>62 <div id="messages" class="messagesHeight"><bean:message key="visualization.titleChoice"/></div> 63 63 <textarea id="textareaTitle" cols="25" rows="3"></textarea> 64 64 </div> 65 65 66 66 <div id="containerOptionType" class="span-5"> 67 <div id="messages" class="messagesHeight"><bean:message key=" data.visualization.type"/></div>67 <div id="messages" class="messagesHeight"><bean:message key="visualization.type"/></div> 68 68 </div> 69 69 70 70 <div id="containerOptionPlots" class="span-10"> 71 <div id="messages" class="messagesHeight span-4"><bean:message key=" data.visualization.graph"/></div>71 <div id="messages" class="messagesHeight span-4"><bean:message key="visualization.graph"/></div> 72 72 <div id="messages_number_parameters" class="messagesHeight messages_number_parameters"></div> 73 73 <div id="containerOptionPlotsSelect" class="span-10"></div> … … 85 85 var interfaceTexts = $A( "" ); 86 86 interfaceTexts["app.title"] = '<bean:message key="app.title"/>'; 87 interfaceTexts[" data.visualization.noPlateform"] = '<bean:message key="data.visualization.noPlateform"/>';88 interfaceTexts[" data.visualization.noParameter"] = '<bean:message key="data.visualization.noParameter"/>';89 interfaceTexts[" data.visualization.button.visualize"] = '<bean:message key="data.visualization.button.visualize"/>';90 interfaceTexts[" data.visualization.button.download"] = '<bean:message key="data.visualization.button.download"/>';91 interfaceTexts[" data.visualization.loading.data"] = '<bean:message key="data.visualization.loading.data"/>';92 interfaceTexts[" data.visualization.Unvalid_Period"] = "<bean:message key="data.visualization.Unvalid_Period"/>";93 interfaceTexts[" data.visualization.quicklook"] = "<bean:message key="data.visualization.quicklook"/>";94 interfaceTexts[" data.visualization.button.today"] = "<bean:message key="data.visualization.button.today"/>";95 interfaceTexts[" data.visualization.button.clear"] = "<bean:message key="data.visualization.button.clear"/>";87 interfaceTexts["visualization.noPlateform"] = '<bean:message key="visualization.noPlateform"/>'; 88 interfaceTexts["visualization.noParameter"] = '<bean:message key="visualization.noParameter"/>'; 89 interfaceTexts["visualization.button.visualize"] = '<bean:message key="visualization.button.visualize"/>'; 90 interfaceTexts["visualization.button.download"] = '<bean:message key="visualization.button.download"/>'; 91 interfaceTexts["visualization.loading.data"] = '<bean:message key="visualization.loading.data"/>'; 92 interfaceTexts["visualization.Unvalid_Period"] = "<bean:message key="visualization.Unvalid_Period"/>"; 93 interfaceTexts["visualization.quicklook"] = "<bean:message key="visualization.quicklook"/>"; 94 interfaceTexts["visualization.button.today"] = "<bean:message key="visualization.button.today"/>"; 95 interfaceTexts["visualization.button.clear"] = "<bean:message key="visualization.button.clear"/>"; 96 96 97 interfaceTexts[" data.visualization.selectDate"] = "<bean:message key="data.visualization.selectDate"/>";98 interfaceTexts[" data.visualization.selectYear"] = "<bean:message key="data.visualization.selectYear"/>";99 interfaceTexts[" data.visualization.selectMonth"] = "<bean:message key="data.visualization.selectMonth"/>";100 interfaceTexts[" data.visualization.selectDay"] = "<bean:message key="data.visualization.selectDay"/>";101 interfaceTexts[" data.visualization.selectTime"] = "<bean:message key="data.visualization.selectTime"/>";102 interfaceTexts[" data.visualization.selectHour"] = "<bean:message key="data.visualization.selectHour"/>";103 interfaceTexts[" data.visualization.selectMinute"] = "<bean:message key="data.visualization.selectMinute"/>";97 interfaceTexts["visualization.selectDate"] = "<bean:message key="visualization.selectDate"/>"; 98 interfaceTexts["visualization.selectYear"] = "<bean:message key="visualization.selectYear"/>"; 99 interfaceTexts["visualization.selectMonth"] = "<bean:message key="visualization.selectMonth"/>"; 100 interfaceTexts["visualization.selectDay"] = "<bean:message key="visualization.selectDay"/>"; 101 interfaceTexts["visualization.selectTime"] = "<bean:message key="visualization.selectTime"/>"; 102 interfaceTexts["visualization.selectHour"] = "<bean:message key="visualization.selectHour"/>"; 103 interfaceTexts["visualization.selectMinute"] = "<bean:message key="visualization.selectMinute"/>"; 104 104 105 interfaceTexts[" data.visualization.graph.noPlot"] = "<bean:message key="data.visualization.graph.noPlot"/>";106 interfaceTexts[" data.visualization.add"] = "<bean:message key="data.visualization.add"/>";107 interfaceTexts[" data.visualization.button.init"] = "<bean:message key="data.visualization.button.init"/>";108 interfaceTexts[" data.visualization.parameter"] = "<bean:message key="data.visualization.parameter"/>";105 interfaceTexts["visualization.graph.noPlot"] = "<bean:message key="visualization.graph.noPlot"/>"; 106 interfaceTexts["visualization.add"] = "<bean:message key="visualization.add"/>"; 107 interfaceTexts["visualization.button.init"] = "<bean:message key="visualization.button.init"/>"; 108 interfaceTexts["visualization.parameter"] = "<bean:message key="visualization.parameter"/>"; 109 109 110 interfaceTexts[" data.visualization.parameter.buttons.help"] = "<bean:message key="data.visualization.parameter.buttons.help"/>";111 interfaceTexts[" data.visualization.parameter.buttons.help.text"] = "<bean:message key="data.visualization.parameter.buttons.help.text"/>";110 interfaceTexts["visualization.parameter.buttons.help"] = "<bean:message key="visualization.parameter.buttons.help"/>"; 111 interfaceTexts["visualization.parameter.buttons.help.text"] = "<bean:message key="visualization.parameter.buttons.help.text"/>"; 112 112 113 interfaceTexts["<%=AxeTypeForFixedPlateform.TIME_LINE%>"] = "<bean:message key=" data.visualization.axeType.TimeLine"/>";114 interfaceTexts["<%=AxeTypeForFixedPlateform.TIME_POINTS%>"] = "<bean:message key=" data.visualization.axeType.TimePoints"/>";115 interfaceTexts["<%=AxeTypeForMobilePlateform.D2_POINTS%>"] = "<bean:message key=" data.visualization.axeType.2DPoints"/>";113 interfaceTexts["<%=AxeTypeForFixedPlateform.TIME_LINE%>"] = "<bean:message key="visualization.axeType.TimeLine"/>"; 114 interfaceTexts["<%=AxeTypeForFixedPlateform.TIME_POINTS%>"] = "<bean:message key="visualization.axeType.TimePoints"/>"; 115 interfaceTexts["<%=AxeTypeForMobilePlateform.D2_POINTS%>"] = "<bean:message key="visualization.axeType.2DPoints"/>"; 116 116 117 117 interfaceTexts["data.access.extract3"] = "<bean:message key="data.access.extract3"/>";
Note: See TracChangeset
for help on using the changeset viewer.