Seite 2 von 3

Verfasst: Do 29. Jun 2006, 10:44
von kptkip
[Edit HerrB: Diese Änderung kann Probleme verursachen. Siehe http://www.contenido.org/forum/viewtopi ... 2414#92414]

Hallo, ich habe zum gleichen THema auch noch ein Output produziert, das ebenfalls den kompletten Artikel im Editor anzeigt.
Zusätzliches Feature:

- An den Seitenumbruchstellen wird eine Marke im Editor eingefügt, die dem Redakteur den Seitenumbruch anzeigt.

- die Paginierung wird in einem DIV-Container angezeigt und mit einer CLASS versehen, sodass man CSS zur Formatierung verwenden kann.

Ich habe es zwar noch nicht mit NICHT-Ankern ausprobiert, sollte für meinen Geschmack allerdings gehen.

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :    Article Semi-AutoPageBreak
* Author(s)  :    Stefan Seifarth <info@polycoder.de>
* Copyright  :    www.polycoder.de / www.htcm.de
* Created    :    2006-06-17
************************************************/ 

// include pagebreak class
cInclude("frontend", "includes/class.articlepagebreak.php");

$strAnchorName = "CMS_VALUE[210]";
$strArticle     = "CMS_HTML[1]";
$strDelimiter = '<a name="' . $strAnchorName . '"></a>';

// initialize class 
// parameter delimiter for article spliting
$oArticlePageBreak = new ArticlePageBreak( $strDelimiter );

// set article
$oArticlePageBreak->setArticle( $strArticle );

// set current page for output
$intCurrentPage = 0;
if ( isset($_REQUEST[$oArticlePageBreak->strPageParameter]) && !empty($_REQUEST[$oArticlePageBreak->strPageParameter]) && (int)$_REQUEST[$oArticlePageBreak->strPageParameter] > 0 ) {
    $intCurrentPage = (int)$_REQUEST[$oArticlePageBreak->strPageParameter];
}
$oArticlePageBreak->setCurrentPage($intCurrentPage);

// set Textlinks
$oArticlePageBreak->setTextFirstPage( mi18n("Erste Seite") );
$oArticlePageBreak->setTextPreviousPage( mi18n("Vorhergehende Seite") );
$oArticlePageBreak->setTextNextPage( mi18n("Nächste Seite") );
$oArticlePageBreak->setTextLastPage( mi18n("Letzte Seite") );
$oArticlePageBreak->setTextPreviousRange( mi18n("Zurück") );
$oArticlePageBreak->setTextNextRange( mi18n("Weiter") );
$oArticlePageBreak->setTextPageTitle( mi18n("Gehe zu Seite ") );


// output the current article part
if ($edit && empty($_REQUEST['edit'])) {        // Edit-Mode
  if ( preg_match("/^<([^>]*)>/i", $strDelimiter, $arrTagInlay) ) {
     $bolDelimiterIsTag = $arrTagInlay[1];
  }
  if ( $bolDelimiterIsTag && strlen($bolDelimiterIsTag) > 0 ) {
     $strReplacePattern = '';
     $arrTagParts = explode(" ", $bolDelimiterIsTag);
     if (is_array($arrTagParts)) {
        $arrTagParts = array_filter($arrTagParts);
        $strReplacePattern = '/<' . implode("[^>]*", $arrTagParts) . '[^>]*>/i';
		$strArticle = preg_replace($strReplacePattern,"<div style=\"border:1px dashed #900; color:#a22; text-align:center; padding:0px;\" title=\"An dieser Stelle wird die Seite in bl&auml;tterbare Folgeseiten getrennt. Siehe Vorschau!\">< -- Seitenumbruch -- ></div>",$strArticle);
     }
  }
  else{
    $strArticle = preg_replace($strDelimiter,"<div style=\"border:1px dashed #900; color:#a22; text-align:center; padding:0px;\" title=\"An dieser Stelle wird die Seite in bl&auml;tterbare Folgeseiten getrennt. Siehe Vorschau!\">< -- Seitenumbruch -- ></div>",$strArticle);  
  }
  echo $strArticle;
}

else{                                          // Publish-Mode
  print $oArticlePageBreak->getArticle();

  // get pagination for article
  print "<div class=\"articlePagination\">".$oArticlePageBreak->getPagination()."</div>";
}



/*
// xml output

// add custom xml tags
// (class xmlObject is located in class.articlepagebreak.php)
// 
$oHeadline = new xmlObject(
  "headline", // tag name
  "",  // attributes (given as array)
  "headlinetext",  // content of element
  true  // usage of cdata for content
);
// store the above configured tag into class
$oArticlePageBreak->setXMLAdditionalContentTag($oHeadline);

// output complete xml
print $oArticlePageBreak->getXMLComplete();
*/
?>

Verfasst: Do 29. Jun 2006, 11:36
von stese
das mit der vorschau ist ne gute idee ...

Bei mir macht es was komsches

Verfasst: Mo 9. Okt 2006, 13:10
von DEDE
Hallo und Servus,

bei mir tuts nicht so ganz.

Der Artikel wird dort, wo er geteilt werden soll, nicht geteilt, sondern ZUSÄTZLICH noch einmal ans Ende der Artikles angehängt.

Witzig, was? Wat soll ich tun?

http://www.networkingdinner.com/cms/fro ... 102&page=1

Grüsse und Daaaank

Dede

Verfasst: Mo 9. Okt 2006, 14:37
von stese
scheint so, als ob du a) den modulinput nicht korrekt gesetzt hast (artikel-templatekonfiguration) und b) vll. irgendwas mit dem $edit nicht stimmt im output modul. wie schauts denn im backend aus? kommt da nur 1x der text?

