Index: src/main/java/com/xpn/xwiki/web/PreviewAction.java =================================================================== --- src/main/java/com/xpn/xwiki/web/PreviewAction.java (revision 25218) +++ src/main/java/com/xpn/xwiki/web/PreviewAction.java (working copy) @@ -80,11 +80,15 @@ } String language = ((EditForm) form).getLanguage(); - XWikiDocument tdoc; + XWikiDocument tdoc, doc2; // Make sure it is not considered as new - XWikiDocument doc2 = (XWikiDocument) doc.clone(); - context.put("doc", doc2); + if(doc.isNew()) { + doc2 = doc; + } else { + doc2 = (XWikiDocument) doc.clone(); + context.put("doc", doc2); + } int sectionNumber = 0; if (request.getParameter("section") != null && context.getWiki().hasSectionEdit(context)) { @@ -92,7 +96,7 @@ } vcontext.put("sectionNumber",new Integer(sectionNumber)); - if ((language == null) || (language.equals("")) || (language.equals("default")) || (language.equals(doc.getDefaultLanguage()))) { + if ((doc2.isNew()) || (language == null) || (language.equals("")) || (language.equals("default")) || (language.equals(doc.getDefaultLanguage()))) { tdoc = doc2; context.put("tdoc", doc2); vcontext.put("doc", doc2.newDocument(context)); @@ -108,19 +112,26 @@ } else { // Need to save parent and defaultLanguage if they have changed tdoc = doc.getTranslatedDocument(language, context); - tdoc.setLanguage(language); - tdoc.setTranslation(1); - XWikiDocument tdoc2 = (XWikiDocument) tdoc.clone(); + XWikiDocument tdoc2; + if( tdoc == doc && xwiki.isMultiLingual(context) ) { + tdoc = new XWikiDocument(doc.getSpace(), doc.getName()); + tdoc.setLanguage(language); + tdoc.setContent(doc.getContent()); + tdoc.setSyntaxId(doc.getSyntaxId()); + tdoc.setAuthor(context.getUser()); + tdoc.setStore(doc.getStore()); + tdoc.setCreator(context.getUser()); + tdoc.setTranslation(1); + tdoc2 = tdoc; + } else { + tdoc2 = (XWikiDocument) tdoc.clone(); + } context.put("tdoc", tdoc2); vcontext.put("tdoc", tdoc2.newDocument(context)); vcontext.put("cdoc", vcontext.get("tdoc")); tdoc2.readFromTemplate(((EditForm) form).getTemplate(), context); tdoc2.readFromForm((EditForm) form, context); - tdoc2.setAuthor(context.getUser()); tdoc2.setContentAuthor(context.getUser()); - if(tdoc2.isNew()){ - tdoc2.setCreator(context.getUser()); - } } // reconfirm edit (captcha) when jcaptcha is not correct if ((context.get("recheckcaptcha") != null) && ((Boolean)context.get("recheckcaptcha")).booleanValue())