From 8c460d1e61a4efbee771a763085dcc092c3b3b86 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Thu, 15 Nov 2018 17:30:20 +0100
Subject: [PATCH] OO-3617: hide popovers after every click in the page editor

---
 .../portfolio/ui/media/_content/media_image.html       |  4 ++--
 .../static/js/jquery/openolat/jquery.contenteditor.js  | 10 ++++++++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/olat/modules/portfolio/ui/media/_content/media_image.html b/src/main/java/org/olat/modules/portfolio/ui/media/_content/media_image.html
index 417f3501393..bbed93a6a51 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/media/_content/media_image.html
+++ b/src/main/java/org/olat/modules/portfolio/ui/media/_content/media_image.html
@@ -1,10 +1,10 @@
 #set($imageWidth = ${imageSize.width} + 25)
 <div class="o_image o_image_size_style_${imageSizeStyle} #if($r.isNotEmpty($alignment)) o_image_align_$alignment #end  #if($r.isNotEmpty($style)) $style #end" style='#if($imageSizeStyle == "none" && $r.isNotNull($imageSize)) width: 100%; max-width:${imageWidth}px #end'>
 	#if($r.isTrue($showDescription))
-		<span id="ldesc_${someId}" onclick="o_popoverWithTitle('ldesc_${someId}','desc_${someId}','$r.translate("show.description")','top').popover('show');"><i class="o_icon o_icon-lg o_icon_help"> </i></span>
+		<span id="ldesc_${someId}" onclick="o_popoverWithTitle('ldesc_${someId}','desc_${someId}','$r.translate("show.description")','top').popover('show');" class="o_popover"><i class="o_icon o_icon-lg o_icon_help"> </i></span>
 	#end
 	#if($r.isTrue($showSource))
-		<span id="lsource_${someId}" onclick="o_popoverWithTitle('lsource_${someId}','source_${someId}','$r.translate("show.source")','top').popover('show');"><i class="o_icon o_icon-lg o_icon_origin"> </i></span>
+		<span id="lsource_${someId}" onclick="o_popoverWithTitle('lsource_${someId}','source_${someId}','$r.translate("show.source")','top').popover('show');" class="o_popover"><i class="o_icon o_icon-lg o_icon_origin"> </i></span>
 	#end
 	<div class="o_figure_caption_bottom">
 		#if($r.isTrue($showTitle) && $titlePosition == "above")
diff --git a/src/main/webapp/static/js/jquery/openolat/jquery.contenteditor.js b/src/main/webapp/static/js/jquery/openolat/jquery.contenteditor.js
index 58e421dffb9..c90e93f9985 100644
--- a/src/main/webapp/static/js/jquery/openolat/jquery.contenteditor.js
+++ b/src/main/webapp/static/js/jquery/openolat/jquery.contenteditor.js
@@ -33,6 +33,7 @@
     	}
     	// make sure drake is destroyed after an AJAX call and only one is active at the same time
     	destroyDrakes();
+    	destroyPopovers();
     	registerDrake(editor.drake);
     	return editor;
 	};
@@ -47,6 +48,15 @@
 		this.container = container;
 		this.drake = initDragAndDrop(container);
 	};
+	
+	function destroyPopovers() {
+		jQuery(".o_popover").each(function(index, el) {
+			var popoveredEl = jQuery(el);
+			if(popoveredEl.closest(".o_page_with_side_options_wrapper").length == 0) {
+				popoveredEl.popover('hide');
+			}
+		});
+	}
 
 	function initEdit() {
 		jQuery(".o_page_part").each(function(index, el) {
-- 
GitLab