r1056 - in xwiki/trunk/src/main/java/com/xpn/xwiki: doc web
Ludovic Dubost
ludovic at users.forge.objectweb.org
Tue Apr 25 03:04:03 CEST 2006
Author: ludovic
Date: 2006-04-25 03:04:02 +0200 (Tue, 25 Apr 2006)
New Revision: 1056
Modified:
xwiki/trunk/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java
xwiki/trunk/src/main/java/com/xpn/xwiki/web/LockAction.java
Log:
Fixed bug in editobjects/editrights/removeobject caused by the addition to the save API (this is a bug with a lot of impact). The clone function was not cloning properly objects. It would renumber them while it shouldn't
Do not lock when called from javascript if the user was not owning the lock
Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java 2006-04-24 07:28:24 UTC (rev 1055)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java 2006-04-25 01:04:02 UTC (rev 1056)
@@ -840,6 +840,26 @@
}
}
+ public void clonexWikiObjects(XWikiDocument templatedoc) {
+ // TODO: look for each object if it already exist and add it if it doesn't
+ Iterator itobjects = templatedoc.getxWikiObjects().keySet().iterator();
+ while (itobjects.hasNext()) {
+ String name = (String) itobjects.next();
+ Vector tobjects = (Vector) templatedoc.getObjects(name);
+ Vector objects = new Vector();
+ objects.setSize(tobjects.size());
+ for (int i = 0; i < tobjects.size(); i++) {
+ BaseObject bobj1 = (BaseObject) tobjects.get(i);
+ if (bobj1 != null) {
+ BaseObject bobj = (BaseObject) bobj1.clone();
+ objects.set(i, bobj);
+ }
+ }
+ getxWikiObjects().put(name, objects);
+ }
+ }
+
+
public String getTemplate() {
if (template==null)
return "";
@@ -1206,7 +1226,7 @@
doc.setTranslation(getTranslation());
doc.setxWikiClass((BaseClass) getxWikiClass().clone());
doc.setxWikiClassXML(getxWikiClassXML());
- doc.mergexWikiObjects(this);
+ doc.clonexWikiObjects(this);
doc.copyAttachments(this);
return doc;
}
Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/web/LockAction.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/web/LockAction.java 2006-04-24 07:28:24 UTC (rev 1055)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/web/LockAction.java 2006-04-25 01:04:02 UTC (rev 1056)
@@ -33,10 +33,12 @@
String username = context.getUser();
XWikiLock lock = tdoc.getLock(context);
- if ("inline".equals(request.get("action")))
- doc.setLock(username, context);
- else
- tdoc.setLock(username, context);
+ if ((lock==null)||(username.equals(lock.getUserName()))) {
+ if ("inline".equals(request.get("action")))
+ doc.setLock(username, context);
+ else
+ tdoc.setLock(username, context);
+ }
// forward to view
String redirect = Utils.getRedirect("view", context);
More information about the Xwiki-notifications
mailing list