--- loncom/interface/domainprefs.pm 2024/02/25 06:15:54 1.160.6.118.2.19
+++ loncom/interface/domainprefs.pm 2012/06/01 11:39:24 1.162
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.160.6.118.2.19 2024/02/25 06:15:54 raeburn Exp $
+# $Id: domainprefs.pm,v 1.162 2012/06/01 11:39:24 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -19,15 +19,14 @@
#
# 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
-#
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA#
# /home/httpd/html/adm/gpl.txt
#
# http://www.lon-capa.org/
#
#
###############################################################
-###############################################################
+##############################################################
=pod
@@ -46,7 +45,7 @@ described at http://www.lon-capa.org.
=head1 OVERVIEW
Each institution using LON-CAPA will typically have a single domain designated
-for use by individuals affiliated with the institution. Accordingly, each domain
+for use by individuals affliated with the institution. Accordingly, each domain
may define a default set of logos and a color scheme which can be used to "brand"
the LON-CAPA instance. In addition, an institution will typically have a language
and timezone which are used for the majority of courses.
@@ -87,16 +86,15 @@ $dom,$settings,$rowtotal,$action.
$dom is the domain, $settings is a reference to a hash of current settings for
the current context, $rowtotal is a reference to the scalar used to record the
-number of rows displayed on the page, and $action is the context (quotas,
-requestcourses or requestauthor).
+number of rows displayed on the page, and $action is the context (either quotas
+or requestcourses).
The print_quotas routine was orginally created to display/store information
about default quota sizes for portfolio spaces for the different types of
institutional affiliation in the domain (e.g., Faculty, Staff, Student etc.),
but is now also used to manage availability of user tools:
i.e., blogs, aboutme page, and portfolios, and the course request tool,
-used by course owners to request creation of a course, and to display/store
-default quota sizes for Authoring Spaces.
+used by course owners to request creation of a course.
Outputs: 1
@@ -104,8 +102,8 @@ $datatable - HTML containing form eleme
In the case of course requests, radio buttons are displayed for each institutional
affiliate type (and also default, and _LC_adv) for each of the course types
-(official, unofficial, community, textbook, and lti).
-In each case the radio buttons allow the selection of one of four values:
+(official, unofficial and community). In each case the radio buttons allow the
+selection of one of four values:
0, approval, validate, autolimit=N (where N is blank, or a positive integer).
which have the following effects:
@@ -165,9 +163,6 @@ use Apache::lonhtmlcommon();
use Apache::lonlocal;
use Apache::lonmsg();
use Apache::lonconfigsettings;
-use Apache::lonuserutils();
-use Apache::loncoursequeueadmin();
-use Apache::courseprefs();
use LONCAPA qw(:DEFAULT :match);
use LONCAPA::Enrollment;
use LONCAPA::lonauthcgi();
@@ -175,9 +170,6 @@ use File::Copy;
use Locale::Language;
use DateTime::TimeZone;
use DateTime::Locale;
-use Time::HiRes qw( sleep );
-use Net::CIDR;
-use Crypt::CBC;
my $registered_cleanup;
my $modified_urls;
@@ -219,85 +211,13 @@ sub handler {
'directorysrch','usercreation','usermodification',
'contacts','defaults','scantron','coursecategories',
'serverstatuses','requestcourses','helpsettings',
- 'coursedefaults','usersessions','loadbalancing',
- 'requestauthor','selfenrollment','inststatus',
- 'passwords','ltitools','toolsec','lti','ltisec',
- 'wafproxy','ipaccess'],$dom);
- my %encconfig =
- &Apache::lonnet::get_dom('encconfig',['ltitools','lti','linkprot'],$dom,undef,1);
- my ($checked_is_home,$is_home);
- if (ref($domconfig{'ltitools'}) eq 'HASH') {
- if (ref($encconfig{'ltitools'}) eq 'HASH') {
- my $home = &Apache::lonnet::domain($dom,'primary');
- unless (($home eq 'no_host') || ($home eq '')) {
- my @ids=&Apache::lonnet::current_machine_ids();
- if (grep(/^\Q$home\E$/,@ids)) {
- $is_home = 1;
- }
- }
- $checked_is_home = 1;
- foreach my $id (keys(%{$domconfig{'ltitools'}})) {
- if ((ref($domconfig{'ltitools'}{$id}) eq 'HASH') &&
- (ref($encconfig{'ltitools'}{$id}) eq 'HASH')) {
- $domconfig{'ltitools'}{$id}{'key'} = $encconfig{'ltitools'}{$id}{'key'};
- if (($is_home) && ($phase eq 'process')) {
- $domconfig{'ltitools'}{$id}{'secret'} = $encconfig{'ltitools'}{$id}{'secret'};
- }
- }
- }
- }
- }
- if (ref($domconfig{'lti'}) eq 'HASH') {
- if (ref($encconfig{'lti'}) eq 'HASH') {
- unless ($checked_is_home) {
- my $home = &Apache::lonnet::domain($dom,'primary');
- unless (($home eq 'no_host') || ($home eq '')) {
- my @ids=&Apache::lonnet::current_machine_ids();
- if (grep(/^\Q$home\E$/,@ids)) {
- $is_home = 1;
- }
- }
- $checked_is_home = 1;
- }
- foreach my $id (keys(%{$domconfig{'lti'}})) {
- if ((ref($domconfig{'lti'}{$id}) eq 'HASH') &&
- (ref($encconfig{'lti'}{$id}) eq 'HASH')) {
- $domconfig{'lti'}{$id}{'key'} = $encconfig{'lti'}{$id}{'key'};
- if (($is_home) && ($phase eq 'process')) {
- $domconfig{'lti'}{$id}{'secret'} = $encconfig{'lti'}{$id}{'secret'};
- }
- }
- }
- }
- }
- if (ref($domconfig{'ltisec'}) eq 'HASH') {
- if (ref($domconfig{'ltisec'}{'linkprot'}) eq 'HASH') {
- if (ref($encconfig{'linkprot'}) eq 'HASH') {
- foreach my $id (keys(%{$domconfig{'ltisec'}{'linkprot'}})) {
- unless ($id =~ /^\d+$/) {
- delete($domconfig{'ltisec'}{'linkprot'}{$id});
- }
- if ((ref($domconfig{'ltisec'}{'linkprot'}{$id}) eq 'HASH') &&
- (ref($encconfig{'linkprot'}{$id}) eq 'HASH')) {
- foreach my $item ('key','secret') {
- $domconfig{'ltisec'}{'linkprot'}{$id}{$item} = $encconfig{'linkprot'}{$id}{$item};
- }
- }
- }
- }
- }
- }
- my @prefs_order = ('rolecolors','login','ipaccess','defaults','wafproxy','passwords',
- 'quotas','autoenroll','autoupdate','autocreate','directorysrch',
- 'contacts','usercreation','selfcreation','usermodification',
- 'scantron','requestcourses','requestauthor','coursecategories',
- 'serverstatuses','helpsettings','coursedefaults',
- 'ltitools','selfenrollment','usersessions','lti');
- my %existing;
- if (ref($domconfig{'loadbalancing'}) eq 'HASH') {
- %existing = %{$domconfig{'loadbalancing'}};
- }
- if ((keys(%servers) > 1) || (keys(%existing) > 0)) {
+ 'coursedefaults','usersessions','loadbalancing'],$dom);
+ my @prefs_order = ('rolecolors','login','defaults','quotas','autoenroll',
+ 'autoupdate','autocreate','directorysrch','contacts',
+ 'usercreation','usermodification','scantron',
+ 'requestcourses','coursecategories','serverstatuses','helpsettings',
+ 'coursedefaults','usersessions');
+ if (keys(%servers) > 1) {
push(@prefs_order,'loadbalancing');
}
my %prefs = (
@@ -312,77 +232,32 @@ sub handler {
col2 => '',},
{col1 => 'Administrator Settings',
col2 => '',}],
- print => \&print_rolecolors,
- modify => \&modify_rolecolors,
},
'login' =>
{ text => 'Log-in page options',
help => 'Domain_Configuration_Login_Page',
- header => [{col1 => 'Log-in Page Items',
- col2 => '',},
- {col1 => 'Log-in Help',
- col2 => 'Value'},
- {col1 => 'Custom HTML in document head',
- col2 => 'Value'},
- {col1 => 'SSO',
- col2 => 'Dual login: SSO and non-SSO options'},
- ],
- print => \&print_login,
- modify => \&modify_login,
+ header => [{col1 => 'Item',
+ col2 => '',}],
},
+
'defaults' =>
- { text => 'Default authentication/language/timezone/portal/types',
+ { text => 'Default authentication/language/timezone/portal',
help => 'Domain_Configuration_LangTZAuth',
header => [{col1 => 'Setting',
- col2 => 'Value'},
- {col1 => 'Institutional user types',
- col2 => 'Name displayed'},
- {col1 => 'Mapping for missing usernames via standard log-in',
- col2 => 'Rules in use'}],
- print => \&print_defaults,
- modify => \&modify_defaults,
- },
- 'wafproxy' =>
- { text => 'Web Application Firewall/Reverse Proxy',
- help => 'Domain_Configuration_WAF_Proxy',
- header => [{col1 => 'Domain(s)',
- col2 => 'Servers and WAF/Reverse Proxy alias(es)',
- },
- {col1 => 'Domain(s)',
- col2 => 'WAF Configuration',}],
- print => \&print_wafproxy,
- modify => \&modify_wafproxy,
- },
- 'passwords' =>
- { text => 'Passwords (Internal authentication)',
- help => 'Domain_Configuration_Passwords',
- header => [{col1 => 'Resetting Forgotten Password',
- col2 => 'Settings'},
- {col1 => 'Encryption of Stored Passwords (Internal Auth)',
- col2 => 'Settings'},
- {col1 => 'Rules for LON-CAPA Passwords',
- col2 => 'Settings'},
- {col1 => 'Course Owner Changing Student Passwords',
- col2 => 'Settings'}],
- print => \&print_passwords,
- modify => \&modify_passwords,
+ col2 => 'Value'}],
},
'quotas' =>
- { text => 'Blogs, personal pages/timezones, webDAV/quotas, portfolio',
+ { text => 'Blogs, personal web pages, webDAV, portfolios',
help => 'Domain_Configuration_Quotas',
header => [{col1 => 'User affiliation',
col2 => 'Available tools',
- col3 => 'Quotas, MB; (Authoring requires role)',}],
- print => \&print_quotas,
- modify => \&modify_quotas,
+ col3 => 'Portfolio quota',}],
},
'autoenroll' =>
{ text => 'Auto-enrollment settings',
help => 'Domain_Configuration_Auto_Enrollment',
header => [{col1 => 'Configuration setting',
col2 => 'Value(s)'}],
- print => \&print_autoenroll,
- modify => \&modify_autoenroll,
},
'autoupdate' =>
{ text => 'Auto-update settings',
@@ -392,42 +267,27 @@ sub handler {
{col1 => 'Setting',
col2 => 'Affiliation'},
{col1 => 'User population',
- col2 => 'Updatable user data'}],
- print => \&print_autoupdate,
- modify => \&modify_autoupdate,
+ col2 => 'Updateable user data'}],
},
'autocreate' =>
{ text => 'Auto-course creation settings',
help => 'Domain_Configuration_Auto_Creation',
header => [{col1 => 'Configuration Setting',
col2 => 'Value',}],
- print => \&print_autocreate,
- modify => \&modify_autocreate,
},
'directorysrch' =>
- { text => 'Directory searches',
+ { text => 'Institutional directory searches',
help => 'Domain_Configuration_InstDirectory_Search',
- header => [{col1 => 'Institutional Directory Setting',
- col2 => 'Value',},
- {col1 => 'LON-CAPA Directory Setting',
+ header => [{col1 => 'Setting',
col2 => 'Value',}],
- print => \&print_directorysrch,
- modify => \&modify_directorysrch,
},
'contacts' =>
- { text => 'E-mail addresses and helpform',
+ { text => 'Contact Information',
help => 'Domain_Configuration_Contact_Info',
- header => [{col1 => 'Default e-mail addresses',
- col2 => 'Value',},
- {col1 => 'Recipient(s) for notifications',
- col2 => 'Value',},
- {col1 => 'Nightly status check e-mail',
- col2 => 'Settings',},
- {col1 => 'Ask helpdesk form settings',
- col2 => 'Value',},],
- print => \&print_contacts,
- modify => \&modify_contacts,
+ header => [{col1 => 'Setting',
+ col2 => 'Value',}],
},
+
'usercreation' =>
{ text => 'User creation',
help => 'Domain_Configuration_User_Creation',
@@ -437,40 +297,23 @@ sub handler {
col2 => 'Usernames which may be created',},
{col1 => 'Context',
col2 => 'Assignable authentication types'}],
- print => \&print_usercreation,
- modify => \&modify_usercreation,
- },
- 'selfcreation' =>
- { text => 'Users self-creating accounts',
- help => 'Domain_Configuration_Self_Creation',
- header => [{col1 => 'Self-creation with institutional username',
- col2 => 'Enabled?'},
- {col1 => 'Institutional user type (login/SSO self-creation)',
- col2 => 'Information user can enter'},
- {col1 => 'Self-creation with e-mail verification',
- col2 => 'Settings'}],
- print => \&print_selfcreation,
- modify => \&modify_selfcreation,
},
'usermodification' =>
{ text => 'User modification',
help => 'Domain_Configuration_User_Modification',
header => [{col1 => 'Target user has role',
- col2 => 'User information updatable in author context'},
+ col2 => 'User information updateable in author context'},
{col1 => 'Target user has role',
- col2 => 'User information updatable in course context'}],
- print => \&print_usermodification,
- modify => \&modify_usermodification,
+ col2 => 'User information updateable in course context'},
+ {col1 => "Status of user",
+ col2 => 'Information settable when self-creating account (if directory data blank)'}],
},
'scantron' =>
- { text => 'Bubblesheet format',
+ { text => 'Bubblesheet format file',
help => 'Domain_Configuration_Scantron_Format',
- header => [ {col1 => 'Bubblesheet format file',
- col2 => ''},
- {col1 => 'Bubblesheet data upload formats',
- col2 => 'Settings'}],
- print => \&print_scantron,
- modify => \&modify_scantron,
+ header => [ {col1 => 'Item',
+ col2 => '',
+ }],
},
'requestcourses' =>
{text => 'Request creation of courses',
@@ -478,38 +321,16 @@ sub handler {
header => [{col1 => 'User affiliation',
col2 => 'Availability/Processing of requests',},
{col1 => 'Setting',
- col2 => 'Value'},
- {col1 => 'Available textbooks',
- col2 => ''},
- {col1 => 'Available templates',
- col2 => ''},
- {col1 => 'Validation (not official courses)',
- col2 => 'Value'},],
- print => \&print_quotas,
- modify => \&modify_quotas,
- },
- 'requestauthor' =>
- {text => 'Request Authoring Space',
- help => 'Domain_Configuration_Request_Author',
- header => [{col1 => 'User affiliation',
- col2 => 'Availability/Processing of requests',},
- {col1 => 'Setting',
col2 => 'Value'}],
- print => \&print_quotas,
- modify => \&modify_quotas,
},
'coursecategories' =>
{ text => 'Cataloging of courses/communities',
help => 'Domain_Configuration_Cataloging_Courses',
- header => [{col1 => 'Catalog type/availability',
- col2 => '',},
- {col1 => 'Category settings for standard catalog',
+ header => [{col1 => 'Category settings',
col2 => '',},
{col1 => 'Categories',
col2 => '',
}],
- print => \&print_coursecategories,
- modify => \&modify_coursecategories,
},
'serverstatuses' =>
{text => 'Access to server status pages',
@@ -518,18 +339,14 @@ sub handler {
col2 => 'Other named users',
col3 => 'Specific IPs',
}],
- print => \&print_serverstatuses,
- modify => \&modify_serverstatuses,
},
'helpsettings' =>
- {text => 'Support settings',
+ {text => 'Help page settings',
help => 'Domain_Configuration_Help_Settings',
- header => [{col1 => 'Help Page Settings (logged-in users)',
- col2 => 'Value'},
- {col1 => 'Helpdesk Roles',
- col2 => 'Settings'},],
- print => \&print_helpsettings,
- modify => \&modify_helpsettings,
+ header => [{col1 => 'Authenticated Help Settings',
+ col2 => ''},
+ {col1 => 'Unauthenticated Help Settings',
+ col2 => ''}],
},
'coursedefaults' =>
{text => 'Course/Community defaults',
@@ -538,20 +355,12 @@ sub handler {
col2 => 'Value',},
{col1 => 'Defaults which can be overridden for each course by a DC',
col2 => 'Value',},],
- print => \&print_coursedefaults,
- modify => \&modify_coursedefaults,
},
- 'selfenrollment' =>
- {text => 'Self-enrollment in Course/Community',
- help => 'Domain_Configuration_Selfenrollment',
- header => [{col1 => 'Configuration Rights',
- col2 => 'Configured by Course Personnel or Domain Coordinator?'},
- {col1 => 'Defaults',
- col2 => 'Value'},
- {col1 => 'Self-enrollment validation (optional)',
- col2 => 'Value'},],
- print => \&print_selfenrollment,
- modify => \&modify_selfenrollment,
+ 'privacy' =>
+ {text => 'User Privacy',
+ help => 'Domain_Configuration_User_Privacy',
+ header => [{col1 => 'Setting',
+ col2 => 'Value',}],
},
'usersessions' =>
{text => 'User session hosting/offloading',
@@ -562,56 +371,16 @@ sub handler {
col2 => 'Rules'},
{col1 => "Hosting domain's own users elsewhere",
col2 => 'Rules'}],
- print => \&print_usersessions,
- modify => \&modify_usersessions,
},
- 'loadbalancing' =>
- {text => 'Dedicated Load Balancer(s)',
+ 'loadbalancing' =>
+ {text => 'Dedicated Load Balancer',
help => 'Domain_Configuration_Load_Balancing',
- header => [{col1 => 'Balancers',
+ header => [{col1 => 'Server',
col2 => 'Default destinations',
- col3 => 'User affiliation',
+ col3 => 'User affliation',
col4 => 'Overrides'},
],
- print => \&print_loadbalancing,
- modify => \&modify_loadbalancing,
- },
- 'ltitools' =>
- {text => 'External Tools (LTI)',
- help => 'Domain_Configuration_LTI_Tools',
- header => [{col1 => 'Encryption of shared secrets',
- col2 => 'Settings'},
- {col1 => 'Rules for shared secrets',
- col2 => 'Settings'},
- {col1 => 'Providers',
- col2 => 'Settings',}],
- print => \&print_ltitools,
- modify => \&modify_ltitools,
},
- 'lti' =>
- {text => 'LTI Link Protection and LTI Consumers',
- help => 'Domain_Configuration_LTI_Provider',
- header => [{col1 => 'Encryption of shared secrets',
- col2 => 'Settings'},
- {col1 => 'Rules for shared secrets',
- col2 => 'Settings'},
- {col1 => 'Link Protectors in Courses',
- col2 => 'Values'},
- {col1 => 'Link Protectors',
- col2 => 'Settings'},
- {col1 => 'Consumers',
- col2 => 'Settings'},],
- print => \&print_lti,
- modify => \&modify_lti,
- },
- 'ipaccess' =>
- {text => 'IP-based access control',
- help => 'Domain_Configuration_IP_Access',
- header => [{col1 => 'Setting',
- col2 => 'Value'},],
- print => \&print_ipaccess,
- modify => \&modify_ipaccess,
- },
);
if (keys(%servers) > 1) {
$prefs{'login'} = { text => 'Log-in page options',
@@ -619,96 +388,29 @@ sub handler {
header => [{col1 => 'Log-in Service',
col2 => 'Server Setting',},
{col1 => 'Log-in Page Items',
- col2 => 'Settings'},
- {col1 => 'Log-in Help',
- col2 => 'Value'},
- {col1 => 'Custom HTML in document head',
- col2 => 'Value'},
- {col1 => 'SSO',
- col2 => 'Dual login: SSO and non-SSO options'},
- ],
- print => \&print_login,
- modify => \&modify_login,
+ col2 => ''}],
};
}
-
my @roles = ('student','coordinator','author','admin');
my @actions = &Apache::loncommon::get_env_multiple('form.actions');
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'pickactions')",
text=>"Settings to display/modify"});
my $confname = $dom.'-domainconfig';
-
if ($phase eq 'process') {
- my $result = &Apache::lonconfigsettings::make_changes($r,$dom,$phase,$context,\@prefs_order,
- \%prefs,\%domconfig,$confname,\@roles);
- if ((ref($result) eq 'HASH') && (keys(%{$result}))) {
- $r->rflush();
- &devalidate_remote_domconfs($dom,$result);
- }
+ &Apache::lonconfigsettings::make_changes($r,$dom,$phase,$context,\@prefs_order,\%prefs,\%domconfig,$confname,\@roles);
} elsif ($phase eq 'display') {
- my $js = &recaptcha_js().
- &toggle_display_js();
- if ((keys(%servers) > 1) || (keys(%existing) > 0)) {
+ my $js;
+ if (keys(%servers) > 1) {
my ($othertitle,$usertypes,$types) =
&Apache::loncommon::sorted_inst_types($dom);
- $js .= &lonbalance_targets_js($dom,$types,\%servers,
- $domconfig{'loadbalancing'}).
- &new_spares_js().
- &common_domprefs_js().
- &Apache::loncommon::javascript_array_indexof();
- }
- if (grep(/^requestcourses$/,@actions)) {
- my $javascript_validations;
- my $coursebrowserjs=&Apache::loncommon::coursebrowser_javascript($env{'request.role.domain'});
- $js .= <
-$javascript_validations
-
-$coursebrowserjs
-END
- } elsif (grep(/^ipaccess$/,@actions)) {
- $js .= &Apache::loncommon::coursebrowser_javascript($env{'request.role.domain'});
- }
- if (grep(/^selfcreation$/,@actions)) {
- $js .= &selfcreate_javascript();
- }
- if (grep(/^contacts$/,@actions)) {
- $js .= &contacts_javascript();
- }
- if (grep(/^scantron$/,@actions)) {
- $js .= &scantron_javascript();
+ $js = &lonbalance_targets_js($dom,$types,\%servers).
+ &new_spares_js().
+ &common_domprefs_js().
+ &Apache::loncommon::javascript_array_indexof();
}
&Apache::lonconfigsettings::display_settings($r,$dom,$phase,$context,\@prefs_order,\%prefs,\%domconfig,$confname,$js);
} else {
-# check if domconfig user exists for the domain.
- my $servadm = $r->dir_config('lonAdmEMail');
- my ($configuserok,$author_ok,$switchserver) =
- &config_check($dom,$confname,$servadm);
- unless ($configuserok eq 'ok') {
- &Apache::lonconfigsettings::print_header($r,$phase,$context);
- $r->print(&mt('The domain configuration user "[_1]" has yet to be created.',
- $confname).
- '
'
- );
- if ($switchserver) {
- $r->print(&mt('Ordinarily, that domain configuration user is created when the ./UPDATE script is run to install LON-CAPA for the first time.').
- '
'.
- &mt('However, that does not apply when new domains are added to a multi-domain server, and ./UPDATE has not been run recently.').
- '
'.
- &mt('The "[_1]" user can be created automatically when a Domain Coordinator visits the web-based "Set domain configuration" screen, in a session hosted on the primary library server.',$confname).
- '
'.
- &mt('To do that now, use the following link: [_1]',$switchserver)
- );
- } else {
- $r->print(&mt('To create that user from the command line run the ./UPDATE script found in the top level directory of the extracted LON-CAPA tarball.').
- '
'.
- &mt('Once that is done, you will be able to use the web-based "Set domain configuration" to configure the domain')
- );
- }
- $r->print(&Apache::loncommon::end_page());
- return OK;
- }
if (keys(%domconfig) == 0) {
my $primarylibserv = &Apache::lonnet::domain($dom,'primary');
my @ids=&Apache::lonnet::current_machine_ids();
@@ -748,67 +450,51 @@ END
}
sub process_changes {
- my ($r,$dom,$confname,$action,$roles,$values,$lastactref) = @_;
+ my ($r,$dom,$confname,$action,$roles,$values) = @_;
my %domconfig;
if (ref($values) eq 'HASH') {
%domconfig = %{$values};
}
my $output;
if ($action eq 'login') {
- $output = &modify_login($r,$dom,$confname,$lastactref,%domconfig);
+ $output = &modify_login($r,$dom,$confname,%domconfig);
} elsif ($action eq 'rolecolors') {
$output = &modify_rolecolors($r,$dom,$confname,$roles,
- $lastactref,%domconfig);
+ %domconfig);
} elsif ($action eq 'quotas') {
- $output = &modify_quotas($r,$dom,$action,$lastactref,%domconfig);
+ $output = &modify_quotas($dom,$action,%domconfig);
} elsif ($action eq 'autoenroll') {
- $output = &modify_autoenroll($dom,$lastactref,%domconfig);
+ $output = &modify_autoenroll($dom,%domconfig);
} elsif ($action eq 'autoupdate') {
$output = &modify_autoupdate($dom,%domconfig);
} elsif ($action eq 'autocreate') {
$output = &modify_autocreate($dom,%domconfig);
} elsif ($action eq 'directorysrch') {
- $output = &modify_directorysrch($dom,$lastactref,%domconfig);
+ $output = &modify_directorysrch($dom,%domconfig);
} elsif ($action eq 'usercreation') {
$output = &modify_usercreation($dom,%domconfig);
- } elsif ($action eq 'selfcreation') {
- $output = &modify_selfcreation($dom,$lastactref,%domconfig);
} elsif ($action eq 'usermodification') {
$output = &modify_usermodification($dom,%domconfig);
} elsif ($action eq 'contacts') {
- $output = &modify_contacts($dom,$lastactref,%domconfig);
+ $output = &modify_contacts($dom,%domconfig);
} elsif ($action eq 'defaults') {
- $output = &modify_defaults($dom,$lastactref,%domconfig);
+ $output = &modify_defaults($dom,$r);
} elsif ($action eq 'scantron') {
- $output = &modify_scantron($r,$dom,$confname,$lastactref,%domconfig);
+ $output = &modify_scantron($r,$dom,$confname,%domconfig);
} elsif ($action eq 'coursecategories') {
- $output = &modify_coursecategories($dom,$lastactref,%domconfig);
+ $output = &modify_coursecategories($dom,%domconfig);
} elsif ($action eq 'serverstatuses') {
$output = &modify_serverstatuses($dom,%domconfig);
} elsif ($action eq 'requestcourses') {
- $output = &modify_quotas($r,$dom,$action,$lastactref,%domconfig);
- } elsif ($action eq 'requestauthor') {
- $output = &modify_quotas($r,$dom,$action,$lastactref,%domconfig);
+ $output = &modify_quotas($dom,$action,%domconfig);
} elsif ($action eq 'helpsettings') {
- $output = &modify_helpsettings($r,$dom,$confname,$lastactref,%domconfig);
+ $output = &modify_helpsettings($r,$dom,$confname,%domconfig);
} elsif ($action eq 'coursedefaults') {
- $output = &modify_coursedefaults($dom,$lastactref,%domconfig);
- } elsif ($action eq 'selfenrollment') {
- $output = &modify_selfenrollment($dom,$lastactref,%domconfig)
+ $output = &modify_coursedefaults($dom,%domconfig);
} elsif ($action eq 'usersessions') {
- $output = &modify_usersessions($dom,$lastactref,%domconfig);
+ $output = &modify_usersessions($dom,%domconfig);
} elsif ($action eq 'loadbalancing') {
$output = &modify_loadbalancing($dom,%domconfig);
- } elsif ($action eq 'ltitools') {
- $output = &modify_ltitools($r,$dom,$action,$lastactref,%domconfig);
- } elsif ($action eq 'lti') {
- $output = &modify_lti($r,$dom,$action,$lastactref,%domconfig);
- } elsif ($action eq 'passwords') {
- $output = &modify_passwords($r,$dom,$confname,$lastactref,%domconfig);
- } elsif ($action eq 'wafproxy') {
- $output = &modify_wafproxy($dom,$action,$lastactref,%domconfig);
- } elsif ($action eq 'ipaccess') {
- $output = &modify_ipaccess($dom,$lastactref,%domconfig);
}
return $output;
}
@@ -819,46 +505,11 @@ sub print_config_box {
my $output;
if ($action eq 'coursecategories') {
$output = &coursecategories_javascript($settings);
- } elsif ($action eq 'defaults') {
- $output = &defaults_javascript($settings);
- } elsif ($action eq 'passwords') {
- $output = &passwords_javascript($action);
- } elsif ($action eq 'helpsettings') {
- my (%privs,%levelscurrent);
- my %full=();
- my %levels=(
- course => {},
- domain => {},
- system => {},
- );
- my $context = 'domain';
- my $crstype = 'Course';
- my $formname = 'display';
- &Apache::lonuserutils::custom_role_privs(\%privs,\%full,\%levels,\%levelscurrent);
- my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype);
- $output =
- &Apache::lonuserutils::custom_roledefs_js($context,$crstype,$formname,\%full,
- \@templateroles);
- } elsif ($action eq 'ltitools') {
- $output .= &Apache::lonconfigsettings::ltitools_javascript($settings);
- } elsif ($action eq 'lti') {
- $output .= &passwords_javascript('ltisecrets')."\n".
- <i_javascript($dom,$settings);
- } elsif ($action eq 'wafproxy') {
- $output .= &wafproxy_javascript($dom);
- } elsif ($action eq 'autoupdate') {
- $output .= &autoupdate_javascript();
- } elsif ($action eq 'autoenroll') {
- $output .= &autoenroll_javascript();
- } elsif ($action eq 'login') {
- $output .= &saml_javascript();
- } elsif ($action eq 'ipaccess') {
- $output .= &ipaccess_javascript($settings);
}
- $output .=
+ $output .=
'
- '.
+ | '.
&mt($item->{text}).' '.
&Apache::loncommon::help_open_topic($item->{'help'}).' | '."\n".
'
';
@@ -870,50 +521,42 @@ sub print_config_box {
if ($numheaders > 1) {
my $colspan = '';
my $rightcolspan = '';
- my $leftnobr = '';
- if (($action eq 'rolecolors') || ($action eq 'defaults') ||
- ($action eq 'directorysrch') ||
- (($action eq 'login') && ($numheaders < 5))) {
+ if (($action eq 'rolecolors') || ($action eq 'coursecategories') || ($action eq 'helpsettings')) {
$colspan = ' colspan="2"';
}
if ($action eq 'usersessions') {
$rightcolspan = ' colspan="3"';
}
- if ($action eq 'passwords') {
- $leftnobr = ' LC_nobreak';
- }
$output .= '
- '.&mt($item->{'header'}->[0]->{'col1'}).' |
+ '.&mt($item->{'header'}->[0]->{'col1'}).' |
'.&mt($item->{'header'}->[0]->{'col2'}).' |
';
$rowtotal ++;
- if (($action eq 'autoupdate') || ($action eq 'usercreation') || ($action eq 'selfcreation') ||
- ($action eq 'usermodification') || ($action eq 'defaults') || ($action eq 'coursedefaults') ||
- ($action eq 'selfenrollment') || ($action eq 'usersessions') || ($action eq 'directorysrch') ||
- ($action eq 'helpsettings') || ($action eq 'contacts') || ($action eq 'wafproxy') ||
- ($action eq 'lti') || ($action eq 'ltitools')) {
- $output .= $item->{'print'}->('top',$dom,$settings,\$rowtotal);
- } elsif ($action eq 'passwords') {
- $output .= $item->{'print'}->('top',$dom,$confname,$settings,\$rowtotal);
+ if ($action eq 'autoupdate') {
+ $output .= &print_autoupdate('top',$dom,$settings,\$rowtotal);
+ } elsif ($action eq 'usercreation') {
+ $output .= &print_usercreation('top',$dom,$settings,\$rowtotal);
+ } elsif ($action eq 'usermodification') {
+ $output .= &print_usermodification('top',$dom,$settings,\$rowtotal);
} elsif ($action eq 'coursecategories') {
- $output .= $item->{'print'}->('top',$dom,$item,$settings,\$rowtotal);
- } elsif ($action eq 'scantron') {
- $output .= $item->{'print'}->($r,'top',$dom,$confname,$settings,\$rowtotal);
+ $output .= &print_coursecategories('top',$dom,$item,$settings,\$rowtotal);
} elsif ($action eq 'login') {
- if ($numheaders == 5) {
- $colspan = ' colspan="2"';
- $output .= &print_login('service',$dom,$confname,$phase,$settings,\$rowtotal);
- } else {
- $output .= &print_login('page',$dom,$confname,$phase,$settings,\$rowtotal);
- }
- } elsif (($action eq 'requestcourses') || ($action eq 'requestauthor')) {
+ $output .= &print_login('top',$dom,$confname,$phase,$settings,\$rowtotal);
+ $colspan = ' colspan="2"';
+ } elsif ($action eq 'requestcourses') {
$output .= &print_quotas($dom,$settings,\$rowtotal,$action);
+ } elsif ($action eq 'helpsettings') {
+ $output .= &print_helpsettings('top',$dom,$confname,$settings,\$rowtotal);
+ } elsif ($action eq 'usersessions') {
+ $output .= &print_usersessions('top',$dom,$settings,\$rowtotal);
} elsif ($action eq 'rolecolors') {
$output .= &print_rolecolors($phase,'student',$dom,$confname,$settings,\$rowtotal);
+ } elsif ($action eq 'coursedefaults') {
+ $output .= &print_coursedefaults('top',$dom,$settings,\$rowtotal);
}
$output .= '
@@ -923,42 +566,13 @@ sub print_config_box {
|
- '.&mt($item->{'header'}->[1]->{'col1'}).' |
+ '.&mt($item->{'header'}->[1]->{'col1'}).' | ';
+ $output .= '
'.&mt($item->{'header'}->[1]->{'col2'}).' |
';
$rowtotal ++;
- if (($action eq 'autoupdate') || ($action eq 'usercreation') ||
- ($action eq 'selfcreation') || ($action eq 'selfenrollment') ||
- ($action eq 'usersessions') || ($action eq 'coursecategories') ||
- ($action eq 'contacts') || ($action eq 'passwords') ||
- ($action eq 'defaults') || ($action eq 'lti') ||
- ($action eq 'ltitools')) {
- if ($action eq 'coursecategories') {
- $output .= &print_coursecategories('middle',$dom,$item,$settings,\$rowtotal);
- $colspan = ' colspan="2"';
- } elsif ($action eq 'passwords') {
- $output .= $item->{'print'}->('middle',$dom,$confname,$settings,\$rowtotal);
- } elsif ($action eq 'lti') {
- $output .= $item->{'print'}->('upper',$dom,$settings,\$rowtotal).'
-
- |
-
-
-
-
-
- '.&mt($item->{'header'}->[2]->{'col1'}).' |
- '.&mt($item->{'header'}->[2]->{'col2'}).' |
- '."\n".
- $item->{'print'}->('middle',$dom,$settings,\$rowtotal);
- } else {
- $output .= $item->{'print'}->('middle',$dom,$settings,\$rowtotal);
- }
- my $hdridx = 2;
- if ($action eq 'lti') {
- $hdridx = 3;
- }
- $output .= '
+ if ($action eq 'autoupdate') {
+ $output .= &print_autoupdate('middle',$dom,$settings,\$rowtotal).'
|
@@ -966,52 +580,12 @@ sub print_config_box {
- '.&mt($item->{'header'}->[$hdridx]->{'col1'}).' |
- '.&mt($item->{'header'}->[$hdridx]->{'col2'}).' |
- '."\n";
- if ($action eq 'coursecategories') {
- $output .= &print_coursecategories('bottom',$dom,$item,$settings,\$rowtotal);
- } elsif (($action eq 'contacts') || ($action eq 'passwords')) {
- if ($action eq 'passwords') {
- $output .= $item->{'print'}->('lower',$dom,$confname,$settings,\$rowtotal);
- } else {
- $output .= $item->{'print'}->('lower',$dom,$settings,\$rowtotal);
- }
- $hdridx ++;
- $output .= '
-
-
- |
-
-
-
-
-
- '.&mt($item->{'header'}->[$hdridx]->{'col1'}).' |
- '.&mt($item->{'header'}->[$hdridx]->{'col2'}).' | '."\n";
- if ($action eq 'passwords') {
- $output .= $item->{'print'}->('bottom',$dom,$confname,$settings,\$rowtotal);
- } else {
- $output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal);
- }
- $output .= '
-
- |
-
- ';
- } else {
- $output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal);
- }
+ '.&mt($item->{'header'}->[2]->{'col1'}).' |
+ '.&mt($item->{'header'}->[2]->{'col2'}).' |
'.
+ &print_autoupdate('bottom',$dom,$settings,\$rowtotal);
$rowtotal ++;
- } elsif (($action eq 'usermodification') || ($action eq 'coursedefaults') ||
- ($action eq 'directorysrch') || ($action eq 'helpsettings') ||
- ($action eq 'wafproxy')) {
- $output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal);
- } elsif ($action eq 'scantron') {
- $output .= $item->{'print'}->($r,'bottom',$dom,$confname,$settings,\$rowtotal);
- } elsif ($action eq 'login') {
- if ($numheaders == 5) {
- $output .= &print_login('page',$dom,$confname,$phase,$settings,\$rowtotal).'
+ } elsif ($action eq 'usercreation') {
+ $output .= &print_usercreation('middle',$dom,$settings,\$rowtotal).'
@@ -1020,57 +594,32 @@ sub print_config_box {
'.&mt($item->{'header'}->[2]->{'col1'}).' |
- '.&mt($item->{'header'}->[2]->{'col2'}).' |
'.
- &print_login('help',$dom,$confname,$phase,$settings,\$rowtotal);
- $rowtotal ++;
- } else {
- $output .= &print_login('help',$dom,$confname,$phase,$settings,\$rowtotal);
- }
- $output .= '
-
-
-
-
-
-
- ';
- if ($numheaders == 5) {
- $output .= '
- '.&mt($item->{'header'}->[3]->{'col1'}).' |
- '.&mt($item->{'header'}->[3]->{'col2'}).' |
- ';
- } else {
- $output .= '
- '.&mt($item->{'header'}->[2]->{'col1'}).' |
- '.&mt($item->{'header'}->[2]->{'col2'}).' |
- ';
- }
+ '.&mt($item->{'header'}->[2]->{'col2'}).' | '.
+ &print_usercreation('bottom',$dom,$settings,\$rowtotal);
$rowtotal ++;
- $output .= &print_login('headtag',$dom,$confname,$phase,$settings,\$rowtotal).'
+ } elsif ($action eq 'usermodification') {
+ $output .= &print_usermodification('middle',$dom,$settings,\$rowtotal).'
|
- ';
- if ($numheaders == 5) {
- $output .= '
- '.&mt($item->{'header'}->[4]->{'col1'}).' |
- '.&mt($item->{'header'}->[4]->{'col2'}).' |
- ';
- } else {
- $output .= '
- '.&mt($item->{'header'}->[3]->{'col1'}).' |
- '.&mt($item->{'header'}->[3]->{'col2'}).' |
- ';
- }
+
+ '.&mt($item->{'header'}->[2]->{'col1'}).' |
+ '.&mt($item->{'header'}->[2]->{'col2'}).' | '.
+ &print_usermodification('bottom',$dom,$settings,\$rowtotal);
$rowtotal ++;
- $output .= &print_login('saml',$dom,$confname,$phase,$settings,\$rowtotal);
+ } elsif ($action eq 'coursecategories') {
+ $output .= &print_coursecategories('bottom',$dom,$item,$settings,\$rowtotal);
+ } elsif ($action eq 'login') {
+ $output .= &print_login('bottom',$dom,$confname,$phase,$settings,\$rowtotal);
} elsif ($action eq 'requestcourses') {
- $output .= &print_requestmail($dom,$action,$settings,\$rowtotal);
- $rowtotal ++;
- $output .= &print_studentcode($settings,\$rowtotal).'
+ $output .= &print_courserequestmail($dom,$settings,\$rowtotal);
+ } elsif ($action eq 'helpsettings') {
+ $output .= &print_helpsettings('bottom',$dom,$confname,$settings,\$rowtotal);
+ } elsif ($action eq 'usersessions') {
+ $output .= &print_usersessions('middle',$dom,$settings,\$rowtotal).'
|
@@ -1079,33 +628,11 @@ sub print_config_box {
'.&mt($item->{'header'}->[2]->{'col1'}).' |
- '.&mt($item->{'header'}->[2]->{'col2'}).' |
'.
- &textbookcourses_javascript($settings).
- &print_textbookcourses($dom,'textbooks',$settings,\$rowtotal).'
-
-
-
-
-
-
-
- '.&mt($item->{'header'}->[3]->{'col1'}).' |
- '.&mt($item->{'header'}->[3]->{'col2'}).' | '.
- &print_textbookcourses($dom,'templates',$settings,\$rowtotal).'
-
- |
-
-
-
-
-
- '.&mt($item->{'header'}->[4]->{'col1'}).' |
- '.&mt($item->{'header'}->[4]->{'col2'}).' |
- '.
- &print_validation_rows('requestcourses',$dom,$settings,\$rowtotal);
- } elsif ($action eq 'requestauthor') {
- $output .= &print_requestmail($dom,$action,$settings,\$rowtotal);
+ '.&mt($item->{'header'}->[2]->{'col2'}).' | '.
+ &print_usersessions('bottom',$dom,$settings,\$rowtotal);
$rowtotal ++;
+ } elsif ($action eq 'coursedefaults') {
+ $output .= &print_coursedefaults('bottom',$dom,$settings,\$rowtotal);
} elsif ($action eq 'rolecolors') {
$output .= &print_rolecolors($phase,'coordinator',$dom,$confname,$settings,\$rowtotal).'
@@ -1140,7 +667,7 @@ sub print_config_box {
|
';
- if ($action eq 'login') {
+ if (($action eq 'login') || ($action eq 'directorysrch')) {
$output .= '
'.&mt($item->{'header'}->[0]->{'col1'}).' | ';
} elsif ($action eq 'serverstatuses') {
@@ -1182,12 +709,29 @@ sub print_config_box {
}
$output .= ' ';
$rowtotal ++;
- if ($action eq 'quotas') {
+ if ($action eq 'login') {
+ $output .= &print_login('bottom',$dom,$confname,$phase,$settings,
+ \$rowtotal);
+ } elsif ($action eq 'quotas') {
$output .= &print_quotas($dom,$settings,\$rowtotal,$action);
- } elsif (($action eq 'autoenroll') || ($action eq 'autocreate') ||
- ($action eq 'serverstatuses') || ($action eq 'loadbalancing') ||
- ($action eq 'ipaccess')) {
- $output .= $item->{'print'}->($dom,$settings,\$rowtotal);
+ } elsif ($action eq 'autoenroll') {
+ $output .= &print_autoenroll($dom,$settings,\$rowtotal);
+ } elsif ($action eq 'autocreate') {
+ $output .= &print_autocreate($dom,$settings,\$rowtotal);
+ } elsif ($action eq 'directorysrch') {
+ $output .= &print_directorysrch($dom,$settings,\$rowtotal);
+ } elsif ($action eq 'contacts') {
+ $output .= &print_contacts($dom,$settings,\$rowtotal);
+ } elsif ($action eq 'defaults') {
+ $output .= &print_defaults($dom,\$rowtotal);
+ } elsif ($action eq 'scantron') {
+ $output .= &print_scantronformat($r,$dom,$confname,$settings,\$rowtotal);
+ } elsif ($action eq 'serverstatuses') {
+ $output .= &print_serverstatuses($dom,$settings,\$rowtotal);
+ } elsif ($action eq 'helpsettings') {
+ $output .= &print_helpsettings('top',$dom,$confname,$settings,\$rowtotal);
+ } elsif ($action eq 'loadbalancing') {
+ $output .= &print_loadbalancing($dom,$settings,\$rowtotal);
}
}
$output .= '
@@ -1199,14 +743,11 @@ sub print_config_box {
}
sub print_login {
- my ($caller,$dom,$confname,$phase,$settings,$rowtotal) = @_;
- my ($css_class,$datatable,$switchserver,%lt);
+ my ($position,$dom,$confname,$phase,$settings,$rowtotal) = @_;
+ my ($css_class,$datatable);
my %choices = &login_choices();
- if (($caller eq 'help') || ($caller eq 'headtag') || ($caller eq 'saml')) {
- %lt = &login_file_options();
- $switchserver = &check_switchserver($dom,$confname);
- }
- if ($caller eq 'service') {
+
+ if ($position eq 'top') {
my %servers = &Apache::lonnet::internet_dom_servers($dom);
my $choice = $choices{'disallowlogin'};
$css_class = ' class="LC_odd_row"';
@@ -1233,7 +774,7 @@ sub print_login {
' | |
';
return $datatable;
- } elsif ($caller eq 'page') {
- my %defaultchecked = (
- 'coursecatalog' => 'on',
- 'helpdesk' => 'on',
- 'adminmail' => 'off',
- 'newuser' => 'off',
- );
- my @toggles = ('coursecatalog','adminmail','helpdesk','newuser');
- my (%checkedon,%checkedoff);
+ }
+
+ my %defaultchecked = (
+ 'coursecatalog' => 'on',
+ 'adminmail' => 'off',
+ 'newuser' => 'off',
+ );
+ my @toggles = ('coursecatalog','adminmail','newuser');
+ my (%checkedon,%checkedoff);
+ foreach my $item (@toggles) {
+ if ($defaultchecked{$item} eq 'on') {
+ $checkedon{$item} = ' checked="checked" ';
+ $checkedoff{$item} = ' ';
+ } elsif ($defaultchecked{$item} eq 'off') {
+ $checkedoff{$item} = ' checked="checked" ';
+ $checkedon{$item} = ' ';
+ }
+ }
+ my @images = ('img','logo','domlogo','login');
+ my @logintext = ('textcol','bgcol');
+ my @bgs = ('pgbg','mainbg','sidebg');
+ my @links = ('link','alink','vlink');
+ my %designhash = &Apache::loncommon::get_domainconf($dom);
+ my %defaultdesign = %Apache::loncommon::defaultdesign;
+ my (%is_custom,%designs);
+ my %defaults = (
+ font => $defaultdesign{'login.font'},
+ );
+ foreach my $item (@images) {
+ $defaults{$item} = $defaultdesign{'login.'.$item};
+ $defaults{'showlogo'}{$item} = 1;
+ }
+ foreach my $item (@bgs) {
+ $defaults{'bgs'}{$item} = $defaultdesign{'login.'.$item};
+ }
+ foreach my $item (@logintext) {
+ $defaults{'logintext'}{$item} = $defaultdesign{'login.'.$item};
+ }
+ foreach my $item (@links) {
+ $defaults{'links'}{$item} = $defaultdesign{'login.'.$item};
+ }
+ if (ref($settings) eq 'HASH') {
foreach my $item (@toggles) {
- if ($defaultchecked{$item} eq 'on') {
- $checkedon{$item} = ' checked="checked" ';
+ if ($settings->{$item} eq '1') {
+ $checkedon{$item} = ' checked="checked" ';
$checkedoff{$item} = ' ';
- } elsif ($defaultchecked{$item} eq 'off') {
- $checkedoff{$item} = ' checked="checked" ';
+ } elsif ($settings->{$item} eq '0') {
+ $checkedoff{$item} = ' checked="checked" ';
$checkedon{$item} = ' ';
}
}
- my @images = ('img','logo','domlogo','login');
- my @alttext = ('img','logo','domlogo');
- my @logintext = ('textcol','bgcol');
- my @bgs = ('pgbg','mainbg','sidebg');
- my @links = ('link','alink','vlink');
- my %designhash = &Apache::loncommon::get_domainconf($dom);
- my %defaultdesign = %Apache::loncommon::defaultdesign;
- my (%is_custom,%designs);
- my %defaults = (
- font => $defaultdesign{'login.font'},
- );
foreach my $item (@images) {
- $defaults{$item} = $defaultdesign{'login.'.$item};
- $defaults{'showlogo'}{$item} = 1;
- }
- foreach my $item (@bgs) {
- $defaults{'bgs'}{$item} = $defaultdesign{'login.'.$item};
- }
- foreach my $item (@logintext) {
- $defaults{'logintext'}{$item} = $defaultdesign{'login.'.$item};
- }
- foreach my $item (@links) {
- $defaults{'links'}{$item} = $defaultdesign{'login.'.$item};
- }
- if (ref($settings) eq 'HASH') {
- foreach my $item (@toggles) {
- if ($settings->{$item} eq '1') {
- $checkedon{$item} = ' checked="checked" ';
- $checkedoff{$item} = ' ';
- } elsif ($settings->{$item} eq '0') {
- $checkedoff{$item} = ' checked="checked" ';
- $checkedon{$item} = ' ';
- }
- }
- foreach my $item (@images) {
- if (defined($settings->{$item})) {
- $designs{$item} = $settings->{$item};
- $is_custom{$item} = 1;
- }
- if (defined($settings->{'showlogo'}{$item})) {
- $designs{'showlogo'}{$item} = $settings->{'showlogo'}{$item};
- }
- }
- foreach my $item (@alttext) {
- if (ref($settings->{'alttext'}) eq 'HASH') {
- if ($settings->{'alttext'}->{$item} ne '') {
- $designs{'alttext'}{$item} = $settings->{'alttext'}{$item};
- }
- }
- }
- foreach my $item (@logintext) {
- if ($settings->{$item} ne '') {
- $designs{'logintext'}{$item} = $settings->{$item};
- $is_custom{$item} = 1;
- }
- }
- if ($settings->{'font'} ne '') {
- $designs{'font'} = $settings->{'font'};
- $is_custom{'font'} = 1;
- }
- foreach my $item (@bgs) {
- if ($settings->{$item} ne '') {
- $designs{'bgs'}{$item} = $settings->{$item};
- $is_custom{$item} = 1;
- }
- }
- foreach my $item (@links) {
- if ($settings->{$item} ne '') {
- $designs{'links'}{$item} = $settings->{$item};
- $is_custom{$item} = 1;
- }
- }
- } else {
- if ($designhash{$dom.'.login.font'} ne '') {
- $designs{'font'} = $designhash{$dom.'.login.font'};
- $is_custom{'font'} = 1;
- }
- foreach my $item (@images) {
- if ($designhash{$dom.'.login.'.$item} ne '') {
- $designs{$item} = $designhash{$dom.'.login.'.$item};
- $is_custom{$item} = 1;
- }
- }
- foreach my $item (@bgs) {
- if ($designhash{$dom.'.login.'.$item} ne '') {
- $designs{'bgs'}{$item} = $designhash{$dom.'.login.'.$item};
- $is_custom{$item} = 1;
- }
+ if (defined($settings->{$item})) {
+ $designs{$item} = $settings->{$item};
+ $is_custom{$item} = 1;
}
- foreach my $item (@links) {
- if ($designhash{$dom.'.login.'.$item} ne '') {
- $designs{'links'}{$item} = $designhash{$dom.'.login.'.$item};
- $is_custom{$item} = 1;
- }
+ if (defined($settings->{'showlogo'}{$item})) {
+ $designs{'showlogo'}{$item} = $settings->{'showlogo'}{$item};
}
}
- my %alt_text = &Apache::lonlocal::texthash ( img => 'Log-in banner',
- logo => 'Institution Logo',
- domlogo => 'Domain Logo',
- login => 'Login box');
- my $itemcount = 1;
- foreach my $item (@toggles) {
- $css_class = $itemcount%2?' class="LC_odd_row"':'';
- $datatable .=
- ''.$choices{$item}.
- ' | '.
- ' | '.
- '
';
- $itemcount ++;
- }
- $datatable .= &display_color_options($dom,$confname,$phase,'login',$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text,$rowtotal,\@logintext);
- $datatable .= '';
- } elsif ($caller eq 'help') {
- my ($defaulturl,$defaulttype,%url,%type,%langchoices);
- my $itemcount = 1;
- $defaulturl = '/adm/loginproblems.html';
- $defaulttype = 'default';
- %langchoices = &Apache::lonlocal::texthash(&get_languages_hash());
- my @currlangs;
- if (ref($settings) eq 'HASH') {
- if (ref($settings->{'helpurl'}) eq 'HASH') {
- foreach my $key (sort(keys(%{$settings->{'helpurl'}}))) {
- next if ($settings->{'helpurl'}{$key} eq '');
- $url{$key} = $settings->{'helpurl'}{$key}.'?inhibitmenu=yes';
- $type{$key} = 'custom';
- unless ($key eq 'nolang') {
- push(@currlangs,$key);
- }
- }
- } elsif ($settings->{'helpurl'} ne '') {
- $type{'nolang'} = 'custom';
- $url{'nolang'} = $settings->{'helpurl'}.'?inhibitmenu=yes';
+ foreach my $item (@logintext) {
+ if ($settings->{$item} ne '') {
+ $designs{'logintext'}{$item} = $settings->{$item};
+ $is_custom{$item} = 1;
}
}
- foreach my $lang ('nolang',sort(@currlangs)) {
- $css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
- $datatable .= '';
- if ($url{$lang} eq '') {
- $url{$lang} = $defaulturl;
- }
- if ($type{$lang} eq '') {
- $type{$lang} = $defaulttype;
- }
- $datatable .= '';
- if ($lang eq 'nolang') {
- $datatable .= &mt('Log-in help page if no specific language file: [_1]',
- &Apache::loncommon::modal_link($url{$lang},$lt{$type{$lang}},600,500));
- } else {
- $datatable .= &mt('Log-in help page for language: [_1] is [_2]',
- $langchoices{$lang},
- &Apache::loncommon::modal_link($url{$lang},$lt{$type{$lang}},600,500));
- }
- $datatable .= ' | '."\n".
- '';
- if ($type{$lang} eq 'custom') {
- $datatable .= ' '.$lt{'rep'}.'';
- } else {
- $datatable .= $lt{'upl'};
- }
- $datatable .=' ';
- if ($switchserver) {
- $datatable .= &mt('Upload to library server: [_1]',$switchserver);
- } else {
- $datatable .= '';
- }
- $datatable .= ' |
';
- $itemcount ++;
+ if ($settings->{'font'} ne '') {
+ $designs{'font'} = $settings->{'font'};
+ $is_custom{'font'} = 1;
}
- my @addlangs;
- foreach my $lang (sort(keys(%langchoices))) {
- next if ((grep(/^\Q$lang\E$/,@currlangs)) || ($lang eq 'x_chef'));
- push(@addlangs,$lang);
- }
- if (@addlangs > 0) {
- my %toadd;
- map { $toadd{$_} = $langchoices{$_} ; } @addlangs;
- $toadd{''} = &mt('Select');
- $css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
- $datatable .= ''.
- &mt('Add log-in help page for a specific language:').' '.
- &Apache::loncommon::select_form('','loginhelpurl_add_lang',\%toadd).
- ' | '.$lt{'upl'}.' ';
- if ($switchserver) {
- $datatable .= &mt('Upload to library server: [_1]',$switchserver);
- } else {
- $datatable .= '';
+ foreach my $item (@bgs) {
+ if ($settings->{$item} ne '') {
+ $designs{'bgs'}{$item} = $settings->{$item};
+ $is_custom{$item} = 1;
}
- $datatable .= ' |
';
- $itemcount ++;
}
- $datatable .= &captcha_choice('login',$settings,$itemcount);
- } elsif ($caller eq 'headtag') {
- my %domservers = &Apache::lonnet::get_servers($dom);
- my $choice = $choices{'headtag'};
- $css_class = ' class="LC_odd_row"';
- $datatable .= ''.$choice.' | '.
- ' |
';
- } elsif ($caller eq 'saml') {
- my %domservers = &Apache::lonnet::get_servers($dom);
- $datatable .= ''.
- ' |
';
}
+ my %alt_text = &Apache::lonlocal::texthash ( img => 'Log-in banner',
+ logo => 'Institution Logo',
+ domlogo => 'Domain Logo',
+ login => 'Login box');
+ my $itemcount = 1;
+ foreach my $item (@toggles) {
+ $css_class = $itemcount%2?' class="LC_odd_row"':'';
+ $datatable .=
+ ''.$choices{$item}.
+ ' | '.
+ ' | '.
+ '
';
+ $itemcount ++;
+ }
+ $datatable .= &display_color_options($dom,$confname,$phase,'login',$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text,$rowtotal,\@logintext);
+ $datatable .= '';
return $datatable;
}
@@ -1634,7 +947,6 @@ sub login_choices {
&Apache::lonlocal::texthash (
coursecatalog => 'Display Course/Community Catalog link?',
adminmail => "Display Administrator's E-mail Address?",
- helpdesk => 'Display "Contact Helpdesk" link',
disallowlogin => "Login page requests redirected",
hostid => "Server",
server => "Redirect to:",
@@ -1658,208 +970,10 @@ sub login_choices {
link => "Link",
alink => "Active link",
vlink => "Visited link",
- headtag => "Custom markup",
- action => "Action",
- current => "Current",
- samllanding => "Dual login?",
- samloptions => "Options",
- alttext => "Alt text",
);
return %choices;
}
-sub login_file_options {
- return &Apache::lonlocal::texthash(
- del => 'Delete?',
- rep => 'Replace:',
- upl => 'Upload:',
- curr => 'View contents',
- default => 'Default',
- custom => 'Custom',
- none => 'None',
- );
-}
-
-sub print_ipaccess {
- my ($dom,$settings,$rowtotal) = @_;
- my $css_class;
- my $itemcount = 0;
- my $datatable;
- my %ordered;
- if (ref($settings) eq 'HASH') {
- foreach my $item (keys(%{$settings})) {
- if (ref($settings->{$item}) eq 'HASH') {
- my $num = $settings->{$item}{'order'};
- if ($num eq '') {
- $num = scalar(keys(%{$settings}));
- }
- $ordered{$num} = $item;
- }
- }
- }
- my $maxnum = scalar(keys(%ordered));
- if (keys(%ordered)) {
- my @items = sort { $a <=> $b } keys(%ordered);
- for (my $i=0; $i<@items; $i++) {
- $css_class = $itemcount%2?' class="LC_odd_row"':'';
- my $item = $ordered{$items[$i]};
- my ($name,$ipranges,%commblocks,%courses);
- if (ref($settings->{$item}) eq 'HASH') {
- $name = $settings->{$item}->{'name'};
- $ipranges = $settings->{$item}->{'ip'};
- if (ref($settings->{$item}->{'commblocks'}) eq 'HASH') {
- %commblocks = %{$settings->{$item}->{'commblocks'}};
- }
- if (ref($settings->{$item}->{'courses'}) eq 'HASH') {
- %courses = %{$settings->{$item}->{'courses'}};
- }
- }
- my $chgstr = ' onchange="javascript:reorderIPaccess(this.form,'."'ipaccess_pos_".$item."'".');"';
- $datatable .= ''
- .''.(' 'x2).
- ' | '.
- ''.
- &ipaccess_options($i,$itemcount,$dom,$name,$ipranges,\%commblocks,\%courses).
- ' |
';
- $itemcount ++;
- }
- }
- $css_class = $itemcount%2?' class="LC_odd_row"':'';
- my $chgstr = ' onchange="javascript:reorderIPaccess(this.form,'."'ipaccess_pos_add'".');"';
- $datatable .= ''."\n".
- ''."\n".
- ' '."\n".
- ''.&mt('Add').' | '."\n".
- ''.
- &ipaccess_options('add',$itemcount,$dom).
- ' | '."\n".
- '
'."\n";
- $$rowtotal ++;
- return $datatable;
-}
-
-sub ipaccess_options {
- my ($num,$itemcount,$dom,$name,$ipranges,$blocksref,$coursesref) = @_;
- my (%currblocks,%currcourses,$output);
- if (ref($blocksref) eq 'HASH') {
- %currblocks = %{$blocksref};
- }
- if (ref($coursesref) eq 'HASH') {
- %currcourses = %{$coursesref};
- }
- $output = ''.
- ''.
- ''.
- '';
- return $output;
-}
-
-sub blocker_checkboxes {
- my ($num,$blocks) = @_;
- my ($typeorder,$types) = &commblocktype_text();
- my $numinrow = 6;
- my $output = '';
- return $output;
-}
-
-sub commblocktype_text {
- my %types = &Apache::lonlocal::texthash(
- 'com' => 'Messaging',
- 'chat' => 'Chat Room',
- 'boards' => 'Discussion',
- 'port' => 'Portfolio',
- 'groups' => 'Groups',
- 'blogs' => 'Blogs',
- 'about' => 'User Information',
- 'printout' => 'Printouts',
- 'passwd' => 'Change Password',
- 'grades' => 'Gradebook',
- 'search' => 'Course search',
- 'wishlist' => 'Stored links',
- 'annotate' => 'Annotations',
- );
- my $typeorder = ['com','chat','boards','port','groups','blogs','about','wishlist','printout','grades','search','annotate','passwd'];
- return ($typeorder,\%types);
-}
-
sub print_rolecolors {
my ($phase,$role,$dom,$confname,$settings,$rowtotal) = @_;
my %choices = &color_font_choices();
@@ -1870,7 +984,17 @@ sub print_rolecolors {
my %designhash = &Apache::loncommon::get_domainconf($dom);
my %defaultdesign = %Apache::loncommon::defaultdesign;
my (%is_custom,%designs);
- my %defaults = &role_defaults($role,\@bgs,\@links,\@images);
+ my %defaults = (
+ img => $defaultdesign{$role.'.img'},
+ font => $defaultdesign{$role.'.font'},
+ fontmenu => $defaultdesign{$role.'.fontmenu'},
+ );
+ foreach my $item (@bgs) {
+ $defaults{'bgs'}{$item} = $defaultdesign{$role.'.'.$item};
+ }
+ foreach my $item (@links) {
+ $defaults{'links'}{$item} = $defaultdesign{$role.'.'.$item};
+ }
if (ref($settings) eq 'HASH') {
if (ref($settings->{$role}) eq 'HASH') {
if ($settings->{$role}->{'img'} ne '') {
@@ -1931,44 +1055,6 @@ sub print_rolecolors {
return $datatable;
}
-sub role_defaults {
- my ($role,$bgs,$links,$images,$logintext) = @_;
- my %defaults;
- unless ((ref($bgs) eq 'ARRAY') && (ref($links) eq 'ARRAY') && (ref($images) eq 'ARRAY')) {
- return %defaults;
- }
- my %defaultdesign = %Apache::loncommon::defaultdesign;
- if ($role eq 'login') {
- %defaults = (
- font => $defaultdesign{$role.'.font'},
- );
- if (ref($logintext) eq 'ARRAY') {
- foreach my $item (@{$logintext}) {
- $defaults{'logintext'}{$item} = $defaultdesign{$role.'.'.$item};
- }
- }
- foreach my $item (@{$images}) {
- $defaults{'showlogo'}{$item} = 1;
- }
- } else {
- %defaults = (
- img => $defaultdesign{$role.'.img'},
- font => $defaultdesign{$role.'.font'},
- fontmenu => $defaultdesign{$role.'.fontmenu'},
- );
- }
- foreach my $item (@{$bgs}) {
- $defaults{'bgs'}{$item} = $defaultdesign{$role.'.'.$item};
- }
- foreach my $item (@{$links}) {
- $defaults{'links'}{$item} = $defaultdesign{$role.'.'.$item};
- }
- foreach my $item (@{$images}) {
- $defaults{$item} = $defaultdesign{$role.'.'.$item};
- }
- return %defaults;
-}
-
sub display_color_options {
my ($dom,$confname,$phase,$role,$itemcount,$choices,$is_custom,$defaults,$designs,
$images,$bgs,$links,$alt_text,$rowtotal,$logintext) = @_;
@@ -1977,31 +1063,32 @@ sub display_color_options {
my $datatable = ''.
''.$choices->{'font'}.' | ';
if (!$is_custom->{'font'}) {
- $datatable .= ''.&mt('Default in use:').' '.$defaults->{'font'}.' | ';
+ $datatable .= ''.&mt('Default in use:').' '.$defaults->{'font'}.' | ';
} else {
$datatable .= ' | ';
}
- my $current_color = $designs->{'font'} ? $designs->{'font'} : $defaults->{'font'};
-
+ my $fontlink = &color_pick($phase,$role,'font',$choices->{'font'},$designs->{'font'});
$datatable .= ''.
- ' '.
- ' |
';
+ ' '.$fontlink.
+ ' '.
+ '';
unless ($role eq 'login') {
$datatable .= ''.
''.$choices->{'fontmenu'}.' | ';
if (!$is_custom->{'fontmenu'}) {
- $datatable .= ''.&mt('Default in use:').' '.$defaults->{'fontmenu'}.' | ';
+ $datatable .= ''.&mt('Default in use:').' '.$defaults->{'fontmenu'}.' | ';
} else {
$datatable .= ' | ';
}
- $current_color = $designs->{'fontmenu'} ?
- $designs->{'fontmenu'} : $defaults->{'fontmenu'};
+ $fontlink = &color_pick($phase,$role,'fontmenu',$choices->{'fontmenu'},$designs->{'fontmenu'});
$datatable .= ''.
- ' '.
- ' |
';
+ ' '.$fontlink.
+ ' '.
+ '';
}
my $switchserver = &check_switchserver($dom,$confname);
foreach my $img (@{$images}) {
@@ -2009,21 +1096,16 @@ sub display_color_options {
$css_class = $itemcount%2?' class="LC_odd_row"':'';
$datatable .= ''.
''.$choices->{$img};
- my ($imgfile,$img_import,$login_hdr_pick,$logincolors,$alttext);
+ my ($imgfile,$img_import,$login_hdr_pick,$logincolors);
if ($role eq 'login') {
if ($img eq 'login') {
$login_hdr_pick =
&login_header_options($img,$role,$defaults,$is_custom,$choices);
$logincolors =
&login_text_colors($img,$role,$logintext,$phase,$choices,
- $designs,$defaults);
- } else {
- if ($img ne 'domlogo') {
- $datatable.= &logo_display_options($img,$defaults,$designs);
- }
- if (ref($designs->{'alttext'}) eq 'HASH') {
- $alttext = $designs->{'alttext'}{$img};
- }
+ $designs);
+ } elsif ($img ne 'domlogo') {
+ $datatable.= &logo_display_options($img,$defaults,$designs);
}
}
$datatable .= ' | ';
@@ -2065,8 +1147,7 @@ sub display_color_options {
if ($fullwidth ne '' && $fullheight ne '') {
if ($fullwidth > $width && $fullheight > $height) {
my $size = $width.'x'.$height;
- my @args = ('convert','-sample',$size,$input,$output);
- system({$args[0]} @args);
+ system("convert -sample $size $input $output");
$showfile = "/$imgdir/tn-".$filename;
}
}
@@ -2101,12 +1182,12 @@ sub display_color_options {
$datatable .= &image_changes($is_custom->{$img},$alt_text->{$img},$img_import,
$showfile,$fullsize,$role,$img,$imgfile,$logincolors);
} else {
- $datatable .= ' | '.
- &mt('Upload:').' ';
+ $datatable .= ' | '.
+ &mt('Upload:');
}
} else {
- $datatable .= ' | | '.
- &mt('Upload:').' ';
+ $datatable .= ' | '.
+ &mt('Upload:');
}
if ($switchserver) {
$datatable .= &mt('Upload to library server: [_1]',$switchserver);
@@ -2115,11 +1196,6 @@ sub display_color_options {
$datatable .=' ';
}
}
- if (($role eq 'login') && ($img ne 'login')) {
- $datatable .= (' ' x2).' ';
- }
$datatable .= ' |
';
}
$itemcount ++;
@@ -2129,7 +1205,7 @@ sub display_color_options {
my $bgs_def;
foreach my $item (@{$bgs}) {
if (!$is_custom->{$item}) {
- $bgs_def .= ''.$choices->{$item}.' '.$defaults->{'bgs'}{$item}.' | ';
+ $bgs_def .= ''.$choices->{$item}.' '.$defaults->{'bgs'}{$item}.' | ';
}
}
if ($bgs_def) {
@@ -2139,14 +1215,13 @@ sub display_color_options {
}
$datatable .= ''.
' | ';
@@ -2157,7 +1232,7 @@ sub display_color_options {
my $links_def;
foreach my $item (@{$links}) {
if (!$is_custom->{$item}) {
- $links_def .= ''.$choices->{$item}.' '.$defaults->{'links'}{$item}.' | ';
+ $links_def .= ''.$choices->{$item}.' '.$defaults->{'links'}{$item}.' | ';
}
}
if ($links_def) {
@@ -2168,12 +1243,13 @@ sub display_color_options {
$datatable .= ''.
'';
foreach my $item (@{$links}) {
- my $color = $designs->{'links'}{$item} ? $designs->{'links'}{$item} : $defaults->{'links'}{$item};
- $datatable .= ''.$choices->{$item}."\n";
+ $datatable .= ' | '."\n".
+ &color_pick($phase,$role,$item,$choices->{$item},
+ $designs->{'links'}{$item});
if ($designs->{'links'}{$item}) {
- $datatable.=' ';
+ $datatable.=' ';
}
- $datatable .= '
| ';
}
$$rowtotal += $itemcount;
@@ -2227,13 +1303,17 @@ sub login_header_options {
}
sub login_text_colors {
- my ($img,$role,$logintext,$phase,$choices,$designs,$defaults) = @_;
+ my ($img,$role,$logintext,$phase,$choices,$designs) = @_;
my $color_menu = ' ';
return $color_menu;
@@ -2243,15 +1323,17 @@ sub image_changes {
my ($is_custom,$alt_text,$img_import,$showfile,$fullsize,$role,$img,$imgfile,$logincolors) = @_;
my $output;
if ($img eq 'login') {
- $output = ''.$logincolors; # suppress image for Log-in header
+ # suppress image for Log-in header
} elsif (!$is_custom) {
if ($img ne 'domlogo') {
- $output = &mt('Default image:').' ';
+ $output .= &mt('Default image:').' ';
} else {
- $output = &mt('Default in use:').' ';
+ $output .= &mt('Default in use:').' ';
}
}
- if ($img ne 'login') {
+ if ($img eq 'login') { # suppress image for Log-in header
+ $output .= ' | '.$logincolors;
+ } else {
if ($img_import) {
$output .= '';
}
@@ -2263,12 +1345,20 @@ sub image_changes {
$role.'_del_'.$img.'" value="1" />'.&mt('Delete?').
' '.&mt('Replace:').' ';
} else {
- $output .= ' | '.$logincolors.&mt('Upload:').' ';
+ $output .= ' | '.$logincolors.&mt('Upload:').' ';
}
}
return $output;
}
+sub color_pick {
+ my ($phase,$role,$item,$desc,$curcol) = @_;
+ my $link = ''.$desc.'';
+ return $link;
+}
+
sub print_quotas {
my ($dom,$settings,$rowtotal,$action) = @_;
my $context;
@@ -2277,37 +1367,29 @@ sub print_quotas {
} else {
$context = $action;
}
- my ($datatable,$defaultquota,$authorquota,@usertools,@options,%validations);
+ my ($datatable,$defaultquota,@usertools,@options,%validations);
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
my $typecount = 0;
my ($css_class,%titles);
if ($context eq 'requestcourses') {
- @usertools = ('official','unofficial','community','textbook','lti');
+ @usertools = ('official','unofficial','community');
@options =('norequest','approval','validate','autolimit');
%validations = &Apache::lonnet::auto_courserequest_checks($dom);
%titles = &courserequest_titles();
- } elsif ($context eq 'requestauthor') {
- @usertools = ('author');
- @options = ('norequest','approval','automatic');
- %titles = &authorrequest_titles();
} else {
- @usertools = ('aboutme','blog','webdav','portfolio','timezone');
+ @usertools = ('aboutme','blog','webdav','portfolio');
%titles = &tool_titles();
}
if (ref($types) eq 'ARRAY') {
foreach my $type (@{$types}) {
- my ($currdefquota,$currauthorquota);
- unless (($context eq 'requestcourses') ||
- ($context eq 'requestauthor')) {
+ my $currdefquota;
+ unless ($context eq 'requestcourses') {
if (ref($settings) eq 'HASH') {
if (ref($settings->{defaultquota}) eq 'HASH') {
- $currdefquota = $settings->{defaultquota}->{$type};
+ $currdefquota = $settings->{defaultquota}->{$type};
} else {
$currdefquota = $settings->{$type};
}
- if (ref($settings->{authorquota}) eq 'HASH') {
- $currauthorquota = $settings->{authorquota}->{$type};
- }
}
}
if (defined($usertypes->{$type})) {
@@ -2371,36 +1453,11 @@ sub print_quotas {
$cell{$item} .= $titles{'unlimited'};
}
}
- } elsif ($context eq 'requestauthor') {
- my $curroption;
- if (ref($settings) eq 'HASH') {
- $curroption = $settings->{$type};
- }
- if (!$curroption) {
- $curroption = 'norequest';
- }
- foreach my $option (@options) {
- my $val = $option;
- if ($option eq 'norequest') {
- $val = 0;
- }
- my $checked = '';
- if ($option eq $curroption) {
- $checked = ' checked="checked"';
- }
- $datatable .= ' ';
- }
} else {
my $checked = 'checked="checked" ';
- if ($item eq 'timezone') {
- $checked = '';
- }
if (ref($settings) eq 'HASH') {
if (ref($settings->{$item}) eq 'HASH') {
- if (!$settings->{$item}->{$type}) {
+ if ($settings->{$item}->{$type} == 0) {
$checked = '';
} elsif ($settings->{$item}->{$type} == 1) {
$checked = 'checked="checked" ';
@@ -2421,35 +1478,25 @@ sub print_quotas {
$datatable .= ' | ';
}
$datatable .= ' | ';
- unless (($context eq 'requestcourses') ||
- ($context eq 'requestauthor')) {
+ unless ($context eq 'requestcourses') {
$datatable .=
- ''.
- ''.&mt('Portfolio').': '.
+ ' | '.
''.(' ' x 2).
- ''.&mt('Authoring').': '.
- ' | ';
+ '" size="5" /> Mb';
}
$datatable .= '';
}
}
}
- unless (($context eq 'requestcourses') || ($context eq 'requestauthor')) {
+ unless ($context eq 'requestcourses') {
$defaultquota = '20';
- $authorquota = '500';
if (ref($settings) eq 'HASH') {
if (ref($settings->{'defaultquota'}) eq 'HASH') {
$defaultquota = $settings->{'defaultquota'}->{'default'};
} elsif (defined($settings->{'default'})) {
$defaultquota = $settings->{'default'};
}
- if (ref($settings->{'authorquota'}) eq 'HASH') {
- $authorquota = $settings->{'authorquota'}->{'default'};
- }
}
}
$typecount ++;
@@ -2512,28 +1559,6 @@ sub print_quotas {
$defcell{$item} .= $titles{'unlimited'};
}
}
- } elsif ($context eq 'requestauthor') {
- my $curroption;
- if (ref($settings) eq 'HASH') {
- $curroption = $settings->{'default'};
- }
- if (!$curroption) {
- $curroption = 'norequest';
- }
- foreach my $option (@options) {
- my $val = $option;
- if ($option eq 'norequest') {
- $val = 0;
- }
- my $checked = '';
- if ($option eq $curroption) {
- $checked = ' checked="checked"';
- }
- $datatable .= ' ';
- }
} else {
my $checked = 'checked="checked" ';
if (ref($settings) eq 'HASH') {
@@ -2559,20 +1584,16 @@ sub print_quotas {
$datatable .= '';
}
$datatable .= '';
- unless (($context eq 'requestcourses') || ($context eq 'requestauthor')) {
- $datatable .= ''.
- ''.&mt('Portfolio').': '.
+ unless ($context eq 'requestcourses') {
+ $datatable .= ' | '.
''.(' ' x2).
- ''.&mt('Authoring').': '.
- ' | ';
+ $defaultquota.'" size="5" /> Mb';
}
$datatable .= '';
$typecount ++;
$css_class = $typecount%2?' class="LC_odd_row"':'';
$datatable .= ''.
- ''.&mt('LON-CAPA Advanced Users').' ';
+ ' | '.&mt('LON-CAPA Advanced Users').' ';
if ($context eq 'requestcourses') {
$datatable .= &mt('(overrides affiliation, if set)').
' | '.
@@ -2641,33 +1662,6 @@ sub print_quotas {
$advcell{$item} .= $titles{'unlimited'};
}
}
- } elsif ($context eq 'requestauthor') {
- my $curroption;
- if (ref($settings) eq 'HASH') {
- $curroption = $settings->{'_LC_adv'};
- }
- my $checked = '';
- if ($curroption eq '') {
- $checked = ' checked="checked"';
- }
- $datatable .= ' ';
- foreach my $option (@options) {
- my $val = $option;
- if ($option eq 'norequest') {
- $val = 0;
- }
- my $checked = '';
- if ($val eq $curroption) {
- $checked = ' checked="checked"';
- }
- $datatable .= ' ';
- }
} else {
my $checked = 'checked="checked" ';
if (ref($settings) eq 'HASH') {
@@ -2697,1044 +1691,88 @@ sub print_quotas {
return $datatable;
}
-sub print_requestmail {
- my ($dom,$action,$settings,$rowtotal,$customcss,$rowstyle) = @_;
- my ($now,$datatable,%currapp);
+sub print_courserequestmail {
+ my ($dom,$settings,$rowtotal) = @_;
+ my ($now,$datatable,%dompersonnel,@domcoord,@currapproval,$rows);
$now = time;
- if (ref($settings) eq 'HASH') {
- if (ref($settings->{'notify'}) eq 'HASH') {
- if ($settings->{'notify'}{'approval'} ne '') {
- map {$currapp{$_}=1;} split(/,/,$settings->{'notify'}{'approval'});
+ $rows = 0;
+ %dompersonnel = &Apache::lonnet::get_domain_roles($dom,['dc'],$now,$now);
+ foreach my $server (keys(%dompersonnel)) {
+ foreach my $user (sort(keys(%{$dompersonnel{$server}}))) {
+ my ($trole,$uname,$udom,$runame,$rudom,$rsec) = split(/:/,$user);
+ if (!grep(/^$uname:$udom$/,@domcoord)) {
+ push(@domcoord,$uname.':'.$udom);
}
}
}
- my $numinrow = 2;
- my $css_class;
- if ($$rowtotal%2) {
- $css_class = 'LC_odd_row';
- }
- if ($customcss) {
- $css_class .= " $customcss";
- }
- $css_class =~ s/^\s+//;
- if ($css_class) {
- $css_class = ' class="'.$css_class.'"';
- }
- if ($rowstyle) {
- $css_class .= ' style="'.$rowstyle.'"';
- }
- my $text;
- if ($action eq 'requestcourses') {
- $text = &mt('Receive notification of course requests requiring approval');
- } elsif ($action eq 'requestauthor') {
- $text = &mt('Receive notification of Authoring Space requests requiring approval');
- } else {
- $text = &mt('Receive notification of queued requests for self-created user accounts requiring approval');
- }
- $datatable = '
'.
- ' '.$text.' | '.
- ' ';
- my ($numdc,$table,$rows) = &active_dc_picker($dom,$numinrow,'checkbox',
- $action.'notifyapproval',%currapp);
- if ($numdc > 0) {
- $datatable .= $table;
- } else {
- $datatable .= &mt('There are no active Domain Coordinators');
- }
- $datatable .=' |
';
- return $datatable;
-}
-
-sub print_studentcode {
- my ($settings,$rowtotal) = @_;
- my $rownum = 0;
- my ($output,%current);
- my @crstypes = ('official','unofficial','community','textbook','lti');
if (ref($settings) eq 'HASH') {
- if (ref($settings->{'uniquecode'}) eq 'HASH') {
- foreach my $type (@crstypes) {
- $current{$type} = $settings->{'uniquecode'}{$type};
- }
- }
- }
- $output .= ''.
- ''.&mt('Generate unique six character code as course identifier?').' | '.
- '';
- foreach my $type (@crstypes) {
- my $check = ' ';
- if ($current{$type}) {
- $check = ' checked="checked" ';
- }
- $output .= ''.(' 'x2).' ';
- }
- $output .= ' |
';
- $$rowtotal ++;
- return $output;
-}
-
-sub print_textbookcourses {
- my ($dom,$type,$settings,$rowtotal) = @_;
- my $rownum = 0;
- my $css_class;
- my $itemcount = 1;
- my $maxnum = 0;
- my $bookshash;
- if (ref($settings) eq 'HASH') {
- $bookshash = $settings->{$type};
- }
- my %ordered;
- if (ref($bookshash) eq 'HASH') {
- foreach my $item (keys(%{$bookshash})) {
- if (ref($bookshash->{$item}) eq 'HASH') {
- my $num = $bookshash->{$item}{'order'};
- $ordered{$num} = $item;
- }
- }
- }
- my $confname = $dom.'-domainconfig';
- my $switchserver = &check_switchserver($dom,$confname);
- my $maxnum = scalar(keys(%ordered));
- my $datatable;
- if (keys(%ordered)) {
- my @items = sort { $a <=> $b } keys(%ordered);
- for (my $i=0; $i<@items; $i++) {
- $css_class = $itemcount%2?' class="LC_odd_row"':'';
- my $key = $ordered{$items[$i]};
- my %coursehash=&Apache::lonnet::coursedescription($key);
- my $coursetitle = $coursehash{'description'};
- my ($subject,$title,$author,$publisher,$image,$imgsrc,$cdom,$cnum);
- if (ref($bookshash->{$key}) eq 'HASH') {
- $subject = $bookshash->{$key}->{'subject'};
- $title = $bookshash->{$key}->{'title'};
- if ($type eq 'textbooks') {
- $publisher = $bookshash->{$key}->{'publisher'};
- $author = $bookshash->{$key}->{'author'};
- $image = $bookshash->{$key}->{'image'};
- if ($image ne '') {
- my ($path,$imagefile) = ($image =~ m{^(.+)/([^/]+)$});
- my $imagethumb = "$path/tn-".$imagefile;
- $imgsrc = '';
- }
- }
- }
- my $chgstr = ' onchange="javascript:reorderBooks(this.form,'."'$type".'_'."$key','$type'".');"';
- $datatable .= ''
- .''.(' 'x2).
- ' | '.
- ''.
- ''.&mt('Subject:').' '.
- (' 'x2).
- ''.&mt('Title:').' ';
- if ($type eq 'textbooks') {
- $datatable .= (' 'x2).
- ''.&mt('Publisher:').' '.
- (' 'x2).
- ''.&mt('Author(s):').' '.
- (' 'x2).
- ''.&mt('Thumbnail:');
- if ($image) {
- $datatable .= $imgsrc.
- ' '.
- ' '.&mt('Replace:').' ';
- }
- if ($switchserver) {
- $datatable .= &mt('Upload to library server: [_1]',$switchserver);
- } else {
- $datatable .= '';
- }
- }
- $datatable .= ' '.
- ''.&mt('LON-CAPA course:').' '.
- $coursetitle.' |
'."\n";
- $itemcount ++;
- }
- }
- $css_class = $itemcount%2?' class="LC_odd_row"':'';
- my $chgstr = ' onchange="javascript:reorderBooks(this.form,'."'$type"."_addbook_pos','$type'".');"';
- $datatable .= ''."\n".
- ''."\n".
- ' '."\n".
- ''.&mt('Add').' | '."\n".
- ''.
- ''.&mt('Subject:').' '."\n".
- (' 'x2).
- ''.&mt('Title:').' '."\n".
- (' 'x2);
- if ($type eq 'textbooks') {
- $datatable .= ''.&mt('Publisher:').' '."\n".
- (' 'x2).
- ''.&mt('Author(s):').' '."\n".
- (' 'x2).
- ''.&mt('Image:').' ';
- if ($switchserver) {
- $datatable .= &mt('Upload to library server: [_1]',$switchserver);
- } else {
- $datatable .= '';
- }
- $datatable .= ''."\n";
- }
- $datatable .= ''.&mt('LON-CAPA course:').' '.
- &Apache::loncommon::select_dom_form($env{'request.role.domain'},$type.'_addbook_cdom').
- ''.
- &Apache::loncommon::selectcourse_link
- ('display',$type.'_addbook_cnum',$type.'_addbook_cdom',undef,undef,undef,'Course').
- ' | '."\n".
- '
'."\n";
- $itemcount ++;
- return $datatable;
-}
-
-sub textbookcourses_javascript {
- my ($settings) = @_;
- return unless(ref($settings) eq 'HASH');
- my (%ordered,%total,%jstext);
- foreach my $type ('textbooks','templates') {
- $total{$type} = 0;
- if (ref($settings->{$type}) eq 'HASH') {
- foreach my $item (keys(%{$settings->{$type}})) {
- if (ref($settings->{$type}->{$item}) eq 'HASH') {
- my $num = $settings->{$type}->{$item}{'order'};
- $ordered{$type}{$num} = $item;
- }
- }
- $total{$type} = scalar(keys(%{$settings->{$type}}));
- }
- my @jsarray = ();
- foreach my $item (sort {$a <=> $b } (keys(%{$ordered{$type}}))) {
- push(@jsarray,$ordered{$type}{$item});
- }
- $jstext{$type} = ' var '.$type.' = Array('."'".join("','",@jsarray)."'".');'."\n";
- }
- return <<"ENDSCRIPT";
-
-
-ENDSCRIPT
-}
-
-sub ltitools_javascript {
- my ($settings) = @_;
- my $togglejs = <itools_toggle_js();
- unless (ref($settings) eq 'HASH') {
- return $togglejs;
- }
- my (%ordered,$total,%jstext);
- $total = 0;
- foreach my $item (keys(%{$settings})) {
- if (ref($settings->{$item}) eq 'HASH') {
- my $num = $settings->{$item}{'order'};
- $ordered{$num} = $item;
- }
- }
- $total = scalar(keys(%{$settings}));
- my @jsarray = ();
- foreach my $item (sort {$a <=> $b } (keys(%ordered))) {
- push(@jsarray,$ordered{$item});
- }
- my $jstext = ' var ltitools = Array('."'".join("','",@jsarray)."'".');'."\n";
- return <<"ENDSCRIPT";
-
-
-$togglejs
-
-ENDSCRIPT
-}
-
-sub ltitools_toggle_js {
- return <<"ENDSCRIPT";
-
-
-ENDSCRIPT
-}
-
-sub wafproxy_javascript {
- my ($dom) = @_;
- return <<"ENDSCRIPT";
-
-
-ENDSCRIPT
-}
-
-sub lti_javascript {
- my ($dom,$settings) = @_;
- my $togglejs = <i_toggle_js($dom);
- my $linkprot_js = &Apache::courseprefs::linkprot_javascript();
- unless (ref($settings) eq 'HASH') {
- return $togglejs.'
-
-';
- }
- my (%ordered,$total,%jstext);
- $total = scalar(keys(%{$settings}));
- foreach my $item (keys(%{$settings})) {
- if (ref($settings->{$item}) eq 'HASH') {
- my $num = $settings->{$item}{'order'};
- if ($num eq '') {
- $num = $total - 1;
- }
- $ordered{$num} = $item;
- }
- }
- my @jsarray = ();
- foreach my $item (sort {$a <=> $b } (keys(%ordered))) {
- push(@jsarray,$ordered{$item});
- }
- my $jstext = ' var lti = Array('."'".join("','",@jsarray)."'".');'."\n";
- return <<"ENDSCRIPT";
-
-
-$togglejs
-
-ENDSCRIPT
-}
-
-sub lti_toggle_js {
- my ($dom) = @_;
- my %lcauthparmtext = &Apache::lonlocal::texthash (
- localauth => 'Local auth argument',
- krb => 'Kerberos domain',
- );
- my $crsincalert = &mt('"User\'s identity sent" needs to be set to "Yes" first,[_1] before setting "Course\'s identity sent" to "Yes"',"\n");
- &js_escape(\$crsincalert);
- my %servers = &Apache::lonnet::get_servers($dom,'library');
- my $primary = &Apache::lonnet::domain($dom,'primary');
- my $course_servers = "'".join("','",keys(%servers))."'";
- return <<"ENDSCRIPT";
-
-
-ENDSCRIPT
-}
-
-sub autoupdate_javascript {
- return <<"ENDSCRIPT";
-
-
-ENDSCRIPT
-}
-
-sub autoenroll_javascript {
- return <<"ENDSCRIPT";
-
-
-ENDSCRIPT
-}
-
-sub saml_javascript {
- return <<"ENDSCRIPT";
-
-
-ENDSCRIPT
-}
-
-sub ipaccess_javascript {
- my ($settings) = @_;
- my (%ordered,$total,%jstext);
- $total = 0;
- if (ref($settings) eq 'HASH') {
- foreach my $item (keys(%{$settings})) {
- if (ref($settings->{$item}) eq 'HASH') {
- my $num = $settings->{$item}{'order'};
- $ordered{$num} = $item;
- }
- }
- $total = scalar(keys(%{$settings}));
- }
- my @jsarray = ();
- foreach my $item (sort {$a <=> $b } (keys(%ordered))) {
- push(@jsarray,$ordered{$item});
- }
- my $jstext = ' var ipaccess = Array('."'".join("','",@jsarray)."'".');'."\n";
- return <<"ENDSCRIPT";
-
-
-ENDSCRIPT
+ $datatable .='';
+ $$rowtotal += $rows;
+ return $datatable;
}
sub print_autoenroll {
my ($dom,$settings,$rowtotal) = @_;
my $autorun = &Apache::lonnet::auto_run(undef,$dom),
- my ($defdom,$runon,$runoff,$coownerson,$coownersoff,
- $failsafe,$autofailsafe,$failsafesty,%failsafechecked);
- $failsafesty = 'none';
- %failsafechecked = (
- off => ' checked="checked"',
- );
+ my ($defdom,$runon,$runoff,$coownerson,$coownersoff);
if (ref($settings) eq 'HASH') {
if (exists($settings->{'run'})) {
if ($settings->{'run'} eq '0') {
@@ -3768,25 +1806,6 @@ sub print_autoenroll {
if (exists($settings->{'sender_domain'})) {
$defdom = $settings->{'sender_domain'};
}
- if (exists($settings->{'failsafe'})) {
- $failsafe = $settings->{'failsafe'};
- if ($failsafe eq 'zero') {
- $failsafechecked{'zero'} = ' checked="checked"';
- $failsafechecked{'off'} = '';
- $failsafesty = 'inline-block';
- } elsif ($failsafe eq 'any') {
- $failsafechecked{'any'} = ' checked="checked"';
- $failsafechecked{'off'} = '';
- }
- $autofailsafe = $settings->{'autofailsafe'};
- } elsif (exists($settings->{'autofailsafe'})) {
- $autofailsafe = $settings->{'autofailsafe'};
- if ($autofailsafe ne '') {
- $failsafechecked{'zero'} = ' checked="checked"';
- $failsafe = 'zero';
- $failsafechecked{'off'} = '';
- }
- }
} else {
if ($autorun) {
$runon = ' checked="checked" ';
@@ -3822,93 +1841,56 @@ sub print_autoenroll {
$coownerson.' value="1" />'.&mt('Yes').' '.
''.
- ''.
- ''.&mt('Failsafe for no drops when institutional data missing').' | '.
- ''.
- ' '.
- ' '.
- ''.
- ''.
- ''.
- &mt('Threshold for number of students in section to drop: [_1]',
- '').
- ' |
';
- $$rowtotal += 4;
+ '';
+ $$rowtotal += 3;
return $datatable;
}
sub print_autoupdate {
my ($position,$dom,$settings,$rowtotal) = @_;
- my ($enable,$datatable);
+ my $datatable;
if ($position eq 'top') {
- my %choices = &Apache::lonlocal::texthash (
- run => 'Auto-update active?',
- classlists => 'Update information in classlists?',
- unexpired => 'Skip updates for users without active or future roles?',
- lastactive => 'Skip updates for inactive users?',
- );
- my $itemcount = 0;
my $updateon = ' ';
my $updateoff = ' checked="checked" ';
+ my $classlistson = ' ';
+ my $classlistsoff = ' checked="checked" ';
if (ref($settings) eq 'HASH') {
if ($settings->{'run'} eq '1') {
$updateon = $updateoff;
$updateoff = ' ';
}
+ if ($settings->{'classlists'} eq '1') {
+ $classlistson = $classlistsoff;
+ $classlistsoff = ' ';
+ }
}
- $enable = ''.
- ''.$choices{'run'}.' | '.
- ' | ';
+ $datatable .= $dctable.' |
';
}
- $datatable .= $dctable.'';
- $$rowtotal += $rows;
return $datatable;
}
sub print_directorysrch {
- my ($position,$dom,$settings,$rowtotal) = @_;
- my $datatable;
- if ($position eq 'top') {
- my $instsrchon = ' ';
- my $instsrchoff = ' checked="checked" ';
- my ($exacton,$containson,$beginson);
- my $instlocalon = ' ';
- my $instlocaloff = ' checked="checked" ';
- if (ref($settings) eq 'HASH') {
- if ($settings->{'available'} eq '1') {
- $instsrchon = $instsrchoff;
- $instsrchoff = ' ';
- }
- if ($settings->{'localonly'} eq '1') {
- $instlocalon = $instlocaloff;
- $instlocaloff = ' ';
- }
- if (ref($settings->{'searchtypes'}) eq 'ARRAY') {
- foreach my $type (@{$settings->{'searchtypes'}}) {
- if ($type eq 'exact') {
- $exacton = ' checked="checked" ';
- } elsif ($type eq 'contains') {
- $containson = ' checked="checked" ';
- } elsif ($type eq 'begins') {
- $beginson = ' checked="checked" ';
- }
- }
- } else {
- if ($settings->{'searchtypes'} eq 'exact') {
- $exacton = ' checked="checked" ';
- } elsif ($settings->{'searchtypes'} eq 'contains') {
- $containson = ' checked="checked" ';
- } elsif ($settings->{'searchtypes'} eq 'specify') {
+ my ($dom,$settings,$rowtotal) = @_;
+ my $srchon = ' ';
+ my $srchoff = ' checked="checked" ';
+ my ($exacton,$containson,$beginson);
+ my $localon = ' ';
+ my $localoff = ' checked="checked" ';
+ if (ref($settings) eq 'HASH') {
+ if ($settings->{'available'} eq '1') {
+ $srchon = $srchoff;
+ $srchoff = ' ';
+ }
+ if ($settings->{'localonly'} eq '1') {
+ $localon = $localoff;
+ $localoff = ' ';
+ }
+ if (ref($settings->{'searchtypes'}) eq 'ARRAY') {
+ foreach my $type (@{$settings->{'searchtypes'}}) {
+ if ($type eq 'exact') {
$exacton = ' checked="checked" ';
+ } elsif ($type eq 'contains') {
$containson = ' checked="checked" ';
+ } elsif ($type eq 'begins') {
+ $beginson = ' checked="checked" ';
}
}
- }
- my ($searchtitles,$titleorder) = &sorted_searchtitles();
- my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
-
- my $numinrow = 4;
- my $cansrchrow = 0;
- $datatable=''.
- ''.&mt('Institutional directory search available?').' | '.
- ''.
- ''.&mt('Yes').' '.
- ''.&mt('No').' | '.
- '
'.
- ''.&mt('Other domains can search institution?').' | '.
- ''.
- ''.&mt('Yes').' '.
- ''.&mt('No').' | '.
- '
';
- $$rowtotal += 2;
- if (ref($usertypes) eq 'HASH') {
- if (keys(%{$usertypes}) > 0) {
- $datatable .= &insttypes_row($settings,$types,$usertypes,$dom,
- $numinrow,$othertitle,'cansearch',
- $rowtotal);
- $cansrchrow = 1;
+ } else {
+ if ($settings->{'searchtypes'} eq 'exact') {
+ $exacton = ' checked="checked" ';
+ } elsif ($settings->{'searchtypes'} eq 'contains') {
+ $containson = ' checked="checked" ';
+ } elsif ($settings->{'searchtypes'} eq 'specify') {
+ $exacton = ' checked="checked" ';
+ $containson = ' checked="checked" ';
}
}
- if ($cansrchrow) {
- $$rowtotal ++;
- $datatable .= '';
- } else {
- $datatable .= '
';
+ }
+ my ($searchtitles,$titleorder) = &sorted_searchtitles();
+ my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
+
+ my $numinrow = 4;
+ my $cansrchrow = 0;
+ my $datatable='
'.
+ ''.&mt('Directory search available?').' | '.
+ ''.
+ ''.&mt('Yes').' '.
+ ''.&mt('No').' | '.
+ '
'.
+ ''.&mt('Other domains can search?').' | '.
+ ''.
+ ''.&mt('Yes').' '.
+ ''.&mt('No').' | '.
+ '
';
+ $$rowtotal += 2;
+ if (ref($usertypes) eq 'HASH') {
+ if (keys(%{$usertypes}) > 0) {
+ $datatable .= &insttypes_row($settings,$types,$usertypes,$dom,
+ $numinrow,$othertitle,'cansearch');
+ $cansrchrow = 1;
}
- $datatable .= ''.&mt('Supported search methods').
- ' | | ';
+ $$rowtotal ++;
+ if ($cansrchrow) {
+ $datatable .= '';
} else {
- my $domsrchon = ' checked="checked" ';
- my $domsrchoff = ' ';
- my $domlocalon = ' ';
- my $domlocaloff = ' checked="checked" ';
- if (ref($settings) eq 'HASH') {
- if ($settings->{'lclocalonly'} eq '1') {
- $domlocalon = $domlocaloff;
- $domlocaloff = ' ';
- }
- if ($settings->{'lcavailable'} eq '0') {
- $domsrchoff = $domsrchon;
- $domsrchon = ' ';
- }
- }
- $datatable='
'.
- ''.&mt('LON-CAPA directory search available?').' | '.
- ''.
- ''.&mt('Yes').' '.
- ''.&mt('No').' | '.
- '
'.
- ''.&mt('Other domains can search LON-CAPA domain?').' | '.
- ''.
- ''.&mt('Yes').' '.
- ''.&mt('No').' | '.
- '
';
- $$rowtotal += 2;
+ $datatable .= '';
}
+ $datatable .= ''.&mt('Search latitude').' | '.
+ ''.
+ ''.
+ ''.&mt('Exact match').
+ ' '.
+ ''.&mt('Begins with').
+ ' '.
+ ''.&mt('Contains').
+ ' |
';
+ $$rowtotal ++;
return $datatable;
}
sub print_contacts {
- my ($position,$dom,$settings,$rowtotal) = @_;
+ my ($dom,$settings,$rowtotal) = @_;
my $datatable;
my @contacts = ('adminemail','supportemail');
- my (%checked,%to,%otheremails,%bccemails,%includestr,%includeloc,%currfield,
- $maxsize,$fields,$fieldtitles,$fieldoptions,$possoptions,@mailings,%lonstatus);
- if ($position eq 'top') {
- if (ref($settings) eq 'HASH') {
- foreach my $item (@contacts) {
- if (exists($settings->{$item})) {
- $to{$item} = $settings->{$item};
- }
- }
- }
- } elsif ($position eq 'middle') {
- @mailings = ('errormail','packagesmail','lonstatusmail','requestsmail',
- 'updatesmail','idconflictsmail','hostipmail');
- foreach my $type (@mailings) {
- $otheremails{$type} = '';
- }
- } elsif ($position eq 'lower') {
- if (ref($settings) eq 'HASH') {
- if (ref($settings->{'lonstatus'}) eq 'HASH') {
- %lonstatus = %{$settings->{'lonstatus'}};
- }
- }
- } else {
- @mailings = ('helpdeskmail','otherdomsmail');
- foreach my $type (@mailings) {
- $otheremails{$type} = '';
- }
- $bccemails{'helpdeskmail'} = '';
- $bccemails{'otherdomsmail'} = '';
- $includestr{'helpdeskmail'} = '';
- $includestr{'otherdomsmail'} = '';
- ($fields,$fieldtitles,$fieldoptions,$possoptions) = &helpform_fields();
+ my (%checked,%to,%otheremails,%bccemails);
+ my @mailings = ('errormail','packagesmail','lonstatusmail','helpdeskmail',
+ 'requestsmail');
+ foreach my $type (@mailings) {
+ $otheremails{$type} = '';
}
+ $bccemails{'helpdeskmail'} = '';
if (ref($settings) eq 'HASH') {
- unless (($position eq 'top') || ($position eq 'lower')) {
- foreach my $type (@mailings) {
- if (exists($settings->{$type})) {
- if (ref($settings->{$type}) eq 'HASH') {
- foreach my $item (@contacts) {
- if ($settings->{$type}{$item}) {
- $checked{$type}{$item} = ' checked="checked" ';
- }
- }
- $otheremails{$type} = $settings->{$type}{'others'};
- if (($type eq 'helpdeskmail') || ($type eq 'otherdomsmail')) {
- $bccemails{$type} = $settings->{$type}{'bcc'};
- if ($settings->{$type}{'include'} ne '') {
- ($includeloc{$type},$includestr{$type}) = split(/:/,$settings->{$type}{'include'},2);
- $includestr{$type} = &unescape($includestr{$type});
- }
- }
- }
- } elsif ($type eq 'lonstatusmail') {
- $checked{'lonstatusmail'}{'adminemail'} = ' checked="checked" ';
- }
+ foreach my $item (@contacts) {
+ if (exists($settings->{$item})) {
+ $to{$item} = $settings->{$item};
}
}
- if ($position eq 'bottom') {
- foreach my $type (@mailings) {
- $bccemails{$type} = $settings->{$type}{'bcc'};
- if ($settings->{$type}{'include'} ne '') {
- ($includeloc{$type},$includestr{$type}) = split(/:/,$settings->{$type}{'include'},2);
- $includestr{$type} = &unescape($includestr{$type});
- }
- }
- if (ref($settings->{'helpform'}) eq 'HASH') {
- if (ref($fields) eq 'ARRAY') {
- foreach my $field (@{$fields}) {
- $currfield{$field} = $settings->{'helpform'}{$field};
+ foreach my $type (@mailings) {
+ if (exists($settings->{$type})) {
+ if (ref($settings->{$type}) eq 'HASH') {
+ foreach my $item (@contacts) {
+ if ($settings->{$type}{$item}) {
+ $checked{$type}{$item} = ' checked="checked" ';
+ }
}
- }
- if (exists($settings->{'helpform'}{'maxsize'})) {
- $maxsize = $settings->{'helpform'}{'maxsize'};
- } else {
- $maxsize = '1.0';
- }
- } else {
- if (ref($fields) eq 'ARRAY') {
- foreach my $field (@{$fields}) {
- $currfield{$field} = 'yes';
+ $otheremails{$type} = $settings->{$type}{'others'};
+ if ($type eq 'helpdeskmail') {
+ $bccemails{$type} = $settings->{$type}{'bcc'};
}
}
- $maxsize = '1.0';
+ } elsif ($type eq 'lonstatusmail') {
+ $checked{'lonstatusmail'}{'adminemail'} = ' checked="checked" ';
}
}
} else {
- if ($position eq 'top') {
- $to{'supportemail'} = $Apache::lonnet::perlvar{'lonSupportEMail'};
- $to{'adminemail'} = $Apache::lonnet::perlvar{'lonAdmEMail'};
- $checked{'errormail'}{'adminemail'} = ' checked="checked" ';
- $checked{'packagesmail'}{'adminemail'} = ' checked="checked" ';
- $checked{'lonstatusmail'}{'adminemail'} = ' checked="checked" ';
- $checked{'requestsmail'}{'adminemail'} = ' checked="checked" ';
- $checked{'updatesmail'}{'adminemail'} = ' checked="checked" ';
- $checked{'idconflictsmail'}{'adminemail'} = ' checked="checked" ';
- $checked{'hostipmail'}{'adminemail'} = ' checked="checked" ';
- } elsif ($position eq 'bottom') {
- $checked{'helpdeskmail'}{'supportemail'} = ' checked="checked" ';
- $checked{'otherdomsmail'}{'supportemail'} = ' checked="checked" ';
- if (ref($fields) eq 'ARRAY') {
- foreach my $field (@{$fields}) {
- $currfield{$field} = 'yes';
- }
- }
- $maxsize = '1.0';
- }
+ $to{'supportemail'} = $Apache::lonnet::perlvar{'lonSupportEMail'};
+ $to{'adminemail'} = $Apache::lonnet::perlvar{'lonAdmEMail'};
+ $checked{'errormail'}{'adminemail'} = ' checked="checked" ';
+ $checked{'packagesmail'}{'adminemail'} = ' checked="checked" ';
+ $checked{'helpdeskmail'}{'supportemail'} = ' checked="checked" ';
+ $checked{'lonstatusmail'}{'adminemail'} = ' checked="checked" ';
+ $checked{'requestsmail'}{'adminemail'} = ' checked="checked" ';
}
my ($titles,$short_titles) = &contact_titles();
my $rownum = 0;
my $css_class;
- if ($position eq 'top') {
- foreach my $item (@contacts) {
- $css_class = $rownum%2?' class="LC_odd_row"':'';
- $datatable .= ''.
- ''.$titles->{$item}.
- ' | '.
- ' |
';
- $rownum ++;
- }
- } elsif ($position eq 'bottom') {
- $css_class = $rownum%2?' class="LC_odd_row"':'';
- $datatable .= ''.
- ''.&mt('Extra helpdesk form fields:').' '.
- &mt('(e-mail, subject, and description always shown)').
- ' | ';
- if ((ref($fields) eq 'ARRAY') && (ref($fieldtitles) eq 'HASH') &&
- (ref($fieldoptions) eq 'HASH') && (ref($possoptions) eq 'HASH')) {
- $datatable .= '';
- }
- $datatable .= ' |
'."\n";
+ foreach my $item (@contacts) {
$rownum ++;
+ $css_class = $rownum%2?' class="LC_odd_row"':'';
+ $datatable .= ''.
+ ''.$titles->{$item}.
+ ' | '.
+ ' |
';
}
- unless (($position eq 'top') || ($position eq 'lower')) {
- foreach my $type (@mailings) {
- $css_class = $rownum%2?' class="LC_odd_row"':'';
- $datatable .= ''.
- ''.
- $titles->{$type}.': | '.
- '';
- if (($type eq 'helpdeskmail') || ($type eq 'otherdomsmail')) {
- $datatable .= ''.
- '';
- }
- $datatable .= ' |
'."\n";
- $rownum ++;
- }
- }
- if ($position eq 'middle') {
- my %choices;
- my $corelink = &core_link_msu();
- $choices{'reporterrors'} = &mt('E-mail error reports to [_1]',$corelink);
- $choices{'reportupdates'} = &mt('E-mail record of completed LON-CAPA updates to [_1]',
- $corelink);
- $choices{'reportstatus'} = &mt('E-mail status if errors above threshold to [_1]',$corelink);
- my @toggles = ('reporterrors','reportupdates','reportstatus');
- my %defaultchecked = ('reporterrors' => 'on',
- 'reportupdates' => 'on',
- 'reportstatus' => 'on');
- (my $reports,$rownum) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked,
- \%choices,$rownum);
- $datatable .= $reports;
- } elsif ($position eq 'lower') {
- my (%current,%excluded,%weights);
- my ($defaults,$names) = &Apache::loncommon::lon_status_items();
- if ($lonstatus{'threshold'} =~ /^\d+$/) {
- $current{'errorthreshold'} = $lonstatus{'threshold'};
- } else {
- $current{'errorthreshold'} = $defaults->{'threshold'};
- }
- if ($lonstatus{'sysmail'} =~ /^\d+$/) {
- $current{'errorsysmail'} = $lonstatus{'sysmail'};
- } else {
- $current{'errorsysmail'} = $defaults->{'sysmail'};
- }
- if (ref($lonstatus{'weights'}) eq 'HASH') {
- foreach my $type ('E','W','N','U') {
- if ($lonstatus{'weights'}{$type} =~ /^\d+$/) {
- $weights{$type} = $lonstatus{'weights'}{$type};
- } else {
- $weights{$type} = $defaults->{$type};
- }
- }
- } else {
- foreach my $type ('E','W','N','U') {
- $weights{$type} = $defaults->{$type};
- }
- }
- if (ref($lonstatus{'excluded'}) eq 'ARRAY') {
- if (@{$lonstatus{'excluded'}} > 0) {
- map {$excluded{$_} = 1; } @{$lonstatus{'excluded'}};
- }
- }
- foreach my $item ('errorthreshold','errorsysmail') {
- $css_class = $rownum%2?' class="LC_odd_row"':'';
- $datatable .= ''.
- ''.
- $titles->{$item}.
- ' | '.
- ' |
';
- $rownum ++;
- }
+ foreach my $type (@mailings) {
+ $rownum ++;
$css_class = $rownum%2?' class="LC_odd_row"':'';
$datatable .= ''.
+ ''.
+ $titles->{$type}.': | '.
''.
- ''.$titles->{'errorweights'}.
- ' | |
';
- $rownum ++;
- $css_class = $rownum%2?' class="LC_odd_row"':'';
- $datatable .= ''.
- $titles->{'errorexcluded'}.' | '.
- ' |
';
- $rownum ++;
- } elsif ($position eq 'bottom') {
- my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
- my (@posstypes,%usertypeshash);
- if (ref($types) eq 'ARRAY') {
- @posstypes = @{$types};
- }
- if (@posstypes) {
- if (ref($usertypes) eq 'HASH') {
- %usertypeshash = %{$usertypes};
- }
- my @overridden;
- my $numinrow = 4;
- if (ref($settings) eq 'HASH') {
- if (ref($settings->{'overrides'}) eq 'HASH') {
- foreach my $key (sort(keys(%{$settings->{'overrides'}}))) {
- if (ref($settings->{'overrides'}{$key}) eq 'HASH') {
- push(@overridden,$key);
- foreach my $item (@contacts) {
- if ($settings->{'overrides'}{$key}{$item}) {
- $checked{'override_'.$key}{$item} = ' checked="checked" ';
- }
- }
- $otheremails{'override_'.$key} = $settings->{'overrides'}{$key}{'others'};
- $bccemails{'override_'.$key} = $settings->{'overrides'}{$key}{'bcc'};
- $includeloc{'override_'.$key} = '';
- $includestr{'override_'.$key} = '';
- if ($settings->{'overrides'}{$key}{'include'} ne '') {
- ($includeloc{'override_'.$key},$includestr{'override_'.$key}) =
- split(/:/,$settings->{'overrides'}{$key}{'include'},2);
- $includestr{'override_'.$key} = &unescape($includestr{'override_'.$key});
- }
- }
- }
- }
- }
- my $customclass = 'LC_helpdesk_override';
- my $optionsprefix = 'LC_options_helpdesk_';
-
- my $onclicktypes = "toggleHelpdeskRow(this.form,'overrides','$customclass','$optionsprefix');";
- $datatable .= &insttypes_row($settings,$types,$usertypes,$dom,
- $numinrow,$othertitle,'overrides',
- \$rownum,$onclicktypes,$customclass);
- $rownum ++;
- $usertypeshash{'default'} = $othertitle;
- foreach my $status (@posstypes) {
- my $css_class;
- if ($rownum%2) {
- $css_class = 'LC_odd_row ';
- }
- $css_class .= $customclass;
- my $rowid = $optionsprefix.$status;
- my $hidden = 1;
- my $currstyle = 'display:none';
- if (grep(/^\Q$status\E$/,@overridden)) {
- $currstyle = 'display:table-row';
- $hidden = 0;
- }
- my $key = 'override_'.$status;
- $datatable .= &overridden_helpdesk($checked{$key},$otheremails{$key},$bccemails{$key},
- $includeloc{$key},$includestr{$key},$status,$rowid,
- $usertypeshash{$status},$css_class,$currstyle,
- \@contacts,$short_titles);
- unless ($hidden) {
- $rownum ++;
- }
- }
+ '';
+ foreach my $item (@contacts) {
+ $datatable .= ''.
+ ''.$short_titles->{$item}.
+ ' ';
+ }
+ $datatable .= '
'.&mt('Others').': '.
+ '';
+ if ($type eq 'helpdeskmail') {
+ $datatable .= '
'.&mt('Bcc:').(' 'x6).
+ '';
}
+ $datatable .= ''."\n";
}
$$rowtotal += $rownum;
return $datatable;
}
-sub core_link_msu {
- return &Apache::loncommon::modal_link('http://loncapa.org/core.html',
- &mt('LON-CAPA core group - MSU'),600,500);
-}
-
-sub overridden_helpdesk {
- my ($checked,$otheremails,$bccemails,$includeloc,$includestr,$type,$rowid,
- $typetitle,$css_class,$rowstyle,$contacts,$short_titles) = @_;
- my $class = 'LC_left_item';
- if ($css_class) {
- $css_class = ' class="'.$css_class.'"';
- }
- if ($rowid) {
- $rowid = ' id="'.$rowid.'"';
- }
- if ($rowstyle) {
- $rowstyle = ' style="'.$rowstyle.'"';
- }
- my ($output,$description);
- $description = &mt('Helpdesk requests from: [_1] in this domain (overrides default)',"$typetitle");
- $output = ''.
- "$description | \n".
- ''.
- ''.
- ''.
- ' |
'."\n";
- return $output;
-}
-
-sub contacts_javascript {
- return <<"ENDSCRIPT";
-
-
-
-ENDSCRIPT
-}
-
sub print_helpsettings {
- my ($position,$dom,$settings,$rowtotal) = @_;
- my $confname = $dom.'-domainconfig';
- my $formname = 'display';
- my ($datatable,$itemcount);
- if ($position eq 'top') {
- $itemcount = 1;
- my (%choices,%defaultchecked,@toggles);
- $choices{'submitbugs'} = &mt('Display link to: [_1]?',
- &Apache::loncommon::modal_link('http://bugs.loncapa.org',
- &mt('LON-CAPA bug tracker'),600,500));
- %defaultchecked = ('submitbugs' => 'on');
- @toggles = ('submitbugs');
- ($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked,
- \%choices,$itemcount);
- $$rowtotal ++;
- } else {
- my $css_class;
- my %existing=&Apache::lonnet::dump('roles',$dom,$confname,'rolesdef_');
- my (%customroles,%ordered,%current);
- if (ref($settings) eq 'HASH') {
- if (ref($settings->{'adhoc'}) eq 'HASH') {
- %current = %{$settings->{'adhoc'}};
- }
- }
- my $count = 0;
- foreach my $key (sort(keys(%existing))) {
- if ($key=~/^rolesdef\_(\w+)$/) {
- my $rolename = $1;
- my (%privs,$order);
- ($privs{'system'},$privs{'domain'},$privs{'course'}) = split(/\_/,$existing{$key});
- $customroles{$rolename} = \%privs;
- if (ref($current{$rolename}) eq 'HASH') {
- $order = $current{$rolename}{'order'};
- }
- if ($order eq '') {
- $order = $count;
- }
- $ordered{$order} = $rolename;
- $count++;
- }
- }
- my $maxnum = scalar(keys(%ordered));
- my @roles_by_num = ();
- foreach my $item (sort {$a <=> $b } (keys(%ordered))) {
- push(@roles_by_num,$item);
- }
- my $context = 'domprefs';
- my $crstype = 'Course';
- my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
- my @accesstypes = ('all','dh','da','none');
- my ($numstatustypes,@jsarray);
- if (ref($types) eq 'ARRAY') {
- if (@{$types} > 0) {
- $numstatustypes = scalar(@{$types});
- push(@accesstypes,'status');
- @jsarray = ('bystatus');
- }
- }
- my %domhelpdesk = &Apache::lonnet::get_active_domroles($dom,['dh','da']);
- if (keys(%domhelpdesk)) {
- push(@accesstypes,('inc','exc'));
- push(@jsarray,('notinc','notexc'));
- }
- my $hiddenstr = join("','",@jsarray);
- my $context = 'domprefs';
- my $crstype = 'Course';
- my $prefix = 'helproles_';
- my $add_class = 'LC_hidden';
- foreach my $num (@roles_by_num) {
- my $role = $ordered{$num};
- my ($desc,$access,@statuses);
- if (ref($current{$role}) eq 'HASH') {
- $desc = $current{$role}{'desc'};
- $access = $current{$role}{'access'};
- if (ref($current{$role}{'insttypes'}) eq 'ARRAY') {
- @statuses = @{$current{$role}{'insttypes'}};
- }
- }
- if ($desc eq '') {
- $desc = $role;
- }
- my $identifier = 'custhelp'.$num;
- my %full=();
- my %levels= (
- course => {},
- domain => {},
- system => {},
- );
- my %levelscurrent=(
- course => {},
- domain => {},
- system => {},
- );
- &Apache::lonuserutils::custom_role_privs($customroles{$role},\%full,\%levels,\%levelscurrent);
- my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype);
- $css_class = $itemcount%2?' class="LC_odd_row"':'';
- my $chgstr = ' onchange="javascript:reorderHelpRoles(this.form,'."'helproles_".$num."_pos'".');"';
- $datatable .= ''.$role.' '.
- ''.(' 'x2).
- ''.
- ' | '.
- ''.
- &helpdeskroles_access($dom,$prefix,$num,$add_class,$current{$role},\@accesstypes,
- $othertitle,$usertypes,$types,\%domhelpdesk).
- ' | ';
- $itemcount ++;
- }
- $css_class = $itemcount%2?' class="LC_odd_row"':'';
- my $newcust = 'custhelp'.$count;
- my (%privs,%levelscurrent);
- my %full=();
- my %levels= (
- course => {},
- domain => {},
- system => {},
- );
- &Apache::lonuserutils::custom_role_privs(\%privs,\%full,\%levels,\%levelscurrent);
- my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype);
- my $chgstr = ' onchange="javascript:reorderHelpRoles(this.form,'."'helproles_".$count."_pos'".');"';
- $datatable .= '
'.
- ''."\n".
- ' '."\n".
- ''. &mt('Add').
- ' | '.
- ''.
- &helpdeskroles_access($dom,$prefix,$count,'',undef,\@accesstypes,$othertitle,
- $usertypes,$types,\%domhelpdesk).
- ''.
- &helpsettings_javascript(\@roles_by_num,$maxnum,$hiddenstr,$formname).
- ' |
';
- $count ++;
- $$rowtotal += $count;
- }
- return $datatable;
-}
-
-sub adhocbutton {
- my ($prefix,$num,$field,$visibility) = @_;
- my %lt = &Apache::lonlocal::texthash(
- show => 'Show details',
- hide => 'Hide details',
- );
- return ''.(' 'x10).
- ''.(' 'x2).''.(' 'x2);
-}
-
-sub helpsettings_javascript {
- my ($roles_by_num,$total,$hiddenstr,$formname) = @_;
- return unless(ref($roles_by_num) eq 'ARRAY');
- my %html_js_lt = &Apache::lonlocal::texthash(
- show => 'Show details',
- hide => 'Hide details',
- );
- &html_escape(\%html_js_lt);
- my $jstext = ' var helproles = Array('."'".join("','",@{$roles_by_num})."'".');'."\n";
- return <<"ENDSCRIPT";
-
-
-ENDSCRIPT
-}
-
-sub helpdeskroles_access {
- my ($dom,$prefix,$num,$add_class,$current,$accesstypes,$othertitle,
- $usertypes,$types,$domhelpdesk) = @_;
- return unless ((ref($accesstypes) eq 'ARRAY') && (ref($domhelpdesk) eq 'HASH'));
- my %lt = &Apache::lonlocal::texthash(
- 'rou' => 'Role usage',
- 'whi' => 'Which helpdesk personnel may use this role?',
- 'all' => 'All with domain helpdesk or helpdesk assistant role',
- 'dh' => 'All with domain helpdesk role',
- 'da' => 'All with domain helpdesk assistant role',
- 'none' => 'None',
- 'status' => 'Determined based on institutional status',
- 'inc' => 'Include all, but exclude specific personnel',
- 'exc' => 'Exclude all, but include specific personnel',
- );
- my %usecheck = (
- all => ' checked="checked"',
- );
- my %displaydiv = (
- status => 'none',
- inc => 'none',
- exc => 'none',
- priv => 'block',
- );
- my $output;
- if (ref($current) eq 'HASH') {
- if (($current->{'access'} ne '') && ($current->{'access'} ne 'all')) {
- if (grep(/^\Q$current->{access}\E$/,@{$accesstypes})) {
- $usecheck{$current->{access}} = $usecheck{'all'};
- delete($usecheck{'all'});
- if ($current->{access} =~ /^(status|inc|exc)$/) {
- my $access = $1;
- $displaydiv{$access} = 'inline';
- } elsif ($current->{access} eq 'none') {
- $displaydiv{'priv'} = 'none';
- }
- }
- }
- }
- $output = '
';
- }
- $output .= '';
- return $output;
-}
sub radiobutton_prefs {
- my ($settings,$toggles,$defaultchecked,$choices,$itemcount,$onclick,
- $additional,$align,$firstval) = @_;
+ my ($settings,$toggles,$defaultchecked,$choices,$itemcount) = @_;
return unless ((ref($toggles) eq 'ARRAY') && (ref($defaultchecked) eq 'HASH') &&
(ref($choices) eq 'HASH'));
@@ -5054,2317 +2283,64 @@ sub radiobutton_prefs {
}
}
}
- if ($onclick) {
- $onclick = ' onclick="'.$onclick.'"';
- }
foreach my $item (@{$toggles}) {
$css_class = $itemcount%2?' class="LC_odd_row"':'';
$datatable .=
- ''.
- ''.$choices->{$item}.
- ' | ';
- if ($align eq 'left') {
- $datatable .= '';
- } else {
- $datatable .= ' | ';
- }
- $datatable .= '';
- if ($firstval eq 'no') {
- $datatable .=
- ''.&mt('No').
- ' '.&mt('Yes').'';
- } else {
- $datatable .=
- ''.&mt('Yes').
- ' '.&mt('No').'';
- }
- $datatable .= ''.$additional.' |
';
+ ''.$choices->{$item}.
+ ' | '.
+ ''.
+ ''.&mt('Yes').
+ ' '.&mt('No').''.
+ ' | '.
+ '
';
$itemcount ++;
}
return ($datatable,$itemcount);
}
-sub print_ltitools {
- my ($position,$dom,$settings,$rowtotal) = @_;
- my (%rules,%encrypt,%privkeys,%linkprot);
- if (ref($settings) eq 'HASH') {
- if ($position eq 'top') {
- if (exists($settings->{'encrypt'})) {
- if (ref($settings->{'encrypt'}) eq 'HASH') {
- foreach my $key (keys(%{$settings->{'encrypt'}})) {
- $encrypt{'toolsec_'.$key} = $settings->{'encrypt'}{$key};
- }
- }
- }
- if (exists($settings->{'private'})) {
- if (ref($settings->{'private'}) eq 'HASH') {
- if (ref($settings->{'private'}) eq 'HASH') {
- if (ref($settings->{'private'}{'keys'}) eq 'ARRAY') {
- map { $privkeys{$_} = 1; } (@{$settings->{'private'}{'keys'}});
- }
- }
- }
- }
- } elsif ($position eq 'middle') {
- if (exists($settings->{'rules'})) {
- if (ref($settings->{'rules'}) eq 'HASH') {
- %rules = %{$settings->{'rules'}};
- }
- }
- } else {
- foreach my $key ('encrypt','private','rules') {
- if (exists($settings->{$key})) {
- delete($settings->{$key});
- }
- }
- }
- }
- my $datatable;
- my $itemcount = 1;
- if ($position eq 'top') {
- $datatable = &secrets_form($dom,'toolsec',\%encrypt,\%privkeys,$rowtotal);
- } elsif ($position eq 'middle') {
- $datatable = &password_rules('toolsecrets',\$itemcount,\%rules);
- $$rowtotal += $itemcount;
- } else {
- $datatable = &Apache::courseprefs::print_ltitools($dom,'',$settings,\$rowtotal,'','','domain');
- }
- return $datatable;
-}
-
-sub ltitools_names {
- my %lt = &Apache::lonlocal::texthash(
- 'title' => 'Title',
- 'version' => 'Version',
- 'msgtype' => 'Message Type',
- 'sigmethod' => 'Signature Method',
- 'url' => 'URL',
- 'key' => 'Key',
- 'lifetime' => 'Nonce lifetime (s)',
- 'secret' => 'Secret',
- 'icon' => 'Icon',
- 'user' => 'User',
- 'fullname' => 'Full Name',
- 'firstname' => 'First Name',
- 'lastname' => 'Last Name',
- 'email' => 'E-mail',
- 'roles' => 'Role',
- 'window' => 'Window',
- 'tab' => 'Tab',
- 'iframe' => 'iFrame',
- 'height' => 'Height',
- 'width' => 'Width',
- 'linktext' => 'Default Link Text',
- 'explanation' => 'Default Explanation',
- 'passback' => 'Tool can return grades:',
- 'roster' => 'Tool can retrieve roster:',
- 'crstarget' => 'Display target',
- 'crslabel' => 'Course label',
- 'crstitle' => 'Course title',
- 'crslinktext' => 'Link Text',
- 'crsexplanation' => 'Explanation',
- 'crsappend' => 'Provider URL',
- );
- return %lt;
-}
-
-sub secrets_form {
- my ($dom,$context,$encrypt,$privkeys,$rowtotal) = @_;
- my @ids=&Apache::lonnet::current_machine_ids();
- my %servers = &Apache::lonnet::get_servers($dom,'library');
- my $primary = &Apache::lonnet::domain($dom,'primary');
- my ($css_class,$extra,$numshown,$itemcount,$output);
- $itemcount = 0;
- foreach my $hostid (sort(keys(%servers))) {
- my ($showextra,$divsty,$switch);
- if ($hostid eq $primary) {
- if ($context eq 'ltisec') {
- if (($encrypt->{'ltisec_consumers'}) || ($encrypt->{'ltisec_domlinkprot'})) {
- $showextra = 1;
- }
- if ($encrypt->{'ltisec_crslinkprot'}) {
- $showextra = 1;
- }
- } else {
- if (($encrypt->{'toolsec_crs'}) || ($encrypt->{'toolsec_dom'})) {
- $showextra = 1;
- }
- }
- unless (grep(/^\Q$hostid\E$/,@ids)) {
- $switch = 1;
- }
- if ($showextra) {
- $numshown ++;
- $divsty = 'display:inline-block';
- } else {
- $divsty = 'display:none';
- }
- $extra .= '';
- }
- }
- my (%choices,@toggles,%defaultchecked);
- if ($context eq 'ltisec') {
- %choices = &Apache::lonlocal::texthash (
- ltisec_crslinkprot => 'Encrypt stored link protection secrets defined in courses',
- ltisec_domlinkprot => 'Encrypt stored link protection secrets defined in domain',
- ltisec_consumers => 'Encrypt stored consumer secrets defined in domain',
- );
- @toggles = qw(ltisec_crslinkprot ltisec_domlinkprot ltisec_consumers);
- %defaultchecked = (
- 'ltisec_crslinkprot' => 'off',
- 'ltisec_domlinkprot' => 'off',
- 'ltisec_consumers' => 'off',
- );
- } else {
- %choices = &Apache::lonlocal::texthash (
- toolsec_crs => 'Encrypt stored external tool secrets defined in courses',
- toolsec_dom => 'Encrypt stored external tool secrets defined in domain',
- );
- @toggles = qw(toolsec_crs toolsec_dom);
- %defaultchecked = (
- 'toolsec_crs' => 'off',
- 'toolsec_dom' => 'off',
- );
- }
- my ($onclick,$itemcount);
- $onclick = 'javascript:toggleLTIEncKey(this.form,'."'$context'".');';
- ($output,$itemcount) = &radiobutton_prefs($encrypt,\@toggles,\%defaultchecked,
- \%choices,$itemcount,$onclick,'','left','no');
-
- $css_class = $itemcount%2?' class="LC_odd_row"':'';
- my $noprivkeysty = 'display:inline-block';
- if ($numshown) {
- $noprivkeysty = 'display:none';
- }
- $output .= ''.&mt('Encryption Key(s)').' | '.
- ''.
- ''.&mt('Not in use').' '.
- $extra.
- ' |
';
- $itemcount ++;
- $$rowtotal += $itemcount;
- return $output;
-}
-
-sub print_lti {
- my ($position,$dom,$settings,$rowtotal) = @_;
- my $itemcount = 1;
- my ($datatable,$css_class);
- my (%rules,%encrypt,%privkeys,%linkprot,%suggestions);
- if (ref($settings) eq 'HASH') {
- if ($position eq 'top') {
- if (exists($settings->{'encrypt'})) {
- if (ref($settings->{'encrypt'}) eq 'HASH') {
- foreach my $key (keys(%{$settings->{'encrypt'}})) {
- if ($key eq 'consumers') {
- $encrypt{'ltisec_'.$key} = $settings->{'encrypt'}{$key};
- } else {
- $encrypt{'ltisec_'.$key.'linkprot'} = $settings->{'encrypt'}{$key};
- }
- }
- }
- }
- if (exists($settings->{'private'})) {
- if (ref($settings->{'private'}) eq 'HASH') {
- if (ref($settings->{'private'}) eq 'HASH') {
- if (ref($settings->{'private'}{'keys'}) eq 'ARRAY') {
- map { $privkeys{$_} = 1; } (@{$settings->{'private'}{'keys'}});
- }
- }
- }
- }
- } elsif ($position eq 'upper') {
- if (exists($settings->{'rules'})) {
- if (ref($settings->{'rules'}) eq 'HASH') {
- %rules = %{$settings->{'rules'}};
- }
- }
- } elsif ($position eq 'middle') {
- if (exists($settings->{'suggested'})) {
- if (ref($settings->{'suggested'}) eq 'HASH') {
- %suggestions = %{$settings->{'suggested'}};
- }
- }
- } elsif ($position eq 'lower') {
- if (exists($settings->{'linkprot'})) {
- if (ref($settings->{'linkprot'}) eq 'HASH') {
- %linkprot = %{$settings->{'linkprot'}};
- if ($linkprot{'lock'}) {
- delete($linkprot{'lock'});
- }
- }
- }
- } else {
- foreach my $key ('encrypt','private','rules','linkprot','suggestions') {
- if (exists($settings->{$key})) {
- delete($settings->{$key});
- }
- }
- }
- }
- if ($position eq 'top') {
- $datatable = &secrets_form($dom,'ltisec',\%encrypt,\%privkeys,$rowtotal);
- } elsif ($position eq 'upper') {
- $datatable = &password_rules('ltisecrets',\$itemcount,\%rules);
- $$rowtotal += $itemcount;
- } elsif ($position eq 'middle') {
- $datatable = &linkprot_suggestions(\%suggestions,\$itemcount);
- $$rowtotal += $itemcount;
- } elsif ($position eq 'lower') {
- $datatable .= &Apache::courseprefs::print_linkprotection($dom,'',$settings,$rowtotal,'','','domain');
- } else {
- my ($switchserver,$switchmessage);
- $switchserver = &check_switchserver($dom);
- $switchmessage = &mt("submit from domain's primary library server: [_1].",$switchserver);
- my $maxnum = 0;
- my %ordered;
- if (ref($settings) eq 'HASH') {
- foreach my $item (keys(%{$settings})) {
- if (ref($settings->{$item}) eq 'HASH') {
- my $num = $settings->{$item}{'order'};
- if ($num eq '') {
- $num = scalar(keys(%{$settings}));
- }
- $ordered{$num} = $item;
- }
- }
- }
- $maxnum = scalar(keys(%ordered));
- my %lt = <i_names();
- if (keys(%ordered)) {
- my @items = sort { $a <=> $b } keys(%ordered);
- for (my $i=0; $i<@items; $i++) {
- $css_class = $itemcount%2?' class="LC_odd_row"':'';
- my $item = $ordered{$items[$i]};
- my ($key,$secret,$usable,$lifetime,$consumer,$requser,$crsinc,$current);
- if (ref($settings->{$item}) eq 'HASH') {
- $key = $settings->{$item}->{'key'};
- $usable = $settings->{$item}->{'usable'};
- $lifetime = $settings->{$item}->{'lifetime'};
- $consumer = $settings->{$item}->{'consumer'};
- $requser = $settings->{$item}->{'requser'};
- $crsinc = $settings->{$item}->{'crsinc'};
- $current = $settings->{$item};
- }
- my $onclickrequser = ' onclick="toggleLTI(this.form,'."'requser','$i'".');"';
- my %checkedrequser = (
- yes => ' checked="checked"',
- no => '',
- );
- if (!$requser) {
- $checkedrequser{'no'} = $checkedrequser{'yes'};
- $checkedrequser{'yes'} = '';
- }
- my $onclickcrsinc = ' onclick="toggleLTI(this.form,'."'crsinc','$i'".');"';
- my %checkedcrsinc = (
- yes => ' checked="checked"',
- no => '',
- );
- if (!$crsinc) {
- $checkedcrsinc{'no'} = $checkedcrsinc{'yes'};
- $checkedcrsinc{'yes'} = '';
- }
- my $chgstr = ' onchange="javascript:reorderLTI(this.form,'."'lti_pos_".$item."'".');"';
- $datatable .= ''
- .''.(' 'x2).
- ''.
- &mt('Delete?').' | '.
- ''.
- ''.<i_options($i,$current,$itemcount,%lt).' |
';
- $itemcount ++;
- }
- }
- $css_class = $itemcount%2?' class="LC_odd_row"':'';
- my $chgstr = ' onchange="javascript:reorderLTI(this.form,'."'lti_pos_add'".');"';
- $datatable .= ''."\n".
- ''."\n".
- ' '."\n".
- ''.&mt('Add').' | '."\n".
- ''.
- ''.<i_options('add',undef,$itemcount,%lt).
- ' | '."\n".
- '
'."\n";
- $itemcount ++;
- }
- $$rowtotal += $itemcount;
- return $datatable;
-}
-
-sub lti_names {
- my %lt = &Apache::lonlocal::texthash(
- 'version' => 'LTI Version',
- 'url' => 'URL',
- 'key' => 'Key',
- 'lifetime' => 'Nonce lifetime (s)',
- 'consumer' => 'Consumer',
- 'secret' => 'Secret',
- 'requser' => "User's identity sent",
- 'crsinc' => "Course's identity sent",
- 'email' => 'Email address',
- 'sourcedid' => 'User ID',
- 'other' => 'Other',
- 'passback' => 'Can return grades to Consumer:',
- 'roster' => 'Can retrieve roster from Consumer:',
- 'topmenu' => 'Display LON-CAPA page header',
- 'inlinemenu'=> 'Display LON-CAPA inline menu',
- );
- return %lt;
-}
-
-sub lti_options {
- my ($num,$current,$itemcount,%lt) = @_;
- my (%checked,%rolemaps,$crssecsrc,$userfield,$cidfield,$callback);
- $checked{'mapuser'}{'sourcedid'} = ' checked="checked"';
- $checked{'mapcrs'}{'course_offering_sourcedid'} = ' checked="checked"';
- $checked{'storecrs'}{'Y'} = ' checked="checked"';
- $checked{'makecrs'}{'N'} = ' checked="checked"';
- $checked{'mapcrstype'} = {};
- $checked{'makeuser'} = {};
- $checked{'selfenroll'} = {};
- $checked{'crssec'} = {};
- $checked{'crssecsrc'} = {};
- $checked{'lcauth'} = {};
- $checked{'menuitem'} = {};
- if ($num eq 'add') {
- $checked{'lcauth'}{'lti'} = ' checked="checked"';
- }
- my $userfieldsty = 'none';
- my $crsfieldsty = 'none';
- my $crssecfieldsty = 'none';
- my $secsrcfieldsty = 'none';
- my $callbacksty = 'none';
- my $passbacksty = 'none';
- my $optionsty = 'block';
- my $crssty = 'block';
- my $lcauthparm;
- my $lcauthparmstyle = 'display:none';
- my $lcauthparmtext;
- my $menusty;
- my $numinrow = 4;
- my %menutitles = <imenu_titles();
-
- if (ref($current) eq 'HASH') {
- if (!$current->{'requser'}) {
- $optionsty = 'none';
- $crssty = 'none';
- } elsif (!$current->{'crsinc'}) {
- $crssty = 'none';
- }
- if (($current->{'mapuser'} ne '') && ($current->{'mapuser'} ne 'lis_person_sourcedid')) {
- $checked{'mapuser'}{'sourcedid'} = '';
- if ($current->{'mapuser'} eq 'lis_person_contact_email_primary') {
- $checked{'mapuser'}{'email'} = ' checked="checked"';
- } else {
- $checked{'mapuser'}{'other'} = ' checked="checked"';
- $userfield = $current->{'mapuser'};
- $userfieldsty = 'inline-block';
- }
- }
- if (($current->{'mapcrs'} ne '') && ($current->{'mapcrs'} ne 'course_offering_sourcedid')) {
- $checked{'mapcrs'}{'course_offering_sourcedid'} = '';
- if ($current->{'mapcrs'} eq 'context_id') {
- $checked{'mapcrs'}{'context_id'} = ' checked="checked"';
- } else {
- $checked{'mapcrs'}{'other'} = ' checked="checked"';
- $cidfield = $current->{'mapcrs'};
- $crsfieldsty = 'inline-block';
- }
- }
- if (ref($current->{'mapcrstype'}) eq 'ARRAY') {
- foreach my $type (@{$current->{'mapcrstype'}}) {
- $checked{'mapcrstype'}{$type} = ' checked="checked"';
- }
- }
- if (!$current->{'storecrs'}) {
- $checked{'storecrs'}{'N'} = $checked{'storecrs'}{'Y'};
- $checked{'storecrs'}{'Y'} = '';
- }
- if ($current->{'makecrs'}) {
- $checked{'makecrs'}{'Y'} = ' checked="checked"';
- }
- if (ref($current->{'makeuser'}) eq 'ARRAY') {
- foreach my $role (@{$current->{'makeuser'}}) {
- $checked{'makeuser'}{$role} = ' checked="checked"';
- }
- }
- if ($current->{'lcauth'} =~ /^(internal|localauth|krb4|krb5|lti)$/) {
- $checked{'lcauth'}{$1} = ' checked="checked"';
- unless (($current->{'lcauth'} eq 'lti') || ($current->{'lcauth'} eq 'internal')) {
- $lcauthparm = $current->{'lcauthparm'};
- $lcauthparmstyle = 'display:table-row';
- if ($current->{'lcauth'} eq 'localauth') {
- $lcauthparmtext = &mt('Local auth argument');
- } else {
- $lcauthparmtext = &mt('Kerberos domain');
- }
- }
- }
- if (ref($current->{'selfenroll'}) eq 'ARRAY') {
- foreach my $role (@{$current->{'selfenroll'}}) {
- $checked{'selfenroll'}{$role} = ' checked="checked"';
- }
- }
- if (ref($current->{'maproles'}) eq 'HASH') {
- %rolemaps = %{$current->{'maproles'}};
- }
- if ($current->{'section'} ne '') {
- $checked{'crssec'}{'Y'} = ' checked="checked"';
- $crssecfieldsty = 'inline-block';
- if ($current->{'section'} eq 'course_section_sourcedid') {
- $checked{'crssecsrc'}{'sourcedid'} = ' checked="checked"';
- } else {
- $checked{'crssecsrc'}{'other'} = ' checked="checked"';
- $crssecsrc = $current->{'section'};
- $secsrcfieldsty = 'inline-block';
- }
- } else {
- $checked{'crssec'}{'N'} = ' checked="checked"';
- }
- if ($current->{'callback'} ne '') {
- $callback = $current->{'callback'};
- $checked{'callback'}{'Y'} = ' checked="checked"';
- $callbacksty = 'inline-block';
- } else {
- $checked{'callback'}{'N'} = ' checked="checked"';
- }
- if ($current->{'topmenu'}) {
- $checked{'topmenu'}{'Y'} = ' checked="checked"';
- } else {
- $checked{'topmenu'}{'N'} = ' checked="checked"';
- }
- if ($current->{'inlinemenu'}) {
- $checked{'inlinemenu'}{'Y'} = ' checked="checked"';
- } else {
- $checked{'inlinemenu'}{'N'} = ' checked="checked"';
- }
- if (($current->{'topmenu'}) || ($current->{'inlinemenu'})) {
- $menusty = 'inline-block';
- if (ref($current->{'lcmenu'}) eq 'ARRAY') {
- foreach my $item (@{$current->{'lcmenu'}}) {
- if (exists($menutitles{$item})) {
- $checked{'menuitem'}{$item} = ' checked="checked"';
- }
- }
- }
- } else {
- $menusty = 'none';
- }
- } else {
- $checked{'makecrs'}{'N'} = ' checked="checked"';
- $checked{'crssec'}{'N'} = ' checked="checked"';
- $checked{'callback'}{'N'} = ' checked="checked"';
- $checked{'topmenu'}{'N'} = ' checked="checked"';
- $checked{'inlinemenu'}{'Y'} = ' checked="checked"';
- $checked{'menuitem'}{'grades'} = ' checked="checked"';
- $menusty = 'inline-block';
- }
- my @coursetypes = ('official','unofficial','community','textbook','lti');
- my %coursetypetitles = &Apache::lonlocal::texthash (
- official => 'Official',
- unofficial => 'Unofficial',
- community => 'Community',
- textbook => 'Textbook',
- lti => 'LTI Provider',
- );
- my @authtypes = ('internal','krb4','krb5','localauth');
- my %shortauth = (
- internal => 'int',
- krb4 => 'krb4',
- krb5 => 'krb5',
- localauth => 'loc'
- );
- my %authnames = &authtype_names();
- my @ltiroles = qw(Learner Instructor ContentDeveloper TeachingAssistant Mentor Member Manager Administrator);
- my @lticourseroles = qw(Learner Instructor TeachingAssistant Mentor);
- my @courseroles = ('cc','in','ta','ep','st');
- my $onclickuser = ' onclick="toggleLTI(this.form,'."'user','$num'".');"';
- my $onclickcrs = ' onclick="toggleLTI(this.form,'."'crs','$num'".');"';
- my $onclicksec = ' onclick="toggleLTI(this.form,'."'sec','$num'".');"';
- my $onclickcallback = ' onclick="toggleLTI(this.form,'."'callback','$num'".');"';
- my $onclicksecsrc = ' onclick="toggleLTI(this.form,'."'secsrc','$num'".')"';
- my $onclicklcauth = ' onclick="toggleLTI(this.form,'."'lcauth','$num'".')"';
- my $onclickmenu = ' onclick="toggleLTI(this.form,'."'lcmenu','$num'".');"';
- my $output = ''.
- ''.
- ''.
- ''.
- ''.
- ''.
- ''.
- ''.
- ''.
- '';
- $output .= '';
-# ''.
-# '