Merge branch 'master' into fix-frozen-specs

pull/12614/head
Román Jiménez 7 years ago committed by GitHub
commit 6b28191cbb

@ -41,6 +41,8 @@ Development
### Bug fixes / enhancements
* Fix random timeout in specs (#12625)
* Prevent a markdown with 'mailto' to open a new browser tab (#12628)
* Slider initialization waits for it to be attached to the DOM
* Fix timeseries animation for pixel styles (#12571)
* Change request order in user-actions (#12548)
* Implement responsive behaviour for time series (#12470)

@ -3,9 +3,17 @@ require_relative '../../models/markdown_render'
module Carto::HtmlSafe
def markdown_html_safe(text)
if text.present?
renderer = Redcarpet::Render::Safe.new(link_attributes: { target: '_blank' })
renderer = create_renderer(text)
markdown = Redcarpet::Markdown.new(renderer, extensions = {})
markdown.render text
markdown.render text
end
end
def create_renderer(text)
if mailto?(text)
Redcarpet::Render::Safe.new
else
Redcarpet::Render::Safe.new(link_attributes: { target: '_blank' })
end
end
@ -14,4 +22,8 @@ module Carto::HtmlSafe
markdown_html_safe(text).strip_tags
end
end
def mailto?(text)
text && text.include?('mailto:')
end
end

@ -3,6 +3,7 @@ var _ = require('underscore');
var Backbone = require('backbone');
var EditorHelpers = require('../editor-helpers-extend');
var template = require('./slider.tpl');
var MutationObserver = window.MutationObserver;
var TICKS_PLACEHOLDER = 5;
var HANDLE_WIDTH = 12;
@ -95,15 +96,44 @@ Backbone.Form.editors.Slider = Backbone.Form.editors.Base.extend({
},
_renderSlider: function () {
var numberOfValues = this._getNumberOfValues();
var element;
var field;
var onMutationObserver;
var observer;
var config = { subtree: true, childList: true };
if (!MutationObserver) {
this._initializeSlider();
} else {
element = document.body;
field = this.$('.js-slider').get(0);
onMutationObserver = function () {
if (element.contains(field)) {
this._initializeSlider();
observer.disconnect();
}
}.bind(this);
observer = new MutationObserver(onMutationObserver);
onMutationObserver();
observer.observe(element, config);
}
},
if (numberOfValues !== 1) {
_initializeSlider: function () {
var numberOfValues = this._getNumberOfValues();
var init = function () {
this.$('.js-slider').rangeslider({
polyfill: false,
fillClass: 'rangesliderFill',
handleClass: 'rangesliderHandle',
onSlideEnd: this._onSlideChange
});
}.bind(this);
if (numberOfValues !== 1) {
!MutationObserver ? setTimeout(init, 0) : init();
}
this.$('.js-slider').toggle(numberOfValues !== 1);

@ -41,11 +41,18 @@ describe('components/form-components/editors/slider', function () {
expect($(this.viewWithValues.$('.js-tick').get(5)).hasClass('is-highlighted')).toBeTruthy();
});
it('should display neither the ticks nor the slider when there is only one value', function () {
it('should display neither the ticks nor the slider when there is only one value', function (done) {
var self = this;
this.view._values = ['1'];
document.body.appendChild(this.view.el);
this.view.render();
expect(this.view.$('.js-slider').css('display')).toBe('none');
expect(this.view.$('.js-ticks').css('display')).toBe('none');
setTimeout(function () {
expect(self.view.$('.js-slider').css('display')).toBe('none');
expect(self.view.$('.js-ticks').css('display')).toBe('none');
done();
}, 0);
});
});

@ -1,6 +1,6 @@
{
"name": "cartodb-ui",
"version": "4.9.36",
"version": "4.9.37",
"description": "CARTO UI frontend",
"repository": {
"type": "git",

@ -10,4 +10,15 @@ describe Carto::HtmlSafe do
link = 'http://www.carto.com'
html_safe.markdown_html_safe("[text](#{link})").should eq "<p><a href=\"#{link}\" target=\"_blank\">text</a></p>\n"
end
it 'does not set target="blank" for mailto markdown' do
mailto = 'mailto:wadus@example.com'
html_safe.markdown_html_safe("[text](#{mailto})").should eq "<p><a href=\"#{mailto}\">text</a></p>\n"
end
it 'does not set target="blank" for mailto links' do
mail = 'wadus@example.com'
mailto = 'mailto:' + mail
html_safe.markdown_html_safe("<#{mailto}>").should eq "<p><a href=\"#{mailto}\">#{mail}</a></p>\n"
end
end

Loading…
Cancel
Save