Innerhalb von webEdition einen "Objekt editieren"-Link erstellen

Fragen zum Erstellen von Templates für webEdition.
Revilo
Junior Member
Beiträge: 14
Registriert: Do 3. Jan 2019, 12:07

Innerhalb von webEdition einen "Objekt editieren"-Link erstellen

Beitragvon Revilo » Mo 27. Mai 2019, 14:38

Guten Tag we-Experten,
ich möchte per Listview eine Liste mit Objekten im Backend ausgeben.
Der Redakteur gelangt dann durch einen einfachen Klick zum "Bearbeiten"-Fenster des jeweiligen Objekts innerhalb von webEdition.

Das ganze erreiche ich durch folgenden Link:

Code: Alles auswählen

<a href="javascript:WE().layout.weEditorFrameController.openDocument(WE().consts.tables.FILES_TABLE,<we:field type="text" name="we_id" />,WE().consts.contentTypes.FILE);"><we:field type="text" name="we_path" /></a>
Nun funktioniert das ganze aber leider nur im "Bearbeiten"-Fenster des Listview-Dokuments.
Ich hätte es aber gerne im "Vorschau"-Fenster, jedoch wird das Javascript dort nicht verarbeitet, wodurch der Link nicht mehr funktioniert.

Hat jemand eine Lösungsidee dazu?

Mit freundlichen Grüßen
Oliver

Benutzeravatar
Finn
Member
Beiträge: 58
Registriert: Mo 3. Apr 2017, 13:37
Wohnort: Bremen
Kontaktdaten:

Re: Innerhalb von webEdition einen "Objekt editieren"-Link erstellen

Beitragvon Finn » Mo 27. Mai 2019, 16:18

Verstehe ich das richtig, dass du im Prinzip Objekte über Frontend-Editing Redaktionell pflegbar machen möchtest?

Ich habe so etwas mal für die Pflege einer Preisliste gemacht.

Wichtig, es braucht einen Kundenlogin. Über ein Listview gebe ich die Objekte in einer Tabelle aus, da gibt es einen Button zum bearbeiten.
Dieser öffnet ein iFrame in einer Fancybox, dort können die Änderungen gemacht werden.

Hier der Listview:

Code: Alles auswählen

<we:listview type="object" name="objekt-pflege" workspaceID="5" classid="2" order="we_filename">
	<div class="padding-top">
		<table style="padding-left: 30px;">
			<thead>
				<th>Obst</th>
				<th>Name</th>
				<th>Bild</th>
				<th>Preis</th>
				<th>Gebinde</th>
				<th>Verfügbar</th>
				<th>Bearbeiten</th>
			</thead>
			<tbody>
				<we:repeat>
					<we:field type="text" name="we_category" to="global" nameto="var_cat" />
					<we:field nameto="var_verfuegbarkeit" to="global" type="checkbox" name="Verfuegbarkeit" />
					<tr>
						<td><we:category  id="$var_cat"/></td>
						<td><we:field type="text" name="Title" /> <we:field type="text" name="Sorte" /></td>
						<td><we:field type="img" name="Bild" thumbnailid="5" /></td>
						<td>
							<we:ifField type="checkbox" name="custom_preis" match="1">
								<we:field name="custom_preis_value" type="text" />
								<we:else />
								<we:listview type="multiobject" name="preis">
									<we:repeat>
										<we:field type="text" name="preis_1kg" />
									</we:repeat>
								</we:listview>
							</we:ifField>
						</td>
						<td>
							<we:ifField type="checkbox" name="custom_preis" match="1">
								<we:field name="Gebinde" type="text" />
								<we:else />
								Basispreis für 1kg
							</we:ifField>
						</td>
						<td><we:ifVar name="var_verfuegbarkeit" match="1" type="global"> <span style="color: red;">Nicht Verfügbar</span> <we:else /> <span style="color: green;">Verfügbar</span> </we:ifVar></td>
						<td><a class="fancybox" data-fancybox data-type="iframe" data-src="/pflege/objekt_edit.php?we_editObject_ID=<we:field type="int" name="we_id" />" href="javascript:;">
							Bearbeiten 
							</a></td>  
					</tr>
				</we:repeat>
			</tbody>
		</table>
	</div>
</we:listview>



<we:comment>Reload der Seite nach Schließen des Iframes</we:comment>
<script type="text/javascript">
	$(document).ready(function() {
		$(".fancybox").fancybox({
			afterClose  : function() { 
				window.location.reload();
			}
		});
	});
</script>
Hier das geladene iFrame, was die Objektänderung möglich macht:

Code: Alles auswählen

<we:write formname="obst-edit" type="object" publish="true" classid="2" forceedit="true" onduplicate="overwrite" onpredefinedname="overwrite" parentid="5" />

