Changeset 479

Show
Ignore:
Timestamp:
08/10/07 12:54:31 (1 year ago)
Author:
jlong
Message:

jargon: allowed each user to select a different language

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/jargon/radiant/app/controllers/admin/user_controller.rb

    r464 r479  
    77   
    88  def preferences 
    9     @user = User.find(session['user'].id) 
     9    @user = current_user 
    1010    if valid_params? 
    1111      handle_new_or_edit_post( 
     
    1919   
    2020  def remove 
    21     if session['user'].id.to_s == params[:id].to_s 
     21    if current_user.id.to_s == params[:id].to_s 
    2222      announce_cannot_delete_self 
    2323      redirect_to user_index_url 
     
    3939    def valid_params? 
    4040      hash = (params[:user] || {}).symbolize_keys 
    41       (hash.keys - [:password, :password_confirmation, :email]).size == 0 
     41      (hash.keys - [:password, :password_confirmation, :email, :language]).size == 0 
    4242    end 
    4343end 
  • branches/jargon/radiant/app/controllers/admin/welcome_controller.rb

    r464 r479  
    1010      login = params[:user][:login] 
    1111      password = params[:user][:password] 
    12       session['user'] = User.authenticate(login, password) 
    13       if session['user'] 
     12      user = User.authenticate(login, password) 
     13      if user 
     14        session['user_id'] = user.id 
    1415        redirect_to welcome_url 
    1516      else 
     
    2021   
    2122  def logout 
    22     session['user'] = nil 
     23    session['user_id'] = nil 
    2324    announce_logged_out 
    2425    redirect_to login_url 
  • branches/jargon/radiant/app/controllers/application.rb

    r429 r479  
    1313  before_filter :set_javascripts_and_stylesheets 
    1414   
     15  around_filter :set_language 
     16   
    1517  attr_accessor :config 
    1618   
     
    2022  end 
    2123   
    22   helper_method :include_stylesheet, :include_javascript 
    2324  def include_stylesheet(sheet) 
    2425    @stylesheets << sheet 
    2526  end 
     27  helper_method :include_stylesheet 
    2628   
    2729  def include_javascript(script) 
    2830    @javascripts << script 
    2931  end 
     32  helper_method :include_javascript 
    3033   
    3134  private 
    32    
     35     
    3336    def set_current_user 
    34       UserActionObserver.current_user = session['user'] 
     37      UserActionObserver.current_user = current_user 
    3538    end 
    36    
     39     
    3740    def set_javascripts_and_stylesheets 
    3841      @stylesheets = ['admin/main'] 
    3942      @javascripts = ['prototype', 'string', 'effects', 'dragdrop', 'controls', 'tabcontrol', 'ruledtable'] 
    4043    end 
     44     
     45    def set_language 
     46      lang = current_user && current_user.language 
     47      lang = nil if lang.blank? 
     48      lang ||= Gibberish.default_language 
     49      Gibberish.use_language(lang.to_sym) { yield } 
     50    end 
    4151end 
  • branches/jargon/radiant/app/helpers/admin/user_helper.rb

    r1 r479  
    11module Admin::UserHelper 
     2 
     3  def languages 
     4    @languages || Gibberish.languages.map do |code| 
     5      name = ''; 
     6      Gibberish.use_language(code) do 
     7       name = Gibberish.translations[:language] 
     8      end 
     9      [name, code.to_s] 
     10    end.sort_by { |(name, code)| name } 
     11  end 
     12 
    213end 
  • branches/jargon/radiant/app/helpers/application_helper.rb

    r464 r479  
    1717   
    1818  def logged_in? 
    19     session['user'] ? true : fals
     19    current_user.nil? ? false : tru
    2020  end 
    2121 
     
    5050    tabs = admin.tabs 
    5151    links = tabs.map do |tab| 
    52       nav_link_to(tab.name, tab.url) if tab.shown_for?(session['user']
     52      nav_link_to(tab.name, tab.url) if tab.shown_for?(current_user
    5353    end.compact 
    5454    links.join(separator) 
     
    8484   
    8585  def admin? 
    86     user = session['user'] 
     86    user = current_user 
    8787    user and user.admin? 
    8888  end 
    8989   
    9090  def developer? 
    91     user = session['user'] 
     91    user = current_user 
    9292    user and (user.developer? or user.admin?) 
    9393  end 
  • branches/jargon/radiant/app/models/user.rb

    r405 r479  
    22 
    33class User < ActiveRecord::Base 
     4   
     5  def self.valid_languages 
     6    Gibberish.languages.map(&:to_s) + [''] 
     7  end 
    48   
    59  # Default Order 
     
    1923   
    2024  validates_format_of :email, :message => 'invalid e-mail address', :allow_nil => true, :with => /^$|^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i 
     25   
     26  validates_inclusion_of :language, :in => valid_languages, :allow_nil => true, :message => 'invalid language' 
    2127   
    2228  validates_length_of :name, :maximum => 100, :allow_nil => true, :message => '%d-character limit' 
  • branches/jargon/radiant/app/views/admin/user/edit.rhtml

    r464 r479  
    4141    </tr> 
    4242    <tr> 
     43      <td class="label"><label for="user_language"><%= "Language"[:preferred_language] %></label></td> 
     44      <td class="field"><%= select "user", "language",  [['', '']] + languages %></td> 
     45      <td class="help"><%= "Preferred language for the administrative interface."[:note_preferred_language] %></td> 
     46    </tr> 
     47    <tr> 
    4348      <td class="label"><label class="optional" for="user_notes"><%= "Notes"[:notes] %></label></td> 
    4449      <td class="field"><%= text_area "user", "notes", :size => '40x4' %></td> 
  • branches/jargon/radiant/app/views/admin/user/index.rhtml

    r464 r479  
    2525        %> 
    2626      </td> 
    27       <td class="remove"><%=  user.id != session['user'].id ? link_to(image('remove', :alt => 'Remove User'), user_remove_url(:id => user)) : image('remove-disabled', :alt => 'Remove'[:remove]) %></td> 
     27      <td class="remove"><%=  user.id != current_user.id ? link_to(image('remove', :alt => 'Remove User'), user_remove_url(:id => user)) : image('remove-disabled', :alt => 'Remove'[:remove]) %></td> 
    2828    </tr> 
    2929<% end -%> 
  • branches/jargon/radiant/app/views/admin/user/preferences.rhtml

    r464 r479  
    1717      <td class="help"><%= "Optional"[:optional] %>.</td> 
    1818    </tr> 
     19    <tr> 
     20      <td class="label"><label for="user_language"><%= "Language"[:preferred_language] %></label></td> 
     21      <td class="field"><%= select "user", "language",  [['', '']] + languages %></td> 
     22      <td class="help"><%= "Preferred language for the administrative interface."[:note_preferred_language] %></td> 
     23    </tr> 
    1924  </table> 
    2025  <p class="buttons"> 
  • branches/jargon/radiant/db/schema.rb

    r423 r479  
    33# then regenerate this schema definition. 
    44 
    5 ActiveRecord::Schema.define(:version => 15) do 
     5ActiveRecord::Schema.define(:version => 16) do 
    66 
    77  create_table "config", :force => true do |t| 
     
    7979    t.column "notes",        :text 
    8080    t.column "lock_version", :integer,                 :default => 0 
     81    t.column "language",     :string,   :limit => 40 
    8182  end 
    8283 
  • branches/jargon/radiant/lang/de.yaml

    r476 r479  
    11# Please add values here as the interface is changed and updated. More information can be found in /vendor/plugins/gibberish/README 
    22 
    3 language: 'German-DE
     3language: 'German
    44 
    55# Abstract Model Controller 
  • branches/jargon/radiant/lang/en.yaml

    r466 r479  
    22# Please add values here as the interface is changed and updated. More information can be found in /vendor/plugins/gibberish/README 
    33 
    4 language: 'English-US
     4language: 'English
    55 
    66# Abstract Model Controller 
  • branches/jargon/radiant/lang/ja.yaml

    r473 r479  
    11# Please add values here as the interface is changed and updated. More information can be found in /vendor/plugins/gibberish/README 
    22 
    3 language: 'Japanese-JP
     3language: 'Japanese
    44 
    55# Abstract Model Controller 
  • branches/jargon/radiant/lang/nl.yaml

    r473 r479  
    11# Please add values here as the interface is changed and updated. More information can be found in /vendor/plugins/gibberish/README 
    22 
    3 language: 'Nederlands-NL
     3language: 'Dutch
    44 
    55# Abstract Model Controller 
  • branches/jargon/radiant/lib/login_system.rb

    r405 r479  
    22  def self.append_features(base) 
    33    base.class_eval %{ 
     4      helper_method :current_user 
     5       
    46      before_filter :authenticate 
    57       
     
    1214   
    1315  protected 
    14    
     16     
     17    def current_user 
     18      id = session['user_id'] 
     19      User.find_by_id(id) if id 
     20    end 
     21     
    1522    def authenticate 
    1623      action = params['action'].to_s.intern 
    17       user = session['user'] 
     24      user = current_user 
    1825      if no_login_required? or (user and user_has_access_to_action?(action)) 
    1926        true 
     
    3643   
    3744    def user_has_role?(role) 
    38       session['user'].send("#{role}?") 
     45      current_user.send("#{role}?") 
    3946    end 
    4047     
  • branches/jargon/radiant/public/stylesheets/admin/main.css

    r405 r479  
    277277  padding-top: 15px; 
    278278  padding-bottom: 10px; 
    279   width:100%; 
     279  width: 100%; 
    280280} 
    281281#content .form-area h3 { 
     
    297297#content .form-area .title { 
    298298  margin-bottom: 0; 
    299   width:100%; 
     299  width: 100%; 
    300300} 
    301301#content .form-area .title label { 
     
    345345} 
    346346#content table.fieldset { 
    347   border-bottom: 1px solid #DFD3C3; 
     347  border-bottom: 1px solid #dfd3c3; 
    348348  margin-bottom: .3em; 
    349349  width: 100%; 
     
    351351#content table.fieldset td { 
    352352  background-color: white; 
    353   border-top: 1px solid #DFD3C3; 
     353  border-top: 1px solid #dfd3c3; 
    354354  padding: 6px; 
    355355} 
     
    371371  padding-left: 0px; 
    372372  padding-right: 10px; 
    373   text-align: right; 
     373  text-align: left; 
    374374} 
    375375#content #extended-metadata .fieldset td.field { 
  • branches/jargon/radiant/test/functional/admin/abstract_model_controller_test.rb

    r405 r479  
    2424    @request    = ActionController::TestRequest.new 
    2525    @response   = ActionController::TestResponse.new 
    26     @request.session['user'] = users(:existing) 
     26    @request.session['user_id'] = users(:existing).id 
    2727    @cache = @controller.cache = FakeResponseCache.new 
    2828     
  • branches/jargon/radiant/test/functional/admin/export_controller_test.rb

    r405 r479  
    1212    @request    = ActionController::TestRequest.new 
    1313    @response   = ActionController::TestResponse.new 
    14     @request.session['user'] = users(:developer) 
     14    @request.session['user_id'] = users(:developer).id 
    1515  end 
    1616 
  • branches/jargon/radiant/test/functional/admin/extension_controller_test.rb

    r405 r479  
    1313    @request    = ActionController::TestRequest.new 
    1414    @response   = ActionController::TestResponse.new 
    15     @request.session['user'] = users(:admin) 
     15    @request.session['user_id'] = users(:admin).id 
    1616  end 
    1717 
  • branches/jargon/radiant/test/functional/admin/layout_controller_test.rb

    r405 r479  
    1313    @request = ActionController::TestRequest.new 
    1414    @response = ActionController::TestResponse.new 
    15     @request.session['user'] = users(:developer) 
     15    @request.session['user_id'] = users(:developer).id 
    1616  end 
    1717 
     
    2222  [:index, :new, :edit, :remove].each do |action| 
    2323    define_method "test_#{action}_action_allowed_if_admin" do 
    24       get action, { :id => 1 }, { 'user' => users(:admin)
     24      get action, { :id => 1 }, { 'user_id' => users(:admin).id
    2525      assert_response :success, "action: #{action}" 
    2626    end 
     
    3232     
    3333    define_method "test_#{action}_action__not_allowed_if_other" do 
    34       get action, { :id => 1 }, { 'user' => users(:existing) }, {} 
     34      get action, { :id => 1 }, { 'user_id' => users(:existing).id }, {} 
    3535      assert_redirected_to page_index_url, "action: #{action}" 
    3636      assert_match /privileges/, flash[:error], "action: #{action}" 
  • branches/jargon/radiant/test/functional/admin/page_controller_test.rb

    r405 r479  
    1313    @request    = ActionController::TestRequest.new 
    1414    @response   = ActionController::TestResponse.new 
    15     @request.session['user'] = users(:existing) 
     15    @request.session['user_id'] = users(:existing).id 
    1616     
    1717    @page_title = 'Just a Test' 
  • branches/jargon/radiant/test/functional/admin/user_controller_test.rb

    r429 r479  
    1414    @request = ActionController::TestRequest.new 
    1515    @response = ActionController::TestResponse.new 
    16     @user = @request.session['user'] = create_test_user 
     16    @user = create_test_user 
     17    @request.session['user_id'] = @user.id 
    1718  end 
    1819   
     
    2728  [:index, :new, :edit, :remove].each do |action| 
    2829    define_method "test_#{action}_action_allowed_if_admin" do 
    29       get action, { :id => 1 }, { 'user' => users(:admin)
     30      get action, { :id => 1 }, { 'user_id' => users(:admin).id
    3031      assert_response :success, "action: #{action}" 
    3132    end 
    3233 
    3334    define_method "test_#{action}_action_not_allowed_if_other" do 
    34       get action, { :id => 1 }, { 'user' => users(:non_admin)
     35      get action, { :id => 1 }, { 'user_id' => users(:non_admin).id
    3536      assert_redirected_to page_index_url, "action: #{action}" 
    3637      assert_match /privileges/, flash[:error], "action: #{action}" 
     
    4041  def test_remove__cannot_remove_self 
    4142    @user = users(:admin) 
    42     get :remove, { :id => @user.id }, { 'user' => @user
     43    get :remove, { :id => @user.id }, { 'user_id' => @user.id
    4344    assert_redirected_to user_index_url 
    4445    assert_match /cannot.*self/i, flash[:error] 
     
    5859      :preferences, 
    5960      { :user => { :password => '', :password_confirmation => '', :email => 'updated@gmail.com' } }, 
    60       { 'user' => @user
     61      { 'user_id' => @user.id
    6162    ) 
    6263    @user = User.find(@user.id) 
     
    7677      :preferences, 
    7778      { :user => { :password => 'funtimes', :password_confirmation => 'funtimes' } }, 
    78       { 'user' => @user
     79      { 'user_id' => @user.id
    7980    ) 
    8081    @user = User.find(@user.id) 
  • branches/jargon/radiant/test/functional/admin/welcome_controller_test.rb

    r429 r479  
    2929    assert_redirected_to welcome_url 
    3030     
    31     user = session['user'] 
     31    user = User.find_by_id(session['user_id']) 
    3232    assert_kind_of User, user 
    3333    assert_equal 'existing', user.login 
     
    3939    assert_response :success 
    4040    assert_match /invalid/i, flash[:error] 
    41     assert_nil session['user'] 
     41    assert_nil session['user_id'] 
    4242  end 
    4343   
     
    4545    get :logout, nil, { 'user' => users(:existing) } 
    4646    assert_redirected_to login_url 
    47     assert_nil session['user'] 
     47    assert_nil session['user_id'] 
    4848    assert_match /logged out/i, flash[:notice] 
    4949  end 
  • branches/jargon/radiant/test/functional/application_controller_test.rb

    r405 r479  
    3838  def test_before_filter 
    3939    UserActionObserver.current_user = nil 
    40     get :test, {}, { 'user' => @user
     40    get :test, {}, { 'user_id' => @user.id
    4141    assert_response :success 
    42     assert_equal @user, UserActionObserver.current_user 
     42    assert_equal @user.id, UserActionObserver.current_user.id 
    4343  end 
    4444end 
  • branches/jargon/radiant/test/functional/login_system_test.rb

    r405 r479  
    5858   
    5959  def test_authenticate__with_user_in_session 
    60     get :index, {}, { 'user' => users(:existing)
     60    get :index, {}, { 'user_id' => users(:existing).id
    6161    assert_response :success 
    6262  end 
     
    7676  def test_only_allow_access_to__when_user_in_role 
    7777    @controller = OnlyAllowAccessToWhenController.new 
    78     get :edit, {}, { 'user' => users(:admin)
     78    get :edit, {}, { 'user_id' => users(:admin).id
    7979    assert_response :success 
    8080  end 
    8181  def test_only_allow_access_to__when_user_in_role_2 
    8282    @controller = OnlyAllowAccessToWhenController.new 
    83     get :new, {}, { 'user' => users(:developer)
     83    get :new, {}, { 'user_id' => users(:developer).id
    8484    assert_response :success 
    8585  end 
    8686  def test_only_allow_access_to__when_user_in_role_3 
    8787    @controller = OnlyAllowAccessToWhenController.new 
    88     get :another, {}, { 'user' => users(:admin)
     88    get :another, {}, { 'user_id' => users(:admin).id
    8989    assert_response :success 
    9090  end 
    9191  def test_only_allow_access_to__when_user_not_in_role 
    9292    @controller = OnlyAllowAccessToWhenController.new 
    93     get :edit, {}, { 'user' => users(:non_admin)
     93    get :edit, {}, { 'user_id' => users(:non_admin).id
    9494    assert_redirected_to :action => :test 
    9595    assert_equal 'Fun.', flash[:error] 
     
    9797  def test_only_allow_access_to__when_user_not_in_role_2 
    9898    @controller = OnlyAllowAccessToWhenController.new 
    99     get :new, {}, { 'user' => users(:non_admin)
     99    get :new, {}, { 'user_id' => users(:non_admin).id
    100100    assert_redirected_to :action => :test 
    101101    assert_equal 'Fun.', flash[:error] 
     
    103103  def test_only_allow_access_to__when__user_not_in_role_3 
    104104    @controller = OnlyAllowAccessToWhenController.new 
    105     get :another, {}, { 'user' => users(:non_admin)
     105    get :another, {}, { 'user_id' => users(:non_admin).id
    106106    assert_response :success 
    107107  end 
    108108  def test_only_allow_access_to__when__user_not_in_role__defaults 
    109109    @controller = OnlyAllowAccessToWhenDefaultsController.new 
    110     get :edit, {}, { 'user' => users(:non_admin)
     110    get :edit, {}, { 'user_id' => users(:non_admin).id
    111111    assert_redirected_to :action => :index 
    112112    assert_equal 'Access denied.', flash[:error] 
     
    116116    @controller = OnlyAllowAccessToIfController.new 
    117117    @controller.condition = true 
    118     get :edit, {}, { 'user' => users(:existing)
     118    get :edit, {}, { 'user_id' => users(:existing).id
    119119    assert_response :success 
    120120  end 
     
    122122    @controller = OnlyAllowAccessToIfController.new 
    123123    @controller.condition = false 
    124     get :edit, {}, { 'user' => users(:existing)
     124    get :edit, {}, { 'user_id' => users(:existing).id
    125125    assert_response :redirect 
    126126  end 
  • branches/jargon/radiant/test/unit/user_test.rb

    r405 r479  
    9090  end 
    9191   
     92  def test_validates_inclusion_of 
     93    assert_valid :language, nil, '' 
     94    assert_valid :language, *Gibberish.languages.map(&:to_s) 
     95    assert_invalid :language, 'invalid language', 'abc' 
     96  end 
     97   
    9298  def test_save__password_encrypted 
    9399    @user.confirm_password = true