WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 25.09.2015 08:40:22

ronja
Mitglied

Page Cloner und Accordion

Hallo Forum,

ich habe auf meiner Seite das Admin-Addon "Page Cloner" und das Addon Accordion installiert. Die Seite ist mehrsprachig (3 Sprachen).
Accordion ist auf 15 Unterseiten eingebaut, die ich gern clonen möchte. Inklusive Inhalten.
Leider funktioniert das aber nicht, die Seiten werden zwar gedoppelt, aber die Inhalte der Accordions nicht.

Wie kann ich das realisieren?
Ein einzelnes Einarbeiten wäre ein unglaublicher Aufwand.

Danke für Eure Hilfe
Ronja

Offline

#2 25.09.2015 09:30:07

florian
Administrator

Re: Page Cloner und Accordion

Kann ich verstehen und fände ich auch schön. Leider habe ich keine Ahnung, wie das zu bewerkstelligen wäre. Irgendwie muss das in tool_doclone.php ergänzt werden, aber meine Versuche sind kläglich gescheitert.
Vieeleicht kann sich ja jemand mit ausgeprägterer PHP/MySQL-Affinität der Sache annehmen?


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#3 28.09.2015 07:37:49

florian
Administrator

Re: Page Cloner und Accordion

Wirklich keine_r da? Ich könnte das auch gebrauchen.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#4 28.09.2015 12:43:58

norhei
Developer

Re: Page Cloner und Accordion

.... hmm ... muss ich mal draufschauen .... gebt mir ein wenig Zeit  .. bin grade etwas überlastet .

Beitrag geändert von norhei (28.09.2015 12:45:02)

Offline

#5 29.09.2015 20:21:20

ronja
Mitglied

Re: Page Cloner und Accordion

norhei schrieb:

.... hmm ... muss ich mal draufschauen .... gebt mir ein wenig Zeit  .. bin grade etwas überlastet .

Es wäre wirklich der Hammer wenn Du das machen würdest.
Ich "sterbe" hier gerade an den vielen Unterseiten :-(!

Offline

#6 30.09.2015 12:46:20

florian
Administrator

Re: Page Cloner und Accordion

Ich bin wahrscheinlich einfach nur zu blöd. Aus den clone-Anweisungen für die anderen Modultypen habe ich für accordion folgendes zusammengestümpert:

...
} elseif ($module=='accordion') {
           echo "cloning accordion";
			
			$query = "SELECT * FROM `".TABLE_PREFIX."mod_accordion_questions` WHERE `section_id` = '$from_section'";
			$get_accordionquestions = $database->query($query);	 
			while ($is_accordionquestion=$get_accordionquestions->fetchRow(MYSQL_ASSOC)) {
					// Insert formfields with cloned data
					$question_id = $is_accordionquestion['question_id'];
					$question = addslashes($is_accordionquestion['question']);
					$answer = addslashes($is_accordionquestion['answer']);
					$status_on_pageload = $is_accordionquestion['status_on_pageload'];
					$pos = $is_accordionquestion['pos'];
					echo "<p>&gt;".$question_id." ".$question." ".$answer." ".$status_on_pageload." ".$pos."&lt;</p>";
					echo "<p>&gt;Von: ".$from_section." nach ".$section_id." auf Seite ".$page_id."&lt;</p>";
					$database->query("INSERT INTO ".TABLE_PREFIX."mod_accordion_questions (section_id, page_id, question_id, question, answer, status_on_pageload, pos) VALUES ('$section_id','$page_id','$question_id','$question','$answer','$status_on_pageload','$pos')");		
			}
			$query = "SELECT * FROM `".TABLE_PREFIX."mod_accordion_settings` WHERE `section_id` = '$from_section'";
            $get_accordionsettings = $database->query($query);
            $row = $get_accordionsettings->fetchRow(MYSQL_ASSOC);
            $database->query("UPDATE `".TABLE_PREFIX."mod_accordion_settings` SET `header`='".$row['header']."', `footer`='".$row['footer']."', `icon`='".$row['icon']."', `icon_placement`='".$row['icon_placement']."',`accordion_method`='".$row['accordion_method']."'");	
			
		} 
...

Anhand der "echos" sehe ich, dass die while-Schleife durchlaufen wird und die Daten von bestehenden Accordion-Sections erfasst werden. Trotzdem gelingt es mir nicht, eine neue Tabellenzeile mit den entsprechenden Daten einzufügen. Es ist, als würde die INSERT-INTO-Anweisung gar nicht existieren, es kommt auch kein Fehler und nichts. Was mache ich falsch?


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#7 30.09.2015 17:40:15

webbird
Administrator

Re: Page Cloner und Accordion

Frag mal $database->get_error() ab.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#8 30.09.2015 17:42:14

webbird
Administrator

Re: Page Cloner und Accordion

Achso, Spaltennamen sollten immer in `` stehen, also

