[LON-CAPA-cvs] cvs: loncom / loncapa_apache.conf /interface loncoursegroups.pm

raeburn lon-capa-cvs@mail.lon-capa.org
Thu, 27 Oct 2005 23:32:27 -0000


This is a MIME encoded message

--raeburn1130455947
Content-Type: text/plain

raeburn		Thu Oct 27 19:32:27 2005 EDT

  Added files:                 
    /loncom/interface	loncoursegroups.pm 

  Modified files:              
    /loncom	loncapa_apache.conf 
  Log:
  Start on interface to manage course groups.
  
  
--raeburn1130455947
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20051027193227.txt"

Index: loncom/loncapa_apache.conf
diff -u loncom/loncapa_apache.conf:1.117 loncom/loncapa_apache.conf:1.118
--- loncom/loncapa_apache.conf:1.117	Mon Oct 24 17:32:35 2005
+++ loncom/loncapa_apache.conf	Thu Oct 27 19:32:25 2005
@@ -1,7 +1,7 @@
 ##
 ## loncapa_apache.conf -- Apache HTTP LON-CAPA configuration file
 ##
-## $Id: loncapa_apache.conf,v 1.117 2005/10/24 21:32:35 albertel Exp $
+## $Id: loncapa_apache.conf,v 1.118 2005/10/27 23:32:25 raeburn Exp $
 ##
 
 #
@@ -697,6 +697,15 @@
 ErrorDocument	  500 /adm/errorhandler
 </Location>
 
+<Location /adm/coursegroups>
+PerlAccessHandler       Apache::lonacc
+SetHandler perl-script
+PerlHandler Apache::loncoursegroups
+ErrorDocument     403 /adm/login
+ErrorDocument     406 /adm/roles
+ErrorDocument     500 /adm/errorhandler
+</Location>
+
 <Location /adm/whatsnew>
 PerlAccessHandler       Apache::lonacc
 SetHandler perl-script

Index: loncom/interface/loncoursegroups.pm
+++ loncom/interface/loncoursegroups.pm
#
# Copyright Michigan State University Board of Trustees
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
# LON-CAPA is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# LON-CAPA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LON-CAPA; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
# /home/httpd/html/adm/gpl.txt
#
# http://www.lon-capa.org/
#

package Apache::loncoursegroups;

use strict;
use Apache::lonnet;
use Apache::loncommon;
use Apache::lonhtmlcommon;
use Apache::lonlocal;
use Apache::Constants qw(:common :http);

sub handler {
    my ($r) = @_;
    &Apache::loncommon::content_type($r,'text/html');
    $r->send_http_header;
                                                                                
    if ($r->header_only) {
        return OK;
    }

    &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                            ['action','state']);

    $r->print(&header());

    &Apache::lonhtmlcommon::clear_breadcrumbs();
    &Apache::lonhtmlcommon::add_breadcrumb
        ({href=>"/adm/groups",
          text=>"Group Management",
          faq=>9,bug=>'Instructor Interface',});
    #  Needs to be in a course
    if (! ($env{'request.course.fn'})) {
        # Not in a course
        $env{'user.error.msg'}=
            "/adm/groups:mdg:0:0:Cannot create, modify or delete course groups";
        return HTTP_NOT_ACCEPTABLE;
    }

    my $view_permission =
        &Apache::lonnet::allowed('vcg',$env{'request.course.id'});
    my $manage_permission =
        &Apache::lonnet::allowed('mdg',$env{'request.course.id'});

    if (! exists($env{'form.action'})) {
        $r->print(&Apache::lonhtmlcommon::breadcrumbs
                  (undef,'Course Group Manager'));
        &print_main_menu($r,$manage_permission,$view_permission);
    } elsif ($env{'form.action'} eq 'create' && $manage_permission) {
        &Apache::lonhtmlcommon::add_breadcrumb
            ({href=>'/adm/coursegroups?action=create&state=',
              text=>"Create Group"});
        $r->print(&Apache::lonhtmlcommon::breadcrumbs
                  (undef,'Create Group','Course_Create_Group'));
        if (! exists($env{'form.state'})) {
            &first_creation_form($r);
        } elsif ($env{'form.state'} eq 'pick_members') {
            &second_creation_form($r);
        } elsif ($env{'form.state'} eq 'complete') {
            &completed_creation($r);
        } else {
            &first_creation_form($r);
        }
    }
    $r->print(&footer());
    return OK;
}

