next up previous
Next: Multivalued Parameters Up: No Title Previous: Processing HTML Forms

Student-Menu

procedure student_menu(u_access in varchar2 default NULL,
                       id in number) as
   access_check varchar2(30);
   no_access    exception;
   cursor c1 is
     select courses.term,cno,courses.lineno 
     from   courses,enrolls
     where  enrolls.sid = id and 
            courses.term = enrolls.term and
            courses.lineno = enrolls.lineno;
begin
   if (u_access = NULL) then
      raise no_access;
   end if;
   access_check := user_access.check_access(u_access);
   if  (access_check != 'Student') then
      raise no_access;
   end if;
   htp.htmlOpen;
   htp.headOpen;
   htp.htitle('Student Menu');
   htp.headClose;
   htp.bodyOpen;
   htp.formOpen(owa_util.get_owa_service_path ||
               'menus.process_student_option');
   htp.formSelectOpen('tcl','Term: ');
   for c1_rec in c1 loop
     htp.formSelectOption('(' ||c1_rec.term||','||
                          c1_rec.cno||','||
                          c1_rec.lineno || ')');
   end loop;
   htp.formSelectClose;
   htp.nl;

   htp.formHidden('u_access', u_access);
   htp.formHidden('id', id);
   htp.formSubmit('opt','Display Scores');
   htp.formSubmit('opt','Change Password');
   htp.formSubmit('opt','Logout');
   htp.formclose;
   htp.bodyClose;
   htp.htmlClose;
Exception
   when no_access then
      htp.print('You do not have an access to this page');
   when others then
      htp.print('Error in menus.student_menu');
end student_menu;

function check_access(
     u_access in varchar2 default NULL) 
   return varchar2 as
 return_value varchar(30);
 auth_buffer  varchar(20);
  no_access    exception;
begin
  if u_access is null
     then raise no_access;
  end if;
  select authority into auth_buffer
  from   users U
  where  U.u_access = check_access.u_access;
  return_value := auth_buffer;
  return(return_value);
 Exception
   when no_data_found then return('0');
   when no_access then return ('0');
   when others then
    htp.print('Error in user_access.check_access');
end check_access;

procedure process_student_option(
    u_access in varchar2 default NULL,
    opt in varchar2 default null,
    tcl in varchar2 default null,
    id in number) as
begin
  if (opt = 'Display Scores') then
    display.display_own_scores(id,tcl,u_access);
  elsif (opt = 'Change Password') then
    user_access.change_password(u_access);
  elsif (opt = 'Logout') then
    user_access.logout(u_access);
  end if;
end;

procedure display_own_scores(
   id in number,
   tcl in varchar2,
   u_access in varchar2 default NULL) as

   counter integer := 0;
   access_check varchar2(30);
   no_access    exception;
   trm scores.term%type;
   lnum scores.lineno%type;
   p1 integer;
   p2 integer;
   cursor c1 is
      select components.compname,points,maxpoints
      from   scores,components
      where  sid = id and scores.term = trm and 
             scores.lineno = lnum and
             components.compname = scores.compname and
             components.term = scores.term and
             components.lineno = scores.lineno;
begin
   if (u_access = NULL) then
      raise no_access;
   end if;
   access_check := user_access.check_access(u_access);
   if (access_check != 'Student') then
                raise no_access;
   end if;

   htp.htmlOpen;
   htp.headOpen;
   htp.title('Display Scores');
   htp.header(1,'Student Scores');
   htp.headClose;
   htp.nl;
   htp.bodyOpen;
   p1 := instr(tcl,',',1,2)+1;
   p2 := instr(tcl,')',1,1)-1;
   trm := substr(tcl,2,instr(tcl,',',1)-2);
   lnum := to_number(substr(tcl,p1,p2-p1+1));
   htp.tableOpen(cattributes => 'border=2 width=60%' );
   htp.tableRowOpen;
   htp.tableHeader('Component Name');
   htp.tableHeader('Points');
   htp.tableHeader('Max Points');
   htp.tableRowClose;
   for scr_rec in c1 loop
     htp.tableRowOpen;
     htp.tableData(scr_rec.compname,'left');
     htp.tableData(scr_rec.points,'right');
     htp.tableData(scr_rec.maxpoints,'right');
     htp.tableRowClose;
     counter := counter + 1;
   end loop;
   htp.tableClose;
   htp.nl;
   htp.print('Number of records: ');
   htp.print(counter);
   htp.bodyClose;
   htp.htmlClose;

Exception
   when NO_DATA_FOUND then
      htp.print('No records found');
   when no_access then
      htp.print('You are not logged on');
   when others then
      htp.print('Something wrong in display_own_scores');
      htp.br;
      htp.print('SQLCODE = ' || SQLCODE);
      htp.br;
      htp.print('SQLERRM = ' || SQLERRM);
end display_own_scores;

procedure logout(u_access in varchar2 default NULL) as
   auth_buffer varchar(20);
   no_access   exception;
begin
   auth_buffer := check_access(u_access);
   if (auth_buffer < '1')
      then raise no_access;
   end if;
   update users
      set u_access = null
      where u_access = logout.u_access;
   commit;
   htp.print('Thank you for using Grade Book Program');
Exception
   when no_access then
      htp.print('You are not logged in');
   when others then
      htp.print('Error in users_access.logout');
end logout;



Dr. Raj Sunderraman
6/23/1998