[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Modul Artikelblock einbinden unter Redaxo 4 - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
Boonkid
Beiträge: 100
Registriert: 23. Dez 2005, 09:09

Modul Artikelblock einbinden unter Redaxo 4

16. Dez 2007, 20:05

Hallo, das Modul Artikelblock einbinden funzt nicht mehr unter der 4er Version.
Hier mal der Code: Eingabe

Code: Alles auswählen

<b>Artikel auswählen:</b><br>
REX_LINK_BUTTON[1]
<script>
var linkval = document.REX_FORM["LINK[1]"].value;
checkLinkChange();
function checkLinkChange()
{
	if(linkval != document.REX_FORM["LINK[1]"].value)
	{
		if(REX_FORM.update)
			REX_FORM.update.value=1;
		REX_FORM.submit();
	}
	else
	{
		window.setTimeout("checkLinkChange();", 100);
	}
}
</script>
<style type="text/css">
div.selector
{
	border: solid blue 1px;
	height: 70px;
	width: 100%;
	overflow-y: scroll;
	background-color: white;
	padding: 4px;
}

div.selector:hover
{
	border: solid red 1px;
}
</style>
<?php
if("REX_LINK_ID[1]")
{
	$chosen_ctype = "REX_VALUE[1]";
	if(sizeof($REX[CTYPE]) > 1)
	{
		print "<br><b>Content-Bereich auswählen:</b><br>";
		foreach($REX[CTYPE] as $k => $v)
		{
			print "<input onclick=\"REX_FORM.update.value=1;REX_FORM.submit();\" ";
			if(strlen("REX_VALUE[1]") > 0 && "REX_VALUE[1]" == $k)
				print "checked";
			print " type=radio name=VALUE[1] value=$k id=r$k> <label for=r$k>$v</label><br>";
		}
	}
	else
	{
		$chosen_ctype = "0";
	}
}

if("REX_LINK_ID[1]" && strlen("$chosen_ctype") > 0)
{
   print "<br><b>Block auswählen:</b><br>";
   $sql = "select rex_article_slice.id, rex_article_slice.re_article_slice_id, rex_modultyp.name, rex_article_slice.modultyp_id
          from
            rex_article_slice, rex_modultyp
          where
            rex_article_slice.article_id='REX_LINK_ID[1]' and
            rex_article_slice.clang='" . $this->clang . "' and
            rex_article_slice.ctype='$chosen_ctype' and
            rex_article_slice.modultyp_id = rex_modultyp.id
        	order by
            rex_article_slice.re_article_slice_id";

    $db = new sql;
    $slices = $db->get_array($sql);
    
    foreach($slices as $var) {
    	$sort[$var[re_article_slice_id]]  = $var;
    }
    
    $next = $slices[0][re_article_slice_id];
    
    while($sort[$next])
    {
    	if($sort[$next][modultyp_id] != $module_id)
    		$sorted_slices[] = $sort[$next];
    	$next = $sort[$next][id];
    }
    
    if(is_array($sorted_slices))
    {
	    print "<br><table width=95%>";
	    
	    print "<tr><td>";
			print "<input ";
				if("REX_VALUE[2]" == "all")
			print "checked";
			print " type=radio name=VALUE[2] id=sall value=\"all\"><br><br>";
			print "</td><td width=100%><b><label for=\"sall\">Alle einbinden</label></b><br><br>";
			print "</td></tr>";
	    
	    while(list($k, $ar) = each($sorted_slices))
	    {
	    	$REX['SLICEMODE'] = true;
				$origArticleID = $this->article_id;
				$article = new article(REX_LINK_ID[1]);
				$article->getSlice = $ar[id];
				$ct = "REX_VALUE[1]";
				
				print "<tr><td>";
				print "<input ";
					if("REX_VALUE[2]" == $ar[id])
				print "checked";
				print " type=radio name=VALUE[2] id=s$ar[id] value=$ar[id]>";
				print "</td><td width=100%><b>$ar[name]</b><div onclick=\"document.getElementById('s$ar[id]').checked = true;\" class=selector>";
				print $article->getArticle($ct);
				print "</div><br></td></tr>";
				
				$this->article_id = $origArticleID;
				$REX['GG'] = true;
				$REX['SLICEMODE'] = false;
	    }
	    print "</table>";
	   }
	  else
	  {
	  	print "<br><b>Keine Blöcke vorhanden!</b>";
	  }
}
?>
Ausgabe

Code: Alles auswählen

<?
if($_POST["function"] == "add")
{
	$slid = $GLOBALS[newsql]->last_insert_id;
	$reuri = "index.php?page=content&article_id=$_POST[article_id]&mode=edit&slice_id=$slid&function=edit&clang=$_POST[clang]&ctype=$_POST[ctype]#slice$slid";
	header("Location: $reuri");
	exit;
}

if("REX_LINK_ID[1]" && "REX_VALUE[2]")
{
	$REX['SLICEMODE'] = true;
	$article = new article("REX_LINK_ID[1]");
	$ct = -1;
	if("REX_VALUE[2]" == "all")
	{
		$REX['SLICEMODE'] = false;
		if("REX_VALUE[1]"){
		    $ct = "REX_VALUE[1]";
		}
		$article->setCtype($ct);
	}
	else
	{
		$REX['SLICEMODE'] = false;
		$article->getSlice = "REX_VALUE[2]";
	}
	if(!$REX[GG]){
	    $master = OOArticle::getArticleByID(REX_LINK_ID[1]);
	    print '<b>Alias von Artikel <a href="index.php?page=content&article_id=REX_LINK_ID[1]&mode=edit&clang=0">'.$master->getName().'</a></b>';
	}
	print $article->getArticle($ct);
	$REX['GG'] = true;
	$REX['SLICEMODE'] = false;
}
?>
Sicher wieder so ein Problem welches man nicht in den Griff bekommt, wenn ma eigentlich keine Ahnung hat. Hat jemand eine Idee?

Vielen Dank mal

Benutzeravatar
Boonkid
Beiträge: 100
Registriert: 23. Dez 2005, 09:09

19. Dez 2007, 14:57

Hallo Leute,
keiner eine Idee?

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

19. Dez 2007, 15:24

Hi,

schonmal in die Updatehinweise reingeschaut?


Gruß,
Markus

dopeX
Beiträge: 9
Registriert: 16. Jun 2007, 16:13
Kontaktdaten: ICQ

23. Dez 2007, 21:16

Das Problem ist die Funktion "setCtype()" Die Ctypes sind ja jetzt Templatespezifisch.
Hab in den Updatehinweisen jetzt auch keine alternative gefunden ?

dX

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

24. Dez 2007, 23:54

Hi,

man muss die CTYPE Id direkt bei getArticle() als 1. Parameter mitgeben..

Gruß,
Markus

Benutzeravatar
brandes-webdesign
Beiträge: 91
Registriert: 24. Jan 2008, 15:22
Wohnort: Trier
Kontaktdaten: Website

25. Mär 2008, 17:53

Ich habe das Modul halbwegs unter Redaxo 4.1 laufen, aber es werden nicht die Vorschau-Texte der einzelnen Slices/Blöcke angezeigt und mit dem Update gibt es auch ein Problem. Das heißt, dass ich nachdem ich einen Artikel gewählt habe, erst speichern muss und dann die CTypes und Blöcke auswählen kann. Früher ging dass alles ohne speichern.

@Markus.Staab: Wie sieht es denn mit der überarbeiten Dokumentation aus, die Ihr damals beim Lehrgang in aussicht gestellt habt???
Evlt. komme ich damit dann schon weiter.
Zuletzt geändert von brandes-webdesign am 27. Mär 2008, 16:36, insgesamt 1-mal geändert.
Responive Umsetzung Ihrer Layout-/Design-Vorlagen mit dem CMS Redaxo.
Service für Agenturen, Grafiker und Web-Designer oder im Kundenauftrag.
Mirco Brandes (Brandes Webdesign)

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

25. Mär 2008, 18:08

Hi zusammen,

@brandes-webdesign:
Das Doku Team arbeitet drann und mehr weiss ich nicht... jeder ist eingeladen an der Doku mitzuarbeiten..

@Alle:
Das modul oben ist ein Musterbeispiel wie man schlechten Code programmiert. Es basiert auf internen Klassenattributen etc.. Das sollte man so überhaupt nicht machen,..


Gruß,
Markus

Benutzeravatar
brandes-webdesign
Beiträge: 91
Registriert: 24. Jan 2008, 15:22
Wohnort: Trier
Kontaktdaten: Website

25. Mär 2008, 18:59

Ich meine nicht die Doku allgemein, sondern die 4 Seiten Objekt und Funktionsübersicht. Für z.B. OOCategory, OOArticle, OOArticleSlice usw.
In der letzen Redaxo Schulung hat Jan gesagt, dass es davon eine neue Version gibt als PDF-File, doch leider finde ich die nirgends. In den Schulungs-Unterlagen war ja leider auch noch die alte Übersicht dabei.
Vielleicht suche ich ja auch falsch, da ich die alte Übersicht auch nicht mehr finde.

Zu diesem Modul:
Wenn das schlechter Code im alten Stil ist, dann werde ich wohl oder übel von 0 anfangen müssen und versuche die Funktionalität neu zu implementieren, oder gibt es schon ein Modul für 4.1, welches ermöglicht aus einem anderen Artikel einen bestimmten Block/Slice auszuwählen und einzubinden?
Ich denke mal, so etwas wird doch sehr häufig gebraucht, oder nicht?

Viele Dank für Deine Antwort.
Zuletzt geändert von brandes-webdesign am 27. Mär 2008, 16:36, insgesamt 1-mal geändert.
Responive Umsetzung Ihrer Layout-/Design-Vorlagen mit dem CMS Redaxo.
Service für Agenturen, Grafiker und Web-Designer oder im Kundenauftrag.
Mirco Brandes (Brandes Webdesign)

sebhecht
Beiträge: 126
Registriert: 22. Feb 2008, 11:02
Wohnort: Stuttgart

26. Mär 2008, 00:32

Hallo,
ich kann zwar nicht helfen, aber bei mir funktioniert das Modul ohne Probleme, genau der gleiche Code. Zum Glück, denn ich verwende es an ziemlich vielen Stellen.
Ich hatte es unter R4.01 am Laufen und in der 4.1er klappt es auch.

Grüße Sebastian

Benutzeravatar
brandes-webdesign
Beiträge: 91
Registriert: 24. Jan 2008, 15:22
Wohnort: Trier
Kontaktdaten: Website

26. Mär 2008, 09:07

Wie, wirklich??? Kann doch eigentlich nicht???

Kannst Du mir per PN den Ein und Ausgabe-Code fürs Modul zuschicken oder Ihn hier mal reinstellen.

Viele Grüße
Mirco Brandes
Zuletzt geändert von brandes-webdesign am 27. Mär 2008, 16:37, insgesamt 1-mal geändert.
Responive Umsetzung Ihrer Layout-/Design-Vorlagen mit dem CMS Redaxo.
Service für Agenturen, Grafiker und Web-Designer oder im Kundenauftrag.
Mirco Brandes (Brandes Webdesign)

sebhecht
Beiträge: 126
Registriert: 22. Feb 2008, 11:02
Wohnort: Stuttgart

26. Mär 2008, 09:35

Ich nutze den gleichen, wie Du, hab Deinen eben auch mal probiert und es klappt

edit 8:05pm:

Sorry, ich hatte das hier nicht richtig gelesen:
Das heißt, dass ich nachdem ich einen Artikel gewählt habe, erst speichern muss und dann die CTypes und Blöcke auswählen kann. Früher ging dass alles ohne speichern.
Bei mir ist das genau so, ich muss auch erst speichern, und dann den Block wieder editieren, aber das finde ich nicht so schlimm. Ansonsten funktioniert es.

MfG Sebastian

Benutzeravatar
brandes-webdesign
Beiträge: 91
Registriert: 24. Jan 2008, 15:22
Wohnort: Trier
Kontaktdaten: Website

27. Mär 2008, 14:40

Also ich bin gerade dabei das ganze neu zu schreiben, ohne einen direkten Datenbankaufruf.
Klappt bisher auch schon richtig gut, nur leider finde ich keine Lösung, wenn mehrere Spalten/ctypes verwendet werden. Muß mich da mal etwas tiefer reindenken.

Das Problem mit dem nachladen versuche ich auch noch zu lösen. Gibt REX_LINK_BUTTON vielleicht ein Event zurück, welches man abfangen kann???
Zuletzt geändert von brandes-webdesign am 27. Mär 2008, 16:37, insgesamt 1-mal geändert.
Responive Umsetzung Ihrer Layout-/Design-Vorlagen mit dem CMS Redaxo.
Service für Agenturen, Grafiker und Web-Designer oder im Kundenauftrag.
Mirco Brandes (Brandes Webdesign)

Benutzeravatar
brandes-webdesign
Beiträge: 91
Registriert: 24. Jan 2008, 15:22
Wohnort: Trier
Kontaktdaten: Website

27. Mär 2008, 16:14

Das Problem mit dem nachladen versuche ich auch noch zu lösen. Gibt REX_LINK_BUTTON vielleicht ein Event zurück, welches man abfangen kann???
Bin ich erst jetzt drauf gekommen. Läßt sich über eine Aktion im Modul lösen.

Sobald ich Rückschlüsse über das Problem mit den Spalten (ctype) habe werde ich das komplett überarbeite Modul dann veröffentlichen.
Responive Umsetzung Ihrer Layout-/Design-Vorlagen mit dem CMS Redaxo.
Service für Agenturen, Grafiker und Web-Designer oder im Kundenauftrag.
Mirco Brandes (Brandes Webdesign)

Zurück zu „Allgemeines [R4]“