File: app/helpers/settings_helper.rb

Overview
Module Structure
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: SettingsHelper#20
has properties
method: administration_settings_tabs #21
method: setting_select / 3 #33
method: setting_multiselect / 3 #43
method: setting_text_field / 2 #63
method: setting_text_area / 2 #68
method: setting_check_box / 2 #73
method: setting_label / 2 #79
method: notification_field / 1 #85

Code

   1  # encoding: utf-8
   2  #
   3  # Redmine - project management software
   4  # Copyright (C) 2006-2011  Jean-Philippe Lang
   5  #
   6  # This program is free software; you can redistribute it and/or
   7  # modify it under the terms of the GNU General Public License
   8  # as published by the Free Software Foundation; either version 2
   9  # of the License, or (at your option) any later version.
  10  #
  11  # This program is distributed in the hope that it will be useful,
  12  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  13  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14  # GNU General Public License for more details.
  15  #
  16  # You should have received a copy of the GNU General Public License
  17  # along with this program; if not, write to the Free Software
  18  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  19 
  20  module SettingsHelper
  21    def administration_settings_tabs
  22      tabs = [{:name => 'general', :partial => 'settings/general', :label => :label_general},
  23              {:name => 'display', :partial => 'settings/display', :label => :label_display},
  24              {:name => 'authentication', :partial => 'settings/authentication', :label => :label_authentication},
  25              {:name => 'projects', :partial => 'settings/projects', :label => :label_project_plural},
  26              {:name => 'issues', :partial => 'settings/issues', :label => :label_issue_tracking},
  27              {:name => 'notifications', :partial => 'settings/notifications', :label => :field_mail_notification},
  28              {:name => 'mail_handler', :partial => 'settings/mail_handler', :label => :label_incoming_emails},
  29              {:name => 'repositories', :partial => 'settings/repositories', :label => :label_repository_plural}
  30              ]
  31    end
  32 
  33    def setting_select(setting, choices, options={})
  34      if blank_text = options.delete(:blank)
  35        choices = [[blank_text.is_a?(Symbol) ? l(blank_text) : blank_text, '']] + choices
  36      end
  37      setting_label(setting, options).html_safe +
  38        select_tag("settings[#{setting}]",
  39                   options_for_select(choices, Setting.send(setting).to_s),
  40                   options).html_safe
  41    end
  42 
  43    def setting_multiselect(setting, choices, options={})
  44      setting_values = Setting.send(setting)
  45      setting_values = [] unless setting_values.is_a?(Array)
  46 
  47      setting_label(setting, options).html_safe +
  48        hidden_field_tag("settings[#{setting}][]", '').html_safe +
  49        choices.collect do |choice|
  50          text, value = (choice.is_a?(Array) ? choice : [choice, choice])
  51          content_tag(
  52            'label',
  53            check_box_tag(
  54               "settings[#{setting}][]",
  55               value,
  56               Setting.send(setting).include?(value)
  57             ) + text.to_s,
  58            :class => 'block'
  59           )
  60        end.join.html_safe
  61    end
  62 
  63    def setting_text_field(setting, options={})
  64      setting_label(setting, options).html_safe +
  65        text_field_tag("settings[#{setting}]", Setting.send(setting), options).html_safe
  66    end
  67 
  68    def setting_text_area(setting, options={})
  69      setting_label(setting, options).html_safe +
  70        text_area_tag("settings[#{setting}]", Setting.send(setting), options).html_safe
  71    end
  72 
  73    def setting_check_box(setting, options={})
  74      setting_label(setting, options).html_safe +
  75        hidden_field_tag("settings[#{setting}]", 0).html_safe +
  76          check_box_tag("settings[#{setting}]", 1, Setting.send("#{setting}?"), options).html_safe
  77    end
  78 
  79    def setting_label(setting, options={})
  80      label = options.delete(:label)
  81      label != false ? content_tag("label", l(label || "setting_#{setting}")).html_safe : ''
  82    end
  83 
  84    # Renders a notification field for a Redmine::Notifiable option
  85    def notification_field(notifiable)
  86      return content_tag(:label,
  87                         check_box_tag('settings[notified_events][]',
  88                                       notifiable.name,
  89                                       Setting.notified_events.include?(notifiable.name)).html_safe +
  90                           l_or_humanize(notifiable.name, :prefix => 'label_').html_safe,
  91                         :class => notifiable.parent.present? ? "parent" : '').html_safe
  92    end
  93  end