|
From: <tre...@us...> - 2007-10-30 03:00:07
|
Revision: 548
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=548&view=rev
Author: trevorolio
Date: 2007-10-29 20:00:11 -0700 (Mon, 29 Oct 2007)
Log Message:
-----------
Using the body editor you can now create, modify, and delete body configurations.
Still needs much UI style love, but that can wait.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/body.js
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java 2007-10-30 00:18:31 UTC (rev 547)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java 2007-10-30 03:00:11 UTC (rev 548)
@@ -81,6 +81,30 @@
return (BodyConfigurationRecord) task.execute();
}
+ public static boolean deleteBodyConfiguration(final BodyConfigurationRecord record, SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session session) throws PersistException {
+ Query accountQuery = session.getNamedQuery(AccountPersistTasks.ACCOUNT_BY_USERNAME);
+ accountQuery.setString("username", record.getOwnerUsername());
+ AccountRecord accountRec = (AccountRecord)accountQuery.uniqueResult();
+ if(accountRec == null || accountRec.getDefaultBodyConfigurationID() == record.getBodyConfigurationID()){
+ return Boolean.FALSE;
+ }
+
+ Query settingsQuery = session.getNamedQuery(BODY_SETTINGS_BY_CONFIGURATION_ID);
+ settingsQuery.setLong("bodyConfigurationID", record.getBodyConfigurationID());
+ BodySettingRecord[] settings = (BodySettingRecord[])settingsQuery.list().toArray(new BodySettingRecord[0]);
+ for (int i = 0; i < settings.length; i++) {
+ session.delete(settings[i]);
+ }
+ session.delete(record);
+ return Boolean.TRUE;
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return Boolean.TRUE.equals(task.execute());
+ }
+
public static BodyConfigurationRecord[] findBodyConfigurationsByUsername(final String username, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session session) throws PersistException {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2007-10-30 00:18:31 UTC (rev 547)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2007-10-30 03:00:11 UTC (rev 548)
@@ -309,6 +309,27 @@
}
sendStringResponse(bodyConfigDoc.toString(), "text/xml", response);
}
+
+ public void doDelete(HttpServletRequest request, HttpServletResponse response, String[] pathElements, AccountRecord authedAccount) throws ServletException, IOException, PersistException {
+ String username = pathElements[pathElements.length - 3];
+ if (!requestOkForBody(request, username, authedAccount)) {
+ response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+ return;
+ }
+ long bodyConfigID = Long.parseLong(pathElements[pathElements.length - 1]);
+
+ BodyConfigurationRecord record = BodyPersistTasks.findBodyConfigurationByID(bodyConfigID, getSessionFactory());
+ if (record == null || !username.equals(record.getOwnerUsername())) {
+ response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
+
+ getMediaService().delete(MediaService.getBodyTextureName(record.getBodyConfigurationID()));
+ BodyPersistTasks.deleteBodyConfiguration(record, getSessionFactory());
+ response.setStatus(HttpServletResponse.SC_OK);
+ }
+
+
}
private class DefaultBodyResource extends AuthenticatedSiteResource {
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/body.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/body.js 2007-10-30 00:18:31 UTC (rev 547)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/body.js 2007-10-30 03:00:11 UTC (rev 548)
@@ -161,7 +161,6 @@
var selectedValue = +(form.bodyDataSelect.options[form.bodyDataSelect.selectedIndex].value);
var currentBodyDataID = +bodyXML.getAttribute("bodydataid");
if(selectedValue == currentBodyDataID){
- alert("no change");
return;
}
editor.setBodyData(selectedValue);
@@ -169,13 +168,34 @@
return true;
}
+function pickNewBodyName(){
+ for(var i=1; i < 100; i++){
+ var foundIt = false;
+ var potentialName = "Body " + i;
+ for(var j=0; j < bodyListXML.childNodes.length; j++){
+ if(potentialName == bodyListXML.childNodes[j].getAttribute("displayname")){
+ foundIt = true;
+ break;
+ }
+ }
+ if(!foundIt){
+ return potentialName;
+ }
+ }
+ return null;
+}
+
function bodySwitcherGo(){
var editor = document.getElementById("viewer");
var form = document.getElementById("bodySwitcherForm");
var selectedValue = form.bodySwitcher.options[form.bodySwitcher.selectedIndex].value;
if(selectedValue == "newBody"){
- alert("Show new body dialog");
- return false;
+ var newBodyName = pickNewBodyName();
+ if(newBodyName == null){
+ return false;
+ }
+ createBody(authedUsername, newBodyName, bodyXML.getAttribute("bodydataid"), handleNewBody);
+ return true;
} else if(selectedValue == "deleteBody"){
var answer = confirm("Really Delete This Body?");
if(!answer){
@@ -201,6 +221,17 @@
return true;
}
+function handleNewBody(xml){
+ if(xml == null){
+ alert("Error creating body.");
+ return;
+ }
+ var editor = document.getElementById("viewer");
+ var newBodyConfigurationID = +(xml.getAttribute("bodyconfigurationid"));
+ editor.setDefaultBodyConfiguration(newBodyConfigurationID);
+ requestBodyDocument(authedUsername, newBodyConfigurationID, handleBody);
+}
+
function handleBodyDeletion(text){
requestDefaultBodyDocument(authedUsername, handleBody);
}
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2007-10-30 00:18:31 UTC (rev 547)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2007-10-30 03:00:11 UTC (rev 548)
@@ -782,10 +782,11 @@
new XMLRequestManager(appPath + "/account/" + username + "/body/" + bodyID, httpListener).send();
}
-function createBody(username, bodyName, listener){
- var bodyXML = document.createElement("body");
+function createBody(username, bodyName, bodyDataID, listener){
+ var bodyXML = document.createElement("bodyconfiguration");
bodyXML.setAttribute("ownerusername", username);
bodyXML.setAttribute("displayname", bodyName);
+ bodyXML.setAttribute("bodydataid", bodyDataID);
var manager = new XMLRequestManager(appPath + "/account/" + username + "/body/", new BasicHTTPListener(listener));
manager.setMethod("POST");
manager.send(serializeXML(bodyXML));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|