Problem: Mehrere CMS_HTML und CMS_HTMLHEAD dynamisch

wayfearer
Beiträge: 84
Registriert: Fr 13. Apr 2007, 17:37
Wohnort: Siegen
Kontaktdaten:

Beitrag von wayfearer »

es ging ja nicht darum das du das modul schreiben sollst, sondern zum besseren verständnis dir meienn code mal anschauen solltest, mehr nicht ;-)

ich hab ja aktuell nur das problem dass der die schleife zwar "richtig" abarbeitet aber die rückgabe des contenido skripts was in der datenbank hinterlegt war so nicht ganz funktioniert.

klar mit regEx könnte ich das machen, das problem ist halt nur ich bin nachher nicht der Redakteur und der Kunde muss es einfach haben.

Und da möchte ich potentielle Fehlerquellen vermeiden.
Und wenn der halt extra noch was eingeben muss dann ist das ne potentielle Fehlerquelle.

Mfg,

Marcel
Zitat des Tages:
Web 2.0 ist ... wenn selbst die Antiterror-Datei XML kompatibel ist !

_________________

Was kam zuerst: Das Huhn oder das Ei ?

Das Antwortet der OOP-Entwickler:
Das Ei ist das Objekt, welches aus der Klasse Huhn abgeleitet wird. Die Klasse Huhn erweitert die Klasse Hühnerstall.

Das Antwortet der Christ:
Und Gott schuf Himmel und Erde, die Pflanzen, die Tiere, die Menschen ... und keine Eier!-)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

na dann poste den modul-code mal. draufschauen kann ich alleweil.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
wayfearer
Beiträge: 84
Registriert: Fr 13. Apr 2007, 17:37
Wohnort: Siegen
Kontaktdaten:

Beitrag von wayfearer »

So hier der Code auf aktuellem Stand:

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :      Tabbed Content
* Author(s)   :     Marcel Bensch
* Copyright   :     MISTRAL! marketing, Marcel Bensch
* Created     :     23.10.2007
* Credits     :     Danke an kummer, und wosch für eure Hilfe !!!
************************************************/
/**
 * Initialisierung des Moduls und der Modulvariablen
 */
$anzahl = "CMS_VALUE[1]";
$instance = "CMS_VALUE[2]";

//Überprüfen ob Daten übergeben wurden

if (!isset($anzahl) || empty($anzahl) || $anzahl="0")
{
    $anzahl ="2";
}

if (!isset($instance) || empty($instance) || $instance == "0")
{
    $instance == "1";
}

/**
 * Bin ich im Bearbeitungsmodus oder nicht ?
 */
$editmode = false;                      // Standardinitialisierung der Variable ist false
if($contenido&&($view=="edit")){        // Überprüfung auf Editmode
    $editmode = true;                   // Wenn okay, dann bin ich im Editmode
}

/**
 * Abarbeitung des Skriptes je nach Modus (Editmode / Viewmode)
 */

