Changeset e57348b3659a5a4ee8c4acbb2d15ca40d1d68c4d
- Timestamp:
- 11/26/06 12:19:22
(2 years ago)
- Author:
- Christopher Jung <bktheg@web.de>
- git-committer:
- Christopher Jung <bktheg@web.de> 1164539962 +0100
- git-parent:
[6785dcb675da16292270d5924f3de13a142e7dd9]
- git-author:
- Christopher Jung <bktheg@web.de> 1164539962 +0100
- Message:
Modul 'Options' fertig implementiert
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r64a09e8 |
re57348b |
|
| 19 | 19 | package net.driftingsouls.ds2.server.modules; |
|---|
| 20 | 20 | |
|---|
| | 21 | import java.io.File; |
|---|
| | 22 | import java.util.List; |
|---|
| | 23 | |
|---|
| | 24 | import org.apache.commons.fileupload.FileItem; |
|---|
| | 25 | import org.apache.commons.fileupload.FileItemFactory; |
|---|
| | 26 | import org.apache.commons.fileupload.FileUploadBase; |
|---|
| | 27 | import org.apache.commons.fileupload.disk.DiskFileItemFactory; |
|---|
| | 28 | import org.apache.commons.fileupload.servlet.ServletFileUpload; |
|---|
| 21 | 29 | import org.apache.commons.lang.StringUtils; |
|---|
| 22 | 30 | |
|---|
| 23 | 31 | import net.driftingsouls.ds2.server.ContextCommon; |
|---|
| | 32 | import net.driftingsouls.ds2.server.comm.PM; |
|---|
| 24 | 33 | import net.driftingsouls.ds2.server.framework.Common; |
|---|
| 25 | 34 | import net.driftingsouls.ds2.server.framework.Configuration; |
|---|
| 26 | 35 | import net.driftingsouls.ds2.server.framework.Context; |
|---|
| | 36 | import net.driftingsouls.ds2.server.framework.Loggable; |
|---|
| 27 | 37 | import net.driftingsouls.ds2.server.framework.User; |
|---|
| 28 | 38 | import net.driftingsouls.ds2.server.framework.bbcode.BBCodeParser; |
|---|
| 29 | 39 | import net.driftingsouls.ds2.server.framework.db.Database; |
|---|
| | 40 | import net.driftingsouls.ds2.server.framework.db.SQLQuery; |
|---|
| | 41 | import net.driftingsouls.ds2.server.framework.db.SQLResultRow; |
|---|
| 30 | 42 | import net.driftingsouls.ds2.server.framework.pipeline.generators.DSGenerator; |
|---|
| 31 | 43 | import net.driftingsouls.ds2.server.framework.templates.TemplateEngine; |
|---|
| … | … | |
| 36 | 48 | * |
|---|
| 37 | 49 | */ |
|---|
| 38 | | public class OptionsController extends DSGenerator { |
|---|
| | 50 | public class OptionsController extends DSGenerator implements Loggable { |
|---|
| 39 | 51 | /** |
|---|
| 40 | 52 | * Konstruktor |
|---|
| … | … | |
| 54 | 66 | /** |
|---|
| 55 | 67 | * Aendert den Namen und das Passwort des Benutzers |
|---|
| 56 | | * |
|---|
| | 68 | * @urlparam String name Der neue Benutzername |
|---|
| | 69 | * @urlparam String pw Das neue Passwort |
|---|
| | 70 | * @urlparam String pw2 Die Wiederholung des neuen Passworts |
|---|
| 57 | 71 | */ |
|---|
| 58 | 72 | public void changeNamePassAction() { |
|---|
| … | … | |
| 123 | 137 | /** |
|---|
| 124 | 138 | * Sendet die Löschanfrage des Spielers |
|---|
| 125 | | * |
|---|
| | 139 | * @urlparam Integer del Der Interaktionsschritt. Bei 0 wird das Eingabeformular angezeigt. Andernfalls wird versucht die Anfrage zu senden |
|---|
| | 140 | * @urlparam String reason Die schluessige Begruendung. Muss mindestens die Laenge 5 haben |
|---|
| 126 | 141 | */ |
|---|
| 127 | 142 | public void delAccountAction() { |
|---|
| 128 | | // TODO |
|---|
| 129 | | Common.stub(); |
|---|
| | 143 | TemplateEngine t = getTemplateEngine(); |
|---|
| | 144 | User user = getUser(); |
|---|
| | 145 | |
|---|
| | 146 | parameterNumber("del"); |
|---|
| | 147 | parameterString("reason"); |
|---|
| | 148 | |
|---|
| | 149 | int del = getInteger("del"); |
|---|
| | 150 | String reason = getString("reason"); |
|---|
| | 151 | if( del == 0 ) { |
|---|
| | 152 | t.set_var( "options.delaccountform", 1 ); |
|---|
| | 153 | |
|---|
| | 154 | return; |
|---|
| | 155 | } |
|---|
| | 156 | else if( reason.length() < 5 ) { |
|---|
| | 157 | t.set_var( "options.message", "Bitte geben sie Gründe für die Löschung an!<br />\n", |
|---|
| | 158 | "options.delaccountform", 1 ); |
|---|
| | 159 | |
|---|
| | 160 | return; |
|---|
| | 161 | } |
|---|
| | 162 | else { |
|---|
| | 163 | StringBuilder msg = new StringBuilder(100); |
|---|
| | 164 | msg.append("PLZ DELETE ME!!!\nMY ID IS: [userprofile="); |
|---|
| | 165 | msg.append(user.getID()); |
|---|
| | 166 | msg.append("]"); |
|---|
| | 167 | msg.append(user.getID()); |
|---|
| | 168 | msg.append("[/userprofile]\n"); |
|---|
| | 169 | msg.append("MY UN IS: "); |
|---|
| | 170 | msg.append(user.getUN()); |
|---|
| | 171 | msg.append("\n"); |
|---|
| | 172 | msg.append("MY CURRENT NAME IS: "); |
|---|
| | 173 | msg.append(user.getName()); |
|---|
| | 174 | msg.append("\n"); |
|---|
| | 175 | msg.append("MY REASONS:\n"); |
|---|
| | 176 | msg.append(reason); |
|---|
| | 177 | PM.sendToAdmins(getContext(), user.getID(), "Account löschen", msg.toString(), 0); |
|---|
| | 178 | |
|---|
| | 179 | t.set_var( "options.delaccountresp", 1, |
|---|
| | 180 | "delaccountresp.admins", Configuration.getSetting("ADMIN_PMS_ACCOUNT") ); |
|---|
| | 181 | |
|---|
| | 182 | return; |
|---|
| | 183 | } |
|---|
| 130 | 184 | } |
|---|
| 131 | 185 | |
|---|
| 132 | 186 | /** |
|---|
| 133 | 187 | * Aendert die erweiterten Einstellungen des Spielers |
|---|
| 134 | | * |
|---|
| | 188 | * @urlparam Integer shipgroupmulti der neue Schiffsgruppierungswert |
|---|
| | 189 | * @urlparam Integer inttutorial Die Seite des Tutorials in der Uebersicht (0 = deaktiviert) |
|---|
| | 190 | * @urlparam Integer scriptdebug Ist fuer den Spieler die Option zum Debugging von (ScriptParser-)Scripten sichtbar gewesen? (es wird hinterher noch auf das AccessLevel gecheckt. Daher kein "Einbruch" moeglich. |
|---|
| | 191 | * @urlparam Integer scriptdebugstatus Bei einem Wert != 0 wird das ScriptDebugging aktiviert (benoetigt AccessLevel >= 20) |
|---|
| | 192 | * @urlparam Integer mapwidth Die Breite der Sternenkarte |
|---|
| | 193 | * @urlparam Integer mapheight Die Hoehe der Sternenkarte |
|---|
| | 194 | * @urlparam Integer defrelation Die Default-Beziehung zu anderen Spielern (1 = feindlich, 2 = freundlich, sonst neutral) |
|---|
| 135 | 195 | */ |
|---|
| 136 | 196 | public void changeXtraAction() { |
|---|
| … | … | |
| 233 | 293 | } |
|---|
| 234 | 294 | |
|---|
| | 295 | private static final int MAX_UPLOAD_SIZE = 307200; |
|---|
| | 296 | |
|---|
| 235 | 297 | /** |
|---|
| 236 | 298 | * Aendert das Logo des Spielers |
|---|
| … | … | |
| 238 | 300 | */ |
|---|
| 239 | 301 | public void logoAction() { |
|---|
| 240 | | // TODO |
|---|
| 241 | | Common.stub(); |
|---|
| | 302 | TemplateEngine t = getTemplateEngine(); |
|---|
| | 303 | |
|---|
| | 304 | List<FileItem> list = getContext().getRequest().getUploadedFiles(); |
|---|
| | 305 | if( list.size() == 0 ) { |
|---|
| | 306 | redirect(); |
|---|
| | 307 | return; |
|---|
| | 308 | } |
|---|
| | 309 | |
|---|
| | 310 | if( list.get(0).getSize() > MAX_UPLOAD_SIZE ) { |
|---|
| | 311 | t.set_var("options.message","Das Logo ist leider zu groß. Bitte wähle eine Datei mit maximal 300kB Grö&stlig;e<br />"); |
|---|
| | 312 | redirect(); |
|---|
| | 313 | return; |
|---|
| | 314 | } |
|---|
| | 315 | |
|---|
| | 316 | String uploaddir = Configuration.getSetting("ABSOLUTE_PATH")+"data/logos/user/"; |
|---|
| | 317 | try { |
|---|
| | 318 | File uploadedFile = new File(uploaddir+getUser().getID()+".gif"); |
|---|
| | 319 | list.get(0).write(uploadedFile); |
|---|
| | 320 | t.set_var("options.message","Das neue Logo wurde auf dem Server gespeichert<br />"); |
|---|
| | 321 | } |
|---|
| | 322 | catch( Exception e ) { |
|---|
| | 323 | t.set_var("options.message","Offenbar ging beim Upload etwas schief (Ist die Datei evt. zu groß?)<br />"); |
|---|
| | 324 | LOG.warn(e); |
|---|
| | 325 | } |
|---|
| | 326 | redirect(); |
|---|
| 242 | 327 | } |
|---|
| 243 | 328 | |
|---|
| 244 | 329 | /** |
|---|
| 245 | 330 | * Setzt die Grafikpak-Einstellungen fuer den Spieler |
|---|
| | 331 | * @urlparam String gfxpak Der neue GfxPak-Pfad. Wenn dieser leer ist, wird der Default-Pfad verwendet |
|---|
| 246 | 332 | * |
|---|
| 247 | 333 | */ |
|---|
| … | … | |
| 282 | 368 | /** |
|---|
| 283 | 369 | * Aktiviert den Vac-Mode fuer den Spieler |
|---|
| 284 | | * |
|---|
| | 370 | * @urlparam Integer vacmode die ID des zu benutzenden Vacmodes |
|---|
| 285 | 371 | */ |
|---|
| 286 | 372 | public void vacModeAction() { |
|---|
| 287 | | // TODO |
|---|
| 288 | | Common.stub(); |
|---|
| | 373 | TemplateEngine t = getTemplateEngine(); |
|---|
| | 374 | User user = getUser(); |
|---|
| | 375 | |
|---|
| | 376 | parameterNumber("vacmode"); |
|---|
| | 377 | int vacmodeID = getInteger("vacmode"); |
|---|
| | 378 | |
|---|
| | 379 | SQLResultRow vacmode = getDatabase().first("SELECT * FROM config_vacmodes WHERE id=",vacmodeID); |
|---|
| | 380 | if( !vacmode.isEmpty() ) { |
|---|
| | 381 | StringBuilder changemsg = new StringBuilder(); |
|---|
| | 382 | |
|---|
| | 383 | user.setVacationCount(vacmode.getInt("dauer")); |
|---|
| | 384 | user.setWait4VacationCount(vacmode.getInt("vorlauf")); |
|---|
| | 385 | |
|---|
| | 386 | changemsg.append("Vacationmodus aktiviert (Dauer: "); |
|---|
| | 387 | changemsg.append(Common.ticks2Days(vacmode.getInt("dauer"))); |
|---|
| | 388 | changemsg.append(")<br />\n"); |
|---|
| | 389 | |
|---|
| | 390 | Common.writeLog("login.log", Common.date( "j.m.Y H:i:s")+": <"+getContext().getRequest().getRemoteAddress()+"> ("+user.getID()+") <"+user.getUN()+"> Vac beantragt: "+vacmode.getInt("vorlauf")+" Wartezeit "+vacmode.getInt("dauer")+" Dauer Browser <"+getContext().getRequest().getUserAgent()+">\n"); |
|---|
| | 391 | |
|---|
| | 392 | t.set_var( "options.message", changemsg.toString() ); |
|---|
| | 393 | } |
|---|
| | 394 | |
|---|
| | 395 | redirect(); |
|---|
| 289 | 396 | } |
|---|
| 290 | 397 | |
|---|
| 291 | 398 | /** |
|---|
| 292 | 399 | * Speichert die neuen Optionen |
|---|
| 293 | | * |
|---|
| | 400 | * @urlparam Integer enableipsess Falls != 0 wird die Koppelung der Session an die IP aktiviert |
|---|
| | 401 | * @urlparam Integer enableautologout Falls != 0 wird der automatische Logout aktiviert |
|---|
| | 402 | * @urlparam Integer showtooltip Falls != 0 werden die Hilfstooltips aktiviert |
|---|
| | 403 | * @urlparam Integer wrapfactor Der neue Schiffsgruppierungsfaktor (0 = keine Gruppierung) |
|---|
| 294 | 404 | */ |
|---|
| 295 | 405 | public void saveOptionsAction() { |
|---|
| 296 | | Database db = getDatabase(); |
|---|
| 297 | 406 | User user = getUser(); |
|---|
| 298 | 407 | TemplateEngine t = getTemplateEngine(); |
|---|
| … | … | |
| 379 | 488 | |
|---|
| 380 | 489 | t.set_block("_OPTIONS","options.general.vac.listitem","options.general.vac.list"); |
|---|
| 381 | | // TODO |
|---|
| 382 | | Common.stub(); |
|---|
| 383 | | /*for( $__vacmodes as $k=>$vacmode ) { |
|---|
| 384 | | $vacdauer = ticks2Days( $vacmode['dauer'])."; Vorlauf: ".$vacmode['vacwait']." Ticks"; |
|---|
| 385 | | |
|---|
| 386 | | $t->set_var( array( 'options.general.vac.dauer' => $vacdauer, |
|---|
| 387 | | 'options.general.vac.index' => $k ) ); |
|---|
| 388 | | |
|---|
| 389 | | $t->parse('options.general.vac.list','options.general.vac.listitem',true); |
|---|
| 390 | | }*/ |
|---|
| | 490 | SQLQuery vacmode = getDatabase().query("SELECT * FROM config_vacmodes"); |
|---|
| | 491 | while( vacmode.next() ) { |
|---|
| | 492 | String vacdauer = Common.ticks2Days( vacmode.getInt("dauer"))+"; Vorlauf: "+vacmode.getInt("vorlauf")+" Ticks"; |
|---|
| | 493 | |
|---|
| | 494 | t.set_var( "options.general.vac.dauer", vacdauer, |
|---|
| | 495 | "options.general.vac.index", vacmode.getInt("id") ); |
|---|
| | 496 | |
|---|
| | 497 | t.parse("options.general.vac.list","options.general.vac.listitem",true); |
|---|
| | 498 | } |
|---|
| | 499 | vacmode.free(); |
|---|
| 391 | 500 | } |
|---|
| 392 | 501 | } |
|---|
| r4d8b620 |
re57348b |
|
| 70 | 70 | <br /> |
|---|
| 71 | 71 | <div style="text-align:center"> |
|---|
| 72 | | <textarea cols="80" rows="17" name="form[reason]"></textarea><br /> |
|---|
| 73 | | {!form_create_hidden delAccount, form[del]:1} |
|---|
| | 72 | <textarea cols="80" rows="17" name="reason"></textarea><br /> |
|---|
| | 73 | {!form_create_hidden delAccount, del:1} |
|---|
| 74 | 74 | <input type="submit" value="Löschung beantragen" /> |
|---|
| 75 | 75 | </div> |
|---|