class PersonCourse

Allows to add, modify and delete persons

Public Instance Methods

layout() click to toggle source
# File Views/Person/Course.rb, line 4
def layout
  set_data_class :Persons
  @update = true
  @order = 45
  @functions_need = [:courses]

  gui_vbox do
    show_str_ro :first_name
    show_str_ro :family_name
    show_list_single :courses, :maxheight => 150
    show_button :add, :delete
    
    gui_window :new_course do
      show_list_single :courses_available, 'Entities.Courses.list_courses',
        :maxheight => 150
      show_button :add_course, :close
    end
  end
end
rpc_button_add( session, args ) click to toggle source
# File Views/Person/Course.rb, line 41
def rpc_button_add( session, args )
  if args['persons'].flatten.length > 0
    reply( :empty, [ :courses_available ] ) +
      reply( :update, :courses_available => 
        ( Entities.Courses.list_courses - 
          Entities.Courses.list_courses_for_person( args['persons'].flatten[0] ) ) ) +
      reply( :window_show, :new_course )
  end
end
rpc_button_add_course( session, args ) click to toggle source
# File Views/Person/Course.rb, line 59
def rpc_button_add_course( session, args )
  if ca = args['courses_available'] and ca.length > 0
    c = Entities.Courses.match_by_id( ca[0] )
    c.students_add args['persons'].flatten[0]
  end
  reply( :window_hide ) +
    rpc_list_choice( session, 'persons', args )
end
rpc_button_close( session, args ) click to toggle source
# File Views/Person/Course.rb, line 68
def rpc_button_close( session, args )
  reply( :window_hide )
end
rpc_button_delete( session, args ) click to toggle source
# File Views/Person/Course.rb, line 51
def rpc_button_delete( session, args )
  if ca = args['courses'] and ca.length > 0
    c = Entities.Courses.match_by_id( ca[0] )
    c.students.delete( args['persons'].flatten[0] )
  end
  rpc_list_choice( session, 'persons', args )    
end
rpc_list_choice( session, name, args ) click to toggle source
# File Views/Person/Course.rb, line 28
def rpc_list_choice( session, name, args )
  dputs( 3 ){ "args is #{args.inspect}" }
  ret = reply( :empty_nonlists, [:courses] )
  if name == "persons" and args['persons']
    p = Entities.Persons.match_by_login_name( args['persons'].flatten[0] )
    if p
      ret += reply( :update, :courses => Entities.Courses.list_courses_for_person( p ) ) +
        update_form_data( p )
    end
  end
  ret
end
rpc_update( session ) click to toggle source
# File Views/Person/Course.rb, line 24
def rpc_update( session )
  reply( :empty_nonlists, [:courses] )
end