//Editmode
if ($editmode===true) {

    /**
    * Includes der benötigten Klassen
    */
    cInclude("includes", "functions.lang.php");
    cInclude("classes", "class.htmlelements.php");

    echo "<span style=\"background-color:gray;border:1px solid orange;color:white;\">----[Tabbed Content]----</span><br /><br /><blockquote>";


    $val=40;
    for($i=0;$i<=$anzahl;$i++)
    {

        echo "<span style=\"background-color:grey;border:1px solid orange;color:black;\">----[Tabbed Content Item Nr. $i]----</span><br />";

        /**
        * Editierbares Feld ausgeben, analog zu CMS_HTML[n]
        */

        $tmp = $a_content['CMS_HTML'][$val];
        $tmp = urldecode($tmp);

        $tmp = AddSlashes(AddSlashes($tmp));
        $tmp = str_replace("\\\'","'",$tmp);
        $tmp = str_replace("\$",'\\\$',$tmp);

        if ($tmp == "")
        {
            $tmp = "&nbsp;";
        }

        $insiteEditingDIV = new cHTMLDiv;
        $insiteEditingDIV->setId("HTML_".$db->f("idtype")."_".$val);
        $insiteEditingDIV->setEvent("Focus", "this.style.border='1px solid #bb5577';");
        $insiteEditingDIV->setEvent("Blur", "this.style.border='1px dashed #bfbfbf';");
        $insiteEditingDIV->setStyleDefinition("border", "1px dashed #bfbfbf");
        $insiteEditingDIV->setStyleDefinition("direction", langGetTextDirection($lang));

        $insiteEditingDIV->updateAttributes(array("contentEditable" => "true"));

        $insiteEditingDIV->setContent("_REPLACEMENT_");


        /* Edit anchor and image */
        $editLink = $sess->url("front_content.php?action=10&idcat=$idcat&idart=$idart&idartlang=$idartlang&type=CMS_HTML&typenr=$val");
        $editAnchor = new cHTMLLink;
        $editAnchor->setLink("javascript:setcontent('$idartlang','" . $editLink . "');");

        $editButton = new cHTMLImage;
        $editButton->setSrc($cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"]."but_edithtml.gif");
        $editButton->setBorder(0);
        $editButton->setStyleDefinition("margin-right", "2px");

        $editAnchor->setContent($editButton);


        /* Save anchor and image */
        $saveAnchor = new cHTMLLink;
        $saveAnchor->setLink("javascript:setcontent('$idartlang','0')");

        $saveButton = new cHTMLImage;
        $saveButton->setSrc($cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"]."but_speichern.gif");
        $saveButton->setBorder(0);

        $saveAnchor->setContent($saveButton);

        /* Process for output with echo */
        $finalEditButton = $editAnchor->render();
        $finalEditButton = AddSlashes(AddSlashes($finalEditButton));
        $finalEditButton = str_replace("\\\'","'",$finalEditButton);

        $finalEditingDiv = $insiteEditingDIV->render();
        $finalEditingDiv = AddSlashes(AddSlashes($finalEditingDiv));
        $finalEditingDiv = str_replace("\\\'","'",$finalEditingDiv);

        $finalEditingDiv = str_replace("_REPLACEMENT_", $tmp, $finalEditingDiv);

        $finalSaveButton = $saveAnchor->render();
        $finalSaveButton = AddSlashes(AddSlashes($finalSaveButton));
        $finalSaveButton = str_replace("\\\'","'",$finalSaveButton);

        echo $finalEditingDiv . $finalEditButton . $finalSaveButton ;



        $val++;
    }
    echo "</blockquote><span style=\"background-color:grey;border:1px solid orange;color:white;\">----[Tabbed Content End]----</span><br /><br />";
}

//Viewmode
else {

    /** echo "<script type='text/javascript' language='JavaScript'>";

    echo "var sheet_HTML". $instance." = Array();\n";

    echo "function change_tabs_$instance(sheet)
            {
                //alert('sheet_tab' + sheet);
                for(i=0;i<" , count(${$data.$instance}->sheets) , ";i++)
                {
                    document.getElementById('sheet_tab$instance' + i).className = 'tab_base';
                }
                document.getElementById('table_loader_div$instance').innerHTML=sheet_HTML".$instance."[sheet];
                document.getElementById('sheet_tab$instance' + sheet).className = 'tab_loaded';

            }
            ";

    echo "</script>";

    echo "<div id=\"table_complete_$instance\" align=\"center\">";
    echo "<div id=\"tabellen_tabs_$instance\">";
    echo "<table class='table_tabs' NAME='tab_table_$instance' align='left'>";
    echo "<tr>";

        for($sheet=0;$sheet<count(${$data.$instance}->sheets);$sheet++)
        {
            echo "<td class='tab_base' id='sheet_tab".$instance.$sheet."' align='center'onmousedown=\"change_tabs_$instance($sheet);\">";
            echo ${$data.$instance}->boundsheets[$sheet]['name'];
            echo "</td>";
        }

    echo "</tr>";
    echo "</table>";
    echo "</div>";
    echo "<div id=table_loader_div$instance></div>";
    echo "<script type='text/javascript' language='JavaScript'>";
    echo "change_tabs_$instance(0);";
    echo "</script>";
    echo "</div>";
    echo "<div style=\"clear:both;\" ></div><p>&nbsp;</p>";
}
*/
    echo "Funktioniert !";
}
?>
Das Javascript ist noch auskommentiert, da ich es noch nicht auf das Modul angepasst habe. Den Input muss ich noch entsprechend schreiben.

Mfg,

Marcel
Zitat des Tages:
Web 2.0 ist ... wenn selbst die Antiterror-Datei XML kompatibel ist !

_________________

Was kam zuerst: Das Huhn oder das Ei ?

Das Antwortet der OOP-Entwickler:
Das Ei ist das Objekt, welches aus der Klasse Huhn abgeleitet wird. Die Klasse Huhn erweitert die Klasse Hühnerstall.

Das Antwortet der Christ:
Und Gott schuf Himmel und Erde, die Pflanzen, die Tiere, die Menschen ... und keine Eier!-)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

ich vermute das problem hier:

Code: Alles auswählen

$val=40;
    for($i=0;$i<=$anzahl;$i++) 
du willst ja $val iterieren. das müsste nach mir so aussehen:

Code: Alles auswählen

for($val=0;$val<$anzahl;$val++) 
gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL »

ich finde die Idee mit dem Seperator und Regex auch sehr gut.

hierfür würde ich aber für die einfache Pflege den "<hr>"-Tag verwenden, da die Darstellung eindeutig zwei Bereiche abtrennt und es im Tiny einen Button für doofe gibt :)

