Sha256: 75f7a55ad67182a40a8c50e104825e29b2546ab4fb31f61b8fa19b835055714d

Contents?: true

Size: 813 Bytes

Versions: 14

Compression:

Stored size: 813 Bytes

Contents

# frozen_string_literal: true

module Decidim
  class IframeDisabler
    def initialize(text, _options = {})
      @text = text
    end

    def perform
      @document = Nokogiri::HTML::DocumentFragment.parse(@text)
      disable_iframes(@document)
      document.to_html
    end

    private

    attr_reader :document

    def disable_iframes(node)
      if node.name == "iframe"
        # Default title for accessibility
        node["title"] = I18n.t("decidim.shared.embed.title") if node["title"].blank?
        # Disable scrollbar for some embed services
        node["scrolling"] = "no"
        orig_node = node.to_s
        node.replace(%(<div class="disabled-iframe"><!-- #{orig_node} --></div>))
      end

      node.children.each do |child|
        disable_iframes(child)
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
decidim-core-0.30.0.rc2 app/services/decidim/iframe_disabler.rb
decidim-core-0.30.0.rc1 app/services/decidim/iframe_disabler.rb
decidim-core-0.29.2 app/services/decidim/iframe_disabler.rb
decidim-core-0.28.5 app/services/decidim/iframe_disabler.rb
decidim-core-0.29.1 app/services/decidim/iframe_disabler.rb
decidim-core-0.28.4 app/services/decidim/iframe_disabler.rb
decidim-core-0.29.0 app/services/decidim/iframe_disabler.rb
decidim-core-0.28.3 app/services/decidim/iframe_disabler.rb
decidim-core-0.29.0.rc4 app/services/decidim/iframe_disabler.rb
decidim-core-0.29.0.rc3 app/services/decidim/iframe_disabler.rb
decidim-core-0.29.0.rc2 app/services/decidim/iframe_disabler.rb
decidim-core-0.29.0.rc1 app/services/decidim/iframe_disabler.rb
decidim-core-0.28.2 app/services/decidim/iframe_disabler.rb
decidim-core-0.28.1 app/services/decidim/iframe_disabler.rb