From e46d5ef34b67087f80e991a388536ce68e2c5646 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 7 May 2012 15:07:49 +0200
Subject: [PATCH] OO-248: fix NPE if the file is too big for the HTML editor in
 the CP editor

---
 .../commons/editor/htmleditor/HTMLEditorController.java   | 7 +++++++
 src/main/java/org/olat/ims/cp/ui/CPContentController.java | 8 +++++---
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java b/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java
index 86a80a8601b..403dc4ff070 100644
--- a/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java
+++ b/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java
@@ -105,6 +105,7 @@ public class HTMLEditorController extends FormBasicController {
 	private CustomLinkTreeModel customLinkTreeModel;
 	
 	private VelocityContainer metadataVC;
+	private boolean editable = true;
 	private boolean newFile = true;
 	private boolean editorCheckEnabled = true; // default
 
@@ -147,6 +148,7 @@ public class HTMLEditorController extends FormBasicController {
 			setTranslator(Util.createPackageTranslator(PlainTextEditorController.class, getLocale(),getTranslator()));
 			getWindowControl().setError(translate("plaintext.error.tolarge", new String[]{(size / 1000) + "", (FolderConfig.getMaxEditSizeLimit()/1000)+""}));
 			this.body = "";
+			this.editable = false;
 			//initForm(ureq);
 			return;
 		}		
@@ -165,6 +167,7 @@ public class HTMLEditorController extends FormBasicController {
 			if (!lock.isSuccess()) {
 				vc.contextPut("locked", Boolean.TRUE);
 				vc.contextPut("lockOwner", lock.getOwner().getName());
+				this.editable = false;
 				return;
 			} else {
 				vc.contextPut("locked", Boolean.FALSE);				
@@ -243,6 +246,10 @@ public class HTMLEditorController extends FormBasicController {
 		metadataVC.contextPut("charSet", charSet);
 		metadataVC.contextPut("fileName", fileName);
 	}
+	
+	public boolean isEditable() {
+		return editable;
+	}
 
 	/**
 	 * Optional configuration option to display the save button below the HTML
diff --git a/src/main/java/org/olat/ims/cp/ui/CPContentController.java b/src/main/java/org/olat/ims/cp/ui/CPContentController.java
index 08f23b36f99..3817287b316 100644
--- a/src/main/java/org/olat/ims/cp/ui/CPContentController.java
+++ b/src/main/java/org/olat/ims/cp/ui/CPContentController.java
@@ -137,9 +137,11 @@ public class CPContentController extends BasicController {
 			VFSContainer pseudoContainer = new VFSRootCPContainer(virtualRootFolderName, cp, rootDir, getTranslator());
 
 			mceCtr = WysiwygFactory.createWysiwygController(ureq, getWindowControl(), pseudoContainer, filePath, false);
-			mceCtr.setCancelButtonEnabled(false);
-			mceCtr.setSaveCloseButtonEnabled(false);
-			mceCtr.setShowMetadataEnabled(false);
+			if(mceCtr.isEditable()) {
+				mceCtr.setCancelButtonEnabled(false);
+				mceCtr.setSaveCloseButtonEnabled(false);
+				mceCtr.setShowMetadataEnabled(false);
+			}
 			listenTo(mceCtr);
 			contentVC.put("content", mceCtr.getInitialComponent());
 		} else {
-- 
GitLab