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