<we:ifWritten type="object" formname="obst-edit">

	<we:var type="post" name="we_editObject_ID" to="global" nameto="var_id" />
	<we:var type="post" name="preis" to="global" nameto="preis_id" />

	<?php
	$obj = new we_objectFile();
	$obj->initById($var_id);
	$obj->setElement('preis', $preis_id);
	$obj->we_save();
	$obj->we_publish();
	?>

	<we:comment>Nach erfolgreichem Schreiben wird das iFrame geschlossen</we:comment>
	<script>
		parent.$.fancybox.close();
	</script>

</we:ifWritten>

<we:comment>ID der Kategorie laden</we:comment>
<we:var type="get" name="we_editObject_ID" nameto="var_id" to="global" />

<div class="ym-wrapper" style="padding: 30px 0px;">

	<we:comment>Objektfelder laden</we:comment>
	<we:object classid="2" id="$var_id" >
		<we:field nameto="var_verfuegbarkeit" to="global" type="checkbox" name="Verfuegbarkeit" />
		<we:listview type="multiobject" name="preis">
			<we:repeat>
				<we:field type="text" name="we_id" to="global" nameto="var_preis" />
			</we:repeat>
		</we:listview>

		<we:comment>Obstname anzeigen</we:comment>
		<b><we:field type="text" name="Sorte" /></b>
		<br><br>
	</we:object>

	<we:form type="object" classid="2" name="obst-edit" nameid="obst-edit" method="post" id="self">
		<table>
			<we:object id="$var_id" classid="2">
				<we:ifField type="checkbox" name="custom_preis" match="1">
					<tr>
						<td>
							Preis:
						</td>
						<td>
							<we:userInput type="textinput" name="custom_preis_value" editable="true" />
						</td>
					</tr>
					<tr>
						<td>
							Preis:
						</td>
						<td>
							<we:userInput type="textinput" name="Gebinde" editable="true" />
						</td>
					</tr>
					<we:else />
					<tr>
						<td>
							Preis für 1kg: 
						</td>
						<td>
							<select name="preis">
								<we:listview type="object" classid="5" order="preis_1kg">
									<we:repeat>
										<we:ifField type="text" name="we_id" match="\$var_preis">
											<option selected value="<we:field type="text" name="we_id" />"><we:field name="preis_1kg" type="text" /></option>
											<we:else />
											<option value="<we:field type="text" name="we_id" />"><we:field name="preis_1kg" type="text" /></option>
										</we:ifField>
									</we:repeat>
								</we:listview>
							</select> 
						</td>
					</tr>

				</we:ifField>
				<tr>
					<td>
						NICHT Verfügbar:
					</td>
					<td>
						<we:userInput type="checkbox" name="Verfuegbarkeit" editable="true" />
					</td>
				</tr>
			</we:object>
		</table>
		<br>
		<br>
		<input type="submit" value="Speichern" /> | <input type="button" class="formbutton" value="Abbrechen" onClick="window.parent.jQuery.fancybox.close();" />
	</we:form>

</div>
Vielleicht hilft es weiter, wenn du Fragen hast oder mehr Details brauchst, gerne Fragen.

Gruß
Finn
Finn Thorwarth
WG Werbeagentur
https://www.wg-werbeagentur.de

Revilo
Junior Member
Beiträge: 14
Registriert: Do 3. Jan 2019, 12:07

Re: Innerhalb von webEdition einen "Objekt editieren"-Link erstellen

Beitragvon Revilo » Mi 29. Mai 2019, 08:19

Hallo Finn,
leider ist das nicht die Lösung nach der ich gesucht habe.
Das ist trotzdem eine interessante Methode und danke für Deine Antwort!

Mit freundlichen Grüßen
Oliver

Benutzeravatar
Finn
Member
Beiträge: 58
Registriert: Mo 3. Apr 2017, 13:37
Wohnort: Bremen
Kontaktdaten:

Re: Innerhalb von webEdition einen "Objekt editieren"-Link erstellen

Beitragvon Finn » Mi 29. Mai 2019, 10:14

Moin Oliver,

das Problem, ist ja folgendes. Das Vorschau Fenster Simuliert das Frontend, heißt: Backend Funktionen funktionieren in der Vorschau nicht.

Die Lösung die ich oben Skizziert habe, funktioniert auch im Backend.

Du möchtest ja direkt in das Objekt springen, dass wird soweit ich weiß nicht aus dem Vorschau Fenster funktionieren.

Vielleicht ja mit der kommenden API? Wer weiß :) Bis dahin wirst du, wenn über das "Frontend" editieren möchtest, nicht um eine Lösung ähnlich meiner vorgeschlagenen drum herum kommen. Da gibts ja ein paar Möglichkeiten, ob in einem iFrame in einer Fancybox oder direkt in der Seite oder über die PHP Funktion (http://documentation.webedition.org/wik ... t-with-php).

Vielleicht hilft dir das irgendwie weiter :)

Gruß
Finn
Finn Thorwarth
WG Werbeagentur
https://www.wg-werbeagentur.de


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste