^_^

Gesperrt
i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

^_^

Beitrag von i-fekt » Do 24. Feb 2005, 01:03

^_^
Zuletzt geändert von i-fekt am Do 21. Okt 2010, 12:37, insgesamt 1-mal geändert.

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Do 24. Feb 2005, 01:05

Hallo,

deine Frage ist leider etwas zu ungenau; bitte gib uns mehr Informationen ueber das Problem. Weitere Infos zum Thema "Wie stelle ich gute Fragen" findest du hier:

http://www.contenido.org/forum/viewtopic.php?p=4821

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Do 24. Feb 2005, 09:43

^_^
Zuletzt geändert von i-fekt am Do 21. Okt 2010, 12:38, insgesamt 1-mal geändert.

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Do 24. Feb 2005, 13:04

Schau dir mal die Einträge in der con_type an

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Do 24. Feb 2005, 13:34

^_^
Zuletzt geändert von i-fekt am Do 21. Okt 2010, 12:38, insgesamt 1-mal geändert.

dp
Beiträge: 21
Registriert: So 13. Feb 2005, 11:11
Kontaktdaten:

Beitrag von dp » Do 24. Feb 2005, 14:39

Eine Tabelle? DeinPrefix_type.
Wer aufhört sich zu verbessern, hat aufgehört gut zu sein.

Edanis
Beiträge: 61
Registriert: So 13. Jun 2004, 15:08
Wohnort: Witten
Kontaktdaten:

Beitrag von Edanis » Di 1. Mär 2005, 02:32

Hallo, Craxx.

Um eine Selectbox (oder Pulldown) auszugeben brauchst Du einen neuen Typ. Ich hatte sowieso vor, als Übung einen zu 'erfinden', würde das mal machen, im Moment geht aber nicht, wenn Du noch Zeit hast, sonst habe ich nur paar Gedanken dazu. Vielleicht kannst Du das schon.

Also, ein Typ ist ein Speicherplatz plus ein Dialog zum Speichern der Werte. Bei CMS_HTML ist das etwa ein editierbares Abschnitt dessen Inhalt übernommen wird. Bei der Selectbox wird aber ein Problem auftauchen, das sie eine Liste Alternativen anbieten muss und diese wiederum kontextabhängig ist: Hier willst Du ein Bild horizontal ausrichten, dort vertikal, da eine Hintergrundfarbe setzen und hier die Schriftgröße. Und die Alternativenliste wird die Typdefinition eben nicht kennen. Ich stelle mir deshalb zwei Möglichkeiten vor:

Nach Contenido Art musst Du für jede Gelegenheit einen Typ definieren, zB.:
* CMS_HALIGN mit Optionen "links", "rechts", "mitte", "keine"
* CMS_VALIGN dasgleiche fürs Vertikale ausrichten,
* Vielleicht noch CMS_ALIGNMENT fasst beide Ausrichtungen zusammen, also "linksoben",...;"seitenmitte"
usw.

Eine weitere Möglichkeit ist dagegen flexibel aber nicht nach Contenido, uzw. sie erwartet ein Feld mit möglichen Alternativen aus dem dann ausgewählt wird, in einem Array vor dem Aufruf CMS_SELECT, also etwa so:

Code: Alles auswählen

$cms_select = array ("left" => "Linksbündig", "right" => "Rechtsbündig", ...);
echo "CMS_SELECTEDIT[15]";
...
echo "<p align='CMS_SELECT[15]'>";
CMS_SELECTEDIT gibt Dein Pulldown aus und beim Auswahl "Linksbündig" liefert CMS_SELECT den Wert "left". Du wirst es aber nichtim include.CMS_IMG.php einsetzen sondern direkt im Modul.

Zu beachten ist dass man zwei Typen definieren muss, einen für das Dialog und anderen für die Auswahlanforderung, wie: CMS_IMGDESCR wählt das Bild aus und CMS_IMG liefert seine URL.

Wenn keiner schneller ist bekommst Du die Imlementierung vielleicht nach Wochenende.

Edward

Edanis
Beiträge: 61
Registriert: So 13. Jun 2004, 15:08
Wohnort: Witten
Kontaktdaten:

Beitrag von Edanis » Di 15. Mär 2005, 04:35

Hallo Craxx

So, hats gedauert aber anscheinend habe ich da falsch rangegangen (s.u.)

Wenn Du nicht schon ein Typ geschrieben hast, ist hier meine Version

In der Tabelle con_type zwei neue Typen anlegen, "CMS_ALIGN" und "CMS_ALIGNEDIT". die ID's (idtype) sind ab 1000 für benutzerdefinierte Typen frei.

Code: Alles auswählen

/**
* CMS_ALIGN
*/

$tmp = $a_content["CMS_ALIGN"][$val];

if (!in_array($tmp, array("left", "center", "right", "justify"))) $tmp = "left";

Code: Alles auswählen

/**
* CMS_ALIGNEDIT
*/

$tmp = "";

if ($edit) {
    $tmp = '<A HREF="' . $sess->url("front_content.php?action=10&" . "idcat=$idcat&idart=$idart&" . "idartlang=$idartlang&type=CMS_ALIGN&typenr=$val&lang=$lang") . '">
                 <IMG SRC="' . $cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"] . 'but_editalign.gif" border=0>
            </A>';
    $tmp = addslashes($tmp);
    $tmp = addslashes($tmp);
}
Unter includes die Datei include.CMS_ALIGN.php anlegen mit folgendem Inhalt:

Code: Alles auswählen

<?php

/******************************************
* File      :   include.CMS_ALIGN.php
* Project   :   Contenido
* Descr     :   Include file for editiing
*               content of type CMS_ALIGN
******************************************/

$align_values = array("left"     => "linksb&uuml;ndig", 
                       "center"  => "zentriert", 
                       "right"   => "rechtsb&uuml;ndig", 
                       "justify" => "Blocksatz");
                       
if ( $doedit == "1") {
    if (in_array ($CMS_ALIGN, array_keys ($align_values))) {
        consaveContentEntry($idartlang, "CMS_ALIGN", $typenr, $CMS_ALIGN);
        conGenerateCodeForArtInAllCategories($idart);
    }
    header("location:".$sess->url($cfgClient[$client]["path"]["htmlpath"]."front_content.php?area=$tmp_area&idart=$idart&idcat=$idcat&changeview=edit")."");
}

getAvailableContentTypes($idartlang);

$CMS_ALIGN = $a_content["CMS_ALIGN"][$typenr];

echo '<html>
<head>
<title></title>
    <link rel="stylesheet" type="text/css" href="'. $cfg["path"]["contenido_fullhtml"].$cfg["path"]["styles"] . 'contenido.css">
    <base href="'. $cfgClient[$client]["path"]["htmlpath"]. '">
</head>
<body>
<form method="post" action="' .$cfg["path"]["contenido_fullhtml"].$cfg["path"]["includes"]. 'include.backendedit.php">

<table style="width:100%; height=100%" border=0 cellspacing="0" cellpadding="0" bgcolor="#ffffff">
    <tr>
        <td>
            <INPUT type=hidden name=lang value="'.$lang.'">';
$sess->hidden_session();
echo '
            <INPUT type=hidden name=typenr value="'.$typenr.'">
            <INPUT type=hidden name=idart value="'.$idart.'">
            <INPUT type=hidden name=idcat value="'.$idcat.'">
            <INPUT type=hidden name=idartlang value="'.$idartlang.'">
            <INPUT type=hidden name=doedit value="1">      
            <INPUT type=hidden name=action value="10">
            <INPUT type=hidden name=type value="'.$type.'">
            <INPUT type=hidden name=changeview value="edit">
        </td>
    </tr><tr>
        <td style="width:100%; height=100%; text-align: center;">
            <table border=0 cellspacing="5" cellpadding="0" bgcolor="#ffffff">
                <tr class="text_medium">
                    <td>Horizontale Ausrichtung:</td>
                    <td>
                        <SELECT name="CMS_ALIGN" size="1" style="width: 150px;">';
foreach ($align_values as $skey => $svalue) {
    echo '
                            <OPTION value="'.$skey.'"'.($skey == $CMS_ALIGN ? ' selected="selected"' : '').'>'.$svalue.'</OPTION>';
}
echo '
                        </SELECT>
                    </td>
                </tr>
                <tr>
                    <td></td>
                    <td style="text-align: right;">
                        <a href="' . $sess->url($cfgClient[$client]["path"]["htmlpath"]."front_content.php?area=$tmp_area&idart=$idart&idcat=$idcat&idartlang=$idartlang") . '"><img src="' . $cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"] . 'but_cancel.gif" border=0 /></a>
                        <input type=image name=submit value=editcontent src="' . $cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"] . 'but_ok.gif" border=0 />
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>

