Innerhalb von webEdition einen "Objekt editieren"-Link erstellen

Fragen zum Erstellen von Templates für webEdition.
Revilo
Junior Member
Beiträge: 18
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
Senior Member
Beiträge: 285
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: 18
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
Senior Member
Beiträge: 285
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

sman
Junior Member
Beiträge: 14
Registriert: Fr 26. Feb 2021, 14:43

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

Beitragvon sman » Fr 26. Mär 2021, 14:48

Hallo,

bei mir geht nicht mal das Editieren eines Objektes innerhalb von webEdition - das wäre nämlich genau das, was ich brauchen würde.

Code: Alles auswählen

<we:listview type="object" name="Testobjekt" classid="2">
  <we:ifFound>
    <we:repeat>
     <we:field name="WE_ID" to="global" nameto="id" />
     <?php $id = $GLOBALS["id"]; ?>
      <we:field name="Name" /> - <we:a edit="object" type="listview" id="\$id">Bearbeiten</we:a>
    </we:repeat>
  </we:ifFound>
</we:listview>
Die Objektliste in webEdition scheint ok, aber wenn ich auf 'Bearbeiten' klicke, öffnet sich das Bearbeitenfenster eines Dokumentes mit derselben ID, nicht das Objekt?!

Siehe Bilder:
screen1.png
screen1.png (18.46 KiB) 2005 mal betrachtet
Ausgabe, hier Klick auf Bearbeiten
screen2.png
screen2.png (97.77 KiB) 2005 mal betrachtet
dann öffnet sich die Dokument ID 60 statt Objekt ID 60

Die IDs der Objekte sind 60 & 61 - und es gibt auch Dokumente mit genau diesen IDs, und die werden geöffnet statt dem Objektedit Fenster. Was mache ich falsch?

Ich benutze wE 8.1.5.
Zuletzt geändert von sman am Fr 26. Mär 2021, 14:58, insgesamt 1-mal geändert.

sman
Junior Member
Beiträge: 14
Registriert: Fr 26. Feb 2021, 14:43

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

Beitragvon sman » Fr 26. Mär 2021, 14:51

PS: Es geht übrigens auch nicht, wenn ich die ID 60 hardcoded benutze - die IDs an sich stimmen in der listview

NilSole
Senior Member
Beiträge: 303
Registriert: Mi 27. Mär 2019, 15:28

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

Beitragvon NilSole » Mo 29. Mär 2021, 23:10

Hallo Sman,

we:a edit="object" ist für die Frontend-Bearbeitung. Du könntest auch etwas JS an deinen Link anhängen, etwa so

Code: Alles auswählen

<a href='javascript:WE().layout.weEditorFrameController.openDocument(WE().consts.tables.OBJECT_FILES_TABLE,*HIER DEINE OBJECT ID*)'>Test</a>
@Oliver
Ich könnte mir vorstellen, dass mit etwas Trickserei auch ein funktionierender Link in der Vorschau entstehen könnte. Aber das müsste man sich anschauen, ob es die Arbeit überhaupt wert ist.

sman
Junior Member
Beiträge: 14
Registriert: Fr 26. Feb 2021, 14:43

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

Beitragvon sman » Di 30. Mär 2021, 09:35

Hallo NilSole,

vielen Dank für den Tipp, probier ich nachher gleich aus :-)

Liebe Grüße

sman
Junior Member
Beiträge: 14
Registriert: Fr 26. Feb 2021, 14:43

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

Beitragvon sman » Di 30. Mär 2021, 09:38

Super :D klappt...vielen Dank!!!!!


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

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 12 Gäste