Wiki noch in Betrieb ? Fehler anpassen:

Gesperrt
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Wiki noch in Betrieb ? Fehler anpassen:

Beitrag von rethus » Mi 27. Nov 2013, 16:37

Ist das Wiki hier noch in Betrieb:
http://www.contenido-wiki.org/wiki/inde ... =CMS_TYP's

Ich finde da nirgends ein "Register" Link um mich anzumelden. Mein Forum-Passwort geht auch nicht.
Zudem scheint es hier auch nochmal zu sein:
https://docs.contenido.org/display/CONDEVE/Content+type



Auf dieser Seite ist unten ein Fehler, da die unten stehende Variante 5.1 Eigenen CMS-Type nicht mehr mit < 4.1 kompatibel ist.

Der Code muss wie folgt angepasst werden:

Code: Alles auswählen

   function make_cms_type( $container_type, $container_id ) {
       global $a_content, $idartlang, $idart, $idcat, $lang, $db, $edit, $sess, $client, $cfg, $cfgClient;

       $sql = "SELECT * FROM ".$cfg["tab"]["type"]." WHERE type = '$container_type'";
       $db->query($sql);

       $db->next_record();
       $cms_code    = $db->f("code");
       $cms_idtype  = $db->f("idtype");

       if( !cRegistry::isBackendEditMode() ) {
           $db2     = cRegistry::getDb();
           #$db2    = new DB_Contenido;
           $sql     = "SELECT * FROM ".$cfg["tab"]["content"]." AS A, ".$cfg["tab"]["art_lang"]." AS B, ".$cfg["tab"]["type"]." AS C
                   WHERE A.idtype = C.idtype AND A.idartlang = B.idartlang AND B.idart = '".cSecurity::toInteger($idart)."' AND B.idlang = '".cSecurity::escapeDB($lang, $db)."' AND
                         A.idtype = '".$cms_idtype."' AND A.typeid = '".$container_id."'";
           $db2->query($sql);
           $db2->next_record();
           $a_content[$db2->f("type")][$db2->f("typeid")] = $db2->f("value");
       }

       $val = $container_id;

       eval($cms_code);
       $tmp_output = str_replace('\\\"','"',$tmp);
       $tmp_output = stripslashes($tmp_output);

       return $tmp_output;
   }
Zuletzt geändert von rethus am Mi 27. Nov 2013, 18:33, insgesamt 1-mal geändert.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Wiki noch in Betrieb ? Fehler anpassen:

Beitrag von rethus » Mi 27. Nov 2013, 16:59

Mhh, sehe gerade, dass die Funktion dennoch nicht geht.
Gebe ich das erste SQL-Statement aus und führe es in der DB direkt aus, erhalte ich eine Ergebniszeile,
die Zeile

Code: Alles auswählen

	   $cms_code    = $db->f("code");
in der Funktion, gibt aber nichts zurück. Es scheint, die DB wird gar nicht abgefragt. Ein Fehler wird aber auch nicht geworfen.
Hat jemand ne Idee, woran das liegen kann?
$db->getErrorMessage gibt "null" zurück.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Wiki noch in Betrieb ? Fehler anpassen:

Beitrag von rethus » Mi 27. Nov 2013, 18:28

Ok, hab es nun soweit eingegrenzt, dass er aus der Tabelle con_type die Spalte code holt und via eval ausführen möchte, diese ist aber in der 4.9er leer.

Scheinbar hat sich hier etwas an der struktur geändert, denn in der 4.8 hat da noch was drin gestanden wie folgendes für CMS_HEAD :

Code: Alles auswählen

/**
 * CMS_HEAD
 */
$tmp = $a_content["CMS_HEAD"][$val];
$tmp = urldecode($tmp);
$tmp = htmlspecialchars($tmp);
$tmp = str_replace("'", "\'", $tmp);
$tmp = str_replace("\$",'\\\$',$tmp); 