</form>
</body>
</html>';
Untter images folgendes Bild hinterlegen Bild

Und das ganze Testen:

Code: Alles auswählen

<!-- Testmodul OUTPUT -->
<?php 

echo "<p align=CMS_ALIGN[1]>"; 
echo "\nDer Absatz hier wurde mit der Ausrichtungsauswahl formatiert.\n"; 
echo "</p>"; 
echo "CMS_ALIGNEDIT[1]";

?>
<!-- Testmodul ende-->
Wenn das ganze instaliert ist gibt CMS_ALIGNEDIT im Editor das obige Bild, angeklickt erscheint im Frame eine Maske wo man aus Dropdown eine der Ausrichtungsmöclichkeiten (links. rechts, mittig, blocksatz) auswzuwählen hat. Nach Auswahl kann die Ausrichtung per CMS_ALIGN abgefragt werden. Durch Trennung bleibt CMS_ALIGN auch im Backend frei von Schaltern, dh. macht das Layout nicht kaputt.

Aber eigentlich ist ein simples Auswahlfeld für ein neues Frame ein weing zuschade, ich hätte gerne das Auswahlfeld direkt im Editor, quasi Layoutediting. Deshalb hatte ich anfangs ein Typ ausgedacht das alles selbst ohne die Includedatei erledigen soll. Das Code wäre dann (für con_type)

Code: Alles auswählen

/**
* CMS_ALIGNEDIT
*/

if ($edit) {
    $select_values = array("left" => "linksb&uuml;ndig",
                            "center" => "zentriert",
                            "right" => "rechtsb&uuml;ndig",
                            "justify" => "Blocksatz");
    
    if ($_REQUEST["type"] == "CMS_ALIGN" && $_REQUEST["typenr"] == $val) {
        $SAvalue = $_REQUEST["SAvalue"];
        if (in_array ($SAvalue, array_keys ($select_values))) {
            consaveContentEntry($idartlang, "CMS_ALIGN", $val, $SAvalue);
            conGenerateCodeForArtInAllCategories($idart);
            header( "location:".$sess->url($cfgClient[$client]["path"]["htmlpath"]."front_content.php?area=$tmp_area&idart=$idart&idcat=$idcat&changeview=edit"));
        }
    }
}

$tmp = $a_content["CMS_ALIGN"][$val];

if ($edit) {

    $editselect = '
        <FORM name="SAForm_'.$val.'" method="post" action="'.$sess->url("front_content.php?idcat=$idcat&idart=$idart&idartlang=$idartlang&type=CMS_ALIGN&typenr=$val").'">
            <SELECT name="SAvalue">';
    foreach ($select_values as $skey => $svalue) {
        $editselect .= '
                <OPTION value="'.$skey.'"'.($skey == $tmp ? ' selected="selected"' : '').'>'.$svalue.'</OPTION>';
    }
    $editselect .= '
            </SELECT>
            <INPUT type="image" name="submit" value="editselect" src="'.$cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"].'but_speichern.gif" border="0">
        </FORM>';

    $editselect = addslashes($editselect);
    $editselect = addslashes($editselect);
    $tmp = $editselect;
}
unset ($select_values);

?>
Und dieses Code lieferte mir einen Eintrag in errorlog, und zwar
[14-Mar-2005 23:53:11] PHP Parse error: parse error in E:\Projekte\WebSeiten\LocalWeb\contenido\contenido\includes\include.con_editcontent.php(570) : eval()'d code on line 246
Dabei ist die Fehlerzeile irgendein Kommentar oder Text wo gar kein Fehler sein kann. Der Fehler verschwindet wenn ich consaveContentEntry rausnehme aber dann wird nichts gespeichert.

Ist es nicht möglich, die Werte ohne "Zwischenstops" abzuspeichern, das Formular das mein letztes Typenskript aufbaut schickt den Auswahlwert doch brav ab. Würde deshalb nur ausreichen wenn der Wert beim Templatefenster include.CMS_ALIGN.php ankommen würrde. Oder liegt da ein Fehler meinerseits?