sub header {
    my $html=&Apache::lonxml::xmlbegin();
    my $bodytag=&Apache::loncommon::bodytag('Course Groups Manager');
    my $title = &mt('LON-CAPA Groups Manager');
    return(<<ENDHEAD);
$html
<head>
<title>$title</title>
</head>
$bodytag
<form method="post"
      action="/adm/coursegroup" name="form">
ENDHEAD
}

sub print_main_menu {
    my ($r,$manage_permission,$view_permission)=@_;
    my ($cdom,$cnum) = split/_/,$env{'request.course.id'};
    my @menu =
        (
          { text => 'Create a new group',
            help => 'Course_Create_Group',
            action => 'create',
            permission => $manage_permission,
            },
          { text => 'Modify an existing group',
            help => 'Course_Modify_Group',
            action => 'modify',
            permission => $manage_permission,
            },
          { text => 'Delete an existing group',
            help => 'Course_Delete_Group',
            action => 'delete',
            permission => $manage_permission,
            },
          { text => 'Enter an existing group',
            help => 'Course_Display_Group',
            action => 'display',
            permission => $view_permission,
            },
          );
    my $menu_html = '';
    foreach my $menu_item (@menu) {
        next if (! $menu_item->{'permission'});
        $menu_html.='<p>';
        $menu_html.='<font size="+1">';
        if (exists($menu_item->{'url'})) {
            $menu_html.=qq{<a href="$menu_item->{'url'}">};
        } else {
            $menu_html.=
                qq{<a href="/adm/coursegroups?action=$menu_item->{'action'}">};
        }
        $menu_html.= &mt($menu_item->{'text'}).'</a></font>';
        if (exists($menu_item->{'help'})) {
            $menu_html.=
                &Apache::loncommon::help_open_topic($menu_item->{'help'});
        }
        $menu_html.='</p>'.$/;
    }
    $r->print($menu_html);
    return;
}

sub footer {
       return(<<ENDFOOT);
  </form>
 </body>
</html>
ENDFOOT
 
}

sub first_creation_form {
    my ($r) = @_;
    my %lt = &Apache::lonlocal::texthash(
        'gmem' => 'Group membership options',
        'picr' => 'Pick the criteria to use to build a list of course users from which you will select members of the new group',   
        'gdat' => 'Group open and close dates',
        'sten' => 'Set a start date/time and end date/time for the group',
        'acst' => 'Active/Inactive status',
        'coro' => 'Course roles',
        'cose' => 'Course sections',
        'gfun' => 'Group functionality',
    );

    my %status_types = (
                   active => &mt('Currently has access'),
                   previous => &mt('Previously had access'),
                   future => &mt('Will have future access'),
                   );

    my @roles = ('st','cc','in','ta','ep','cr');

    my %sectioncount = ();
    my @sections = ();
    my $section_sel = '';
    my $numvisible;
    my $numsections = &Apache::loncommon::get_sections($env{'course.'.$env{'request.course.id'}.'.domain'},$env{'course.'.$env{'request.course.id'}.'.num'},\%sectioncount);

    @sections = sort {$a cmp $b} keys(%sectioncount);
    unshift(@sections,'all'); # Put 'all' at the front of the list
    if ($numsections < 4) {
        $numvisible = $numsections + 1;
    }

    $r->print(<<"END");
<b>$lt{'gmem'}</b><br/> $lt{'picr'}
<br /><br />
<table border="0">
 <tr>
 <td><b>$lt{'acst'}</b></td>
  <td>&nbsp;</td>
  <td><b>$lt{'coro'}</b></td>
  <td>&nbsp;</td>
  <td><b>$lt{'cose'}</b></td>
  <td>&nbsp;</td>
 </tr>
 <tr>
 <tr>
END
    $r->print(&Apache::lonhtmlcommon::status_select_row(\%status_types));
    $r->print('<td>&nbsp;</td>');
    $r->print(&Apache::lonhtmlcommon::role_select_row(\@roles));
    $r->print(<<"END");
  <td>&nbsp;</td>
  <td align="center">
   <select name="sectionpick" multiple="true" size="$numvisible">
    $section_sel
   </select>
  </td>
 </tr>
</table>
END
    return;
}

sub second_creation_form {
    my ($r) = @_;
}

sub completed_creation {
    my ($r) = @_;
}

1;

--raeburn1130455947--