--- /dev/null
+/*
+ * DemosceneMusic - EditTrackPage.java - Copyright © 2012 David Roden
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package net.pterodactylus.demoscenemusic.page.admin;
+
+import net.pterodactylus.demoscenemusic.core.Core;
+import net.pterodactylus.demoscenemusic.data.Track;
+import net.pterodactylus.demoscenemusic.page.ServletRequest;
+import net.pterodactylus.util.database.DatabaseException;
+import net.pterodactylus.util.template.Template;
+import net.pterodactylus.util.template.TemplateContext;
+import net.pterodactylus.util.template.TemplateContextFactory;
+import net.pterodactylus.util.web.Method;
+import net.pterodactylus.util.web.RedirectException;
+
+/**
+ * Page that lets the user edit a track.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public class EditTrackPage extends AdminBasePage {
+
+ /**
+ * Creates a new edit-track page.
+ *
+ * @param core
+ * The core
+ * @param templateContextFactory
+ * The template contex factory
+ * @param template
+ * The template to render
+ */
+ public EditTrackPage(Core core, TemplateContextFactory templateContextFactory, Template template) {
+ super(core, templateContextFactory, template, "admin.edit-track");
+ }
+
+ //
+ // BASEPAGE METHODS
+ //
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected void processTemplate(TemplateContext templateContext, ServletRequest request) throws RedirectException {
+ super.processTemplate(templateContext, request);
+ String trackId = request.getServletRequest().getParameter("id");
+ try {
+ Track track = getCore().getDataManager().getTrackById(trackId);
+ if (track == null) {
+ templateContext.set("error", "no-track-given");
+ return;
+ }
+
+ templateContext.set("track", track);
+ if (request.getMethod() == Method.POST) {
+ String name = request.getServletRequest().getParameter("name").trim();
+ if (name.length() > 0) {
+ track.setName(name);
+ }
+
+ /* process properties. */
+ processProperties(request, track);
+
+ getCore().getDataManager().saveTrack(track);
+ }
+ } catch (DatabaseException de1) {
+ throw new RuntimeException("Could not edit track.", de1);
+ }
+ }
+
+}
--- /dev/null
+<%include include/header title=="Edit Track">
+
+<h1>Edit Track</h1>
+
+<form method="post" accept-charset="utf-8">
+
+ <input type="hidden" name="track" value="<%track.id|html>"/>
+
+ <div>
+ Name:
+ <input type="text" name="name" value="<%track.name|html>"/>
+ </div>
+ <button type="submit">Edit Artist</button>
+
+ <%foreach track.properties property>
+
+ <div>
+ Property: <%property.key|html>
+ <input type="text" name="value.<%property.key|html>" value="<%property.value|html>">
+ <input type="checkbox" name="delete.<%property.key|html>">Delete
+ </div>
+
+ <%/foreach>
+
+ <button type="submit">Save Properties</button>
+
+ <div>
+ New Property:
+ <input type="text" name="property" value="">
+ <input type="text" name="value" value="">
+ </div>
+ <button type="submit" name="new-property" value="true">Add Property</button>
+
+</form>
+
+<h2>Derivatives</h2>
+
+<%foreach track.derivatives derivative>
+
+ <form action="admin.edit-derivative" method="post" accept-charset="utf-8">
+
+ <input type="hidden" name="track" value="<%track.id|html>"/>
+ <input type="hidden" name="derivative" value="<%derivative.id|html>"/>
+
+ <div>
+ Path:
+ <%derivative.path|html>
+ </div>
+ <div>
+ Size:
+ <%derivative.size|html>
+ </div>
+
+ <%foreach derivative.properties property>
+ <div>
+ Property: <%property.key|html>
+ <input type="text" name="value.<%property.key|html>" value="<%property.value|html>">
+ <input type="checkbox" name="delete.<%property.key|html>">Delete
+ </div>
+ <%/foreach>
+
+ <div>
+ New Property:
+ <input type="text" name="property" value="">
+ <input type="text" name="value" value="">
+ </div>
+ <button type="submit" name="new-property" value="true">Add Property</button>
+
+ </form>
+
+<%foreachelse>
+ <p>This track does not yet have any derivatives.</p>
+<%/foreach>
+
+<h2>Add a New Derivative</h2>
+
+<form action="admin.add-derivative" method="post" enctype="multipart/form-data" accept-charset="utf-8">
+
+ <input type="hidden" name="track" value="<%track.id|html>"/>
+
+ <input type="file" name="derivative"/>
+
+ <button type="submit">Add Derivative</button>
+
+</form>
+
+<%include include/footer>
\ No newline at end of file