Diff for /loncom/interface/loncommon.pm between versions 1.777 and 1.790

version 1.777, 2009/03/26 12:44:52 version 1.790, 2009/04/21 18:27:09
Line 602  function setSect(sectionlist) { Line 602  function setSect(sectionlist) {
   
 sub selectcourse_link {  sub selectcourse_link {
    my ($form,$unameele,$udomele,$desc,$extra_element,$multflag,$selecttype)=@_;     my ($form,$unameele,$udomele,$desc,$extra_element,$multflag,$selecttype)=@_;
    return "<a href='".'javascript:opencrsbrowser("'.$form.'","'.$unameele.     return '<span class="LC_nobreak">'
         '","'.$udomele.'","'.$desc.'","'.$extra_element.'","'.$multflag.'","'.$selecttype.'");'."'>".&mt('Select Course')."</a>";           ."<a href='"
            .'javascript:opencrsbrowser("'.$form.'","'.$unameele
            .'","'.$udomele.'","'.$desc.'","'.$extra_element
            .'","'.$multflag.'","'.$selecttype.'");'
            ."'>".&mt('Select Course').'</a>'
            .'</span>';
 }  }
   
 sub selectauthor_link {  sub selectauthor_link {
Line 935  sub help_open_topic { Line 940  sub help_open_topic {
     $template.=' <a target="_top" href="'.$link.'" title="'.$title.'">'      $template.=' <a target="_top" href="'.$link.'" title="'.$title.'">'
               .'<img src="'.$helpicon.'" border="0"'                .'<img src="'.$helpicon.'" border="0"'
               .' alt="'.&mt('Help: [_1]',$topic).'"'                .' alt="'.&mt('Help: [_1]',$topic).'"'
               .' title="'.$title.'"'                .' title="'.$title.'"' 
               .' /></a>';                .' /></a>';
     if ($text ne "") {      if ($text ne "") {
         $template.='</span>';          $template.='</span>';
Line 2165  sub authform_kerberos { Line 2170  sub authform_kerberos {
         }          }
     } else {      } else {
         if ($authnum == 1) {          if ($authnum == 1) {
             $authtype = '<input type="hidden" name="login" value="krb">';              $authtype = '<input type="hidden" name="login" value="krb" />';
         }          }
     }      }
     if (!$can_assign{'krb4'} && !$can_assign{'krb5'}) {      if (!$can_assign{'krb4'} && !$can_assign{'krb5'}) {
Line 2174  sub authform_kerberos { Line 2179  sub authform_kerberos {
         if (defined($in{'mode'})) {          if (defined($in{'mode'})) {
             if ($in{'mode'} eq 'modifycourse') {              if ($in{'mode'} eq 'modifycourse') {
                 if ($authnum == 1) {                  if ($authnum == 1) {
                     $authtype = '<input type="hidden" name="login" value="krb">';                      $authtype = '<input type="hidden" name="login" value="krb" />';
                 }                  }
             }              }
         }          }
Line 2251  sub authform_internal{ Line 2256  sub authform_internal{
         }          }
     } else {      } else {
         if ($authnum == 1) {          if ($authnum == 1) {
             $authtype = '<input type="hidden" name="login" value="int">';              $authtype = '<input type="hidden" name="login" value="int" />';
         }          }
     }      }
     if (!$can_assign{'int'}) {      if (!$can_assign{'int'}) {
Line 2260  sub authform_internal{ Line 2265  sub authform_internal{
         if (defined($in{'mode'})) {          if (defined($in{'mode'})) {
             if ($in{'mode'} eq 'modifycourse') {              if ($in{'mode'} eq 'modifycourse') {
                 if ($authnum == 1) {                  if ($authnum == 1) {
                     $authtype = '<input type="hidden" name="login" value="int">';                      $authtype = '<input type="hidden" name="login" value="int" />';
                 }                  }
             }              }
         }          }
Line 2306  sub authform_local{ Line 2311  sub authform_local{
         }          }
     } else {      } else {
         if ($authnum == 1) {          if ($authnum == 1) {
             $authtype = '<input type="hidden" name="login" value="loc">';              $authtype = '<input type="hidden" name="login" value="loc" />';
         }          }
     }      }
     if (!$can_assign{'loc'}) {      if (!$can_assign{'loc'}) {
Line 2315  sub authform_local{ Line 2320  sub authform_local{
         if (defined($in{'mode'})) {          if (defined($in{'mode'})) {
             if ($in{'mode'} eq 'modifycourse') {              if ($in{'mode'} eq 'modifycourse') {
                 if ($authnum == 1) {                  if ($authnum == 1) {
                     $authtype = '<input type="hidden" name="login" value="loc">';                      $authtype = '<input type="hidden" name="login" value="loc" />';
                 }                  }
             }              }
         }          }
Line 2357  sub authform_filesystem{ Line 2362  sub authform_filesystem{
         }          }
     } else {      } else {
         if ($authnum == 1) {          if ($authnum == 1) {
             $authtype = '<input type="hidden" name="login" value="fsys">';              $authtype = '<input type="hidden" name="login" value="fsys" />';
         }          }
     }      }
     if (!$can_assign{'fsys'}) {      if (!$can_assign{'fsys'}) {
Line 2366  sub authform_filesystem{ Line 2371  sub authform_filesystem{
         if (defined($in{'mode'})) {          if (defined($in{'mode'})) {
             if ($in{'mode'} eq 'modifycourse') {              if ($in{'mode'} eq 'modifycourse') {
                 if ($authnum == 1) {                  if ($authnum == 1) {
                     $authtype = '<input type="hidden" name="login" value="fsys">';                      $authtype = '<input type="hidden" name="login" value="fsys" />';
                 }                  }
             }              }
         }          }
Line 2847  sub track_student_link { Line 2852  sub track_student_link {
  &help_open_topic('View_recent_activity');   &help_open_topic('View_recent_activity');
 }  }
   
   sub slot_reservations_link {
       my ($linktext,$sname,$sdom,$target) = @_;
       my $link ="/adm/slotrequest?command=showresv&amp;origin=aboutme";
       my $title = 'View slot reservation history';
       if (defined($sname) && $sname !~ /^\s*$/ &&
           defined($sdom)  && $sdom  !~ /^\s*$/) {
           $link .= "&amp;uname=$sname&amp;udom=$sdom";
           $title .= ' of this student';
       }
       if (defined($target) && $target !~ /^\s*$/) {
           $target = qq{target="$target"};
       } else {
           $target = '';
       }
       $title = &mt($title);
       $linktext = &mt($linktext);
       return qq{<a href="$link" title="$title" $target>$linktext</a>};
   # FIXME uncomment when help item created: &help_open_topic('Slot_Reservation_History');
   
   }
   
 # ===================================================== Display a student photo  # ===================================================== Display a student photo
   
   
Line 4505  body{ Line 4531  body{
   }    }
 a:link, a:visited { font-size:100%; }  a:link, a:visited { font-size:100%; }
   
 a:focus { color: red; background: yellow }   a:focus { color: red; background: yellow }
 table.thinborder,  table.thinborder,
 table.thinborder tr th {  table.thinborder tr th {
   border-style: solid;    border-style: solid;
Line 4528  form, .inline { display: inline; } Line 4554  form, .inline { display: inline; }
 .LC_400Box {width:400px; }  .LC_400Box {width:400px; }
 /* end */  /* end */
   
 .LC_filename {font-family: $mono; white-space:pre;}  .LC_filename {
     font-family: $mono;
     white-space:pre;
   }
   
   .LC_fileicon {
     border: none;
     height: 1.3em;
     vertical-align: text-bottom;
     margin-right: 0.3em;
     text-decoration:none;
   }
   
 .LC_error {  .LC_error {
   color: red;    color: red;
   font-size: larger;    font-size: larger;
Line 4549  form, .inline { display: inline; } Line 4587  form, .inline { display: inline; }
   
 .LC_icon {  .LC_icon {
   border: none;    border: none;
     vertical-align: middle;
 }  }
   
 .LC_indexer_icon {  .LC_indexer_icon {
Line 4578  table#LC_top_nav, table#LC_menubuttons,t Line 4617  table#LC_top_nav, table#LC_menubuttons,t
   padding: 0px;    padding: 0px;
 }  }
   
 table#LC_title_bar, table.LC_breadcrumbs,   table#LC_title_bar, table.LC_breadcrumbs,
 table#LC_title_bar.LC_with_remote {  table#LC_title_bar.LC_with_remote {
   width: 100%;    width: 100%;
   border-color: $pgbg;    border-color: $pgbg;
Line 4656  table#LC_top_nav td.LC_top_nav_logo img Line 4695  table#LC_top_nav td.LC_top_nav_logo img
   vertical-align: bottom;    vertical-align: bottom;
 }  }
 table#LC_top_nav td.LC_top_nav_exit,  table#LC_top_nav td.LC_top_nav_exit,
 table#LC_top_nav td.LC_top_nav_help {      table#LC_top_nav td.LC_top_nav_help {
   width: 2.0em;    width: 2.0em;
 }  }
 table#LC_top_nav td.LC_top_nav_login {  table#LC_top_nav td.LC_top_nav_login {
Line 4671  table.LC_breadcrumbs td, table.LC_docs_p Line 4710  table.LC_breadcrumbs td, table.LC_docs_p
 }  }
 table.LC_breadcrumbs td.LC_breadcrumbs_component,  table.LC_breadcrumbs td.LC_breadcrumbs_component,
 table.LC_docs_path td.LC_docs_path_component {  table.LC_docs_path td.LC_docs_path_component {
   background: $tabbg;        background: $tabbg;
   color: $font;    color: $font;
   font-family: $sans;    font-family: $sans;
   font-size: larger;         font-size: larger;
   text-align: right;         text-align: right;
 }  }
 td.LC_table_cell_checkbox {  td.LC_table_cell_checkbox {
   text-align: center;    text-align: center;
 }  }
 table#LC_mainmenu td.LC_mainmenu_column {   table#LC_mainmenu td.LC_mainmenu_column {
     vertical-align: top;               vertical-align: top;
 }  }
   
 .LC_fontsize_small  .LC_fontsize_small
Line 4719  table#LC_mainmenu td.LC_mainmenu_column Line 4758  table#LC_mainmenu td.LC_mainmenu_column
 }  }
   
 td.LC_menubuttons_text {  td.LC_menubuttons_text {
   color: $font;    color: $font;
 }  }
   
   
Line 4790  table.LC_data_table tr.LC_info_row > td Line 4829  table.LC_data_table tr.LC_info_row > td
   font-weight: bold;    font-weight: bold;
   text-align: left;    text-align: left;
 }  }
 table.LC_data_table tr.LC_odd_row > td,   table.LC_data_table tr.LC_odd_row > td,
 table.LC_pick_box tr > td.LC_odd_row,  table.LC_pick_box tr > td.LC_odd_row,
 table.LC_aboutme_port tr td {  table.LC_aboutme_port tr td {
   background-color: $data_table_light;    background-color: $data_table_light;
Line 4885  table.LC_calendar tr td { Line 4924  table.LC_calendar tr td {
 table.LC_calendar tr td.LC_calendar_day_empty {  table.LC_calendar tr td.LC_calendar_day_empty {
   background-color: $data_table_dark;    background-color: $data_table_dark;
 }  }
 table.LC_calendar tr td.LC_calendar_day_current {   table.LC_calendar tr td.LC_calendar_day_current {
   background-color: $data_table_highlight;           background-color: $data_table_highlight;
 }  }
 table.LC_mail_list tr.LC_mail_new {  table.LC_mail_list tr.LC_mail_new {
   background-color: $mail_new;    background-color: $mail_new;
Line 4926  table.LC_data_table tr > td.LC_browser_f Line 4965  table.LC_data_table tr > td.LC_browser_f
   background: #FFAA99;    background: #FFAA99;
 }  }
 table.LC_data_table tr > td.LC_browser_file_obsolete {  table.LC_data_table tr > td.LC_browser_file_obsolete {
   background: #AAAAAA;               background: #AAAAAA;
 }          }
 table.LC_data_table tr > td.LC_browser_file_modified,  table.LC_data_table tr > td.LC_browser_file_modified,
 table.LC_data_table tr > td.LC_browser_file_metamodified {         table.LC_data_table tr > td.LC_browser_file_metamodified {
   background: #FFFF77;               background: #FFFF77;
 }  }
 table.LC_data_table tr.LC_browser_folder > td {  table.LC_data_table tr.LC_browser_folder > td {
   background: #CCCCFF;    background: #CCCCFF;
Line 5195  table.LC_descriptive_input td.LC_descrip Line 5234  table.LC_descriptive_input td.LC_descrip
 div.LC_feedback_link {  div.LC_feedback_link {
   clear: both;    clear: both;
   background: white;    background: white;
   width: 100%;      width: 100%;
 }  }
 span.LC_feedback_link {  span.LC_feedback_link {
   background: $feedback_link_bg;    background: $feedback_link_bg;
Line 5226  table.LC_prior_tries td { Line 5265  table.LC_prior_tries td {
   background: #FFAAAA ! important;    background: #FFAAAA ! important;
   color: black;    color: black;
 }  }
 .LC_answer_not_charged_try,   .LC_answer_not_charged_try,
 .LC_answer_no_grade,  .LC_answer_no_grade,
 .LC_answer_late {  .LC_answer_late {
   background: #FFFFAA;    background: #FFFFAA;
Line 5236  table.LC_prior_tries td { Line 5275  table.LC_prior_tries td {
   background: #AAAAFF;    background: #AAAAFF;
   color: black;    color: black;
 }  }
 .LC_answer_no_message {   .LC_answer_no_message {
   background: #FFFFFF;    background: #FFFFFF;
   color: black;    color: black;
 }   }
 .LC_answer_unknown {   .LC_answer_unknown {
   background: orange;     background: orange;
   color: black;     color: black;
 }  }
 span.LC_prior_numerical,  span.LC_prior_numerical,
 span.LC_prior_string,  span.LC_prior_string,
Line 5291  table.LC_docs_documents { Line 5330  table.LC_docs_documents {
   border-collapse: collapse;    border-collapse: collapse;
 }  }
 table.LC_docs_documents td.LC_docs_document {  table.LC_docs_documents td.LC_docs_document {
   border: 2px solid black;           border: 2px solid black;
   padding: 4px;              padding: 4px;
 }  }
 .LC_docs_entry_move {  .LC_docs_entry_move {
   border: 0px;    border: 0px;
Line 5366  table.LC_double_column tr td.LC_left_col Line 5405  table.LC_double_column tr td.LC_left_col
   
 table.LC_double_column tr td.LC_right_col {  table.LC_double_column tr td.LC_right_col {
   top: 2px;    top: 2px;
   right: 2px;     right: 2px;
   width: 47%;    width: 47%;
   vertical-align: top;    vertical-align: top;
 }  }
Line 5444  table.LC_scantron_action tr th { Line 5483  table.LC_scantron_action tr th {
   font-weight:bold;    font-weight:bold;
   font-style:normal;    font-style:normal;
 }  }
 .LC_edit_problem_header,   .LC_edit_problem_header,
 div.LC_edit_problem_footer {  div.LC_edit_problem_footer {
   font-weight: normal;    font-weight: normal;
   font-size:  medium;    font-size:  medium;
Line 5512  table#LC_mainmenu td.LC_mainmenu_col_fie Line 5551  table#LC_mainmenu td.LC_mainmenu_col_fie
   vertical-align: top;    vertical-align: top;
   width: 45%;    width: 45%;
 }  }
 .LC_mainmenu_fieldset_category {   .LC_mainmenu_fieldset_category {
   color: $font;              color: $font;
   background: $pgbg;         background: $pgbg;
   font-family: $sans;        font-family: $sans;
   font-size: small;          font-size: small;
   font-weight: bold;         font-weight: bold;
 }  }
 div.LC_createcourse {  div.LC_createcourse {
     margin: 10px 10px 10px 10px;      margin: 10px 10px 10px 10px;
Line 5541  ul.LC_TabContent   li:hover a{ Line 5580  ul.LC_TabContent   li:hover a{
         text-decoration:none;          text-decoration:none;
 }  }
   
 h1 {   h1 {
  padding:5px 10px 5px 20px;   padding:5px 10px 5px 20px;
  line-height:130%;   line-height:130%;
 }  }
Line 5556  h2,h3,h4,h5,h6 Line 5595  h2,h3,h4,h5,h6
         padding:3px 15px 3px 15px;          padding:3px 15px 3px 15px;
         margin:0px;          margin:0px;
  background-color:$tabbg;   background-color:$tabbg;
  border-bottom:solid 1px $lg_border_color;          border-bottom:solid 1px $lg_border_color;
 }  }
 .LC_noBorder {  .LC_noBorder {
         border:0px;          border:0px;
Line 5576  p, .LC_ContentBox { Line 5615  p, .LC_ContentBox {
   
 }  }
 .LC_FormSectionClearButton input {  .LC_FormSectionClearButton input {
         background-color:transparent;                  background-color:transparent;
         border:0px;          border:0px;
         cursor:pointer;          cursor:pointer;
         text-decoration:underline;          text-decoration:underline;
Line 5589  p, .LC_ContentBox { Line 5628  p, .LC_ContentBox {
         padding: 4px;          padding: 4px;
         border: 1px solid #000033;          border: 1px solid #000033;
         white-space: nowrap;          white-space: nowrap;
   /* vertical-align: middle; */
 }  }
   
 dl,ul,div,fieldset {  dl,ul,div,fieldset {
Line 5653  ul.LC_TabContent li{ Line 5693  ul.LC_TabContent li{
  background-color:$tabbg;   background-color:$tabbg;
  border-bottom:solid 1px $lg_border_color;   border-bottom:solid 1px $lg_border_color;
 }  }
 ul.LC_TabContent li a, ul.LC_TabContent li{   ul.LC_TabContent li a, ul.LC_TabContent li{
  color:rgb(47,47,47);   color:rgb(47,47,47);
  text-decoration:none;   text-decoration:none;
  font-size:95%;   font-size:95%;
Line 5681  ul.LC_TabContentBigger li, ul.LC_TabCont Line 5721  ul.LC_TabContentBigger li, ul.LC_TabCont
  font-weight:bold;   font-weight:bold;
 }  }
   
 ol#LC_MenuBreadcrumbs, ol#LC_PathBreadcrumbs {  ol#LC_MenuBreadcrumbs, ol#LC_PathBreadcrumbs, ul.LC_CourseBreadcrumbs{
  border-top: solid 1px RGB(255, 255, 255);   border-top: solid 1px RGB(255, 255, 255);
  height: 20px;   height: 20px;
  line-height: 20px;   line-height: 20px;
Line 5692  ol#LC_MenuBreadcrumbs, ol#LC_PathBreadcr Line 5732  ol#LC_MenuBreadcrumbs, ol#LC_PathBreadcr
  background: url(/adm/lonIcons/lightGreyBG.png) repeat-x left top;   background: url(/adm/lonIcons/lightGreyBG.png) repeat-x left top;
 }  }
   
 ol#LC_MenuBreadcrumbs li, ol#LC_PathBreadcrumbs li {  ol#LC_MenuBreadcrumbs li, ol#LC_PathBreadcrumbs li, ul.LC_CourseBreadcrumbs li {
 /*  /*
  background: url(/adm/lonIcons/arrow_white.png) no-repeat left center;   background: url(/adm/lonIcons/arrow_white.png) no-repeat left center;
 */  */
  display: inline;   display: inline;
  padding: 0px 0px 0px 10px;   padding: 0px 0px 0px 10px;
  vertical-align: bottom;  /* vertical-align: bottom; */
  overflow:hidden;   overflow:hidden;
 }  }
   
 ol#LC_MenuBreadcrumbs li a {  ol#LC_MenuBreadcrumbs li a, ul.LC_CourseBreadcrumbs li a {
  text-decoration: none;   text-decoration: none;
  font-size:90%;   font-size:90%;
 }  }
Line 5711  ol#LC_PathBreadcrumbs li a{ Line 5751  ol#LC_PathBreadcrumbs li a{
  font-size:100%;   font-size:100%;
  font-weight:bold;   font-weight:bold;
 }  }
   .LC_BoxPadding
   {
    padding: 10px;
   }
 .LC_ContentBoxSpecial  .LC_ContentBoxSpecial
 {  {
  border: solid 1px $lg_border_color;   border: solid 1px $lg_border_color;
Line 5832  div.LC_columnSection > .ContentBoxSpecia Line 5876  div.LC_columnSection > .ContentBoxSpecia
 .LC_loginpage_container {  .LC_loginpage_container {
  text-align:left;   text-align:left;
  margin : 0 auto;   margin : 0 auto;
  width:65%;   width:90%;
  padding: 10px;   padding: 10px;
  height: auto;   height: auto;
  background-color:#FFFFFF;   background-color:#FFFFFF;
Line 5843  div.LC_columnSection > .ContentBoxSpecia Line 5887  div.LC_columnSection > .ContentBoxSpecia
 .LC_loginpage_loginContainer {  .LC_loginpage_loginContainer {
  float:left;   float:left;
  width: 182px;   width: 182px;
    padding: 2px;
  border:1px solid #CCCCCC;   border:1px solid #CCCCCC;
  background-color:$loginbg;   background-color:$loginbg;
 }  }
Line 5854  div.LC_columnSection > .ContentBoxSpecia Line 5899  div.LC_columnSection > .ContentBoxSpecia
  color:$textcol;   color:$textcol;
  padding-left:5px;   padding-left:5px;
 }  }
   
 .LC_loginpage_loginInfo {  .LC_loginpage_loginInfo {
  margin-left:20px;  
  float:left;   float:left;
  width:30%;   width:182px;
  border:1px solid #CCCCCC;   border:1px solid #CCCCCC;
  padding:10px;   padding:2px;
 }  
   
 .LC_loginpage_loginDomain {  
  margin-right:20px;  
  width:20%;  
  float:left;  
  padding:10px;  
 }  }
   
 .LC_loginpage_space {  .LC_loginpage_space {
Line 5875  div.LC_columnSection > .ContentBoxSpecia Line 5913  div.LC_columnSection > .ContentBoxSpecia
  border-bottom: 1px solid #CCCCCC;   border-bottom: 1px solid #CCCCCC;
 }  }
   
   .LC_loginpage_floatLeft {
    float: left;
    width: 200px;
    margin: 0;
   }
   
 table em{  table em{
  font-weight: bold;   font-weight: bold;
  font-style: normal;   font-style: normal;
 }  }
 table.LC_tableBrowseRes,   table.LC_tableBrowseRes,
 table.LC_tableOfContent{  table.LC_tableOfContent{
         border:none;          border:none;
  border-spacing: 1;   border-spacing: 1;
Line 5887  table.LC_tableOfContent{ Line 5931  table.LC_tableOfContent{
  background-color: #FFFFFF;   background-color: #FFFFFF;
  font-size: 90%;   font-size: 90%;
 }  }
   
   table.LC_tableOfContent{
       border-collapse: collapse;
   }
   
 table.LC_tableBrowseRes a,  table.LC_tableBrowseRes a,
 table.LC_tableOfContent a {  table.LC_tableOfContent a {
         background-color: transparent;          background-color: transparent;
Line 5942  ul#LC_toolbar li a:hover{ Line 5991  ul#LC_toolbar li a:hover{
 }  }
   
 ul#LC_toolbar{  ul#LC_toolbar{
  padding:0;    padding:0;
  margin: 2px;   margin: 2px;
  list-style:none;   list-style:none;
  position:relative;   position:relative;
Line 5958  ul#LC_toolbar li{ Line 6007  ul#LC_toolbar li{
  vertical-align:middle;   vertical-align:middle;
 }  }
   
   
 a.LC_toolbarItem{  a.LC_toolbarItem{
  display:block;   display:block;
  padding:0;   padding:0;
  margin:0;   margin:0;
  height: 32px;   height: 32px;
  width: 32px;   width: 32px;
  color:white;    color:white;
  border:0 none;   border:0 none;
  background-repeat:no-repeat;   background-repeat:no-repeat;
  background-color:transparent;   background-color:transparent;
 }  }
   
   ul.LC_functionslist li {
     float: left;
     white-space: nowrap;
     height: 35px; /* at least as high as heighest list item */
     margin: 0px 15px 15px 10px;
   }
   
   
 END  END
 }  }
Line 7005  If the user's status includes multiple t Line 7062  If the user's status includes multiple t
 the largest default quota which applies to the user determines the  the largest default quota which applies to the user determines the
 default quota returned.  default quota returned.
   
   =back
   
 =cut  =cut
   
 ###############################################  ###############################################
Line 7553  sub get_institutional_codes { Line 7612  sub get_institutional_codes {
   
 =pod  =pod
   
   =head1 Slot Helpers
   
   =over 4
   
   =item * sorted_slots()
   
   Sorts an array of slot names in order of slot start time (earliest first). 
   
   Inputs:
   
   =over 4
   
   slotsarr  - Reference to array of unsorted slot names.
   
   slots     - Reference to hash of hash, where outer hash keys are slot names.
   
   =back
   
   Returns:
   
   =over 4
   
   sorted   - An array of slot names sorted by the start time of the slot.
   
 =back  =back
   
   =back
   
   =cut
   
   
   sub sorted_slots {
       my ($slotsarr,$slots) = @_;
       my @sorted;
       if ((ref($slotsarr) eq 'ARRAY') && (ref($slots) eq 'HASH')) {
           @sorted =
               sort {
                        if (ref($slots->{$a}) && ref($slots->{$b})) {
                            return $slots->{$a}{'starttime'} <=> $slots->{$b}{'starttime'}
                        }
                        if (ref($slots->{$a})) { return -1;}
                        if (ref($slots->{$b})) { return 1;}
                        return 0;
                    } @{$slotsarr};
       }
       return @sorted;
   }
   
   
   =pod
   
 =head1 HTTP Helpers  =head1 HTTP Helpers
   
 =over 4  =over 4

Removed from v.1.777  
changed lines
  Added in v.1.790


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>