Skip to content
Snippets Groups Projects
Commit 333fdd36 authored by aboeckle's avatar aboeckle
Browse files

Merge branch 'master' into devel_vfsAdminGUI

parents ea7d915c 2d7c4621
No related branches found
No related tags found
No related merge requests found
Showing
with 133 additions and 86 deletions
...@@ -77,11 +77,14 @@ public class ImageComponent extends AbstractComponent implements Disposable { ...@@ -77,11 +77,14 @@ public class ImageComponent extends AbstractComponent implements Disposable {
private float scalingFactor; private float scalingFactor;
private boolean divImageWrapper = true; private boolean divImageWrapper = true;
private boolean cropSelectionEnabled = false; private boolean cropSelectionEnabled = false;
private boolean preventBrowserCaching = true;
private final MapperService mapperService; private final MapperService mapperService;
/** /**
* @param name *
* @param usess The user session
* @param name The name of the component
*/ */
public ImageComponent(UserSession usess, String name) { public ImageComponent(UserSession usess, String name) {
super(name); super(name);
...@@ -104,6 +107,14 @@ public class ImageComponent extends AbstractComponent implements Disposable { ...@@ -104,6 +107,14 @@ public class ImageComponent extends AbstractComponent implements Disposable {
this.alt = alt; this.alt = alt;
} }
public boolean isPreventBrowserCaching() {
return preventBrowserCaching;
}
public void setPreventBrowserCaching(boolean preventBrowserCaching) {
this.preventBrowserCaching = preventBrowserCaching;
}
public boolean isDivImageWrapper() { public boolean isDivImageWrapper() {
return divImageWrapper; return divImageWrapper;
} }
......
...@@ -96,14 +96,12 @@ public class ImageRenderer extends DefaultComponentRenderer { ...@@ -96,14 +96,12 @@ public class ImageRenderer extends DefaultComponentRenderer {
} }
sb.append("' class='o_video_wrapper'></div>") sb.append("' class='o_video_wrapper'></div>")
.append("<script>") .append("<script>")
.append("/* <![CDATA[ */")
.append("BPlayer.insertPlayer('").append(Settings.createServerURI()).append(mapperUrl); .append("BPlayer.insertPlayer('").append(Settings.createServerURI()).append(mapperUrl);
sb.append("','").append(imgId).append("',").append(width).append(",").append(height).append(",'video'"); sb.append("','").append(imgId).append("',").append(width).append(",").append(height).append(",'video'");
if (poster != null) { if (poster != null) {
sb.append(",null,null,null,null,null,null,'").append(poster).append("'"); sb.append(",null,null,null,null,null,null,'").append(poster).append("'");
} }
sb.append(");") sb.append(");")
.append("/* ]]> */")
.append("</script>") .append("</script>")
.append("</div>"); // ENDcomponent .append("</div>"); // ENDcomponent
} }
...@@ -140,10 +138,16 @@ public class ImageRenderer extends DefaultComponentRenderer { ...@@ -140,10 +138,16 @@ public class ImageRenderer extends DefaultComponentRenderer {
String mapperUrl = ic.getMapperUrl(); String mapperUrl = ic.getMapperUrl();
String name = ic.getMedia().getName(); String name = ic.getMedia().getName();
if(name.lastIndexOf('.') > 0) { if(ic.isPreventBrowserCaching()) {
mapperUrl += "/" + name + "?" + System.nanoTime(); if(name.lastIndexOf('.') > 0) {
mapperUrl += "/" + name + "?" + System.nanoTime();
} else {
mapperUrl += "/?" + System.nanoTime();
}
} else if(name.lastIndexOf('.') > 0) {
mapperUrl += "/" + name;
} else { } else {
mapperUrl += "/?" + System.nanoTime(); mapperUrl += "/";
} }
sb.append(" src='").append(mapperUrl).append("' alt=\""); sb.append(" src='").append(mapperUrl).append("' alt=\"");
if(StringHelper.containsNonWhitespace(ic.getAlt())) { if(StringHelper.containsNonWhitespace(ic.getAlt())) {
...@@ -160,7 +164,6 @@ public class ImageRenderer extends DefaultComponentRenderer { ...@@ -160,7 +164,6 @@ public class ImageRenderer extends DefaultComponentRenderer {
.append("<input id='").append(imgId).append("_h' name='").append(imgId).append("_h' type='hidden' value='' />"); .append("<input id='").append(imgId).append("_h' name='").append(imgId).append("_h' type='hidden' value='' />");
sb.append("<script>\n") sb.append("<script>\n")
.append("/* <![CDATA[ */ \n")
.append("jQuery(function() {\n") .append("jQuery(function() {\n")
.append(" jQuery('#").append(imgId).append("').cropper({\n") .append(" jQuery('#").append(imgId).append("').cropper({\n")
.append(" aspectRatio:1,\n") .append(" aspectRatio:1,\n")
...@@ -172,7 +175,6 @@ public class ImageRenderer extends DefaultComponentRenderer { ...@@ -172,7 +175,6 @@ public class ImageRenderer extends DefaultComponentRenderer {
.append(" }") .append(" }")
.append(" });") .append(" });")
.append("});") .append("});")
.append("/* ]]> */\n")
.append("</script>"); .append("</script>");
} }
sb.append("</div>", divWrapper); // ENDcomponent sb.append("</div>", divWrapper); // ENDcomponent
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#end #end
</ul> </ul>
#end #end
#if($row.endInMilliSeconds > 300000) #if($r.isNotNull($row) && ${row.getEndInMilliSeconds()} > 300000)
<script> <script>
jQuery(function() { jQuery(function() {
setTimeout(function() { setTimeout(function() {
......
...@@ -36,8 +36,11 @@ import java.util.zip.ZipEntry; ...@@ -36,8 +36,11 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.olat.core.gui.translator.Translator;
import org.olat.core.logging.Tracing; import org.olat.core.logging.Tracing;
import org.olat.core.util.FileUtils; import org.olat.core.util.FileUtils;
import org.olat.core.util.StringHelper;
import org.olat.core.util.Util;
import org.olat.core.util.ZipUtil; import org.olat.core.util.ZipUtil;
import org.olat.core.util.io.ShieldOutputStream; import org.olat.core.util.io.ShieldOutputStream;
import org.olat.ims.qti21.QTI21Service; import org.olat.ims.qti21.QTI21Service;
...@@ -49,6 +52,7 @@ import org.olat.ims.qti21.model.xml.ManifestMetadataBuilder; ...@@ -49,6 +52,7 @@ import org.olat.ims.qti21.model.xml.ManifestMetadataBuilder;
import org.olat.ims.qti21.model.xml.QtiNodesExtractor; import org.olat.ims.qti21.model.xml.QtiNodesExtractor;
import org.olat.ims.qti21.pool.ImportExportHelper.AssessmentItemsAndResources; import org.olat.ims.qti21.pool.ImportExportHelper.AssessmentItemsAndResources;
import org.olat.ims.qti21.pool.ImportExportHelper.ItemMaterial; import org.olat.ims.qti21.pool.ImportExportHelper.ItemMaterial;
import org.olat.ims.qti21.ui.editor.AssessmentTestComposerController;
import org.olat.imscp.xml.manifest.ResourceType; import org.olat.imscp.xml.manifest.ResourceType;
import org.olat.modules.qpool.QuestionItemFull; import org.olat.modules.qpool.QuestionItemFull;
import org.olat.modules.qpool.manager.QPoolFileStorage; import org.olat.modules.qpool.manager.QPoolFileStorage;
...@@ -176,7 +180,7 @@ public class QTI21ExportProcessor { ...@@ -176,7 +180,7 @@ public class QTI21ExportProcessor {
metadataBuilder.appendMetadataFrom(qitem, resolvedAssessmentItem, locale); metadataBuilder.appendMetadataFrom(qitem, resolvedAssessmentItem, locale);
} }
public void assembleTest(List<QuestionItemFull> fullItems, File directory) { public void assembleTest(String title, List<QuestionItemFull> fullItems, File directory) {
try { try {
QtiSerializer qtiSerializer = qtiService.qtiSerializer(); QtiSerializer qtiSerializer = qtiService.qtiSerializer();
//imsmanifest //imsmanifest
...@@ -184,7 +188,14 @@ public class QTI21ExportProcessor { ...@@ -184,7 +188,14 @@ public class QTI21ExportProcessor {
//assessment test //assessment test
DoubleAdder atomicMaxScore = new DoubleAdder(); DoubleAdder atomicMaxScore = new DoubleAdder();
AssessmentTest assessmentTest = AssessmentTestFactory.createAssessmentTest("Assessment test from pool", "Section"); if(!StringHelper.containsNonWhitespace(title)) {
title = "Assessment test from pool";
}
Translator translator = Util.createPackageTranslator(AssessmentTestComposerController.class, locale);
String sectionTitle = translator.translate("new.section");
AssessmentTest assessmentTest = AssessmentTestFactory.createAssessmentTest(title, sectionTitle);
String assessmentTestFilename = assessmentTest.getIdentifier() + ".xml"; String assessmentTestFilename = assessmentTest.getIdentifier() + ".xml";
manifest.appendAssessmentTest(assessmentTestFilename); manifest.appendAssessmentTest(assessmentTestFilename);
......
...@@ -475,10 +475,17 @@ public class QTI21QPoolServiceProvider implements QPoolSPI { ...@@ -475,10 +475,17 @@ public class QTI21QPoolServiceProvider implements QPoolSPI {
processor.assembleTest(fullItems, zout); processor.assembleTest(fullItems, zout);
} }
public void exportToEditorPackage(File exportDir, List<QuestionItemShort> items, Locale locale) { /**
*
* @param testTitle The title of the test
* @param exportDir The directory to export to
* @param items The list of questions to export
* @param locale The language
*/
public void exportToEditorPackage(String testTitle, File exportDir, List<QuestionItemShort> items, Locale locale) {
List<QuestionItemFull> fullItems = loadQuestionFullItems(items); List<QuestionItemFull> fullItems = loadQuestionFullItems(items);
QTI21ExportProcessor processor = new QTI21ExportProcessor(qtiService, qpoolFileStorage, locale); QTI21ExportProcessor processor = new QTI21ExportProcessor(qtiService, qpoolFileStorage, locale);
processor.assembleTest(fullItems, exportDir); processor.assembleTest(testTitle, fullItems, exportDir);
} }
private List<QuestionItemFull> loadQuestionFullItems(List<QuestionItemShort> items) { private List<QuestionItemFull> loadQuestionFullItems(List<QuestionItemShort> items) {
......
...@@ -167,7 +167,7 @@ public class QTI21AssessmentTestHandler extends FileHandler { ...@@ -167,7 +167,7 @@ public class QTI21AssessmentTestHandler extends FileHandler {
} }
if(createObject instanceof QItemList) { if(createObject instanceof QItemList) {
QItemList itemToImport = (QItemList)createObject; QItemList itemToImport = (QItemList)createObject;
qpoolServiceProvider.exportToEditorPackage(repositoryDir, itemToImport.getItems(), locale); qpoolServiceProvider.exportToEditorPackage(displayname, repositoryDir, itemToImport.getItems(), locale);
} else if(createObject instanceof QTIEditorPackage) { } else if(createObject instanceof QTIEditorPackage) {
QTIEditorPackage testToConvert = (QTIEditorPackage)createObject; QTIEditorPackage testToConvert = (QTIEditorPackage)createObject;
QTI21DeliveryOptions options = qtiService.getDeliveryOptions(re); QTI21DeliveryOptions options = qtiService.getDeliveryOptions(re);
......
...@@ -13,16 +13,14 @@ ...@@ -13,16 +13,14 @@
#if($print || $pdf) #if($print || $pdf)
<div class="o_button_group o_button_group_right"> <div class="o_button_group o_button_group_right">
<script> <script>
/* <![CDATA[ */ function print() {
function print() { try {
try { var ww = window.open("$r.commandURI("print")", "$winid", "height=800,left=100,top=100,width=800,toolbar=no,titlebar=0,status=0,menubar=yes,location=no,scrollbars=1");
var ww = window.open("$r.commandURI("print")", "$winid", "height=800,left=100,top=100,width=800,toolbar=no,titlebar=0,status=0,menubar=yes,location=no,scrollbars=1"); ww.focus();
ww.focus(); } catch(e) {
} catch(e) { if(window.console) console.log('Error when trying to dock div id::$r.getId("undck")');
if(window.console) console.log('Error when trying to dock div id::$r.getId("undck")');
}
} }
/* ]]> */ }
</script> </script>
#if($print && $pdf) <div class='btn-group'> #end #if($print && $pdf) <div class='btn-group'> #end
#if($print) #if($print)
...@@ -499,10 +497,9 @@ ...@@ -499,10 +497,9 @@
<div id="o_c$itemResult.interactionResults.solutionFormItem.component.dispatchID" class="o_qti21_solution"> <div id="o_c$itemResult.interactionResults.solutionFormItem.component.dispatchID" class="o_qti21_solution">
<h4 onclick="jQuery('#collapse_${itemResult.interactionResults.solutionFormItem.name}').collapse('toggle')"> <h4 onclick="jQuery('#collapse_${itemResult.interactionResults.solutionFormItem.name}').collapse('toggle')">
#if($toggleSolution)<i id="collapse_${itemResult.interactionResults.solutionFormItem.name}_toggler" class="o_icon o_icon-fw o_icon_open_togglebox"> </i>#end $r.translate("solution")</h4> #if($toggleSolution)<i id="collapse_${itemResult.interactionResults.solutionFormItem.name}_toggler" class="o_icon o_icon-fw o_icon_open_togglebox"> </i>#end $r.translate("solution")</h4>
<div id="collapse_${itemResult.interactionResults.solutionFormItem.name}" class="#if($toggleSolution) collapse #end">$r.render($itemResult.interactionResults.solutionFormItem.name)</div> <div id="collapse_${itemResult.interactionResults.solutionFormItem.name}" class="#if($toggleSolution) collapse #end o_qti21_collapsable_solution">$r.render($itemResult.interactionResults.solutionFormItem.name)</div>
</div> </div>
<script> <script>
/* <![CDATA[ */
jQuery(function() { jQuery(function() {
jQuery('#collapse_${itemResult.interactionResults.solutionFormItem.name}').on('hide.bs.collapse', function () { jQuery('#collapse_${itemResult.interactionResults.solutionFormItem.name}').on('hide.bs.collapse', function () {
jQuery('#collapse_${itemResult.interactionResults.solutionFormItem.name}_toggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); jQuery('#collapse_${itemResult.interactionResults.solutionFormItem.name}_toggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox');
...@@ -525,7 +522,6 @@ ...@@ -525,7 +522,6 @@
}); });
}) })
}); });
/* ]]> */
</script> </script>
#end #end
#end #end
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
</map> </map>
</div> </div>
<script> <script>
/* <![CDATA[ */
var maphilightSettings; var maphilightSettings;
#if($r.hasCssClass($interaction, "hotspot-light")) #if($r.hasCssClass($interaction, "hotspot-light"))
maphilightSettings = { maphilightSettings = {
...@@ -116,6 +115,5 @@ ...@@ -116,6 +115,5 @@
maphilightSettings: maphilightSettings maphilightSettings: maphilightSettings
}); });
}); });
/* ]]> */
</script> </script>
</div> </div>
\ No newline at end of file
...@@ -326,11 +326,13 @@ public class ImageEditorController extends FormBasicController implements PageEl ...@@ -326,11 +326,13 @@ public class ImageEditorController extends FormBasicController implements PageEl
String settingsXml = ContentEditorXStream.toXml(settings); String settingsXml = ContentEditorXStream.toXml(settings);
imageElement.setLayoutOptions(settingsXml); imageElement.setLayoutOptions(settingsXml);
imageElement = store.savePageElement(imageElement); imageElement = store.savePageElement(imageElement);
settings = imageElement.getImageSettings();
removeAsListenerAndDispose(imagePreview); DublinCoreMetadata meta = null;
imagePreview = new ImageRunController(ureq, getWindowControl(), dataStorage, imageElement, new StandardMediaRenderingHints()); if(imageElement.getStoredData() instanceof DublinCoreMetadata) {
listenTo(imagePreview); meta = (DublinCoreMetadata)imageElement.getStoredData();
flc.getFormItemComponent().put("imagePreview", imagePreview.getInitialComponent()); }
imagePreview.updateImageSettings(settings, meta);
fireEvent(ureq, new ChangePartEvent(imageElement)); fireEvent(ureq, new ChangePartEvent(imageElement));
} }
......
...@@ -64,53 +64,11 @@ public class ImageRunController extends BasicController implements PageRunElemen ...@@ -64,53 +64,11 @@ public class ImageRunController extends BasicController implements PageRunElemen
ImageSettings settings = media.getImageSettings(); ImageSettings settings = media.getImageSettings();
if(settings != null) { if(settings != null) {
if(settings.getAlignment() != null) { DublinCoreMetadata meta = null;
mainVC.contextPut("alignment", settings.getAlignment().name());
}
if(settings.getSize() != null) {
mainVC.contextPut("size", settings.getSize().name());
}
if(StringHelper.containsNonWhitespace(settings.getStyle())) {
imageCmp.setCssClasses(settings.getStyle());
}
if(settings.getSize() != null) {
mainVC.contextPut("imageSizeStyle", settings.getSize().name());
}
mainVC.contextPut("someId", CodeHelper.getRAMUniqueID());
if(media.getStoredData() instanceof DublinCoreMetadata) { if(media.getStoredData() instanceof DublinCoreMetadata) {
DublinCoreMetadata dMeta = (DublinCoreMetadata)media.getStoredData(); meta = (DublinCoreMetadata)media.getStoredData();
boolean hasSource = settings.isShowSource() && StringHelper.containsNonWhitespace(dMeta.getSource());
if(hasSource) {
mainVC.contextPut("source", dMeta.getSource());
mainVC.contextPut("showSource", Boolean.valueOf(settings.isShowSource()));
}
}
boolean hasDescriptionToShow = settings.isShowDescription() && StringHelper.containsNonWhitespace(settings.getDescription());
mainVC.contextPut("showDescription", Boolean.valueOf(hasDescriptionToShow));
if(hasDescriptionToShow) {
mainVC.contextPut("description", settings.getDescription());
}
boolean hasCaptionToShow = StringHelper.containsNonWhitespace(settings.getCaption());
mainVC.contextPut("showCaption", Boolean.valueOf(hasCaptionToShow));
if(hasCaptionToShow) {
mainVC.contextPut("caption", settings.getCaption());
}
boolean hasTitle = StringHelper.containsNonWhitespace(settings.getTitle());
mainVC.contextPut("showTitle", Boolean.valueOf(hasTitle));
if(hasTitle) {
mainVC.contextPut("title", settings.getTitle());
ImageTitlePosition position = settings.getTitlePosition() == null ? ImageTitlePosition.above : settings.getTitlePosition();
mainVC.contextPut("titlePosition", position.name());
if(StringHelper.containsNonWhitespace(settings.getTitleStyle())) {
mainVC.contextPut("titleStyle", settings.getTitleStyle());
}
} }
updateImageSettings(settings, meta);
} }
} }
...@@ -123,6 +81,7 @@ public class ImageRunController extends BasicController implements PageRunElemen ...@@ -123,6 +81,7 @@ public class ImageRunController extends BasicController implements PageRunElemen
imageCmp = new ImageComponent(ureq.getUserSession(), "image"); imageCmp = new ImageComponent(ureq.getUserSession(), "image");
imageCmp.setMedia(mediaFile); imageCmp.setMedia(mediaFile);
imageCmp.setDivImageWrapper(false); imageCmp.setDivImageWrapper(false);
imageCmp.setPreventBrowserCaching(false);
mainVC.put("image", imageCmp); mainVC.put("image", imageCmp);
mainVC.contextPut("imageSizeStyle", "none"); mainVC.contextPut("imageSizeStyle", "none");
...@@ -149,11 +108,60 @@ public class ImageRunController extends BasicController implements PageRunElemen ...@@ -149,11 +108,60 @@ public class ImageRunController extends BasicController implements PageRunElemen
mainPanel.setDomReplaceable(false); mainPanel.setDomReplaceable(false);
} }
public void updateImageSettings(ImageSettings settings, DublinCoreMetadata meta) {
if(settings.getAlignment() != null) {
mainVC.contextPut("alignment", settings.getAlignment().name());
}
if(settings.getSize() != null) {
mainVC.contextPut("size", settings.getSize().name());
}
if(StringHelper.containsNonWhitespace(settings.getStyle())) {
imageCmp.setCssClasses(settings.getStyle());
}
if(settings.getSize() != null) {
mainVC.contextPut("imageSizeStyle", settings.getSize().name());
}
mainVC.contextPut("someId", CodeHelper.getRAMUniqueID());
if(meta != null) {
boolean hasSource = settings.isShowSource() && StringHelper.containsNonWhitespace(meta.getSource());
if(hasSource) {
mainVC.contextPut("source", meta.getSource());
mainVC.contextPut("showSource", Boolean.valueOf(settings.isShowSource()));
}
}
boolean hasDescriptionToShow = settings.isShowDescription() && StringHelper.containsNonWhitespace(settings.getDescription());
mainVC.contextPut("showDescription", Boolean.valueOf(hasDescriptionToShow));
if(hasDescriptionToShow) {
mainVC.contextPut("description", settings.getDescription());
}
boolean hasCaptionToShow = StringHelper.containsNonWhitespace(settings.getCaption());
mainVC.contextPut("showCaption", Boolean.valueOf(hasCaptionToShow));
if(hasCaptionToShow) {
mainVC.contextPut("caption", settings.getCaption());
}
boolean hasTitle = StringHelper.containsNonWhitespace(settings.getTitle());
mainVC.contextPut("showTitle", Boolean.valueOf(hasTitle));
if(hasTitle) {
mainVC.contextPut("title", settings.getTitle());
ImageTitlePosition position = settings.getTitlePosition() == null ? ImageTitlePosition.above : settings.getTitlePosition();
mainVC.contextPut("titlePosition", position.name());
if(StringHelper.containsNonWhitespace(settings.getTitleStyle())) {
mainVC.contextPut("titleStyle", settings.getTitleStyle());
}
}
}
/** /**
* @param ureq The user request * @param ureq The user request
* @param storedData To be extended * @param storedData To be extended
*/ */
protected void initMetadata(UserRequest ureq, StoredData storedData) { protected void initMetadata(UserRequest ureq, StoredData storedData) {
// //
} }
......
(function ($) { (function ($) {
"use strict";
$.fn.hotspotInteraction = function(options) { $.fn.hotspotInteraction = function(options) {
var settings = $.extend({ var settings = $.extend({
responseIdentifier: null, responseIdentifier: null,
...@@ -28,7 +29,7 @@ ...@@ -28,7 +29,7 @@
var divContainer = jQuery('#' + containerId); var divContainer = jQuery('#' + containerId);
var areaIds = settings.responseValue.split(','); var areaIds = settings.responseValue.split(',');
for(i=areaIds.length; i-->0; ) { for(var i=areaIds.length; i-->0; ) {
var areaEl = jQuery('#ac_' + settings.responseIdentifier + '_' + areaIds[i]); var areaEl = jQuery('#ac_' + settings.responseIdentifier + '_' + areaIds[i]);
var data = areaEl.data('maphilight') || {}; var data = areaEl.data('maphilight') || {};
data.selectedOn = true; data.selectedOn = true;
...@@ -49,7 +50,7 @@ ...@@ -49,7 +50,7 @@
clickHotspotArea(this, containerId, settings.responseIdentifier, settings.maxChoices, settings.singleChoice, settings.maphilightSettings); clickHotspotArea(this, containerId, settings.responseIdentifier, settings.maxChoices, settings.singleChoice, settings.maphilightSettings);
}); });
}) })
}; }
function clickHotspotArea(spot, containerId, responseIdentifier, maxChoices, singleChoice, maphilightSettings) { function clickHotspotArea(spot, containerId, responseIdentifier, maxChoices, singleChoice, maphilightSettings) {
var areaEl = jQuery(spot); var areaEl = jQuery(spot);
...@@ -101,7 +102,7 @@ ...@@ -101,7 +102,7 @@
divContainer.append(inputElement); divContainer.append(inputElement);
} }
}); });
}; }
/* /*
* Color the data based on the selectedOn flag * Color the data based on the selectedOn flag
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
* Licensed under the MIT license * Licensed under the MIT license
*/ */
;(function($) { ;(function($) {
"use strict";
$.fn.rwdImageMaps = function(options) { $.fn.rwdImageMaps = function(options) {
var settings = $.extend({ var settings = $.extend({
fillColor: 'bbbbbb', fillColor: 'bbbbbb',
...@@ -20,6 +21,7 @@ ...@@ -20,6 +21,7 @@
var $img = this; var $img = this;
var loaded = null; var loaded = null;
var windowWidth = 0; var windowWidth = 0;
var hotSpotContainerWidth = 0;
var rwdImageMap = function() { var rwdImageMap = function() {
$img.each(function() { $img.each(function() {
...@@ -32,7 +34,6 @@ ...@@ -32,7 +34,6 @@
var attrW = 'width', var attrW = 'width',
attrH = 'height'; attrH = 'height';
var $this = $(this);
if (!$that.data(attrW)) // size are backuped if (!$that.data(attrW)) // size are backuped
$that.data(attrW, $that.attr(attrW)); $that.data(attrW, $that.attr(attrW));
if (!$that.data(attrH)) // size are backuped if (!$that.data(attrH)) // size are backuped
...@@ -64,7 +65,13 @@ ...@@ -64,7 +65,13 @@
th = ((containerWidth * ratio)|0); th = ((containerWidth * ratio)|0);
$that.width(tw); $that.width(tw);
$that.height(th); $that.height(th);
} } else if(tw == 0 && th == 0) {
// image was hidden
tw = w;
th = h;
$that.width(tw);
$that.height(th);
}
var wPercent = tw/100, var wPercent = tw/100,
hPercent = th/100, hPercent = th/100,
...@@ -104,19 +111,23 @@ ...@@ -104,19 +111,23 @@
var that = this, var that = this,
$that = $(that); $that = $(that);
var containerWidth = $that.closest(".o_oo_hotcontainer").width();
if(loaded) { if(loaded) {
if(windowWidth != window.innerWidth) { if(windowWidth != window.innerWidth || hotSpotContainerWidth != containerWidth) {
recalculateMap(that, $that); recalculateMap(that, $that);
windowWidth = window.innerWidth; windowWidth = window.innerWidth;
hotSpotContainerWidth = containerWidth
} }
} else { } else {
windowWidth = window.innerWidth; windowWidth = window.innerWidth;
hotSpotContainerWidth = containerWidth;
recalculateMap(that, $that); recalculateMap(that, $that);
} }
}); });
}; };
$(window).resize(rwdImageMap).trigger('resize'); $(window).resize(rwdImageMap).trigger('resize');
$($img).closest('.o_qti21_collapsable_solution').on('shown.bs.collapse', rwdImageMap);
return this; return this;
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment