Changeset e57348b3659a5a4ee8c4acbb2d15ca40d1d68c4d

Show
Ignore:
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
  • src/net/driftingsouls/ds2/server/modules/OptionsController.java

    r64a09e8 re57348b  
    1919package net.driftingsouls.ds2.server.modules; 
    2020 
     21import java.io.File; 
     22import java.util.List; 
     23 
     24import org.apache.commons.fileupload.FileItem; 
     25import org.apache.commons.fileupload.FileItemFactory; 
     26import org.apache.commons.fileupload.FileUploadBase; 
     27import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
     28import org.apache.commons.fileupload.servlet.ServletFileUpload; 
    2129import org.apache.commons.lang.StringUtils; 
    2230 
    2331import net.driftingsouls.ds2.server.ContextCommon; 
     32import net.driftingsouls.ds2.server.comm.PM; 
    2433import net.driftingsouls.ds2.server.framework.Common; 
    2534import net.driftingsouls.ds2.server.framework.Configuration; 
    2635import net.driftingsouls.ds2.server.framework.Context; 
     36import net.driftingsouls.ds2.server.framework.Loggable; 
    2737import net.driftingsouls.ds2.server.framework.User; 
    2838import net.driftingsouls.ds2.server.framework.bbcode.BBCodeParser; 
    2939import net.driftingsouls.ds2.server.framework.db.Database; 
     40import net.driftingsouls.ds2.server.framework.db.SQLQuery; 
     41import net.driftingsouls.ds2.server.framework.db.SQLResultRow; 
    3042import net.driftingsouls.ds2.server.framework.pipeline.generators.DSGenerator; 
    3143import net.driftingsouls.ds2.server.framework.templates.TemplateEngine; 
     
    3648 * 
    3749 */ 
    38 public class OptionsController extends DSGenerator
     50public class OptionsController extends DSGenerator implements Loggable
    3951        /** 
    4052         * Konstruktor 
     
    5466        /** 
    5567         * 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 
    5771         */ 
    5872        public void changeNamePassAction() { 
     
    123137        /** 
    124138         * 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 
    126141         */ 
    127142        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&uuml;nde f&uuml;r die L&ouml;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&ouml;schen", msg.toString(), 0); 
     178                         
     179                        t.set_var(      "options.delaccountresp",               1, 
     180                                                "delaccountresp.admins",                Configuration.getSetting("ADMIN_PMS_ACCOUNT") ); 
     181                         
     182                        return; 
     183                } 
    130184        } 
    131185         
    132186        /** 
    133187         * 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)   
    135195         */ 
    136196        public void changeXtraAction() { 
     
    233293        } 
    234294         
     295        private static final int MAX_UPLOAD_SIZE = 307200; 
     296         
    235297        /** 
    236298         * Aendert das Logo des Spielers 
     
    238300         */ 
    239301        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&szlig;. Bitte w&auml;hle eine Datei mit maximal 300kB Gr&ouml;&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&szlig;?)<br />"); 
     324                        LOG.warn(e); 
     325                } 
     326                redirect(); 
    242327        } 
    243328         
    244329        /** 
    245330         * Setzt die Grafikpak-Einstellungen fuer den Spieler 
     331         * @urlparam String gfxpak Der neue GfxPak-Pfad. Wenn dieser leer ist, wird der Default-Pfad verwendet 
    246332         * 
    247333         */ 
     
    282368        /** 
    283369         * Aktiviert den Vac-Mode fuer den Spieler 
    284          * 
     370         * @urlparam Integer vacmode die ID des zu benutzenden Vacmodes 
    285371         */ 
    286372        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(); 
    289396        } 
    290397         
    291398        /** 
    292399         * 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) 
    294404         */ 
    295405        public void saveOptionsAction() { 
    296                 Database db = getDatabase(); 
    297406                User user = getUser(); 
    298407                TemplateEngine t = getTemplateEngine(); 
     
    379488 
    380489                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(); 
    391500        } 
    392501} 
  • templates/options.html

    r4d8b620 re57348b  
    7070                                <br /> 
    7171                                <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} 
    7474                                        <input type="submit" value="L&ouml;schung beantragen" /> 
    7575                                </div>