X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/922da69f42998b29355796e20e4dee0079d4113e..a3222e35cda68c8e48a17921c33ac37ecb5c3bac:/apps/workbench/app/helpers/application_helper.rb diff --git a/apps/workbench/app/helpers/application_helper.rb b/apps/workbench/app/helpers/application_helper.rb index 428c14f828..a219cd5cc3 100644 --- a/apps/workbench/app/helpers/application_helper.rb +++ b/apps/workbench/app/helpers/application_helper.rb @@ -12,7 +12,7 @@ module ApplicationHelper end def render_content_from_database(markup) - raw RedCloth.new(markup).to_html + raw RedCloth.new(markup.to_s).to_html(:refs_arvados, :textile) if markup end def human_readable_bytes_html(n) @@ -143,9 +143,12 @@ module ApplicationHelper if !object.attribute_editable?(attr, :ever) or (!object.editable? and !object.owner_uuid.in?(my_projects.collect(&:uuid))) - return ((attrvalue && attrvalue.length > 0 && attrvalue) || - (attr == 'name' and object.andand.default_name) || - '(none)') + if attrvalue && attrvalue.length > 0 + return render_textile_if_textile( object, attr, attrvalue ) + else + return (attr == 'name' and object.andand.default_name) || + '(none)' + end end input_type = 'text' @@ -159,6 +162,7 @@ module ApplicationHelper end attrvalue = attrvalue.to_json if attrvalue.is_a? Hash or attrvalue.is_a? Array + rendervalue = render_textile_if_textile( object, attr, attrvalue ) ajax_options = { "data-pk" => { @@ -176,7 +180,7 @@ module ApplicationHelper @unique_id ||= (Time.now.to_f*1000000).to_i span_id = object.uuid.to_s + '-' + attr.to_s + '-' + (@unique_id += 1).to_s - span_tag = content_tag 'span', attrvalue.to_s, { + span_tag = content_tag 'span', rendervalue, { "data-emptytext" => (object.andand.default_name || 'none'), "data-placement" => "bottom", "data-type" => input_type, @@ -184,8 +188,9 @@ module ApplicationHelper "data-name" => attr, "data-object-uuid" => object.uuid, "data-toggle" => "manual", + "data-value" => attrvalue, "id" => span_id, - :class => "editable" + :class => "editable #{is_textile?( object, attr ) ? 'editable-textile' : ''}" }.merge(htmloptions).merge(ajax_options) edit_button = raw('') if htmloptions[:btnplacement] == :left @@ -443,4 +448,13 @@ module ApplicationHelper nil end end + +private + def is_textile?( object, attr ) + is_textile = object.textile_attributes.andand.include?(attr) + end + + def render_textile_if_textile( object, attr, attrvalue ) + is_textile?( object, attr ) ? render_content_from_database(attrvalue) : attrvalue + end end