Desweiteren würde ich den ersten H1-Tag als Titel des Tab's verwenden
oder einen Tag mit einer bestimmten Classe.

(Auch ich habe das Zeit/Geld Problem und werde mich eventuel später nochmal darum kümmern )
wayfearer
Beiträge: 84
Registriert: Fr 13. Apr 2007, 17:37
Wohnort: Siegen
Kontaktdaten:

Beitrag von wayfearer »

kummer hat geschrieben:ich vermute das problem hier:

Code: Alles auswählen

$val=40;
    for($i=0;$i<=$anzahl;$i++) 
du willst ja $val iterieren. das müsste nach mir so aussehen:

Code: Alles auswählen

for($val=0;$val<$anzahl;$val++) 
gruss,
andreas
Nicht ganz, die Schleife dient lediglich dazu die Anzahl der Container zu bestimmen, das funktioniert ja auch. das $val ist ja die laufende zahl.
Die soll mit 40 beginnen und bis xyz gehen.

deshalb wird außerhalb der schleife $val mit 40 initialisiert und am ende der schleife $val inkrementiert.

Schau dir das nochmal genau an:

Code: Alles auswählen

$val=40;
    for($i=0;$i<=$anzahl;$i++)
    { 

Code: Alles auswählen

echo $finalEditingDiv . $finalEditButton . $finalSaveButton ;



        $val++;
    } 
;-)


Ich vermute das Problem eher an folgenden Stellen:

Code: Alles auswählen

$tmp = $a_content['CMS_HTML'][$val];
Wo wird dieses Array initialisiert ?

Code: Alles auswählen

$insiteEditingDIV->setId("HTML_".$db->f("idtype")."_".$val);
Wo wird das Objekt $db initialisiert ?


Ich such mal weiter, wer ne Idee hat einfach posten ;-)

Mfg,

Marcel