Gruss, Edward

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Fr 5. Aug 2005, 12:45

^_^
Zuletzt geändert von i-fekt am Do 21. Okt 2010, 12:38, insgesamt 1-mal geändert.
Gruss,
Michael

"Keep on riding this Bike!" (Jackson Mulham)

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Fr 5. Aug 2005, 15:18

vlt beim letzten codeabschniit noch ein

Code: Alles auswählen

<?php
davor setzen ? bzw das am ende rausnehmen .. ist nur vemrutung hab mir weder die tabelen angeschaut noch das ganze gedöns getestet.


so long stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

Edanis
Beiträge: 61
Registriert: So 13. Jun 2004, 15:08
Wohnort: Witten
Kontaktdaten:

CMS_SELECT, Teil 1

Beitrag von Edanis » So 7. Aug 2005, 00:51

Nein, keine Ahnung woran das liegen kann, auch die Lösung mit dem vergessenen ?> (war wirklich vergessen) hat nichts gebracht. Die Entwicklung hatte ich aber zu den Akten gelegt, erst als gestern die Nachfrage kam, hatte ich das Problem wieder aufgenommen. Das Problem bei den Auswahllisten ist dass es viele Problemme sind, wo eine Ausrichtung auszuwählen ist, einer will horizontal ausrichten der andere vielleicht den Textfluß steuern (da gibt es kein 'center oder 'justify') ocer Schriftfarbe festlegen.

Und da die CMS Typen nicht parametrisiert werden können, ich meine so etwas wie CMS_SELECT[<Optionenliste>][<Variablennummer>] wird nicht verstanden, muss man eben für alle Angelegenheiten ein CMS Typ schreiben mit eigener Optionenliste. Das wollte ich etwas vereifachen. Außerdem gefällt mir wie oben erwähnt nicht dass die Auswahlbox in einem Frame angezeigt wird, das finde ich einfach Verschwendung.

Ich habe deshalb ausprobiert und, die einzige Lösung die bei mir mit einem Schönheitsfehler funktioniert die Idee von Emergence implementiert (Link). Das Sammeltyp habe ich aber nicht CMS_STORAGE genannt sondern CMS_SELECT weil es mit der Auswahl zu tun hat. Das Ganze ist wohl für ein Posting zulang also drei Teilen.

Die meiste Arbeit erledigt die Bibliothek, die ist dazu da damit das meiste Code nicht wiederholt auf der Seite landet (jedes mal wenn man die Typvariable setzt)

Code: Alles auswählen

<?php
/******************************************
* File      :   include.CMS_SELECT.php
* Project   :   Contenido
* Descr     :   Include file for editiing
*               content of type CMS_SELECT
******************************************/

$select_id    = $_REQUEST["select_id"];
$select_value = $_REQUEST["select_value"];

// Note: there are two selection id: $select_id and $cms_id in the script.
// $select_id is the id of the selection a user want to save, this id is sent 
// to contenido by browser. $cms_id is the id used to build the form with the 
// select box on it. There are several such boxies and if the user want to save 
// one of them only this selection must be saved.


/**
 * void selBuildSelectBox(int select_id, array select_values)
 *
 * Builds a select box to make the desired selection.
 *
 * select_id is the id of the selection to set, i.e. 15 if the selection is
 * to save in the content variable CMS_SELECT[15].
 *
 * select_values is an array with selection values and names given as pairs
 * value => name, i.e. if it is an array ('left' => 'Left', 'right' => 'Right'),
 * the select box ist build with names 'Left' and 'Right' shown and values
 * 'left', 'right' saved, the HTML code will be in that case:
 * <SELECT>
 *   <OPTION value="left">Left</OPTION>
 *   <OPTION value="right">Right</OPTION>
 * </SELECT>
 */
function selBuildSelectBox($cms_id, $select_values){

### echo "selBuildSelectBox($cms_id, $select_values) <br>\n";

    global $idart, $idcat, $lang, $idartlang, $sess, $edit, $cfg;  

    if ($edit) {

        $select = selReadSelectValue($cms_id);

        $result = '
            <FORM name="SELECTEDIT_'.$cms_id.'" id="SELECTEDIT_'.$cms_id.'" method="post" action="'.$sess->url("front_content.php?idcat=$idcat&idart=$idart&idartlang=$idartlang&select_id=$cms_id").'">
                <SELECT name="select_value">';

        foreach ($select_values as $skey => $svalue) {
            $result .= '
                    <OPTION value="'.$skey.'"'.($skey == $select ? ' selected="selected"' : '').'>'.$svalue.'</OPTION>';
        }

        $result .= '
                </SELECT>
                <INPUT type="image" name="submit" value="editselect" src="'.$cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"].'but_speichern.gif" border="0">
            </FORM>';
    }
    
    return ($result);

} // end of function //


