MOD mise en forme de util.js et conf.js, à faire pour tous les autres js
[euphorik.git] / js / pageProfile.js
1 // coding: utf-8
2 // Copyright 2008 Grégory Burri
3 //
4 // This file is part of Euphorik.
5 //
6 // Euphorik is free software: you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation, either version 3 of the License, or
9 // (at your option) any later version.
10 //
11 // Euphorik is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with Euphorik. If not, see <http://www.gnu.org/licenses/>.
18
19 function PageProfile(client, formateur, util)
20 {
21 this.nom = "profile"
22
23 this.client = client
24 this.formateur = formateur
25 this.util = util
26 }
27
28 PageProfile.prototype.contenu = function()
29 {
30 // pourquoi ?
31 return ""
32 }
33
34 PageProfile.prototype.charger = function()
35 {
36 $("#page").html(this.getHTML())
37
38 // en fonction du statut
39 if (this.client.authentifie())
40 this.chargerProfile()
41 else
42 this.chargerLogin()
43
44 $("#page form#profile").submit(function(){return false})
45 }
46
47 PageProfile.prototype.chargerProfile = function()
48 {
49 var thisPage = this
50
51 $("form#profile input.login").val(this.client.login)
52 $("form#profile input.pseudo").val(this.client.pseudo)
53 $("form#profile input.email").val(this.client.email)
54 $("form#profile input#viewTooltips").attr("checked", this.client.viewTooltips)
55 $("form#profile input#viewTimes").attr("checked", this.client.viewTimes)
56
57 $("form#profile select#chatOrder option").removeAttr("selected")
58 $("form#profile select#chatOrder option[value=" + this.client.chatOrder + "]").attr("selected", "selected")
59
60 $("form#profile select#affichagePseudo option").removeAttr("selected")
61 $("form#profile select#affichagePseudo option[value=" + this.client.nickFormat + "]").attr("selected", "selected")
62
63 if (this.client.ostentatiousMaster)
64 {
65 $("form#profile select#degreeOstentatoire option").removeAttr("selected")
66 $("form#profile select#degreeOstentatoire option[value=" + this.client.ostentatiousMaster + "]").attr("selected", "selected")
67 }
68
69 $("form#profile button").click(
70 function()
71 {
72 thisPage.client.pseudo = thisPage.formateur.filtrerInputPseudo($("form#profile input.pseudo").val())
73 thisPage.client.email = $("form#profile input.email").val()
74 thisPage.client.chatOrder = $("form#profile select#chatOrder option:selected").attr("value")
75 thisPage.client.nickFormat = $("form#profile select#affichagePseudo option:selected").attr("value")
76 if (thisPage.client.ekMaster)
77 thisPage.client.ostentatiousMaster = $("form#profile select#degreeOstentatoire option:selected").attr("value")
78 thisPage.client.viewTooltips = $("form#profile input#viewTooltips").attr("checked")
79 thisPage.client.viewTimes = $("form#profile input#viewTimes").attr("checked")
80
81 var password = $("form#profile input.password").val()
82 var passwordRe = $("form#profile input.passwordRe").val()
83 if (password != "" || passwordRe != "")
84 {
85 if (password != passwordRe)
86 {
87 thisPage.util.messageDialogue("Les mots de passes ne correspondent pas")
88 return
89 }
90 thisPage.client.password = thisPage.util.md5(password)
91 }
92
93 if(!thisPage.client.flush())
94 thisPage.util.messageDialogue("Impossible de mettre à jour votre profile, causes inconnues", euphorik.Util.messageType.erreur)
95 else
96 {
97 thisPage.util.messageDialogue("Votre profile a été mis à jour")
98 thisPage.pages.afficherPage("minichat")
99 }
100 }
101 )
102 }
103
104 PageProfile.prototype.chargerLogin = function()
105 {
106 var thisPage = this
107
108 $("#page form#profile button").click(
109 function()
110 {
111 if(thisPage.client.connexionLogin($("form#profile input.login").val(), thisPage.util.md5($("form#profile input.password").val())))
112 {
113 // TODO afficher un message "ok"
114 thisPage.pages.afficherPage("minichat")
115 }
116 }
117 )
118 }
119
120 PageProfile.prototype.getHTML = function()
121 {
122 return '\
123 <form action="" id="profile" >\
124 <table>\
125 <tr>\
126 <td>login</td>\
127 <td><input class="login" type="text" size="20" maxlength="20" ' + (this.client.authentifie() ? 'readonly="readonly"' : '') + ' /></td>\
128 </tr>\
129 <tr>\
130 <td>password</td>\
131 <td><input class="password" type="password" size="20" maxlength="20"/></td>\
132 </tr>' +
133 (this.client.authentifie() ? '\
134 <tr>\
135 <td>password re</td>\
136 <td><input class="passwordRe" type="password" size="20" maxlength="20"/></td>\
137 </tr>\
138 <tr>\
139 <td>pseudo</td>\
140 <td><input class="pseudo" type="text" size="40" maxlength="20"/></td>\
141 </tr>\
142 <tr>\
143 <td>e-mail</td>\
144 <td><input class="email" type="text" size="40" maxlength="100"/></td>\
145 </tr>\
146 <tr>\
147 <td>Ordre des messages</td>\
148 <td>\
149 <select id="chatOrder">\
150 <option value="chrono">Chronologique</option>\
151 <option value="reverse">Anti-chronologique</option>\
152 </select>\
153 </td>\
154 </tr>\
155 <tr>' +
156 (this.client.ekMaster ? '<td>Degrée d\'ostentation</td>\
157 <td>\
158 <select id="degreeOstentatoire">\
159 <option value="invisible">Nul</option>\
160 <option value="light">Faible</option>\
161 <option value="heavy">Élevé</option>\
162 </select>\
163 </td>' : '') +
164 '</tr>\
165 <tr>\
166 <td>Affichage des identifiants</td>\
167 <td>\
168 <select id="affichagePseudo">\
169 <option value="nick">Pseudo</option>\
170 <option value="login">Login</option>\
171 <option value="nick_login">Pseudo(Login)</option>\
172 </select>\
173 </td>\
174 </tr>\
175 <tr>\
176 <td>Afficher les infos bulles</td>\
177 <td><input type="checkbox" id="viewTooltips" /></td>\
178 </tr>\
179 <tr>\
180 <td>Afficher les dates</td>\
181 <td><input type="checkbox" id="viewTimes" /></td>\
182 </tr>' : '') + '\
183 <tr>\
184 <td></td>\
185 <td><button>Valider</button>\
186 </tr>\
187 </table>\
188 </form>'
189 }
190