# -*- encoding : utf-8 -*- # actions directly on current card def action_ids actions.pluck :id end # includes drafts def all_action_ids Card::Action.where(card_id: id).pluck :id end def history_actions Action.where card_id: history_card_ids end def old_actions actions.where("id != ?", last_action_id) end def create_action @create_action ||= actions.first end def nth_action index index = index.to_i return unless id && index.positive? Action.where("draft is not true AND card_id = #{id}") .order(:id).limit(1).offset(index - 1).first end format :html do def action_from_context if (action_id = voo.action_id || params[:action_id]) Action.fetch action_id else card.last_action end end def action_content action, view_type return "" unless action.present? wrap do [action_content_toggle(action, view_type), content_diff(action, view_type)] end end def content_diff action, view_type diff = action.new_content? && content_changes(action, view_type) return "empty" unless diff.present? diff end def action_content_toggle action, view_type return unless show_action_content_toggle?(action, view_type) toggle_action_content_link action, view_type end def show_action_content_toggle? action, view_type view_type == :expanded || action.summary_diff_omits_content? end def toggle_action_content_link action, view_type other_view_type = view_type == :expanded ? :summary : :expanded css_class = "revision-#{action.card_act_id} float-end" link_to_view "action_#{other_view_type}", icon_tag(action_arrow_dir(view_type)), class: css_class, path: { action_id: action.id, look_in_trash: true } end def action_arrow_dir view_type view_type == :expanded ? :collapse : :expand end def revert_actions_link link_text, path_args, html_args={} return unless card.ok? :update path_args.reverse_merge! action: :update, look_in_trash: true, assign: true, card: { skip: :validate_renaming } html_args.reverse_merge! remote: true, method: :post, rel: "nofollow", path: path_args add_class html_args, "slotter" link_to link_text, html_args end def action_legend types = %i[create update delete] legend = types.map do |action_type| "#{action_icon(action_type)} #{action_type}d" end legend << _render_draft_legend if voo.show?(:draft_legend) "Actions: #{legend.join ' | '}" end def content_legend legend = [Card::Content::Diff.render_added_chunk("Additions"), Card::Content::Diff.render_deleted_chunk("Subtractions")] "Content changes: #{legend.join ' | '}" end def content_changes action, diff_type, hide_diff=false if hide_diff action.raw_view else action.content_diff diff_type end end end