[== PHP ==]
$database->query("INSERT INTO `".TABLE_PREFIX."mod_accordion_questions` (`section_id`, .....

Wenn man mal einen Spaltennamen hat, der auch ein geschütztes Wort ist, gibt es so weniger Probleme.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#9 30.09.2015 17:52:37

florian
Administrator

Re: Page Cloner und Accordion

Ah. Es hängt an der question_id. Wie bekommt man es denn hin, dass die auf den höchsten vergebenen Wert+1 gesetzt wird?


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#10 30.09.2015 17:54:19

webbird
Administrator

Re: Page Cloner und Accordion

Das geht per Subselect, aber einfacher ist es, wenn Du zuvor den höchsten vergebenen Wert abfragst und dann im PHP hochzählst.

SELECT max(`question_id`) FROM ...


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#11 30.09.2015 18:20:06

florian
Administrator

Re: Page Cloner und Accordion

Ok, jetzt scheints zu klappen. Danke.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#12 30.09.2015 19:40:13

norhei
Developer

Re: Page Cloner und Accordion

hey super !!!

Offline

#13 30.09.2015 20:32:51

marmot
Mitglied

Re: Page Cloner und Accordion

webbird schrieb:

Das geht per Subselect, aber einfacher ist es, wenn Du zuvor den höchsten vergebenen Wert abfragst und dann im PHP hochzählst.

hmm wenn ich schon ein Feld mit auto increment habe, warum nutze ich das dann nicht auch?

[== PHP ==]
		} elseif ($module=='accordion') {
			$query = "CREATE TEMPORARY TABLE tmp SELECT * FROM `".TABLE_PREFIX."mod_accordion_questions` WHERE `section_id` = ".$from_section;
			$database->query($query);	 
			$query = "UPDATE tmp SET `page_id` = $page_id, `section_id` = $section_id, `question_id` = NULL";
			$database->query($query);
			$query = "INSERT INTO `".TABLE_PREFIX."mod_accordion_questions` SELECT * FROM tmp";
			$database->query($query);			
			$query = "DROP TEMPORARY TABLE IF EXISTS tmp";
		  	$database->query($query);
		}

Offline

#14 30.09.2015 20:46:38

florian
Administrator

Re: Page Cloner und Accordion

hmm wenn ich schon ein Feld mit auto increment habe, warum nutze ich das dann nicht auch?

weil ich von SQL keine Ahnung habe und mich anhand des vorh. Codes durchgewurstelt habe ;-)

Dein Code sieht sehr elegant und effizient aus. Funktioniert der auch mit älteren mySQL/PHP-Versionen?

(Ideal wäre ja ein Pagecloner, bei dem nicht jedes Modul einzeln hinterlegt werden müsste, sondern der einfach immer clont, egal, ob es nun OneForAll oder SmoothGallery oder JustAnotherExoticModuleWithBizarreTables ist...)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#15 30.09.2015 21:37:34

marmot
Mitglied

Re: Page Cloner und Accordion

florian schrieb:

Funktioniert der auch mit älteren mySQL/PHP-Versionen?

Ich sehe keine Grund, warum nicht, aber probieren geht über ....

(Ideal wäre ja ein Pagecloner, bei dem nicht jedes Modul einzeln hinterlegt werden müsste, sondern der einfach immer clont, egal, ob es nun OneForAll oder SmoothGallery oder JustAnotherExoticModuleWithBizarreTables ist...)

Natürlich aber das ist wohl nicht so einfach. Realistischer ist wohl eine Funktionalität, die zumindest mal versucht die Tabellen des Moduls zu clonen und für einzelne Modul Raum für manuelle Optionen läßt. Ja was könnte man nicht alles machen .....

Offline

#16 01.10.2015 10:13:37

webbird
Administrator

Re: Page Cloner und Accordion

marmot schrieb:
webbird schrieb:

Das geht per Subselect, aber einfacher ist es, wenn Du zuvor den höchsten vergebenen Wert abfragst und dann im PHP hochzählst.

hmm wenn ich schon ein Feld mit auto increment habe, warum nutze ich das dann nicht auch?

Geht so oder so, aber für einen "kann nur ein bißchen PHP und fast gar kein SQL"-Hacker wollte ich halt lieber die ganz einfache Variante nennen.

Das Thema "Pagecloner" hatten wir bei BC auch schon, wir planen dafür eine clone.php. Dann kann jedes Modul "sagen", was es zum Klonen braucht. Zudem lassen sich Module auf diese Weise sehr einfach erweitern. Passende clone.php basteln, ins Modulverzeichnis schubsen, fertig.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#17 04.10.2015 11:25:31

ronja
Mitglied

Re: Page Cloner und Accordion

Ein mehr als herzliches Danke an Dich, Florian.
Und jedem der dabei geholfen hat!
Eine riesen Erleichterung!

Bei großen Seitenmengen kommt zwar danach eine weiße Seite, aber es ist alles ordentlich geclont.
Merci!

Offline

#18 04.11.2015 16:38:21

marmot
Mitglied

Re: Page Cloner und Accordion

florian schrieb:

(Ideal wäre ja ein Pagecloner, bei dem nicht jedes Modul einzeln hinterlegt werden müsste, sondern der einfach immer clont, egal, ob es nun OneForAll oder SmoothGallery oder JustAnotherExoticModuleWithBizarreTables ist...)

