--- loncom/interface/loncreateuser.pm 2009/10/30 18:32:25 1.320
+++ loncom/interface/loncreateuser.pm 2009/11/18 21:24:40 1.327
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Create a user
#
-# $Id: loncreateuser.pm,v 1.320 2009/10/30 18:32:25 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.327 2009/11/18 21:24:40 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -51,13 +51,14 @@ In LON-CAPA, roles are actually collecti
Assistant", "Course Coordinator", and other such roles are really just
collection of privileges that are useful in many circumstances.
-Creating custom roles can be done by the Domain Coordinator through
-the Create User functionality. That screen will show all privileges
-that can be assigned to users. For a complete list of privileges,
-please see C.
+Custom roles can be defined by a Domain Coordinator, Course Coordinator
+or Community Coordinator via the Manage User functionality.
+The custom role editor screen will show all privileges which can be
+assigned to users. For a complete list of privileges, please see
+C.
-Custom role definitions are stored in the C '
.&mt('There are no records to display.')
.' ';
- if (($curr{'page'} > 1) || ($more_records)) {
- if ($curr{'page'} > 1) {
- $nav_links .= ' ';
- }
- if ($more_records) {
- $nav_links .= '';
+ # Navigation Buttons
+ $nav_links = ' ';
+ if (($curr->{'page'} > 1) || ($more_records)) {
+ if ($curr->{'page'} > 1) {
+ $nav_links .= ' ';
+ }
+ if ($more_records) {
+ $nav_links .= '';
+ }
}
+ $nav_links .= '$lt{'ecrp'}
-$choice $lt{'nr'}:
-
-
-ENDCUSTOM
+ my $newroletext = &mt('Define new custom role:');
+ $r->print('');
}
} else {
my $actiontext = $lt{'srad'};
@@ -547,8 +575,7 @@ ENDCUSTOM
$actiontext = $lt{'srst'};
}
}
- $r->print("
-$actiontext
");
+ $r->print("$actiontext
");
if ($env{'form.origform'} ne 'crtusername') {
$r->print("\n".$response);
}
@@ -557,6 +584,44 @@ ENDCUSTOM
$r->print(&Apache::loncommon::end_page());
}
+sub customrole_javascript {
+ my $js = <<"END";
+
+END
+ return $js;
+}
+
sub entry_form {
my ($dom,$srch,$forcenewuser,$context,$responsemsg,$crstype) = @_;
my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom);
@@ -3478,18 +3543,27 @@ sub build_roles {
sub custom_role_editor {
my ($r) = @_;
- my $rolename=$env{'form.rolename'};
-
- if ($rolename eq 'make new role') {
- $rolename=$env{'form.newrolename'};
+ my $action = $env{'form.customroleaction'};
+ my $rolename;
+ if ($action eq 'new') {
+ $rolename=$env{'form.newrolename'};
+ } else {
+ $rolename=$env{'form.rolename'};
}
$rolename=~s/[^A-Za-z0-9]//gs;
-
if (!$rolename || $env{'form.phase'} eq 'pickrole') {
&print_username_entry_form($r);
return;
}
+ my ($crstype,$context);
+ if ($env{'request.course.id'}) {
+ $crstype = &Apache::loncommon::course_type();
+ $context = 'course';
+ } else {
+ $context = 'domain';
+ $crstype = $env{'form.templatecrstype'};
+ }
# ------------------------------------------------------- What can be assigned?
my %full=();
my %courselevel=();
@@ -3498,7 +3572,6 @@ sub custom_role_editor {
my $dompriv='';
my $coursepriv='';
my $body_top;
- my ($disp_dummy,$disp_roles) = &Apache::lonnet::get('roles',["st"]);
my ($rdummy,$roledef)=
&Apache::lonnet::get('roles',["rolesdef_$rolename"]);
# ------------------------------------------------------- Does this role exist?
@@ -3507,6 +3580,9 @@ sub custom_role_editor {
$body_top .= &mt('Existing Role').' "';
# ------------------------------------------------- Get current role privileges
($syspriv,$dompriv,$coursepriv)=split(/\_/,$roledef);
+ if ($crstype eq 'Community') {
+ $syspriv =~ s/bre\&S//;
+ }
} else {
$body_top .= &mt('New Role').' "';
$roledef='';
@@ -3548,20 +3624,50 @@ sub custom_role_editor {
my $head_script = "\n";
$head_script .= ''."\n";
@@ -3583,13 +3689,22 @@ sub custom_role_editor {
'dml' => "Domain Level",
'ssl' => "System Level");
- $r->print('
');
$r->print(<'.$lt{'prv'}.' '.$lt{'crl'}.' '.$lt{'dml'}.
' '.$lt{'ssl'}.' '.
&Apache::loncommon::end_data_table_header_row());
- foreach my $priv (sort keys %full) {
+ foreach my $priv (sort(keys(%full))) {
my $privtext = &Apache::lonnet::plaintext($priv,$crstype);
$r->print(&Apache::loncommon::start_data_table_row().
''.$privtext.' '.
@@ -3610,11 +3725,15 @@ ENDCCF
' '.
($domainlevel{$priv}?'':' ').
- ' '.
- ($systemlevel{$priv}?'':' ').
- ' '.
- &Apache::loncommon::end_data_table_row());
+ '');
+ if ($priv eq 'bre' && $crstype eq 'Community') {
+ $r->print(' ');
+ } else {
+ $r->print($systemlevel{$priv}?'':' ');
+ }
+ $r->print(' '.
+ &Apache::loncommon::end_data_table_row());
}
$r->print(&Apache::loncommon::end_data_table().
''.
@@ -3626,7 +3745,7 @@ ENDCCF
}
# --------------------------------------------------------
sub make_script_template {
- my ($role) = @_;
+ my ($role,$crstype) = @_;
my %full_c=();
my %full_d=();
my %full_s=();
@@ -3640,6 +3759,7 @@ sub make_script_template {
$full_d{$priv}=1;
}
foreach my $item (split(/\:/,$Apache::lonnet::pr{'cr:s'})) {
+ next if (($crstype eq 'Community') && ($item eq 'bre&S'));
my ($priv,$restrict)=split(/\&/,$item);
$full_s{$priv}=1;
}
@@ -3957,10 +4077,22 @@ sub handler {
text=>"List Users"});
my ($cb_jscript,$jscript,$totcodes,$codetitles,$idlist,$idlist_titles);
my $formname = 'studentform';
- if ($context eq 'domain' && $env{'form.roletype'} eq 'course') {
- ($cb_jscript,$jscript,$totcodes,$codetitles,$idlist,$idlist_titles) =
- &Apache::lonuserutils::courses_selector($env{'request.role.domain'},
- $formname);
+ if (($context eq 'domain') && (($env{'form.roletype'} eq 'course') ||
+ ($env{'form.roletype'} eq 'community'))) {
+ if ($env{'form.roletype'} eq 'course') {
+ ($cb_jscript,$jscript,$totcodes,$codetitles,$idlist,$idlist_titles) =
+ &Apache::lonuserutils::courses_selector($env{'request.role.domain'},
+ $formname);
+ } elsif ($env{'form.roletype'} eq 'community') {
+ $cb_jscript =
+ &Apache::loncommon::coursebrowser_javascript($env{'request.role.domain'});
+ my %elements = (
+ coursepick => 'radio',
+ coursetotal => 'text',
+ courselist => 'text',
+ );
+ $jscript = &Apache::lonhtmlcommon::set_form_elements(\%elements);
+ }
$jscript .= &verify_user_display();
my $js = &add_script($jscript).$cb_jscript;
my $loadcode =
@@ -4353,6 +4485,7 @@ sub restore_prev_selections {
sub print_selfenroll_menu {
my ($r,$context,$permission) = @_;
+ my $crstype = &Apache::loncommon::course_type();
my $formname = 'enrollstudent';
my $nolink = 1;
my ($row,$lt) = &get_selfenroll_titles();
@@ -4714,8 +4847,12 @@ ENDSCRIPT
&mt('No').'';
my %advhash = &Apache::lonnet::get_course_adv_roles($cid,1);
my (@ccs,%notified);
- if ($advhash{'cc'}) {
- @ccs = split(/,/,$advhash{'cc'});
+ my $ccrole = 'cc';
+ if ($crstype eq 'Community') {
+ $ccrole = 'co';
+ }
+ if ($advhash{$ccrole}) {
+ @ccs = split(/,/,$advhash{$ccrole});
}
if ($currnotified) {
foreach my $current (split(/,/,$currnotified)) {
@@ -5024,7 +5161,6 @@ sub print_userchangelogs_display {
my %roleslog=&Apache::lonnet::dump('nohist_rolelog',$cdom,$cnum);
if ((keys(%roleslog))[0]=~/^error\:/) { undef(%roleslog); }
- $r->print('';
-
- # Only display table, if content is available (has been collected above)
- if (!$content) {
+ if ($showntableheader) { # Table footer, if content displayed above
+ $r->print(&Apache::loncommon::end_data_table()
+ .$nav_links);
+ } else { # No content displayed above
$r->print('