...

Verfasst: Mo 9. Okt 2006, 21:03
von DEDE
Hallo stese,

also ich nannte es in der TemplateKonfiguration "anker" und ebenso im Artikel.
Nimmt man den Anker raus oder benennt ihn falsch, wiederholt sich der komplette Text nach den Formularfeldern.

Aua.

:?:

Dede

Verfasst: Do 30. Nov 2006, 10:45
von ThomasH
---gelöst!---
Hallo,
ich bin leider alleine nicht fähig, das Modul zum Laufen zu bringen. Außerdem möchte ich für meine DAUs nicht mit Ankern, sondern mit einem Text {Seitenwechsel} arbeiten.

Ich habe einen laaangen Artikel in HTML[1] als Startartikel der Kategorie, die Klasse in cms/includes abgelegt, das Modul von polycoder importiert, in das Template der Kategorie eingebunden, {Seitenwechsel} im Backend angegeben und das Modul wie folgt geändert:

Code: Alles auswählen

// include pagebreak class
cInclude("frontend", "includes/class.articlepagebreak.php");

$strAnchorName = "CMS_VALUE[210]";
$strArticle 	= "CMS_HTML[1]";
#$strDelimiter = '<a name="' . $strAnchorName . '"></a>';
$strDelimiter = "CMS_VALUE[210]";
Leider tut sich gar nichts. Der Text erscheint wie angegeben im Frontent. Was mache ich falsch?

Danke für alle Hinweise im Voraus
Thomas

Verfasst: Do 30. Nov 2006, 11:01
von ThomasH
Also, ich bin wirklich Anfänger, naja:
Ich hatte für die Kategorie noch ein Standard-Template konfiguriert, sorry. Das Modul läuft trotzdem noch nicht.

Hab auch den anderen Output von kptkip getestet. Bei beiden Modulen gleiches Ergebnis: Es erscheint im Backend nur noch die erste Pseudo-Seite, so dass ich den Text nicht mehr editieren kann (nutze den Editor) und im Frontend klappt die Navigation nicht, weil contenido in den edit-Modus gehen will. Außerdem werden im FE und BE die Texte doppelt angezeigt.

Den Text habe ich in einen Container (HTML 1) kopiert, das Modul steht in einem zweiten Container. Was habe ich falsch verstanden?

http://schwestern-undbruederschaft.de/c ... ?idcat=102


Gruß
Thomas

Verfasst: Do 30. Nov 2006, 17:44
von stese
poste mir mal bitte per pm die zugangsdaten zum backend von contenido .. dann kann ich es mir mal anschauen ... normal sollten die links keine $contenido variable im frontend enthalten. die ist nur für das backend da