/**
 * void selWriteSelectValue(int select_id, string select_value)
 *
 * If possible saves the selection into the database
 *
 * select_id is the id of the selection to set, i.e. 15 if the selection is
 * to save in the content variable CMS_SELECT[15].
 *
 * select_value is the value to save.
 *
 */
function selWriteSelectValue($cms_id, $select_value){

### echo "selWriteSelectValue($cms_id, $select_value) <br>\n";

    global $cfg, $edit, $auth, $idart, $lang, $idartlang, $select_id;
    if ( !$edit || $cms_id != $select_id || $cms_id < 1 || $select_value == "" ) return false; //leave with return, result makes no sense.
    $db = new DB_Contenido;

    $select_value = urlencode ($select_value);

    // determine the article id
    if ($idartlang == 0) {
        $db->query("SELECT idartlang FROM ".$cfg["tab"]["art_lang"]." WHERE idart = '$idart' AND idlang = '$lang'");
        $db->next_record();
        $idartlang = $db->f("idartlang");
    }

    // determine the id of the type CMS_SELECT

    $db->query("SELECT idtype FROM ".$cfg["tab"]["type"]." WHERE type = 'CMS_SELECT'");
    $db->next_record();
    $idtype = $db->f("idtype");

    // author and update data

    $author = $auth->auth["uname"];
    $date   = date("Y-m-d H:i:s");

    // insert or replace the entry?

    $db->query("SELECT idcontent
                FROM ".$cfg["tab"]["content"]."
                WHERE idartlang = '$idartlang' AND idtype = '$idtype' AND typeid = '$cms_id'");

    if ($db->next_record()) {
        $idcontent = $db->f("idcontent");

        $db->query("UPDATE ".$cfg["tab"]["content"]."
                    SET    value = '$select_value',
                           lastmodified = '$date'
                    WHERE  idcontent = '$idcontent'");
    } else {
        $idcontent = $db->nextid($cfg["tab"]["content"]);

        $db->query("INSERT INTO ".$cfg["tab"]["content"]."
                    SET    idcontent = '$idcontent',
                           idartlang = '$idartlang',
                           idtype = '$idtype',
                           typeid = '$cms_id',
                           value = '$select_value',
                           version = '',
                           author = '$author',
                           created = '$date',
                           lastmodified = '$date'");
    }

    // if two or more users wrote at the same time, more than one entry may
    // be set - very bad - remove all entries except the last one.

    $db->query("SELECT max(idcontent) AS maxid
                FROM ".$cfg["tab"]["content"]."
                WHERE idartlang = '$idartlang' AND idtype = '$idtype' AND typeid = '$cms_id'");
    $db->next_record();
    $maxid = $db->f("idtype");
    $db->query("DELETE FROM ".$cfg["tab"]["content"]."
                WHERE idcontent < '$maxid' AND
                idartlang = '$idartlang' AND idtype = '$idtype' AND typeid = '$cms_id'");

    // actualise the code

    conGenerateCodeForArtInAllCategories($idart);

} // end of function //


/**
 * string selReadSelectValue(int select_id)
 *
 * reads the actual selection value for the actual article from the database
 * does not use the $a_content array to allow dynamic changes on the value.
 *
 * select_id is the id of the set selection, t.m. 15 if the selection is
 * saved in the content variable CMS_SELECT[15].
 *
 */
function selReadSelectValue($cms_id){

### echo "selReadSelectValue($cms_id) -> ";

    global $cfg, $idart, $lang, $idartlang;
    $db = new DB_Contenido;

    // determine the article id
    if ($idartlang == 0) {
        $db->query("SELECT idartlang FROM ".$cfg["tab"]["art_lang"]." WHERE idart = '$idart' AND idlang = '$lang'");
        $db->next_record();
        $idartlang = $db->f("idartlang");
    }

    // determine the id of the type CMS_SELECT

    $db->query("SELECT idtype FROM ".$cfg["tab"]["type"]." WHERE type = 'CMS_SELECT'");
    $db->next_record();
    $idtype = $db->f("idtype");

    // reads the value

    $db->query("SELECT value
                FROM ".$cfg["tab"]["content"]."
                WHERE idartlang = '$idartlang' AND idtype = '$idtype' AND typeid = '$cms_id'");
    $db->next_record();
    $result = $db->f("value");
    $result = urldecode ($result);
    
### echo "$result<br>\n\n";

    return ($result);

}
?>
Das Code bitte als include.CMS_SELECT.php unter includes/ abspeichern. Zeilen die mit ### anfangen sind da damit man den Schönhetsfehler debuggen kann. Können sonst weg.

Edanis
Beiträge: 61
Registriert: So 13. Jun 2004, 15:08
Wohnort: Witten
Kontaktdaten:

CMS_SELECT, Teil 2

Beitrag von Edanis » So 7. Aug 2005, 00:52

Zum Auslesen der Auswahl dient CMS_SELECT, die geht in con_type

Code: Alles auswählen

/** 
* CMS_SELECT
*/ 

cInclude("includes", "include.CMS_SELECT.php");

$tmp = ( $edit ? selReadSelectValue($val) 
               : urldecode ($a_content['CMS_SELECT'][$val]) );   
               
$tmp = addslashes($tmp); 
$tmp = addslashes($tmp);
Zum Speichern kann man nun ein Typ mit der vordefinierten Auswahl schreiben, zum Beispiel CMS_SELECTHALIGN zur Auswahl der horizontalen Ausrichtung:

Code: Alles auswählen

/** 
* CMS_SELECTHALIGN 
*/ 

cInclude("includes", "include.CMS_SELECT.php");

selWriteSelectValue($val, $select_value);
 
$tmp = selBuildSelectBox($val, array("left" => "linksb&uuml;ndig", 
                                     "center" => "zentriert", 
                                     "right" => "rechtsb&uuml;ndig", 
                                     "justify" => "Blocksatz"));
$tmp = addslashes($tmp);
$tmp = addslashes($tmp);
Oder analog eine feste Farbauswahl:

Code: Alles auswählen

/** 
* CMS_SELECTFONTCOLOR 
*/ 

cInclude("includes", "include.CMS_SELECT.php");

selWriteSelectValue($val, $select_value);
 
$tmp = selBuildSelectBox($val, array("black" => "Schwarz", 
                                     "white" => "Weiß", 
                                     "green" => "Gr&uuml;n", 
                                     "blue" => "Meine Lieblingsfarbe", 
                                     "yellow" => "Gelb"));
$tmp = addslashes($tmp);
$tmp = addslashes($tmp);
Beide müssen wieder in con_type. Die idtype soll dabei oberhalb von 10000 liegen.

Ok, der Test. Das Testmodul sieht dann so aus:

Code: Alles auswählen

<!-- Testmodul OUTPUT --> 
<?php 
echo "CMS_SELECTHALIGN[1]"; 
echo "CMS_SELECTFONTCOLOR[2]"; 

echo "<p align='CMS_SELECT[1]'><font color='CMS_SELECT[2]'>"; 
echo "\nDieser Absatz wurde mit der Ausrichtungsauswahl 'CMS_SELECT[1]' und 
        in der Farbe 'CMS_SELECT[2]' formatiert.\n"; 
echo "</font></p>"; 
?> 
<!-- Testmodul ende-->
Im Backend (nicht in einem Frame) zeigt es nun zwei Auswahlfelder für die Ausrichtung und Schriftfarbe und nach der Auswahl wird auch der Text entsprechend formatiert, jede Auswahl muss einzeln bestätugt werden.

Edanis
Beiträge: 61
Registriert: So 13. Jun 2004, 15:08
Wohnort: Witten
Kontaktdaten:

CMS_SELECT, Teil 3

Beitrag von Edanis » So 7. Aug 2005, 00:53

Und jetzt kommt der Schönheitsfehler. Nach dem ersten Klick wird die Auswahl nur in der Auswahlliste angezeig, der Text passt sich erst nach dem zweiten Klick an, auch wenn das zweite Mahl das andere Button angeklickt wurde. Beispiel Am Anfang ist der Text schwarz und linksbündig ausgerichtet. Ich wähle 'Blocksatz', speichern. Der Frame ist geladen, 'Blocksatz' ist ausgewählt, der Text bleibt aber noch linksbündig, ich wähle blaue Farbe, bestätige, der Frame ist geladen, die Farbliste steht auf blau, der Text ist jetzt im Blocksatz ausgerichtet aber schwarz. Erst wenn ich den Frame nochmal lade ist der Text blau.

Entferne ich nun die '###' im Skript, wird die folgende Aufrufliste ausgegeben

Code: Alles auswählen

selReadSelectValue(1) -> center<br>

selReadSelectValue(2) -> blue<br>

selReadSelectValue(1) -> center<br>

selReadSelectValue(2) -> blue<br>

selWriteSelectValue(1, justify) <br>
selBuildSelectBox(1, Array) <br>
selReadSelectValue(1) -> justify<br>

selWriteSelectValue(2, justify) <br>
selBuildSelectBox(2, Array) <br>
selReadSelectValue(2) -> blue<br>
Die vier Einzelzeilen kommen durch das Auslesen im Textabschnitt zustande, beide Zeilentrippel beim Schreiben. Dabei habe ich die Schreibtypen im Modul zuerst angegeben, der Textabschnitt mit dem Lesetyp aber danach: Die Ausgabe des Textmodils sieht auch so aus:

Code: Alles auswählen

<!-- Testmodul OUTPUT --> 

            <FORM name="SELECTEDIT_1" id="SELECTEDIT_1" method="post" action="front_content.php?idcat=2&idart=22&idartlang=42&select_id=1&contenido=2d52d1908b9f680d15386b6bd0af6d34">
                <SELECT name="select_value">
                    <OPTION value="left">linksb&uuml;ndig</OPTION>
                    <OPTION value="center">zentriert</OPTION>
                    <OPTION value="right">rechtsb&uuml;ndig</OPTION>
                    <OPTION value="justify" selected="selected">Blocksatz</OPTION>
                </SELECT>
                <INPUT type="image" name="submit" value="editselect" src="http://localhost/contenido/contenido/images/but_speichern.gif" border="0">
            </FORM>
            <FORM name="SELECTEDIT_2" id="SELECTEDIT_2" method="post" action="front_content.php?idcat=2&idart=22&idartlang=42&select_id=2&contenido=2d52d1908b9f680d15386b6bd0af6d34">
                <SELECT name="select_value">
                    <OPTION value="black">Schwarz</OPTION>
                    <OPTION value="white">Weiß</OPTION>
                    <OPTION value="green">Gr&uuml;n</OPTION>
                    <OPTION value="blue" selected="selected">Meine Lieblingsfarbe</OPTION>
                    <OPTION value="yellow">Gelb</OPTION>
                </SELECT>
                <INPUT type="image" name="submit" value="editselect" src="http://localhost/contenido/contenido/images/but_speichern.gif" border="0">
            </FORM> 
<p align='center'><font color='blue'>
Dieser Absatz wurde mit der Ausrichtungsauswahl 'center' und 
        in der Farbe 'blue' formatiert.
</font></p> 
<!-- Testmodul ende-->
Das Austauschen beider Teile, Schreibmodule CMS_SELECTHALIGN[1], CMS_SELECTFONTCOLOR[2] und des Textabschnittes hat nichts an der Ausführungsfolge geändert auch das Leerem der con_code Tabelle.

Das heißt irgendwie wird das Code nicht in der Reihenfolge ausgeführt in der ich es im Modul platziert hatte. Weiß jemeand wo der Fehler liegen könnte?

Die Typen sind zwar auch so nutzbar, man muss nur, wenn man mehrere Auswahlfelder anbietet, nachdem man die einzenl abgeklopft hat dieletzte Auswahl zweimal bestätigen. Ist etwas gewöhnungsbedürtig.

Gruss, Edward

Gesperrt