if ($edit) {

   /* Edit anchor and image */
   $editLink = $sess->url("front_content.php?action=10&idcat=$idcat&idart=$idart&idartlang=$idartlang&type=CMS_HEAD&typenr=$val&lang=$lang");
   $editAnchor = new cHTMLLink;
   $editAnchor->setClass('CMS_HEAD_'.$val.'_EDIT CMS_LINK_EDIT');
   $editAnchor->setLink("javascript:setcontent('$idartlang','".$editLink."');");
   //Save all content
   
   $editButton = new cHTMLImage;
   $editButton->setSrc($cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"]."but_edithead.gif");
   $editButton->setBorder(0);
   $editButton->setStyleDefinition("margin-right", "2px");
       
   $editAnchor->setContent($editButton);
   
   /* Process for output with echo */
   $finalEditButton = $editAnchor->render();
   $finalEditButton = AddSlashes(AddSlashes($finalEditButton));
   $finalEditButton = str_replace("\\\'","'",$finalEditButton);

   $tmp = $tmp.$finalEditButton;
}
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Wiki noch in Betrieb ? Fehler anpassen:

Beitrag von rethus » Mi 27. Nov 2013, 19:11

Ok, ich denke in beiden Wikis sind die Einträge veraltet und nicht mehr auf 4.9 anwendbar.

Der Code Kann nun ganz einfach gegen einen anderen ersetzt werden.
Diesen Poste ich aber in einem Eigenen Thread, um es hier übersichtlich zu halten.

Hie der Link:
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

xmurrix
Beiträge: 3149
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Wiki noch in Betrieb ? Fehler anpassen:

Beitrag von xmurrix » Do 28. Nov 2013, 10:25

Hallo rethus,

die Inhalte im Wiki wurden seit langem nicht mehr aktualisiert, genauso wie die Contenido-FAQ Seite. Finde es schade...

Nun zum Thema Content-Type:
In 4.9 wurde der Code der Content-Typen auf das Dateisystem verlagert, es ist nicht mehr in der Tabelle con_type drin.

Du kannst den Code für einen Content-Type auf 2 Arten implementieren, als eine Content-Type Klasse oder als ein include-Script, das Erstere mit der Klasse sollte verwendet werden.

Nehmen wir an, du hast einen eigenen Content-Type CMS_MYTYPE, dann gibt es folgende Mögichkeiten:

1. Content-Type Klasse
Eine Datei "class.content.type.mytype.php" im Verzeichnis "contenido/classes/content_types/" erstellen. Darin die Klasse "cContentTypeMytype" implementieren, diese sollte von "cContentTypeAbstract" erben.

Beispiel:

Code: Alles auswählen

class cContentTypeMytype extends cContentTypeAbstract {

    public function __construct($rawSettings, $id, array $contentTypes) {
        parent::__construct($rawSettings, $id, $contentTypes);
        $this->_type = 'CMS_MYTYPE';
    }

    // View Code generieren...
    public function generateViewCode() {
        $code = '...';
        return $code;
    }

    // Edit Code generieren...
    public function generateEditCode() {
        $code = '...';
        return $code;
    }

}
2. Content-Type include Datei
Alternativ zu Klasse kannst du eine Datei "include.CMS_MYTYPE.code.php" im Verzeichnis "contenido/includes/type/code/" erstellen.

Beispiel:

Code: Alles auswählen

$tmp = $a_content['CMS_MYTYPE'][$val];

if ($edit) {
    // Code für edit view
    $tmp = '...';
}

$tmp = addslashes($tmp);
$tmp = str_replace("\\'", "'", $tmp);
$tmp = str_replace("\$", '\\$', $tmp);
Der Code in dieser Datei braucht die globale Variable $a_content um sich den aktuellen Wert zu holen. Du musst damit rechnen, dass in Zukunft diese Variable $a_content wegfällt, da man Stück für Stück solche Anhängigkeiten abschafft.

Beide Beispiele sind nicht vollsändig, sollen aber grob die Richtung zeigen, wie das nun funktioniert. In der Version 4.9 gibt es zu allen gelieferten Content-Typen die cContentType* Klassen unter "contenido/classes/content_types/".
Ansonsten kannst du von 4.8 den Code aus der Tabelle con_type als Vorlage für die include-Version verwenden.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Wiki noch in Betrieb ? Fehler anpassen:

Beitrag von rethus » Do 28. Nov 2013, 12:52

Danke für die Antwort, habe mich zwischenzeitlich durchgewurchtelt und dass hier erstellt:

http://forum.contenido.org/viewtopic.php?f=92&t=34744

Ich brauchte keinen eigenen neuen Content-Type, sondern lediglich einen dynamischen.
Mir ist es wirklich ein Rätsel, warum dass nicht schon längst umgesetzt wurde, da diese Anfrage schon seit Jahren immer wieder aufkommt.
Nun ja, mit der neuen Struktur gehts ja. Und wer mag darf gerne helfen das Modul weiter zu optimieren,
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Wiki noch in Betrieb ? Fehler anpassen:

Beitrag von Faar » Do 28. Nov 2013, 14:34

Das Wiki ist in Betrieb und eigentlich müsste man sich nur einen Zugang geben lassen, um dort schreiben zu können.
Ich würde mal Dominik Ziegler als Ansprechpartner nennen.
Hier ist die jüngere Geschichte des Wiki: http://forum.contenido.org/viewtopic.php?f=78&t=33422

Mehr Doku wäre auf jeden Fall gut und im Wiki passt es gut, wenn sie auch von unserer Seite kommt.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Gesperrt