diff options
| -rw-r--r-- | app/helpers/link_helper.rb | 49 | ||||
| -rw-r--r-- | app/views/users/_destroy_account.html.haml | 2 | ||||
| -rw-r--r-- | engines/billing/app/views/subscriptions/show.html.haml | 2 | ||||
| -rw-r--r-- | engines/support/app/views/tickets/_edit_form.html.haml | 2 | 
4 files changed, 52 insertions, 3 deletions
| diff --git a/app/helpers/link_helper.rb b/app/helpers/link_helper.rb new file mode 100644 index 0000000..55e392b --- /dev/null +++ b/app/helpers/link_helper.rb @@ -0,0 +1,49 @@ +module LinkHelper + +  # +  # markup for bootstrap button +  # +  # takes same arguments as link_to and adds a 'btn' class. +  # In addition: +  # * the name will be translated if it is a symbol +  # * html_options[:type] will be converted into a btn-type class +  # +  # example: +  # btn :home, home_path, type: [:large, :primary] +  # +  def btn(*args, &block) +    html_options = extract_html_options!(args, &block) +    type = Array(html_options.delete(:type)) +    type.map! {|t| "btn-#{t}"} +    html_options[:class] = concat_classes(html_options[:class], 'btn', type) +    args[0] = t(args[0]) if args[0].is_a?(Symbol) +    link_to *args, html_options, &block +  end + +  def destroy_btn(*args, &block) +    html_options = extract_html_options!(args, &block) +    confirmation = t "#{controller_symbol}.confirm.destroy.are_you_sure", +      cascade: true +    html_options.merge! method: :delete, confirm: confirmation +    btn *args, html_options, &block +  end + +  # +  # concat_classes will combine classes in a fairly flexible way. +  # it can handle nil, arrays, space separated strings +  # it returns a space separated string of classes. +  def concat_classes(*classes) +    classes.compact! +    classes.map {|c| c.respond_to?(:split) ? c.split(' ') : c } +    classes.flatten! +    classes.join ' ' +  end + +  def extract_html_options!(args) +    if args.count > 2 or args.count > 1 && block_given? +      args.extract_options! +    else +      {} +    end +  end +end diff --git a/app/views/users/_destroy_account.html.haml b/app/views/users/_destroy_account.html.haml index be003ce..a2c4ddd 100644 --- a/app/views/users/_destroy_account.html.haml +++ b/app/views/users/_destroy_account.html.haml @@ -8,7 +8,7 @@    - else      = t(:admin_destroy_account, :username => @user.login)  %p= t(:destroy_account_info) -= btn user_path(@user), :method => :delete, :confirm => t(:are_you_sure), :type => "danger" do += destroy_btn user_path(@user), :type => "danger" do    %i.icon-remove.icon-white    = t(:destroy_my_account)  - if @user != current_user and @user.enabled? diff --git a/engines/billing/app/views/subscriptions/show.html.haml b/engines/billing/app/views/subscriptions/show.html.haml index af1a5a5..246ebf0 100644 --- a/engines/billing/app/views/subscriptions/show.html.haml +++ b/engines/billing/app/views/subscriptions/show.html.haml @@ -4,4 +4,4 @@    Subscription  = render :partial => "subscription_details",  :locals => {:subscription => @subscription}  - if allow_cancel_subscription(@subscription) -  = btn :cancel_subscription, user_subscription_path(@user, @subscription.id),  :confirm => t(:are_you_sure), :method => :delete, :type => 'danger'  +  = destroy_btn :cancel_subscription, user_subscription_path(@user, @subscription.id),  type: 'danger' diff --git a/engines/support/app/views/tickets/_edit_form.html.haml b/engines/support/app/views/tickets/_edit_form.html.haml index 9adc2cc..889dac2 100644 --- a/engines/support/app/views/tickets/_edit_form.html.haml +++ b/engines/support/app/views/tickets/_edit_form.html.haml @@ -43,4 +43,4 @@        = f.input :regarding_user, label: Ticket.human_attribute_name(:regarding_user) + regarding_user_link    = f.button :loading    - if admin? -    = btn t(".destroy", cascade: true), auto_ticket_path(@ticket), confirm: t("tickets.confirm.destroy.are_you_sure", cascade: true), method: :delete +    = destroy_btn t(".destroy", cascade: true), auto_ticket_path(@ticket) | 
