--- loncom/interface/loncreateuser.pm 2010/01/19 20:49:41 1.295.2.21
+++ loncom/interface/loncreateuser.pm 2009/11/12 16:09:10 1.325
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Create a user
#
-# $Id: loncreateuser.pm,v 1.295.2.21 2010/01/19 20:49:41 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.325 2009/11/12 16:09:10 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 file of the role
-author.
+Custom role definitions are stored in the C file of the creator
+of the role.
=cut
@@ -230,11 +231,13 @@ sub build_tools_display {
'uscu' => "Use custom",
'official' => 'Can request creation of official courses',
'unofficial' => 'Can request creation of unofficial courses',
+ 'community' => 'Can request creation of communities',
);
if ($context eq 'requestcourses') {
%userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
- 'requestcourses.official','requestcourses.unofficial');
- @usertools = ('official','unofficial');
+ 'requestcourses.official','requestcourses.unofficial',
+ 'requestcourses.community');
+ @usertools = ('official','unofficial','community');
@options =('norequest','approval','autolimit','validate');
%validations = &Apache::lonnet::auto_courserequest_checks($ccdomain);
%reqtitles = &courserequest_titles();
@@ -485,6 +488,11 @@ sub print_username_entry_form {
'// ]]>'."\n".
''."\n";
+ my %existingroles=&Apache::lonuserutils::my_custom_roles($crstype);
+ if (($env{'form.action'} eq 'custom') && (keys(%existingroles) > 0)
+ && (&Apache::lonnet::allowed('mcr','/'))) {
+ $jscript .= &customrole_javascript();
+ }
my %loaditems = (
'onload' => "javascript:setFormElements(document.$formtoset)",
);
@@ -510,32 +518,53 @@ sub print_username_entry_form {
}
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management',
$helpitem);
- my %existingroles=&Apache::lonuserutils::my_custom_roles();
- my $choice=&Apache::loncommon::select_form('make new role','rolename',
- ('make new role' => 'Generate new role ...',%existingroles));
my %lt=&Apache::lonlocal::texthash(
'srst' => 'Search for a user and enroll as a student',
'srme' => 'Search for a user and enroll as a member',
-
'srad' => 'Search for a user and modify/add user information or roles',
'usr' => "Username",
'dom' => "Domain",
- 'ecrp' => "Edit Custom Role Privileges",
- 'nr' => "Name of Role",
+ 'ecrp' => "Define or Edit Custom Role",
+ 'nr' => "role name",
'cre' => "Next",
);
$r->print($start_page."\n".$crumbs);
if ($env{'form.action'} eq 'custom') {
if (&Apache::lonnet::allowed('mcr','/')) {
- $r->print(<
-
-
-
$lt{'ecrp'}
-$choice $lt{'nr'}:
-
-
-ENDCUSTOM
+ my $newroletext = &mt('Define new custom role:');
+ $r->print('');
}
} else {
my $actiontext = $lt{'srad'};
@@ -555,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);
@@ -608,7 +675,7 @@ ENDBLOCK
);
my $sellink=&Apache::loncommon::selectstudent_link('crtusername','srchterm','srchdomain');
my ($title,$buttontext,$showresponse);
- if ($env{'form.action'} eq 'singlestudent') {
+ if ($env{'form.action'} eq 'singlestudent') {
if ($crstype eq 'Community') {
$title = $lt{'enrm'};
} else {
@@ -2140,7 +2207,7 @@ sub update_user_data {
$env{'form.ccuname'}, $env{'form.ccdomain'}).'');
my (%alerts,%rulematch,%inst_results,%curr_rules);
my @usertools = ('aboutme','blog','portfolio');
- my @requestcourses = ('official','unofficial');
+ my @requestcourses = ('official','unofficial','community');
my ($othertitle,$usertypes,$types) =
&Apache::loncommon::sorted_inst_types($env{'form.ccdomain'});
if ($env{'form.makeuser'}) {
@@ -2541,11 +2608,13 @@ sub update_user_data {
($env{'user.domain'} eq $env{'form.ccdomain'})) {
my %newenvhash;
foreach my $key (keys(%changed)) {
- if (($key eq 'official') || ($key eq 'unofficial')) {
+ if (($key eq 'official') || ($key eq 'unofficial')
+ || ($key eq 'community')) {
$newenvhash{'environment.requestcourses.'.$key} =
$changeHash{'requestcourses.'.$key};
if ($changeHash{'requestcourses.'.$key} ne '') {
- $newenvhash{'environment.canrequest.'.$key} = 1;
+ $newenvhash{'environment.canrequest.'.$key} =
+ $changeHash{'requestcourses.'.$key};
} else {
$newenvhash{'environment.canrequest.'.$key} =
&Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'},
@@ -2602,6 +2671,7 @@ sub update_user_data {
'portfolio' => 'Portfolio Availability',
'official' => 'Can Request Official Courses',
'unofficial' => 'Can Request Unofficial Courses',
+ 'community' => 'Can Request Communities',
'inststatus' => "Affiliation",
'prvs' => 'Previous Value:',
'chto' => 'Changed To:'
@@ -2755,6 +2825,7 @@ END
'portfolio' => "Portfolio Availability",
'official' => "Can Request Official Courses",
'unofficial' => "Can Request Unofficial Courses",
+ 'community' => "Can Request Communities",
'inststatus' => "Affiliation",
);
$r->print(<<"END");
@@ -3346,8 +3417,8 @@ sub enroll_single_student {
$r->print(&mt('If the member is currently logged-in to LON-CAPA, the new role will be available when the member next logs in.'));
} else {
$r->print(&mt('If the student is currently logged-in to LON-CAPA, the new role will be available when the student next logs in.'));
- }
- $r->print('
');
+ }
+ $r->print('');
}
} else {
$r->print(&mt('unable to enroll').": ".$enroll_result);
@@ -3472,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=();
@@ -3492,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?
@@ -3501,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='';
@@ -3540,25 +3622,55 @@ sub custom_role_editor {
my ($jsback,$elements) = &crumb_utilities();
my $button_code = "\n";
my $head_script = "\n";
- $head_script .= ''."\n";
+ my $context_code;
+ if ($context eq 'domain') {
+ my $checkedCommunity = '';
+ my $checkedCourse = ' checked="checked"';
+ if ($env{'form.templatecrstype'} eq 'Community') {
+ $checkedCommunity = $checkedCourse;
+ $checkedCourse = '';
+ }
+ $context_code = ''.(' ' x2).
+ ''.
+ ''.
+ '';
+ if ($env{'form.customroleaction'} eq 'new') {
+ $context_code .= '';
+ } else {
+ $context_code .= '';
+ }
+ $context_code .= ''.
+ '';
+ }
+
+ $head_script .= "\n".$jsback."\n"
+ .'// ]]>'."\n"
+ .''."\n";
$r->print(&Apache::loncommon::start_page('Custom Role Editor',$head_script));
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:backPage(document.form1,'pickrole','')",
@@ -3577,13 +3689,22 @@ sub custom_role_editor {
'dml' => "Domain Level",
'ssl' => "System Level");
- $r->print('
'
+ .&Apache::loncommon::end_data_table_row();
+ }
+
+ # Form Footer
+ my $form_footer =
+ ''
+ .''
+ .'';
+
+ # Only display table, if content is available (has been collected above)
+ if (!$content) {
+ $r->print('