Verfasst: Do 30. Nov 2006, 22:07
von stese
gelöst.

bitte nicht die erweiterung von kptkip nutzen. diese funktioniert tatsächlich nur in einigen sehr wenigen fällen.

- bitte nur das original modul aus dem ersten post nutzen (wurde von mir ständig aktualisiert).

- des weiteren verhält sich das modul im backend wie ein stinknormales HTML Text Modul. Es wird also im Backend NICHT auf mehrere seiten gesplittet, da dies durch das inline edit von contenido bewirken würde, dass der artikel um alle seiten nach der ersten seite gnadenlos gelöscht würde.

- Da sich das Modul wie ein HTML Text Modul verhält, braucht KEIN weiteres HTML Text Modul in dem Template definiert werden. Ein weiteres Modul wird nur dann benötigt, wenn IMMER vor jeder einzelnen Seite der identische Text stehen soll.

Verfasst: Sa 2. Dez 2006, 21:09
von ThomasH
Lieber Stese, Vielen Dank für die Hilfe! Jetzt funktioniert es und ich werde noch ein wenig am css feilen und mal probehalber ModRewrite einschalten.

Gruß
Thomas

Code ist nicht Valide

Verfasst: Di 9. Okt 2007, 11:50
von ClemensSchnitzler
Das Modul funktioniert soweit richtig. Ich habe aber Probleme mit der Erzeugung von validem Code.

Wenn ich nun einen Anker zum splitten der Seiten eingebaut habe wird auf der zweiten Seite ein Code generiert indem für den Inhalt das div oder der span gesetzt wird. Dann kommt ein schliessendes </a> nach welchem dann direkt der Text folgt.

Dieses </a> wird vom W3C Validator als falsch markiert.

Ich habe hier im Forum gesucht, aber leider nichts zu diesem Punkt gefunden. Probiert habe ich auch schon einiges, aber diese Versuche führten alle ins Leere.

Vielleicht kann mir jemand bei der Lösung des Problems behilflich sein.

Grüße

Clemens

Code ist nicht Valide

Verfasst: Do 20. Dez 2007, 14:28
von media-konzept
Ich hatte das gleiche Problem auch (</a>) ab der 2. Seite.

Meine Lösung:
In der Datei class.articlepagebreak_neu.php zeile 116 ersetzt durch:

Code: Alles auswählen

$strReplacePattern = '/<' . implode("[^>]*", $arrTagParts) . '[^>]*>[<\/(a-zA-Z)*>]*/i';
Ich weiss nicht, ob dies allen Anforderungen genügt, bin auch nicht umbedingt ein Regex-Profi, aber das </a> ist jetzt nicht mehr im Ausgabecode.


Gruss Walti

Verfasst: Di 29. Jan 2008, 21:12
von Marvin1987
hallo!

ich habe auch ein problem mit dem modul. eigentlich glaube ich ja, ich bin nur zu dumm es richtig zu verwenden.

also ich habe die datei: class.articlepagebreak.php in cms/includes/ abgelegt.
dann habe ich ein neues Modul angelegt, mit dem namen: Article Semi-AutoPageBreak und die codes reinkopiert.

im template habe ich dann das modul (text html) mit "Article Semi-AutoPageBreak" ausgewechselt.

ich bekomme keine fehlermeldungen, nur wie funktioniert das jetzt mit dem anker?

wenn ich jetzt bei artikel/konfiguration bei "Ankername für Seitenwechsel:" ANKER eingebe und diesen dann im texteditor eintrage, passiert bei mir gar nichts.

habe ich etwas nicht verstanden oder funktioniert es bei mir technisch nicht?

ich hoffe, mir kann jemand helfen!

mit lieben grüßen

marvin

Verfasst: Di 29. Jan 2008, 21:50
von ThomasH
mal ne dumme FRage: Hast Du {ANKER} geschrieben oder ANKER?

Gruß
Thomas

Verfasst: Mi 30. Jan 2008, 08:31
von Marvin1987
ähm, nein. was muss ich denn wo schreiben? :oops:

lg marvin