--- loncom/interface/loncommon.pm 2009/11/18 11:18:23 1.915
+++ loncom/interface/loncommon.pm 2010/01/19 15:56:15 1.931
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.915 2009/11/18 11:18:23 droeschl Exp $
+# $Id: loncommon.pm,v 1.931 2010/01/19 15:56:15 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -484,8 +484,8 @@ ENDAUTHORBRW
sub coursebrowser_javascript {
my ($domainfilter,$sec_element,$formname,$role_element,$crstype) = @_;
my $wintitle = &mt('Course Browser');
- if ($crstype ne '') {
- $wintitle = &mt($crstype);
+ if ($crstype eq 'Community') {
+ $wintitle = &mt('Community Browser');
}
my $id_functions = &javascript_index_functions();
my $output = '
@@ -1719,10 +1719,13 @@ sub create_workbook {
my $workbook = Spreadsheet::WriteExcel->new('/home/httpd'.$filename);
if (! defined($workbook)) {
$r->log_error("Error creating excel spreadsheet $filename: $!");
- $r->print('
'.&mt("Unable to create new Excel file. ".
- "This error has been logged. ".
- "Please alert your LON-CAPA administrator").
- '
');
+ $r->print(
+ ''
+ .&mt('Problems occurred in creating the new Excel file.')
+ .' '.&mt('This error has been logged.')
+ .' '.&mt('Please alert your LON-CAPA administrator.')
+ .'
'
+ );
return (undef);
}
#
@@ -1762,9 +1765,13 @@ sub create_text_file {
$fh = Apache::File->new('>/home/httpd'.$filename);
if (! defined($fh)) {
$r->log_error("Couldn't open $filename for output $!");
- $r->print(&mt('Problems occurred in creating the output file. '
- .'This error has been logged. '
- .'Please alert your LON-CAPA administrator.'));
+ $r->print(
+ ''
+ .&mt('Problems occurred in creating the output file.')
+ .' '.&mt('This error has been logged.')
+ .' '.&mt('Please alert your LON-CAPA administrator.')
+ .'
'
+ );
}
return ($fh,$filename)
}
@@ -1877,7 +1884,7 @@ sub select_form {
$selectform.=
'&').'" '.
($key eq $def ? 'selected="selected" ' : '').
- ">".&mt($hash{$key})." \n";
+ ">".$hash{$key}."\n";
}
$selectform.="";
return $selectform;
@@ -4367,18 +4374,30 @@ sub CSTR_pageheader {
} else {
$lastitem = $thisdisfn;
}
- return
+
+ my $output =
''
.&Apache::loncommon::help_open_menu('','',3,'Authoring') #FIXME: Broken? Where is it?
.''.&mt('Construction Space:').' '
.''
.&Apache::lonmenu::constspaceform()
.'
';
+
+ return $output;
}
###############################################
@@ -4503,9 +4522,8 @@ sub bodytag {
$env{'course.'.$env{'request.course.id'}.
'.domain'}.'/'})) {
my $cid = $env{'request.course.id'};
- $dc_info.= $cid.' '.$env{'course.'.$cid.'.internal.coursecode'};
+ $dc_info = $cid.' '.$env{'course.'.$cid.'.internal.coursecode'};
$dc_info =~ s/\s+$//;
- $dc_info = '('.$dc_info.')';
}
$role = '('.$role.') ' if $role;
@@ -4513,7 +4531,9 @@ sub bodytag {
if ($env{'environment.remote'} eq 'off') {
# No Remote
- if ($no_nav_bar) { return $bodytag; }
+ if ($no_nav_bar || $env{'form.inhibitmenu'} eq 'yes') {
+ return $bodytag;
+ }
if ($env{'request.state'} eq 'construct') { $forcereg=1; }
@@ -4521,27 +4541,42 @@ sub bodytag {
# $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls
# }
- $bodytag .= qq|$name $role
- $realm $dc_info
| unless $env{'form.inhibitmenu'};
- if ( $env{'form.inhibitmenu'} eq 'yes'
- || $ENV{'REQUEST_URI'} eq '/adm/logout'
- || $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) {
+ if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) {
+ if ($dc_info) {
+ $dc_info = qq|$dc_info |;
+ }
+ $bodytag .= qq|$name $role
+ $realm $dc_info
|;
return $bodytag;
}
+ unless ($env{'request.symb'} =~ m/\.page___\d+___/) {
+ $bodytag .= qq|$name $role
|;
+ }
+
$bodytag .= Apache::lonhtmlcommon::scripttag(
Apache::lonmenu::utilityfunctions(), 'start');
$bodytag .= Apache::lonmenu::primary_menu();
+ if ($dc_info) {
+ $dc_info = &dc_courseid_toggle($dc_info);
+ }
+ $bodytag .= qq|$realm $dc_info
|;
+
#don't show menus for public users
if($env{'user.name'} ne 'public' && $env{'user.domain'} ne 'public'){
$bodytag .= Apache::lonmenu::secondary_menu();
$bodytag .= Apache::lonmenu::serverform();
- $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end');
- $bodytag .= Apache::lonmenu::innerregister($forcereg) if $forcereg;
+ $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end');
+ if ($env{'request.state'} eq 'construct') {
+ $bodytag .= &Apache::lonmenu::innerregister($forcereg,'',
+ $args->{'bread_crumbs'});
+ } elsif ($forcereg) {
+ $bodytag .= &Apache::lonmenu::innerregister($forcereg);
+ }
}else{
# this is to seperate menu from content when there's no secondary
# menu. Especially needed for public accessible ressources.
@@ -4567,12 +4602,15 @@ sub bodytag {
# Explicit link to get inline menu
my $menu= ($no_inline_link?''
:''.&mt('Switch to Inline Menu Mode').' ');
- $bodytag .= qq|$name $role
- $realm $dc_info
+
+ if ($dc_info) {
+ $dc_info = qq|($dc_info) |;
+ }
+
+ $bodytag .= qq|$name $role
| unless $env{'form.inhibitmenu'};
- #
+ $realm $dc_info
| unless $env{'form.inhibitmenu'};
return(<
@@ -4585,6 +4623,14 @@ $bodytag
ENDBODY
}
+sub dc_courseid_toggle {
+ my ($dc_info) = @_;
+ return ' '.
+ ''.
+ &mt('(More ...)').' '.
+ ''.$dc_info.'
';
+}
+
sub make_attr_string {
my ($register,$attr_ref) = @_;
@@ -4731,11 +4777,6 @@ body {
color:$font;
}
-a:link,
-a:visited {
- font-size:100%;
-}
-
a:focus {
color: red;
background: yellow;
@@ -4762,6 +4803,7 @@ form, .inline {
.LC_filename {
font-family: $mono;
white-space:pre;
+ font-size: 120%;
}
.LC_fileicon {
@@ -4852,9 +4894,7 @@ table.LC_pastsubmission {
margin: 2px;
}
-table#LC_top_nav,
-table#LC_menubuttons,
-table#LC_nav_location {
+table#LC_menubuttons {
width: 100%;
background: $pgbg;
border: 2px;
@@ -4934,41 +4974,6 @@ table#LC_menubuttons img {
border: none;
}
-table#LC_top_nav td {
- background: $tabbg;
- border: none;
- font-size: small;
- vertical-align:top;
- padding:2px 5px 2px 5px;
-}
-
-table#LC_top_nav td a,
-div#LC_top_nav a {
- color: $font;
-}
-
-table#LC_top_nav td.LC_top_nav_logo {
- background: $tabbg;
- text-align: left;
- white-space: nowrap;
- width: 31px;
-}
-
-table#LC_top_nav td.LC_top_nav_logo img {
- border: none;
- vertical-align: bottom;
-}
-
-table#LC_top_nav td.LC_top_nav_exit,
-table#LC_top_nav td.LC_top_nav_help {
- width: 2.0em;
-}
-
-table#LC_top_nav td.LC_top_nav_login {
- width: 4.0em;
- text-align: center;
-}
-
.LC_breadcrumbs_component {
float: right;
margin: 0 1em;
@@ -4981,10 +4986,6 @@ td.LC_table_cell_checkbox {
text-align: center;
}
-table#LC_mainmenu td.LC_mainmenu_column {
- vertical-align: top;
-}
-
.LC_fontsize_small {
font-size: 70%;
}
@@ -5046,11 +5047,6 @@ td.LC_menubuttons_text {
background: $tabbg;
}
-.LC_new_mail {
- background: $tabbg;
- font-weight: bold;
-}
-
table.LC_data_table,
table.LC_mail_list {
border: 1px solid #000000;
@@ -5078,6 +5074,14 @@ table.LC_nested {
width: 100%;
}
+.ui-accordion,
+.ui-accordion table.LC_data_table,
+.ui-accordion table.LC_nested_outer{
+ border: 0px;
+ border-spacing: 0px;
+ margin: 3px;
+}
+
table.LC_data_table tr th,
table.LC_calendar tr th,
table.LC_mail_list tr th,
@@ -5187,6 +5191,22 @@ table.LC_nested tr td.LC_right_item {
text-align: right;
}
+.ui-accordion table.LC_nested tr.LC_odd_row td.LC_left_item,
+.ui-accordion table.LC_nested tr.LC_even_row td.LC_left_item {
+ text-align: right;
+ width: 40%;
+ padding-right:10px;
+ vertical-align: top;
+ padding: 5px;
+}
+
+.ui-accordion table.LC_nested tr.LC_odd_row td.LC_right_item,
+.ui-accordion table.LC_nested tr.LC_even_row td.LC_right_item {
+ text-align: left;
+ width: 60%;
+ padding: 2px 4px;
+}
+
table.LC_nested tr.LC_odd_row td {
background-color: #EEEEEE;
}
@@ -5207,6 +5227,7 @@ table.LC_createuser tr.LC_info_row td {
table.LC_calendar {
border: 1px solid #000000;
border-collapse: collapse;
+ width: 98%;
}
table.LC_calendar_pickdate {
@@ -5216,6 +5237,7 @@ table.LC_calendar_pickdate {
table.LC_calendar tr td {
border: 1px solid #000000;
vertical-align: top;
+ width: 14%;
}
table.LC_calendar tr td.LC_calendar_day_empty {
@@ -5234,12 +5256,6 @@ table.LC_mail_list tr.LC_mail_new:hover
background-color: $mail_new_hover;
}
-table.LC_mail_list tr.LC_mail_even {
-}
-
-table.LC_mail_list tr.LC_mail_odd {
-}
-
table.LC_mail_list tr.LC_mail_read {
background-color: $mail_read;
}
@@ -5519,19 +5535,17 @@ table.LC_notify_front_page td {
.LC_topic_bar {
font-weight: bold;
- width: 100%;
background: $tabbg;
- vertical-align: middle;
- margin: 2ex 0ex 2ex 0ex;
+ margin: 1em 0em 1em 2em;
padding: 3px;
+ font-size: 1.2em;
}
.LC_topic_bar span {
+ left: 0.5em;
+ position: absolute;
vertical-align: middle;
-}
-
-.LC_topic_bar img {
- vertical-align: bottom;
+ font-size: 1.2em;
}
table.LC_course_group_status {
@@ -5643,12 +5657,12 @@ span.LC_prior_string,
span.LC_prior_custom,
span.LC_prior_reaction,
span.LC_prior_math {
- font-family: monospace;
+ font-family: $mono;
white-space: pre;
}
span.LC_prior_string {
- font-family: monospace;
+ font-family: $mono;
white-space: pre;
}
@@ -5681,17 +5695,6 @@ span.LC_cusr_subheading {
font-size: 85%;
}
-table.LC_docs_documents {
- background: #BBBBBB;
- border-width: 0;
- border-collapse: collapse;
-}
-
-table.LC_docs_documents td.LC_docs_document {
- border: 2px solid black;
- padding: 4px;
-}
-
div.LC_docs_entry_move {
border: 1px solid #BBBBBB;
background: #DDDDDD;
@@ -5892,27 +5895,21 @@ img.stift {
vertical-align: middle;
}
-table#LC_mainmenu {
- margin-top:10px;
- width:80%;
-}
-
-table#LC_mainmenu td.LC_mainmenu_col_fieldset {
+table td.LC_mainmenu_col_fieldset {
vertical-align: top;
- width: 45%;
-}
-
-.LC_mainmenu_fieldset_category {
- color: $font;
- background: $pgbg;
- font-size: small;
- font-weight: bold;
}
div.LC_createcourse {
margin: 10px 10px 10px 10px;
}
+.LC_dccid {
+ margin: 0.2em 0 0 0;
+ padding: 0;
+ font-size: 90%;
+ display:none;
+}
+
/* ---- Remove when done ----
# The following styles is part of the redesign of LON-CAPA and are
# subject to change during this project.
@@ -5962,12 +5959,6 @@ h6 {
border: 0;
}
-.LC_Right {
- float: right;
- margin: 0;
- padding: 0;
-}
-
.LC_FormSectionClearButton input {
background-color:transparent;
border: none;
@@ -6003,6 +5994,13 @@ fieldset > legend {
margin: 0.2em 0 0 0;
}
+#LC_realm {
+ margin: 0.2em 0 0 0;
+ padding: 0;
+ font-weight: bold;
+ text-align: center;
+}
+
#LC_nav_bar em {
font-weight: bold;
font-style: normal;
@@ -6013,6 +6011,11 @@ ol.LC_primary_menu {
margin: 0.2em 0 0 0;
}
+span.LC_new_message{
+ font-weight:bold;
+ color: darkred;
+}
+
ol#LC_PathBreadcrumbs {
margin: 0;
}
@@ -6218,7 +6221,6 @@ dl.LC_ListStyleClean dd {
.LC_ListStyleClean,
.LC_ListStyleSimple,
.LC_ListStyleNormal,
-.LC_ListStyle_Border,
.LC_ListStyleSpecial {
/* display:block; */
list-style-position: inside;
@@ -6353,11 +6355,6 @@ table.LC_tableOfContent a {
text-decoration: none;
}
-table.LC_tableBrowseRes tr.LC_trOdd,
-table.LC_tableOfContent tr.LC_trOdd {
- background-color: #EEEEEE;
-}
-
table.LC_tableOfContent img {
border: none;
height: 1.3em;
@@ -6456,6 +6453,11 @@ ul.LC_funclist li {
line-height: 150%;
}
+.ui-accordion .LC_advanced_toggle {
+ float: right;
+ font-size: 90%;
+ padding: 0px 4px
+}
END
}
@@ -6732,6 +6734,11 @@ sub start_page {
# Don't add anything more if only_body wanted
return $result if $args->{'only_body'};
+ #Breadcrumbs for Construction Space provided by &bodytag.
+ if (($env{'environment.remote'} eq 'off') && ($env{'request.state'} eq 'construct')) {
+ return $result;
+ }
+
#Breadcrumbs
if (exists($args->{'bread_crumbs'}) or exists($args->{'bread_crumbs_component'})) {
&Apache::lonhtmlcommon::clear_breadcrumbs();
@@ -9610,6 +9617,8 @@ sub extract_categories {
my $trailstr;
if ($name eq 'instcode') {
$trailstr = &mt('Official courses (with institutional codes)');
+ } elsif ($name eq 'communities') {
+ $trailstr = &mt('Communities');
} else {
$trailstr = $name;
}
@@ -9722,12 +9731,14 @@ cathash - reference to hash of categorie
currcat - scalar with an & separated list of categories assigned to a course.
+type - scalar contains course type (Course or Community).
+
Returns: $output (markup to be displayed)
=cut
sub assign_categories_table {
- my ($cathash,$currcat) = @_;
+ my ($cathash,$currcat,$type) = @_;
my $output;
if (ref($cathash) eq 'HASH') {
my (@cats,@trails,%allitems,%idx,@jsarray,@path,$maxdepth);
@@ -9736,15 +9747,20 @@ sub assign_categories_table {
if (@cats > 0) {
my $itemcount = 0;
if (ref($cats[0]) eq 'ARRAY') {
- $output = &Apache::loncommon::start_data_table();
my @currcategories;
if ($currcat ne '') {
@currcategories = split('&',$currcat);
}
+ my $table;
for (my $i=0; $i<@{$cats[0]}; $i++) {
my $parent = $cats[0][$i];
- my $css_class = $itemcount%2?' class="LC_odd_row"':'';
next if ($parent eq 'instcode');
+ if ($type eq 'Community') {
+ next unless ($parent eq 'communities');
+ } else {
+ next if ($parent eq 'communities');
+ }
+ my $css_class = $itemcount%2?' class="LC_odd_row"':'';
my $item = &escape($parent).'::0';
my $checked = '';
if (@currcategories > 0) {
@@ -9752,18 +9768,26 @@ sub assign_categories_table {
$checked = ' checked="checked"';
}
}
- $output .= ''.
- ' '.$parent.' '.
- ' ';
+ my $parent_title = $parent;
+ if ($parent eq 'communities') {
+ $parent_title = &mt('Communities');
+ }
+ $table .= ''.
+ ' '.$parent_title.' '.
+ ' ';
my $depth = 1;
push(@path,$parent);
- $output .= &assign_category_rows($itemcount,\@cats,$depth,$parent,\@path,\@currcategories);
+ $table .= &assign_category_rows($itemcount,\@cats,$depth,$parent,\@path,\@currcategories);
pop(@path);
- $output .= ' ';
+ $table .= ' ';
$itemcount ++;
}
- $output .= &Apache::loncommon::end_data_table();
+ if ($itemcount) {
+ $output = &Apache::loncommon::start_data_table().
+ $table.
+ &Apache::loncommon::end_data_table();
+ }
}
}
}