P.s: Ich glaube das Zeit/Geld Problem hat jeder und deswegen schließt man sich ja in einer Community zusammen um sich gegenseitig zu helfen und mit Ideen zu bereichern. ich würd mal sagen ein Geben und ein Nehmen, für die Hilfe bekommt man ja nachher auch wieder was zurück meistens in Form von nem neuen OpenSource Script.
Zitat des Tages:
Web 2.0 ist ... wenn selbst die Antiterror-Datei XML kompatibel ist !

_________________

Was kam zuerst: Das Huhn oder das Ei ?

Das Antwortet der OOP-Entwickler:
Das Ei ist das Objekt, welches aus der Klasse Huhn abgeleitet wird. Die Klasse Huhn erweitert die Klasse Hühnerstall.

Das Antwortet der Christ:
Und Gott schuf Himmel und Erde, die Pflanzen, die Tiere, die Menschen ... und keine Eier!-)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

gib doch die beiden werte mal mit einem echo an den schirm? der aufruf von $db->f("idtype") sollte eigentlich - glaube ich - eine 1 zurückgeben.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
wayfearer
Beiträge: 84
Registriert: Fr 13. Apr 2007, 17:37
Wohnort: Siegen
Kontaktdaten:

Beitrag von wayfearer »

der gibt mir eben gar nichts aus, das ist ja mein problem.

ich denke mal in $db versteckt sich ja ein Contenido Datenbank Objekt.
Allerdings liefert mir das halt nichts zurück komischerweise.

Genauso das Array, nix drin.

Aber ich habe auch keine Fehlermeldungen auf dem Schirm.
Zitat des Tages:
Web 2.0 ist ... wenn selbst die Antiterror-Datei XML kompatibel ist !

_________________

Was kam zuerst: Das Huhn oder das Ei ?

Das Antwortet der OOP-Entwickler:
Das Ei ist das Objekt, welches aus der Klasse Huhn abgeleitet wird. Die Klasse Huhn erweitert die Klasse Hühnerstall.

Das Antwortet der Christ:
Und Gott schuf Himmel und Erde, die Pflanzen, die Tiere, die Menschen ... und keine Eier!-)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

dann schau dir doch mal den inhalt der con_code an. und zwar von einem eintrag, der ein CMS_HTML verwendet (also nicht von deinem neuen modul). möglicherweise wird noch vor dem modul selber code ausgeführt, der dann im inneren verwendet wird, respektive auf den bezug genommen wird.

die idtype kannst du im übrigen ganz normal direkt als wert setzen. du musst einfach wissen, welcher wert es ist. der dürfte sich dann nicht mehr ändern.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
wayfearer
Beiträge: 84
Registriert: Fr 13. Apr 2007, 17:37
Wohnort: Siegen
Kontaktdaten:

Beitrag von wayfearer »

das mit der idtype als wert hab ich shcon probiert.

Gibt es eigentlich eine aktuelle API-doc zur 4.6.15 ??? Heb nur die von der 4.4.x

Mfg,

Marcel
Zitat des Tages:
Web 2.0 ist ... wenn selbst die Antiterror-Datei XML kompatibel ist !

_________________

Was kam zuerst: Das Huhn oder das Ei ?

Das Antwortet der OOP-Entwickler:
Das Ei ist das Objekt, welches aus der Klasse Huhn abgeleitet wird. Die Klasse Huhn erweitert die Klasse Hühnerstall.

Das Antwortet der Christ:
Und Gott schuf Himmel und Erde, die Pflanzen, die Tiere, die Menschen ... und keine Eier!-)
wayfearer
Beiträge: 84
Registriert: Fr 13. Apr 2007, 17:37
Wohnort: Siegen
Kontaktdaten:

Beitrag von wayfearer »

In der con_code sind die CMS_HTML oder CMS_HTMLHEAD Elemente schon alle geparse so das da nicht mehr der eigentliche Moduloutput steht sonder halt schon die fertigen Werte eingesetzt wurden, bringt mich so also nicht weiter. Ich stöber mal ein bisschen durch die DB vielleicht finde ich ja noch was.
Zitat des Tages:
Web 2.0 ist ... wenn selbst die Antiterror-Datei XML kompatibel ist !

