anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mi 24 Apr, 2024 12:23

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: So 01 Feb, 2009 15:18 
Offline
Held
Held

Registriert: Sa 21 Okt, 2006 14:40
Beiträge: 216
Wohnort: Berlin
Geschlecht: Männlich
Skype: shris5000
Hallo Leute,

ich habe eine Frage bezüglich der Templatewahl. Wenn ich in der Biografie bin habe ich ja dort alle auf dem Server vorhandenen Templates zur Auswahl, wenn man jetzt natürlich mehrere hat wird des ja ein wenig voll...
Nun würde ich es gerne so ändern das die Templates in einem Listenfeld (also mit diesem kleinen Pfeil an der rechten Seite) angezeigt werden und so ausgewählt werden können...

Für Einstellungen bezüglich "Email senden wenn du eine neue Ye olde Mail bekommst" geht dies ja...
Allerdings blicke ich da mit dem Code nicht so richtig durch ich hab mir die prefs.php angeschaut aber das ist für mich ein wenig verwirrend...
Wie kann man dies nun einstellen?



MfG Shris


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 01 Feb, 2009 15:58 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Hi,

betrachten wir erstmal den Übeltäter...
$this->bbcode_second_pass_code('', 'if ($handle = @opendir("templates")){
$skins = array();
while (false !== ($file = @readdir($handle))){
if (strpos($file,".htm")>0){
array_push($skins,$file);
}
}
if (count($skins)==0){
output("`b`@Argh, dein Admin hat entschieden, daß du keine Skins benutzen darfst. Beschwer dich bei ihm, nicht bei mir.`n");
}else{
output("<b>Skin:</b><br>",true);
while (list($key,$val)=each($skins)){
output("<input type='radio' name='template' value='$val'".$_COOKIE['template']==""&&$val=="yarbrough.htm" || $_COOKIE['template']==$val?"checked":"").">".substr($val,0,strpos($val,".htm"))."<br>",true);
}
}
}
')
Da du ja nur die Ausgabe des Ganzen modifizieren willst, kann dir ja eigentlich wumpe sein, wie die Daten eingelesen werden. Der Vollständigkeit halber aber hier noch mal der Schnellüberblick:
In $handle wird ein Verweis auf den Ordner templates abgelegt, damit daraus gelesen werden kann.
Womit auch sogleich fortgefahren wird: Solange es Einträge gibt werden diese im Array $skins abgelegt.
Wenn es keine Skins zur Auswahl stehen gibt' s eine Fehlermeldung, aber das ignorieren wir mal
Ansonsten folgt eine Kurze Überschrift und dann wird über unser $skins-Array iteriert.

So, hier wird es jetzt interessant für dich!
Die Output-Zeile sieht zwar etwas wirr aus mit seinen Unmengen von Verkettungen und Trinitätsoperationen, aber wenn man das ganze mal ein bisschen ordnet und zerlegt kommt das dabei raus:
$this->bbcode_second_pass_code('', '
$checked = "";
if((empty($_COOKIE['template']) && $val=="yarbrough.htm") || $_COOKIE['template'] == $val) $checked = "checked";
$tplname = substr($val, 0, strpos($val,".htm"));
output("<input type='radio' name='template' value='$val' $checked>$tplname<br>",true);
')
Sollte gleich viel besser lesbar sein, als die kompakte Zeile Code aus dem Original. Außerdem sollte gleich ersichtlich sein, was du nun noch ändern musst: Statt dem normalen <input> musst du hier die <option>-Einträge eines <select>-Feldes (das du davor und danach natürlich noch ausgeben musst) zusammen bauen. Alles was du dazu brauchst liegt bereits vor:
Der interne Name mit .htm-Endung für das System ($val),
der Ausgabename ($tplname) und
checked oder ein leerer String, je nach dem ob das gerade ausgegebene Template gerade aktiv ist ($checked).

Viel Erfolg mit deiner Umsetzung, es wäre nett, wenn du sie hier Posten würdest.
Auric

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 01 Feb, 2009 16:23 
Offline
Held
Held

Registriert: Sa 21 Okt, 2006 14:40
Beiträge: 216
Wohnort: Berlin
Geschlecht: Männlich
Skype: shris5000
ok also nochmal zum verständnis:

$this->bbcode_second_pass_code('', 'if ($handle = @opendir("templates")){
$skins = array();')

damit wird auf den templates ordner verwiesen und $skins wird als array benutzt, das hab ich verstanden^^

aber den Output-Teil:

$this->bbcode_second_pass_code('', '$checked = "";
if((empty($_COOKIE['template']) && $val=="yarbrough.htm") || $_COOKIE['template'] == $val) $checked = "checked";
$tplname = substr($val, 0, strpos($val,".htm"));
output("<input type='radio' name='template' value='$val' $checked>$tplname<br>",true);')

jetzt soll ich allerdings anstatt <input> <option> Einträge aus einem <select> Feld benutzen, das <select> muss vorher allerdings ausgegeben werden damit damit überhaupt was angefangen werden kann...
Wie mache ich das nun allerdings?

ich habe jetzt z.B.

$this->bbcode_second_pass_code('', '
output("<option type='select' name='template' value='$val' $checked>$tplname<br>",true);
')

das würde als auswahltypen ein selectfeld geben und würde dies halt für templates übernehmen aus dem vorher festgelegten $val und würde dies überprüfen durch $checked sehe ich das richtig oder bin ich da mit meiner denkweise falsch??



MfG Shris


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 01 Feb, 2009 18:51 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 11 Feb, 2006 19:39
Beiträge: 596
Wohnort: Stuttgart - Waiblingen
Geschlecht: Männlich
LoGD: http://logd.legend-of-vinestra.de/source
Skype: da-chosen-one
ein Select input ist so aufgebaut:

PHP:
<select name="XY">
<option value="X">Optionname</option>
</select>

Siehe auch: http://de.selfhtml.org/html/formulare/auswahl.htm

name muss in diesem Fall template sein, denn sonst müsstest du (unnötigerweise) weiter Dinge umändern. Betrachte auch bei value, was im Original benutzt wurde (Bei radio). Das selbe gilt für checked. Hierbei muss man allerdings selected setzen. Frage ab, ob das im cookie festgelegte template genau das ist, welches beim Durchlauf der Schleife gerade bearbeitet wird. Wenn ja, bei <option> noch den Zusatz selected.

Das sollte nicht schwer sein.

Gutes Gelingen :)

MfG
Draz

_________________
$this->bbcode_second_pass_code('', '(define-record-procedures choco-cookie
make-choco-cookie choco-cookie?
(choco-cookie-choco
choco-cookie-cookie))

(define Prinzenrolle
(make-choco-cookie choco-cookie-choco-standard (* 2 choco-cookie-cookie-standard)))')


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 64 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum