require 'scrivito/cms_routing' module Scrivito class CmsRouting def convert_links(html) if html html.to_str.gsub(%r{\bobjid:([a-f0-9]{4,16})\b([^"']*)}) do if obj = Obj.find_by_id($1) options = {} if $2.present? begin uri = URI.parse($2) options.merge!(extract_query(uri)) options['anchor'] = uri.fragment rescue end end if editing_context.display_mode == 'editing' id_path_or_url_for_objs(obj, :path, options) else path_or_url(obj, :path, options) end else "#__target_object_not_reachable" end end end end def path_or_url_without_editing_context(target, path_or_url, options) if target.is_a?(Link) path_or_url_for_links(target, path_or_url, options) elsif target.is_a?(Obj) || target.is_a?(BasicObj) path_or_url_for_objs(target, path_or_url, options) elsif target.respond_to?(:first) if target.first.is_a?(Link) path_or_url_for_links(target.first, path_or_url, options) else return LINK_TO_EMPTY_LINKLIST end elsif target.is_a?(Binary) binary_url(target) else raise "scrivito_path or scrivito_url was called with an instance of #{target.class}. "+ "It must only be called with an Obj or a Link or a non-empty LinkList." end end end end