_________________

Was kam zuerst: Das Huhn oder das Ei ?

Das Antwortet der OOP-Entwickler:
Das Ei ist das Objekt, welches aus der Klasse Huhn abgeleitet wird. Die Klasse Huhn erweitert die Klasse Hühnerstall.

Das Antwortet der Christ:
Und Gott schuf Himmel und Erde, die Pflanzen, die Tiere, die Menschen ... und keine Eier!-)
wayfearer
Beiträge: 84
Registriert: Fr 13. Apr 2007, 17:37
Wohnort: Siegen
Kontaktdaten:

Beitrag von wayfearer »

Okay ich habe ein bisschen gestöbert aber nichts gefunden, dann habe ich mir mal den Quelltext im Backend angeschaut wenn ich bei dem entsprechenden Artikel auf Editor geklickt habe folgendes kam dabei heraus:

Ausschnitt aus dem relevanten Bereich:

Code: Alles auswählen

<span style="border: 1px solid orange; background-color: gray; color: white;">----[Tabbed Content]----</span>
<br/>
<br/>
<blockquote>
<span style="border: 1px solid orange; background-color: grey; color: black;">----[Tabbed Content Item Nr. 0]----</span>
<br/>
<div id="\\\"HTML_2_40\\\"" ltr;\\\="" #bfbfbf;direction:="" dashed="" 1px="" style="" contenteditable="\\\"true\\\"" ;\\\="" #bfbfbf\="" onblur="\\\"this.style.border=\'1px" #bb5577\="" solid="" onfocus="\\\"this.style.border=\'1px"/>
<a id="\\\"m2\\\"" href="\\\"javascript:setcontent(\'12\',\'front_content.php?action=10&idcat=26&idart=12&idartlang=12&type=CMS_HTML&typenr=40&contenido=531fdeb52cb5121cd9aadf43e2bc3855\');\\\"">
</a>
<a id="\\\"m4\\\"" href="\\\"javascript:setcontent(\'12\',\'0\')\\\"">
</a>
<span style="border: 1px solid orange; background-color: grey; color: black;">----[Tabbed Content Item Nr. 1]----</span>
<br/>
<div id="\\\"HTML_2_41\\\"" ltr;\\\="" #bfbfbf;direction:="" dashed="" 1px="" style="" contenteditable="\\\"true\\\"" ;\\\="" #bfbfbf\="" onblur="\\\"this.style.border=\'1px" #bb5577\="" solid="" onfocus="\\\"this.style.border=\'1px"/>
<a id="\\\"m7\\\"" href="\\\"javascript:setcontent(\'12\',\'front_content.php?action=10&idcat=26&idart=12&idartlang=12&type=CMS_HTML&typenr=41&contenido=531fdeb52cb5121cd9aadf43e2bc3855\');\\\"">
</a>
<a id="\\\"m9\\\"" href="\\\"javascript:setcontent(\'12\',\'0\')\\\"">
</a>
<span style="border: 1px solid orange; background-color: grey; color: black;">----[Tabbed Content Item Nr. 2]----</span>
<br/>
<div id="\\\"HTML_2_42\\\"" ltr;\\\="" #bfbfbf;direction:="" dashed="" 1px="" style="" contenteditable="\\\"true\\\"" ;\\\="" #bfbfbf\="" onblur="\\\"this.style.border=\'1px" #bb5577\="" solid="" onfocus="\\\"this.style.border=\'1px"/>
<a id="\\\"m12\\\"" href="\\\"javascript:setcontent(\'12\',\'front_content.php?action=10&idcat=26&idart=12&idartlang=12&type=CMS_HTML&typenr=42&contenido=531fdeb52cb5121cd9aadf43e2bc3855\');\\\"">
</a>
<a id="\\\"m14\\\"" href="\\\"javascript:setcontent(\'12\',\'0\')\\\"">
</a>
</blockquote>
<span style="border: 1px solid orange; background-color: grey; color: white;">----[Tabbed Content End]----</span>
Und so sieht es bei normalen CMS_HTML Elementen aus:

