Diff for /loncom/interface/groupboards.pm between versions 1.7 and 1.8

version 1.7, 2006/07/17 14:52:00 version 1.8, 2006/07/20 15:51:10
Line 77  sub handler { Line 77  sub handler {
     }      }
     my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,$group);      my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,$group);
     if (!defined($curr_groups{$group})) {      if (!defined($curr_groups{$group})) {
         $earlyout = &mt('Invalid [_1]',$gpterm);          $earlyout = &mt('Invalid group');
         $r->print(&display_error($cdom,$cnum,$group,$description,$gpterm,          $r->print(&display_error($cdom,$cnum,$group,$description,$gpterm,
                                  $ucgpterm,$bodytitle,$earlyout,$refarg));                                   $ucgpterm,$bodytitle,$earlyout,$refarg));
         return OK;          return OK;
Line 103  sub handler { Line 103  sub handler {
         if (($can_create) || (&Apache::lonnet::allowed('mdg',$env{'request.course.id'}))) {          if (($can_create) || (&Apache::lonnet::allowed('mdg',$env{'request.course.id'}))) {
             $r->print(&boards_header($cdom,$cnum,$group,$description,$gpterm,              $r->print(&boards_header($cdom,$cnum,$group,$description,$gpterm,
                                      $ucgpterm,$bodytitle,$refarg));                                       $ucgpterm,$bodytitle,$refarg));
             my ($outcome,$newurl,$bbtitle) =               my ($outcome,$newurl,$bbtitle,$dellockoutcome) = 
  &create_board($cdom,$cnum,$group,$env{'form.newbul'});   &create_board($cdom,$cnum,$group,$env{'form.newbul'});
             if ($outcome eq 'ok') {              if ($outcome eq 'ok') {
                 my ($furl,$ferr)= &Apache::lonuserstate::readmap($cdom.'/'.$cnum);                  my ($furl,$ferr)= &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
Line 115  sub handler { Line 115  sub handler {
                           '<a href="/adm/groupboards?group='.$group.'&amp;'.                            '<a href="/adm/groupboards?group='.$group.'&amp;'.
                           $refarg.'">'.&mt('View all group discussion boards').                            $refarg.'">'.&mt('View all group discussion boards').
                           '</a></td></tr></table>');                            '</a></td></tr></table>');
                   if ($dellockoutcome ne 'ok') {
                       $r->print(&mt('There was a problem removing a lockfile for the group ([_1]). This may prevent creation of additional bulletin boards in this group.  Please contact the system administrator for your LON-CAPA domain.'));
                   }
             } else {              } else {
                 $r->print(&mt('There was a problem creating the new discussion board - [_1]','<span class="LC_error">'.$outcome.'</span>').'<br /><a href="/adm/groupboards?group='.$group.'">'.                  $r->print(&mt('There was a problem creating the new discussion board - [_1]','<span class="LC_error">'.$outcome.'</span>').'<br /><a href="/adm/groupboards?group='.$group.'">'.
                          &mt('Return to discussion boards').'</a>');                           &mt('Return to discussion boards').'</a>');
Line 130  sub handler { Line 133  sub handler {
 function makebulboard() {  function makebulboard() {
    var title=prompt('Discussion Board Title');     var title=prompt('Discussion Board Title');
    if (title) {     if (title) {
     this.document.forms.newbb.newbul.value=      this.document.forms.newbb.newbul.value=title;
         title+'=/adm/$cdom/$cnum/$now/bulletinboard';  
     this.document.forms.newbb.submit();      this.document.forms.newbb.submit();
    }     }
 }  }
Line 173  function makebulboard() { Line 175  function makebulboard() {
 }  }
   
 sub create_board {  sub create_board {
     my ($cdom,$cnum,$group,$newboard) = @_;      my ($cdom,$cnum,$group,$bbtitle) = @_;
     my ($bbtitle,$newurl)=split(/\=/,$newboard);      my ($outcome,$boardid,$newurl);
     my $outcome;  
     my ($boardid) = ($newurl =~ m-/adm/\Q$cdom\E/\Q$cnum\E/(\d+)/bulletinboard-);  
     if (!$boardid) {  
         $outcome = ('error: the URL for new board was invalid');  
         return ($outcome,$newurl,$bbtitle);  
     }  
     $bbtitle=&unescape($bbtitle);      $bbtitle=&unescape($bbtitle);
       # get lock on nohist_groupboards file
       my $lockhash = {
                     $group."\0".'locked_boardids' => $env{'user.name'}.
                                                          ':'.$env{'user.domain'},
                      };
       my $tries = 0;
       my $gotlock = &Apache::lonnet::newput('nohist_groupboards',$lockhash,$cdom,$cnum);
       my $dellockoutcome;
       while (($gotlock ne 'ok') && $tries <3) {
           $tries ++;
           sleep 1;
           $gotlock = &Apache::lonnet::newput('nohist_groupboards',$lockhash,$cdom,$cnum);
       }
       if ($gotlock eq 'ok') {
          my %curr_boards = &Apache::lonnet::dump('nohist_groupboards',$cdom,$cnum,$group);
          $boardid = time;
          my $idtries = 0;
          while(exists($curr_boards{$group."\0".$boardid}) && $idtries < 20) {
              $boardid ++;
              $idtries ++;
          }
          if (!exists($curr_boards{$group."\0".$boardid})) {
              my %new_board = (
                             $group."\0".$boardid => $env{'user.name'}.':'.
                                                     $env{'user.domain'},
              );
              my $putresult = &Apache::lonnet::put('nohist_groupboards',\%new_board,
                                                   $cdom,$cnum);
              if ($putresult ne 'ok') {
                  $outcome = 'error storing new board: '.$putresult;
              } else {
                  $newurl = '/adm/'.$cdom.'/'.$cnum.'/'.$boardid.
                            '/bulletinboard';
              }
          } else {
               $outcome = ('error: no unique ID for the new board available.');
          }
          #  remove lock
          my @del_lock = ($group."\0".'locked_boardids');
          $dellockoutcome = &Apache::lonnet::del('nohist_groupboards',\@del_lock,$cdom,$cnum);
       } else {
           $outcome = "error: could not obtain lockfile\n";
           $dellockoutcome = 'ok';
       }
       if (!$newurl) {
           return ($outcome,$newurl,$bbtitle,$dellockoutcome);
       }
     $newurl=&unescape($newurl);      $newurl=&unescape($newurl);
       # need to check here if group_boards_$group.sequence is in the course
       # if not - add it as an item in group_folder_$group.sequence 
     my $allbbsmap = &Apache::longroup::get_bbfolder_url($cdom,$cnum,$group);      my $allbbsmap = &Apache::longroup::get_bbfolder_url($cdom,$cnum,$group);
     if ($allbbsmap =~ m|^/uploaded|) {      if ($allbbsmap =~ m|^/uploaded|) {
         my ($errtext,$fatal)=&Apache::lonratedt::mapread($allbbsmap);          my ($errtext,$fatal)=&Apache::lonratedt::mapread($allbbsmap);
Line 208  sub create_board { Line 253  sub create_board {
         $outcome = 'error: discussion boards folder absent, '.          $outcome = 'error: discussion boards folder absent, '.
                    'or in unexpected location - '.$allbbsmap."\n";                     'or in unexpected location - '.$allbbsmap."\n";
     }      }
     return ($outcome,$newurl,$bbtitle);      return ($outcome,$newurl,$bbtitle,$dellockoutcome);
 }  }
   
 sub display_error {  sub display_error {

Removed from v.1.7  
changed lines
  Added in v.1.8


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.