nun habe ich mich mal daran gemacht. Sicher ist, dass es für viele Module nicht funktionieren wird, aber es ist mal ein Ansatz, bei dem nicht von vornherein der gesamte Kopiervorgang beschrieben werden muss.
Wenn es eingiermaßen läuft, dann kann ich ja einen Thread im richtigen Bereich aufmachen.

Aufgefallen ist mir die Option "Seitentietel übernehmen". Um ehrlich zu sein, komm ich nicht ganz dahinter, was das soll, da ja keine zwei Seiten mit dem gleichen Titel existiern dürfen. Kann mir hier jemand helfen?

Edith: neue Version weiter unten

Beitrag geändert von marmot (05.11.2015 21:13:35)

Offline

#19 05.11.2015 09:26:28

ice
Mitglied

Re: Page Cloner und Accordion

Warum darf es keine zwei Seiten mit dem gleichen Titel geben? So lang jede Seite eine eindeutige ID in der Datenbank hat, ist das doch kein Problem bzw. sollte kein Problem sein?

Offline

#20 05.11.2015 10:56:12

florian
Administrator

Re: Page Cloner und Accordion

Gleicher Seitentitel geht, gleicher Menütitel nicht, jedenfals nicht auf der selben Ebene, weil daraus die URL generiert wird.
Bei der Auswahl "Seitentitel übernehmen" war mal angedacht festzulegen ob die geclonten Seiten mit leerem Seitentitel erzeugt werden oder nicht.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#21 05.11.2015 11:19:57

florian
Administrator

Re: Page Cloner und Accordion

Kurzer Modultest:
+ wysiwyg: ok
+ accordion: ok
+ code2: ok
+ bakery: ok
- mingallery: not ok (Bilder nicht übernommen)
- miniform: not ok (Einstellungen nicht übernommen)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#22 05.11.2015 21:10:14

marmot
Mitglied

Re: Page Cloner und Accordion

ice schrieb:

Warum darf es keine zwei Seiten mit dem gleichen Titel geben? So lang jede Seite eine eindeutige ID in der Datenbank hat, ist das doch kein Problem bzw. sollte kein Problem sein?

nun, du kannst ja mal versuchen, eine Seite mit gleichem Titel anzulegen... Aber du hast Recht. Es kann zwar keine Seite angelegt werden, wenn es schon so eine gibt, allerdings kann im Nachgang Seiten- und Menü Titel geändert werden, so dass er mehrfach vorkommt.

florian schrieb:

Gleicher Seitentitel geht, gleicher Menütitel nicht, jedenfals nicht auf der selben Ebene, weil daraus die URL generiert wird.
Bei der Auswahl "Seitentitel übernehmen" war mal angedacht festzulegen ob die geclonten Seiten mit leerem Seitentitel erzeugt werden oder nicht.

etwas klarer ist es nun. Offenbar kan man beim Erzeugen der Seite nur den Menütitel angeben. Der wird grundsätzlich auch zum Seitentitel, es sei denn der Haken ist gesetzt.
Ich habe allerdings gesehen, das der Dateiname für den Link extra gesetzt wird. Im Nachgang kann man also sowohl Seitentitetel, als auch Menütitel so ändern, dass es sie (auch auf der geleichen Ebene) mehrfach gibt.

Offline

#23 05.11.2015 21:12:58

marmot
Mitglied

Re: Page Cloner und Accordion

florian schrieb:

Kurzer Modultest:
+ bakery: ok
- mingallery: not ok (Bilder nicht übernommen)
- miniform: not ok (Einstellungen nicht übernommen)

bakery hätte ich mich nicht getraut. Kann mir auch gut vorstellen, dass es bei genauem Hinsehen doch Probleme gibt. Das ist einfach zu komplex.
miniform hatte ich getestet, war ein Bug.
minigallery kopiert nun auch den Ordner mit den Bildern, auch wenn ich mir nicht sicher bin, ob das sinnvoll ist.

Edith: Die aktuelle Version gibt es im AOR

Beitrag geändert von marmot (08.11.2015 00:43:46)

Offline

#24 07.11.2015 10:08:40

florian
Administrator

Re: Page Cloner und Accordion

Sehr gut, danke. Jetzt funktioniert es so weit. Foldergallery (die ältere Version, nicht die RFG) verschluckt sich ein wenig, aber nach dem Auswählen des Rootdirectories in den FG-Einstellungen scheint alles i.O.
Ich habe das Modul im AOR und auf Github aktualisiert.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#25 08.11.2015 12:43:15

norhei
Developer

Re: Page Cloner und Accordion

@Mehrfacher Seitentitel
Bei Übersetzungen macht sowas Sinn. Seite auf Deutsch erstellen , Clonen und der Übersetzer bearbeitet dann die Identische Seite. Hab ich selber öffter so gemacht und das auch bei anderen CMS gesehen wenn die Mehrsprachigkeit so angelegt war wie bei WB.

Offline

Fußzeile des Forums

up