version 1.322, 2009/11/03 21:31:06
|
version 1.328, 2009/11/23 13:03:58
|
Line 51 In LON-CAPA, roles are actually collecti
|
Line 51 In LON-CAPA, roles are actually collecti
|
Assistant", "Course Coordinator", and other such roles are really just |
Assistant", "Course Coordinator", and other such roles are really just |
collection of privileges that are useful in many circumstances. |
collection of privileges that are useful in many circumstances. |
|
|
Creating custom roles can be done by the Domain Coordinator through |
Custom roles can be defined by a Domain Coordinator, Course Coordinator |
the Create User functionality. That screen will show all privileges |
or Community Coordinator via the Manage User functionality. |
that can be assigned to users. For a complete list of privileges, |
The custom role editor screen will show all privileges which can be |
please see C</home/httpd/lonTabs/rolesplain.tab>. |
assigned to users. For a complete list of privileges, please see |
|
C</home/httpd/lonTabs/rolesplain.tab>. |
|
|
Custom role definitions are stored in the C<roles.db> file of the role |
Custom role definitions are stored in the C<roles.db> file of the creator |
author. |
of the role. |
|
|
=cut |
=cut |
|
|
Line 487 sub print_username_entry_form {
|
Line 488 sub print_username_entry_form {
|
'// ]]>'."\n". |
'// ]]>'."\n". |
'</script>'."\n"; |
'</script>'."\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 = ( |
my %loaditems = ( |
'onload' => "javascript:setFormElements(document.$formtoset)", |
'onload' => "javascript:setFormElements(document.$formtoset)", |
); |
); |
Line 512 sub print_username_entry_form {
|
Line 518 sub print_username_entry_form {
|
} |
} |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management', |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management', |
$helpitem); |
$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( |
my %lt=&Apache::lonlocal::texthash( |
'srst' => 'Search for a user and enroll as a student', |
'srst' => 'Search for a user and enroll as a student', |
'srme' => 'Search for a user and enroll as a member', |
'srme' => 'Search for a user and enroll as a member', |
'srad' => 'Search for a user and modify/add user information or roles', |
'srad' => 'Search for a user and modify/add user information or roles', |
'usr' => "Username", |
'usr' => "Username", |
'dom' => "Domain", |
'dom' => "Domain", |
'ecrp' => "Edit Custom Role Privileges", |
'ecrp' => "Define or Edit Custom Role", |
'nr' => "Name of Role", |
'nr' => "role name", |
'cre' => "Next", |
'cre' => "Next", |
); |
); |
$r->print($start_page."\n".$crumbs); |
$r->print($start_page."\n".$crumbs); |
if ($env{'form.action'} eq 'custom') { |
if ($env{'form.action'} eq 'custom') { |
if (&Apache::lonnet::allowed('mcr','/')) { |
if (&Apache::lonnet::allowed('mcr','/')) { |
$r->print(<<ENDCUSTOM); |
my $newroletext = &mt('Define new custom role:'); |
<form action="/adm/createuser" method="post" name="docustom"> |
$r->print('<form action="/adm/createuser" method="post" name="docustom">'. |
<input type="hidden" name="action" value="$env{'form.action'}" /> |
'<input type="hidden" name="action" value="'.$env{'form.action'}.'" />'. |
<input type="hidden" name="phase" value="selected_custom_edit" /> |
'<input type="hidden" name="phase" value="selected_custom_edit" />'. |
<h3>$lt{'ecrp'}</h3> |
'<h3>'.$lt{'ecrp'}.'</h3>'. |
$choice $lt{'nr'}: <input type="text" size="15" name="newrolename" /><br /> |
&Apache::loncommon::start_data_table(). |
<input name="customeditor" type="submit" value="$lt{'cre'}" /> |
&Apache::loncommon::start_data_table_row(). |
</form> |
'<td>'); |
ENDCUSTOM |
if (keys(%existingroles) > 0) { |
|
$r->print('<br /><label><input type="radio" name="customroleaction" value="new" checked="checked" onclick="setCustomFields();" /><b>'.$newroletext.'</b></label>'); |
|
} else { |
|
$r->print('<br /><input type="hidden" name="customroleaction" value="new" /><b>'.$newroletext.'</b>'); |
|
} |
|
$r->print('</td><td align="center">'.$lt{'nr'}.'<br /><input type="text" size="15" name="newrolename" onfocus="setCustomAction('."'new'".');" /></td>'. |
|
&Apache::loncommon::end_data_table_row()); |
|
if (keys(%existingroles) > 0) { |
|
$r->print(&Apache::loncommon::start_data_table_row().'<td><br />'. |
|
'<label><input type="radio" name="customroleaction" value="edit" onclick="setCustomFields();"/><b>'. |
|
&mt('View/Modify existing role:').'</b></label></td>'. |
|
'<td align="center"><br />'. |
|
'<select name="rolename" onchange="setCustomAction('."'edit'".');">'. |
|
'<option value="" selected="selected">'. |
|
&mt('Select')); |
|
foreach my $role (sort(keys(%existingroles))) { |
|
$r->print('<option value="'.$role.'">'.$role.'</option>'); |
|
} |
|
$r->print('</select>'. |
|
'</td>'. |
|
&Apache::loncommon::end_data_table_row()); |
|
} |
|
$r->print(&Apache::loncommon::end_data_table().'<p>'. |
|
'<input name="customeditor" type="submit" value="'. |
|
$lt{'cre'}.'" /></p>'. |
|
'</form>'); |
} |
} |
} else { |
} else { |
my $actiontext = $lt{'srad'}; |
my $actiontext = $lt{'srad'}; |
Line 547 ENDCUSTOM
|
Line 575 ENDCUSTOM
|
$actiontext = $lt{'srst'}; |
$actiontext = $lt{'srst'}; |
} |
} |
} |
} |
$r->print(" |
$r->print("<h3>$actiontext</h3>"); |
<h3>$actiontext</h3>"); |
|
if ($env{'form.origform'} ne 'crtusername') { |
if ($env{'form.origform'} ne 'crtusername') { |
$r->print("\n".$response); |
$r->print("\n".$response); |
} |
} |
Line 557 ENDCUSTOM
|
Line 584 ENDCUSTOM
|
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
} |
} |
|
|
|
sub customrole_javascript { |
|
my $js = <<"END"; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
|
|
function setCustomFields() { |
|
if (document.docustom.customroleaction.length > 0) { |
|
for (var i=0; i<document.docustom.customroleaction.length; i++) { |
|
if (document.docustom.customroleaction[i].checked) { |
|
if (document.docustom.customroleaction[i].value == 'new') { |
|
document.docustom.rolename.selectedIndex = 0; |
|
} else { |
|
document.docustom.newrolename.value = ''; |
|
} |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
|
function setCustomAction(caller) { |
|
if (document.docustom.customroleaction.length > 0) { |
|
for (var i=0; i<document.docustom.customroleaction.length; i++) { |
|
if (document.docustom.customroleaction[i].value == caller) { |
|
document.docustom.customroleaction[i].checked = true; |
|
} |
|
} |
|
} |
|
setCustomFields(); |
|
return; |
|
} |
|
|
|
// ]]> |
|
</script> |
|
END |
|
return $js; |
|
} |
|
|
sub entry_form { |
sub entry_form { |
my ($dom,$srch,$forcenewuser,$context,$responsemsg,$crstype) = @_; |
my ($dom,$srch,$forcenewuser,$context,$responsemsg,$crstype) = @_; |
my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom); |
my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom); |
Line 3478 sub build_roles {
|
Line 3543 sub build_roles {
|
|
|
sub custom_role_editor { |
sub custom_role_editor { |
my ($r) = @_; |
my ($r) = @_; |
my $rolename=$env{'form.rolename'}; |
my $action = $env{'form.customroleaction'}; |
|
my $rolename; |
if ($rolename eq 'make new role') { |
if ($action eq 'new') { |
$rolename=$env{'form.newrolename'}; |
$rolename=$env{'form.newrolename'}; |
|
} else { |
|
$rolename=$env{'form.rolename'}; |
} |
} |
|
|
$rolename=~s/[^A-Za-z0-9]//gs; |
$rolename=~s/[^A-Za-z0-9]//gs; |
|
|
if (!$rolename || $env{'form.phase'} eq 'pickrole') { |
if (!$rolename || $env{'form.phase'} eq 'pickrole') { |
&print_username_entry_form($r); |
&print_username_entry_form($r); |
return; |
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? |
# ------------------------------------------------------- What can be assigned? |
my %full=(); |
my %full=(); |
my %courselevel=(); |
my %courselevel=(); |
Line 3498 sub custom_role_editor {
|
Line 3572 sub custom_role_editor {
|
my $dompriv=''; |
my $dompriv=''; |
my $coursepriv=''; |
my $coursepriv=''; |
my $body_top; |
my $body_top; |
my ($disp_dummy,$disp_roles) = &Apache::lonnet::get('roles',["st"]); |
|
my ($rdummy,$roledef)= |
my ($rdummy,$roledef)= |
&Apache::lonnet::get('roles',["rolesdef_$rolename"]); |
&Apache::lonnet::get('roles',["rolesdef_$rolename"]); |
# ------------------------------------------------------- Does this role exist? |
# ------------------------------------------------------- Does this role exist? |
Line 3507 sub custom_role_editor {
|
Line 3580 sub custom_role_editor {
|
$body_top .= &mt('Existing Role').' "'; |
$body_top .= &mt('Existing Role').' "'; |
# ------------------------------------------------- Get current role privileges |
# ------------------------------------------------- Get current role privileges |
($syspriv,$dompriv,$coursepriv)=split(/\_/,$roledef); |
($syspriv,$dompriv,$coursepriv)=split(/\_/,$roledef); |
|
if ($crstype eq 'Community') { |
|
$syspriv =~ s/bre\&S//; |
|
} |
} else { |
} else { |
$body_top .= &mt('New Role').' "'; |
$body_top .= &mt('New Role').' "'; |
$roledef=''; |
$roledef=''; |
Line 3548 sub custom_role_editor {
|
Line 3624 sub custom_role_editor {
|
my $head_script = "\n"; |
my $head_script = "\n"; |
$head_script .= '<script type="text/javascript">'."\n" |
$head_script .= '<script type="text/javascript">'."\n" |
.'// <![CDATA['."\n"; |
.'// <![CDATA['."\n"; |
my $crstype; |
my @template_roles = ("in","ta","ep"); |
if ($env{'request.course.id'}) { |
if ($context eq 'domain') { |
$crstype = &Apache::loncommon::course_type(); |
push(@template_roles,"ad"); |
} |
} |
my @template_roles = ("in","ta","ep","st"); |
push(@template_roles,"st"); |
if ($crstype eq 'Community') { |
if ($crstype eq 'Community') { |
unshift(@template_roles,'co'); |
unshift(@template_roles,'co'); |
} else { |
} else { |
unshift(@template_roles,'cc'); |
unshift(@template_roles,'cc'); |
} |
} |
foreach my $role (@template_roles) { |
foreach my $role (@template_roles) { |
$head_script .= &make_script_template($role); |
$head_script .= &make_script_template($role,$crstype); |
$button_code .= &make_button_code($role,$crstype).' '; |
$button_code .= &make_button_code($role,$crstype).' '; |
} |
} |
|
my $context_code; |
|
if ($context eq 'domain') { |
|
my $checkedCommunity = ''; |
|
my $checkedCourse = ' checked="checked"'; |
|
if ($env{'form.templatecrstype'} eq 'Community') { |
|
$checkedCommunity = $checkedCourse; |
|
$checkedCourse = ''; |
|
} |
|
$context_code = '<label>'. |
|
'<input type="radio" name="templatecrstype" value="Course"'.$checkedCourse.' onclick="this.form.submit();">'. |
|
&mt('Course'). |
|
'</label>'.(' ' x2). |
|
'<label>'. |
|
'<input type="radio" name="templatecrstype" value="Community"'.$checkedCommunity.' onclick="this.form.submit();">'. |
|
&mt('Community'). |
|
'</label>'. |
|
'</fieldset>'. |
|
'<input type="hidden" name="customroleaction" value="'. |
|
$action.'" />'; |
|
if ($env{'form.customroleaction'} eq 'new') { |
|
$context_code .= '<input type="hidden" name="newrolename" value="'. |
|
$rolename.'" />'; |
|
} else { |
|
$context_code .= '<input type="hidden" name="rolename" value="'. |
|
$rolename.'" />'; |
|
} |
|
$context_code .= '<input type="hidden" name="action" value="custom" />'. |
|
'<input type="hidden" name="phase" value="selected_custom_edit" />'; |
|
} |
|
|
$head_script .= "\n".$jsback."\n" |
$head_script .= "\n".$jsback."\n" |
.'// ]]>'."\n" |
.'// ]]>'."\n" |
.'</script>'."\n"; |
.'</script>'."\n"; |
Line 3583 sub custom_role_editor {
|
Line 3689 sub custom_role_editor {
|
'dml' => "Domain Level", |
'dml' => "Domain Level", |
'ssl' => "System Level"); |
'ssl' => "System Level"); |
|
|
$r->print('<div>' |
|
|
$r->print('<div class="LC_left_float">' |
.'<form action=""><fieldset>' |
.'<form action=""><fieldset>' |
.'<legend>'.&mt('Select a Template').'</legend>' |
.'<legend>'.&mt('Select a Template').'</legend>' |
.$button_code |
.$button_code |
.'</fieldset></form>' |
.'</fieldset></form></div>'); |
.'</div>' |
if ($context_code) { |
); |
$r->print('<div class="LC_left_float">' |
|
.'<form action="/adm/createuser" method="post"><fieldset>' |
|
.'<legend>'.&mt('Context').'</legend>' |
|
.$context_code |
|
.'</form>' |
|
.'</div>' |
|
); |
|
} |
|
$r->print('<br clear="all" />'); |
|
|
$r->print(<<ENDCCF); |
$r->print(<<ENDCCF); |
<form name="form1" method="post"> |
<form name="form1" method="post"> |
Line 3601 ENDCCF
|
Line 3716 ENDCCF
|
'<th>'.$lt{'prv'}.'</th><th>'.$lt{'crl'}.'</th><th>'.$lt{'dml'}. |
'<th>'.$lt{'prv'}.'</th><th>'.$lt{'crl'}.'</th><th>'.$lt{'dml'}. |
'</th><th>'.$lt{'ssl'}.'</th>'. |
'</th><th>'.$lt{'ssl'}.'</th>'. |
&Apache::loncommon::end_data_table_header_row()); |
&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); |
my $privtext = &Apache::lonnet::plaintext($priv,$crstype); |
$r->print(&Apache::loncommon::start_data_table_row(). |
$r->print(&Apache::loncommon::start_data_table_row(). |
'<td>'.$privtext.'</td><td>'. |
'<td>'.$privtext.'</td><td>'. |
Line 3610 ENDCCF
|
Line 3725 ENDCCF
|
'</td><td>'. |
'</td><td>'. |
($domainlevel{$priv}?'<input type="checkbox" name="'.$priv.'_d"'. |
($domainlevel{$priv}?'<input type="checkbox" name="'.$priv.'_d"'. |
($domainlevelcurrent{$priv}?' checked="checked"':'').' />':' '). |
($domainlevelcurrent{$priv}?' checked="checked"':'').' />':' '). |
'</td><td>'. |
'</td><td>'); |
($systemlevel{$priv}?'<input type="checkbox" name="'.$priv.'_s"'. |
if ($priv eq 'bre' && $crstype eq 'Community') { |
($systemlevelcurrent{$priv}?' checked="checked"':'').' />':' '). |
$r->print(' '); |
'</td>'. |
} else { |
&Apache::loncommon::end_data_table_row()); |
$r->print($systemlevel{$priv}?'<input type="checkbox" name="'.$priv.'_s"'. |
|
($systemlevelcurrent{$priv}?' checked="checked"':'').' />':' '); |
|
} |
|
$r->print('</td>'. |
|
&Apache::loncommon::end_data_table_row()); |
} |
} |
$r->print(&Apache::loncommon::end_data_table(). |
$r->print(&Apache::loncommon::end_data_table(). |
'<input type="hidden" name="action" value="'.$env{'form.action'}.'" />'. |
'<input type="hidden" name="action" value="'.$env{'form.action'}.'" />'. |
Line 3626 ENDCCF
|
Line 3745 ENDCCF
|
} |
} |
# -------------------------------------------------------- |
# -------------------------------------------------------- |
sub make_script_template { |
sub make_script_template { |
my ($role) = @_; |
my ($role,$crstype) = @_; |
my %full_c=(); |
my %full_c=(); |
my %full_d=(); |
my %full_d=(); |
my %full_s=(); |
my %full_s=(); |
Line 3640 sub make_script_template {
|
Line 3759 sub make_script_template {
|
$full_d{$priv}=1; |
$full_d{$priv}=1; |
} |
} |
foreach my $item (split(/\:/,$Apache::lonnet::pr{'cr:s'})) { |
foreach my $item (split(/\:/,$Apache::lonnet::pr{'cr:s'})) { |
|
next if (($crstype eq 'Community') && ($item eq 'bre&S')); |
my ($priv,$restrict)=split(/\&/,$item); |
my ($priv,$restrict)=split(/\&/,$item); |
$full_s{$priv}=1; |
$full_s{$priv}=1; |
} |
} |
Line 4297 sub print_main_menu {
|
Line 4417 sub print_main_menu {
|
linktitle => $linktitle{$crstype}{'groups'}, |
linktitle => $linktitle{$crstype}{'groups'}, |
}, |
}, |
{ |
{ |
linktext => 'Change Logs', |
linktext => 'Change Log', |
icon => 'document-properties.png', |
icon => 'document-properties.png', |
#help => 'Course_User_Logs', |
#help => 'Course_User_Logs', |
url => '/adm/createuser?action=changelogs', |
url => '/adm/createuser?action=changelogs', |
Line 5041 sub print_userchangelogs_display {
|
Line 5161 sub print_userchangelogs_display {
|
my %roleslog=&Apache::lonnet::dump('nohist_rolelog',$cdom,$cnum); |
my %roleslog=&Apache::lonnet::dump('nohist_rolelog',$cdom,$cnum); |
if ((keys(%roleslog))[0]=~/^error\:/) { undef(%roleslog); } |
if ((keys(%roleslog))[0]=~/^error\:/) { undef(%roleslog); } |
|
|
$r->print('<form action="/adm/createuser" method="post" name="'.$formname.'">'); |
|
my %saveable_parameters = ('show' => 'scalar',); |
my %saveable_parameters = ('show' => 'scalar',); |
&Apache::loncommon::store_course_settings('roles_log', |
&Apache::loncommon::store_course_settings('roles_log', |
\%saveable_parameters); |
\%saveable_parameters); |
Line 5076 sub print_userchangelogs_display {
|
Line 5195 sub print_userchangelogs_display {
|
} |
} |
my (%whodunit,%changed,$version); |
my (%whodunit,%changed,$version); |
($version) = ($r->dir_config('lonVersion') =~ /^([\d\.]+)\-/); |
($version) = ($r->dir_config('lonVersion') =~ /^([\d\.]+)\-/); |
$r->print(&role_display_filter($formname,$cdom,$cnum,\%curr,$version,$crstype)); |
|
my ($minshown,$maxshown); |
my ($minshown,$maxshown); |
$minshown = 1; |
$minshown = 1; |
my $count = 0; |
my $count = 0; |
Line 5087 sub print_userchangelogs_display {
|
Line 5205 sub print_userchangelogs_display {
|
} |
} |
} |
} |
|
|
# Collect user change log data |
# Form Header |
my $content = ''; |
$r->print('<form action="/adm/createuser" method="post" name="'.$formname.'">'. |
|
&role_display_filter($formname,$cdom,$cnum,\%curr,$version,$crstype)); |
|
|
|
# Create navigation |
|
my ($nav_script,$nav_links) = &userlogdisplay_nav($formname,\%curr,$more_records); |
|
my $showntableheader = 0; |
|
|
|
# Table Header |
|
my $tableheader = |
|
&Apache::loncommon::start_data_table_header_row() |
|
.'<th> </th>' |
|
.'<th>'.&mt('When').'</th>' |
|
.'<th>'.&mt('Who made the change').'</th>' |
|
.'<th>'.&mt('Changed User').'</th>' |
|
.'<th>'.&mt('Role').'</th>' |
|
.'<th>'.&mt('Section').'</th>' |
|
.'<th>'.&mt('Context').'</th>' |
|
.'<th>'.&mt('Start').'</th>' |
|
.'<th>'.&mt('End').'</th>' |
|
.&Apache::loncommon::end_data_table_header_row(); |
|
|
|
# Display user change log data |
foreach my $id (sort { $roleslog{$b}{'exe_time'}<=>$roleslog{$a}{'exe_time'} } (keys(%roleslog))) { |
foreach my $id (sort { $roleslog{$b}{'exe_time'}<=>$roleslog{$a}{'exe_time'} } (keys(%roleslog))) { |
next if (($roleslog{$id}{'exe_time'} < $curr{'rolelog_start_date'}) || |
next if (($roleslog{$id}{'exe_time'} < $curr{'rolelog_start_date'}) || |
($roleslog{$id}{'exe_time'} > $curr{'rolelog_end_date'})); |
($roleslog{$id}{'exe_time'} > $curr{'rolelog_end_date'})); |
Line 5110 sub print_userchangelogs_display {
|
Line 5249 sub print_userchangelogs_display {
|
} |
} |
$count ++; |
$count ++; |
next if ($count < $minshown); |
next if ($count < $minshown); |
|
unless ($showntableheader) { |
|
$r->print($nav_script |
|
.$nav_links |
|
.&Apache::loncommon::start_data_table() |
|
.$tableheader); |
|
$r->rflush(); |
|
$showntableheader = 1; |
|
} |
if ($whodunit{$roleslog{$id}{'exe_uname'}.':'.$roleslog{$id}{'exe_udom'}} eq '') { |
if ($whodunit{$roleslog{$id}{'exe_uname'}.':'.$roleslog{$id}{'exe_udom'}} eq '') { |
$whodunit{$roleslog{$id}{'exe_uname'}.':'.$roleslog{$id}{'exe_udom'}} = |
$whodunit{$roleslog{$id}{'exe_uname'}.':'.$roleslog{$id}{'exe_udom'}} = |
&Apache::loncommon::plainname($roleslog{$id}{'exe_uname'},$roleslog{$id}{'exe_udom'}); |
&Apache::loncommon::plainname($roleslog{$id}{'exe_uname'},$roleslog{$id}{'exe_udom'}); |
Line 5149 sub print_userchangelogs_display {
|
Line 5295 sub print_userchangelogs_display {
|
if ($chgcontext ne '' && $lt{$chgcontext} ne '') { |
if ($chgcontext ne '' && $lt{$chgcontext} ne '') { |
$chgcontext = $lt{$chgcontext}; |
$chgcontext = $lt{$chgcontext}; |
} |
} |
$content .= |
$r->print( |
&Apache::loncommon::start_data_table_row() |
&Apache::loncommon::start_data_table_row() |
.'<td>'.$count.'</td>' |
.'<td>'.$count.'</td>' |
.'<td>'.&Apache::lonlocal::locallocaltime($roleslog{$id}{'exe_time'}).'</td>' |
.'<td>'.&Apache::lonlocal::locallocaltime($roleslog{$id}{'exe_time'}).'</td>' |
Line 5160 sub print_userchangelogs_display {
|
Line 5306 sub print_userchangelogs_display {
|
.'<td>'.$chgcontext.'</td>' |
.'<td>'.$chgcontext.'</td>' |
.'<td>'.$rolestart.'</td>' |
.'<td>'.$rolestart.'</td>' |
.'<td>'.$roleend.'</td>' |
.'<td>'.$roleend.'</td>' |
.&Apache::loncommon::end_data_table_row(); |
.&Apache::loncommon::end_data_table_row()."\n"); |
} |
} |
|
|
# Form Footer |
if ($showntableheader) { # Table footer, if content displayed above |
my $form_footer = |
$r->print(&Apache::loncommon::end_data_table() |
'<input type="hidden" name="page" value="'.$curr{'page'}.'" />' |
.$nav_links); |
.'<input type="hidden" name="action" value="changelogs" />' |
} else { # No content displayed above |
.'</form>'; |
|
|
|
# Only display table, if content is available (has been collected above) |
|
if (!$content) { |
|
$r->print('<p class="LC_info">' |
$r->print('<p class="LC_info">' |
.&mt('There are no records to display.') |
.&mt('There are no records to display.') |
.'</p>' |
.'</p>' |
); |
); |
$r->print($form_footer); |
|
return; |
|
} |
} |
|
|
# Content to display, so create navigation and display table |
# Form Footer |
|
$r->print( |
|
'<input type="hidden" name="page" value="'.$curr{'page'}.'" />' |
|
.'<input type="hidden" name="action" value="changelogs" />' |
|
.'</form>'); |
|
return; |
|
} |
|
|
# Create Navigation: |
sub userlogdisplay_nav { |
# Navigation Script |
my ($formname,$curr,$more_records) = @_; |
my $nav_script = <<"ENDSCRIPT"; |
my ($nav_script,$nav_links); |
|
if (ref($curr) eq 'HASH') { |
|
# Create Navigation: |
|
# Navigation Script |
|
$nav_script = <<"ENDSCRIPT"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
function chgPage(caller) { |
function chgPage(caller) { |
Line 5193 function chgPage(caller) {
|
Line 5343 function chgPage(caller) {
|
if (caller == 'next') { |
if (caller == 'next') { |
document.$formname.page.value ++; |
document.$formname.page.value ++; |
} |
} |
document.$formname.submit(); |
document.$formname.submit(); |
return; |
return; |
} |
} |
// ]]> |
// ]]> |
</script> |
</script> |
ENDSCRIPT |
ENDSCRIPT |
# Navigation Buttons |
# Navigation Buttons |
my $nav_links; |
$nav_links = '<p>'; |
$nav_links = '<p>'; |
if (($curr->{'page'} > 1) || ($more_records)) { |
if (($curr{'page'} > 1) || ($more_records)) { |
if ($curr->{'page'} > 1) { |
if ($curr{'page'} > 1) { |
$nav_links .= '<input type="button"' |
$nav_links .= '<input type="button"' |
.' onclick="javascript:chgPage('."'previous'".');"' |
.' onclick="javascript:chgPage('."'previous'".');"' |
.' value="'.&mt('Previous [_1] changes',$curr->{'show'}) |
.' value="'.&mt('Previous [_1] changes',$curr{'show'}) |
.'" /> '; |
.'" /> '; |
} |
} |
if ($more_records) { |
if ($more_records) { |
$nav_links .= '<input type="button"' |
$nav_links .= '<input type="button"' |
.' onclick="javascript:chgPage('."'next'".');"' |
.' onclick="javascript:chgPage('."'next'".');"' |
.' value="'.&mt('Next [_1] changes',$curr->{'show'}) |
.' value="'.&mt('Next [_1] changes',$curr{'show'}) |
.'" />'; |
.'" />'; |
} |
} |
} |
|
$nav_links .= '</p>'; |
} |
} |
$nav_links .= '</p>'; |
return ($nav_script,$nav_links); |
|
|
# Table Header |
|
my $tableheader = |
|
&Apache::loncommon::start_data_table_header_row() |
|
.'<th> </th>' |
|
.'<th>'.&mt('When').'</th>' |
|
.'<th>'.&mt('Who made the change').'</th>' |
|
.'<th>'.&mt('Changed User').'</th>' |
|
.'<th>'.&mt('Role').'</th>' |
|
.'<th>'.&mt('Section').'</th>' |
|
.'<th>'.&mt('Context').'</th>' |
|
.'<th>'.&mt('Start').'</th>' |
|
.'<th>'.&mt('End').'</th>' |
|
.&Apache::loncommon::end_data_table_header_row(); |
|
|
|
# Print Content |
|
$r->print( |
|
$nav_script |
|
.$nav_links |
|
.&Apache::loncommon::start_data_table() |
|
.$tableheader |
|
.$content |
|
.&Apache::loncommon::end_data_table() |
|
.$nav_links |
|
.$form_footer |
|
); |
|
return; |
|
} |
} |
|
|
sub role_display_filter { |
sub role_display_filter { |
Line 5882 sub course_level_table {
|
Line 6006 sub course_level_table {
|
} |
} |
} |
} |
if (&Apache::lonnet::allowed('ccr',$thiscourse)) { |
if (&Apache::lonnet::allowed('ccr',$thiscourse)) { |
foreach my $cust (sort keys %customroles) { |
foreach my $cust (sort(keys(%customroles))) { |
|
next if ($crstype eq 'Community' && $customroles{$cust} =~ /bre\&S/); |
my $role = 'cr_cr_'.$env{'user.domain'}.'_'.$env{'user.name'}.'_'.$cust; |
my $role = 'cr_cr_'.$env{'user.domain'}.'_'.$env{'user.name'}.'_'.$cust; |
$table .= &course_level_row($protectedcourse,$role,$area,$domain, |
$table .= &course_level_row($protectedcourse,$role,$area,$domain, |
$cust,\%sections_count,\%lt); |
$cust,\%sections_count,\%lt); |
Line 5961 sub course_level_dc {
|
Line 6086 sub course_level_dc {
|
'<input type="hidden" name="origdom" value="'.$dcdom.'" />'. |
'<input type="hidden" name="origdom" value="'.$dcdom.'" />'. |
'<input type="hidden" name="dccourse" value="" />'; |
'<input type="hidden" name="dccourse" value="" />'; |
my $courseform='<b>'.&Apache::loncommon::selectcourse_link |
my $courseform='<b>'.&Apache::loncommon::selectcourse_link |
('cu','dccourse','dcdomain','coursedesc',undef,undef,'Course').'</b>'; |
('cu','dccourse','dcdomain','coursedesc',undef,undef,'Course/Community','crstype').'</b>'; |
my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,'currsec','cu','role'); |
my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,'currsec','cu','role','Course/Community Browser'); |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'rol' => "Role", |
'rol' => "Role", |
'grs' => "Section", |
'grs' => "Section", |
Line 5973 sub course_level_dc {
|
Line 6098 sub course_level_dc {
|
'ssd' => "Set Start Date", |
'ssd' => "Set Start Date", |
'sed' => "Set End Date" |
'sed' => "Set End Date" |
); |
); |
my $header = '<h4>'.&mt('Course Level').'</h4>'. |
my $header = '<h4>'.&mt('Course/Community Level').'</h4>'. |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table_header_row(). |
&Apache::loncommon::start_data_table_header_row(). |
'<th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'. |
'<th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'. |
&Apache::loncommon::end_data_table_header_row(); |
&Apache::loncommon::end_data_table_header_row(); |
my $otheritems = &Apache::loncommon::start_data_table_row()."\n". |
my $otheritems = &Apache::loncommon::start_data_table_row()."\n". |
'<td><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'cu','dccourse','dcdomain','coursedesc',''".')" /></td>'."\n". |
'<td><br /><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'cu','dccourse','dcdomain','coursedesc','','','','crstype'".')" /></td>'."\n". |
'<td><select name="role">'."\n"; |
'<td valign><br /><select name="role">'."\n"; |
foreach my $role (@roles) { |
foreach my $role (@roles) { |
my $plrole=&Apache::lonnet::plaintext($role); |
my $plrole=&Apache::lonnet::plaintext($role); |
$otheritems .= ' <option value="'.$role.'">'.$plrole; |
$otheritems .= ' <option value="'.$role.'">'.$plrole; |
Line 6000 sub course_level_dc {
|
Line 6125 sub course_level_dc {
|
'<td valign="top"> <b>'.$lt{'new'}.'</b><br />'. |
'<td valign="top"> <b>'.$lt{'new'}.'</b><br />'. |
'<input type="text" name="newsec" value="" />'. |
'<input type="text" name="newsec" value="" />'. |
'<input type="hidden" name="section" value="" />'. |
'<input type="hidden" name="section" value="" />'. |
'<input type="hidden" name="groups" value="" /></td>'. |
'<input type="hidden" name="groups" value="" />'. |
|
'<input type="hidden" name="crstype" value="" /></td>'. |
'</tr></table></td>'; |
'</tr></table></td>'; |
$otheritems .= <<ENDTIMEENTRY; |
$otheritems .= <<ENDTIMEENTRY; |
<td><input type="hidden" name="start" value='' /> |
<td><br /><input type="hidden" name="start" value='' /> |
<a href= |
<a href= |
"javascript:pjump('date_start','Start Date',document.cu.start.value,'start','cu.pres','dateset')">$lt{'ssd'}</a></td> |
"javascript:pjump('date_start','Start Date',document.cu.start.value,'start','cu.pres','dateset')">$lt{'ssd'}</a></td> |
<td><input type="hidden" name="end" value='' /> |
<td><br /><input type="hidden" name="end" value='' /> |
<a href= |
<a href= |
"javascript:pjump('date_end','End Date',document.cu.end.value,'end','cu.pres','dateset')">$lt{'sed'}</a></td> |
"javascript:pjump('date_end','End Date',document.cu.end.value,'end','cu.pres','dateset')">$lt{'sed'}</a></td> |
ENDTIMEENTRY |
ENDTIMEENTRY |