Code: Alles auswählen

<div id="content">
<div id="HTML_2_1" style="border: 1px dashed rgb(191, 191, 191); direction: ltr;" contenteditable="true" onblur="this.style.border='1px dashed #bfbfbf';" onfocus="this.style.border='1px solid #bb5577';">
</div>
<a id="m2" href="javascript:setcontent('14','front_content.php?action=10&idcat=27&idart=14&idartlang=14&type=CMS_HTML&typenr=1&contenido=531fdeb52cb5121cd9aadf43e2bc3855');">
</a>
<a id="m4" href="javascript:setcontent('14','0')">
</a>
<br/>
<br/>
Ich würde mal sagen da stimmt was nicht was die Slashes angeht.
Zitat des Tages:
Web 2.0 ist ... wenn selbst die Antiterror-Datei XML kompatibel ist !

_________________

Was kam zuerst: Das Huhn oder das Ei ?

Das Antwortet der OOP-Entwickler:
Das Ei ist das Objekt, welches aus der Klasse Huhn abgeleitet wird. Die Klasse Huhn erweitert die Klasse Hühnerstall.

Das Antwortet der Christ:
Und Gott schuf Himmel und Erde, die Pflanzen, die Tiere, die Menschen ... und keine Eier!-)
wayfearer
Beiträge: 84
Registriert: Fr 13. Apr 2007, 17:37
Wohnort: Siegen
Kontaktdaten:

Beitrag von wayfearer »

So ich darf damit verkünden:

Es funktioniert !

Ich musste nur die AddSlashes und String Replaces rausnehmen, da die wohl nur für das parsen von CMS_HTML notwendig sind.


Also ich bastel dann mal weiter und ihr dürft euch dann schonmal auf ein nettes kleines Modülchen freuen.

Noch mal vielen Dank an alle, besonders an kummer ;-)

Mfg,

Marcel
Zitat des Tages:
Web 2.0 ist ... wenn selbst die Antiterror-Datei XML kompatibel ist !

_________________

Was kam zuerst: Das Huhn oder das Ei ?

Das Antwortet der OOP-Entwickler:
Das Ei ist das Objekt, welches aus der Klasse Huhn abgeleitet wird. Die Klasse Huhn erweitert die Klasse Hühnerstall.

Das Antwortet der Christ:
Und Gott schuf Himmel und Erde, die Pflanzen, die Tiere, die Menschen ... und keine Eier!-)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

bitte, bitte... :lol: und wir freuen uns natürlich, wenn das teil publiziert werden wird!
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
conradius
Beiträge: 168
Registriert: Di 19. Jul 2005, 11:52
Wohnort: Wabern (Bern/CH)
Kontaktdaten:

Beitrag von conradius »

hey wayfearer,

ich will ja nicht die ganze Arbeit wieder zunichte machen, aber ich hätte da eine ganz andere Idee für ein Tab-Liste (sorry). Ich nehme zwar an, dass Du jetzt nicht mehr umsteigst...

Die wäre so: Du erstellst eine Artikelliste (einfach eine ul aller Artikel in einer Kategorie), die stylest Du dann so, dass sie horizontal als Tabs erscheinen und bindest dieses Modul in den entsprechenden Tab-Templates dann einfach oberhalb des normal zu gebrauchenden Text-HTML Inhalts ein.

Ich habe da mal so ein Modul erstellt, falls Du noch Interesse hast...
Ein Beispiel dazu findest Du hier: http://www.spur-wechsel.ch/front_content.php?idart=10

Gruss,
Conradius
Gesperrt