version 1.8.2.4.2.2, 2020/10/25 20:14:42
|
version 1.29, 2019/05/02 23:09:39
|
Line 161 sub process_changes {
|
Line 161 sub process_changes {
|
$newurl = $1; |
$newurl = $1; |
$marker = $2; |
$marker = $2; |
$args = $3; |
$args = $3; |
|
if ((!$symb) && (!$supplementalflag)) { |
|
$symb = "uploaded/$cdom/$cnum/$folder.$container"."___$newidx"."___adm/$cdom/$cnum/$marker/ext.tool"; |
|
} |
} |
} |
} |
} |
if ($supplementalflag) { |
if ($supplementalflag) { |
Line 170 sub process_changes {
|
Line 173 sub process_changes {
|
} |
} |
if ($folder && $container) { |
if ($folder && $container) { |
if ($env{'form.importdetail'}) { |
if ($env{'form.importdetail'}) { |
my ($errtext,$fatal,$mismatchedid,@imports); |
my ($errtext,$fatal,$mismatchedid,$needreload,$newgradable,@imports); |
if (!$supplementalflag) { |
if (!$supplementalflag) { |
if (($oldidx) && ($oldidx != $newidx)) { |
if (($oldidx) && ($oldidx != $newidx)) { |
$mismatchedid = 1; |
$mismatchedid = 1; |
Line 181 sub process_changes {
|
Line 184 sub process_changes {
|
} elsif (($newtitle eq $oldtitle) && ($newurl eq $oldurl)) { |
} elsif (($newtitle eq $oldtitle) && ($newurl eq $oldurl)) { |
if ($type eq 'tool') { |
if ($type eq 'tool') { |
if ($args) { |
if ($args) { |
($updated,$errormsg) = &update_exttool($marker,$cdom,$cnum,$args); |
($updated,$newgradable,$errormsg) = &update_exttool($marker,$cdom,$cnum, |
unless ($updated) { |
$supplementalflag,$args); |
$output = &mt('No change'); |
if ($updated) { |
|
if ($newgradable) { |
|
my $map = "/uploaded/$cdom/$cnum/$folder.$container"; |
|
my ($errtext,$fatal) = &LONCAPA::map::mapread($map); |
|
if ($fatal) { |
|
$errormsg = &mt('Update failed: [_1].',$errtext); |
|
} else { |
|
&LONCAPA::map::storeparameter($residx,'parameter_0_gradable', |
|
$newgradable,'string_yesno'); |
|
my ($outtext,$errtext) = &LONCAPA::map::storemap($map,1,1); |
|
if ($errtext) { |
|
$errormsg = &mt('Update failed: [_1].',$errtext); |
|
} else { |
|
$needreload = 1; |
|
} |
|
} |
|
} |
|
} else { |
|
$output = &mt('No change'); |
} |
} |
} else { |
} else { |
$output = &mt('No change'); |
$output = &mt('No change'); |
Line 202 sub process_changes {
|
Line 223 sub process_changes {
|
my $ext = 'true'; |
my $ext = 'true'; |
if ($type eq 'tool') { |
if ($type eq 'tool') { |
if ($args) { |
if ($args) { |
($updated,$errormsg) = &update_exttool($marker,$cdom,$cnum,$args); |
($updated,$newgradable,$errormsg) = &update_exttool($marker,$cdom,$cnum, |
|
$supplementalflag,$args); |
|
if ($newgradable) { |
|
&LONCAPA::map::storeparameter($residx,'parameter_0_gradable',$newgradable, |
|
'string_yesno'); |
|
$needreload = 1; |
|
} |
} |
} |
$ext = 'false'; |
$ext = 'false'; |
} |
} |
|
my $dotimeupdate; |
|
unless ($supplementalflag) { |
|
if (($newgradable) || ($newurl ne $oldurl)) { |
|
$dotimeupdate = 1; |
|
} |
|
} |
$LONCAPA::map::resources[$residx] = |
$LONCAPA::map::resources[$residx] = |
join(':', ($savetitle,$saveurl,$ext,'normal','res')); |
join(':', ($savetitle,$saveurl,$ext,'normal','res')); |
my ($outtext,$errtext) = &LONCAPA::map::storemap($map,1); |
my ($outtext,$errtext) = &LONCAPA::map::storemap($map,1,$dotimeupdate); |
if ($errtext) { |
if ($errtext) { |
$errormsg = &mt('Update failed: [_1].',$errtext); |
$errormsg = &mt('Update failed: [_1].',$errtext); |
} else { |
} else { |
Line 230 sub process_changes {
|
Line 263 sub process_changes {
|
&Apache::lonnet::devalidate_title_cache($symb); |
&Apache::lonnet::devalidate_title_cache($symb); |
} |
} |
} |
} |
} |
$needreload = 1; |
my ($furl,$ferr) = |
|
&Apache::lonuserstate::readmap("$cdom/$cnum"); |
|
if ($ferr) { |
|
$errormsg = &mt('Reload failed: [_1].',$ferr); |
|
} else { |
|
unless ($supplementalflag) { |
|
&Apache::loncommon::update_content_constraints($cdom,$cnum,$chome,$cdom.'_'.$cnum); |
|
} |
|
} |
} |
} |
} |
} |
} |
} |
} |
|
if ($needreload) { |
|
my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum"); |
|
if ($ferr) { |
|
$errormsg = &mt('Reload failed: [_1].',$ferr); |
|
} else { |
|
&Apache::loncommon::update_content_constraints($cdom,$cnum,$chome, |
|
$cdom.'_'.$cnum); |
|
} |
|
} |
|
if (($type eq 'tool') && ($newgradable)) { |
|
my $uri = &Apache::lonnet::declutter($url); |
|
&Apache::lonnet::devalidate_cache_new('meta',$uri); |
|
} |
} else { |
} else { |
$output = &mt('No change'); |
$output = &mt('No change'); |
} |
} |
Line 257 sub process_changes {
|
Line 295 sub process_changes {
|
} |
} |
|
|
sub update_exttool { |
sub update_exttool { |
my ($marker,$cdom,$cnum,$args) = @_; |
my ($marker,$cdom,$cnum,$supplementalflag,$args) = @_; |
my (%newhash,$changed,@deleted,$errormsg); |
my (%newhash,$changed,$newgradable,@deleted,$errormsg); |
($newhash{'target'},$newhash{'width'},$newhash{'height'},$newhash{'linktext'},$newhash{'explanation'}, |
($newhash{'target'},$newhash{'width'},$newhash{'height'},$newhash{'linktext'},$newhash{'explanation'}, |
$newhash{'crslabel'},$newhash{'crstitle'},$newhash{'crsappend'}) = split(/:/,$args); |
$newhash{'crslabel'},$newhash{'crstitle'},$newhash{'crsappend'},$newhash{'gradable'}) = split(/:/,$args); |
foreach my $item ('linktext','explanation','crslabel','crstitle','crsappend') { |
foreach my $item ('linktext','explanation','crslabel','crstitle','crsappend') { |
$newhash{$item} = &unescape($newhash{$item}); |
$newhash{$item} = &unescape($newhash{$item}); |
} |
} |
my %toolhash=&Apache::lonnet::dump('exttool_'.$marker,$cdom,$cnum); |
my %toolhash=&Apache::lonnet::dump('exttool_'.$marker,$cdom,$cnum); |
foreach my $item ('target','width','height','linktext','explanation','crslabel','crstitle','crsappend') { |
foreach my $item ('target','width','height','linktext','explanation','crslabel','crstitle','crsappend','gradable') { |
$newhash{$item} =~ s/^\s+//; |
$newhash{$item} =~ s/^\s+//; |
$newhash{$item} =~ s/\s+$//; |
$newhash{$item} =~ s/\s+$//; |
if (($item eq 'width') || ($item eq 'height') || ($item eq 'linktext') || ($item eq 'explanation')) { |
if (($item eq 'width') || ($item eq 'height') || ($item eq 'linktext') || ($item eq 'explanation')) { |
Line 276 sub update_exttool {
|
Line 314 sub update_exttool {
|
$newhash{$item} = ''; |
$newhash{$item} = ''; |
} |
} |
} |
} |
|
} elsif ($item eq 'gradable') { |
|
unless ($newhash{$item} == 1) { |
|
$newhash{$item} = ''; |
|
} |
} |
} |
if ($toolhash{$item} ne $newhash{$item}) { |
if ($toolhash{$item} ne $newhash{$item}) { |
|
if (($item eq 'gradable') && (!$supplementalflag)) { |
|
if ($newhash{$item}) { |
|
$newgradable = 'yes'; |
|
} else { |
|
$newgradable = 'no'; |
|
} |
|
} |
if ($newhash{$item} eq '') { |
if ($newhash{$item} eq '') { |
unless (($item eq 'target') || |
unless (($item eq 'target') || |
((($item eq 'width') || ($item eq 'height')) && |
((($item eq 'width') || ($item eq 'height')) && |
Line 305 sub update_exttool {
|
Line 354 sub update_exttool {
|
if (@deleted) { |
if (@deleted) { |
&Apache::lonnet::del('exttool_'.$marker,\@deleted,$cdom,$cnum); |
&Apache::lonnet::del('exttool_'.$marker,\@deleted,$cdom,$cnum); |
} |
} |
return ($changed,$errormsg); |
return ($changed,$newgradable,$errormsg); |
} |
} |
|
|
sub extedit_form { |
sub extedit_form { |
Line 334 sub extedit_form {
|
Line 383 sub extedit_form {
|
} |
} |
my ($formname,$formid,$toggle,$fieldsetid,$urlid,$dispdivstyle,$dimendivstyle, |
my ($formname,$formid,$toggle,$fieldsetid,$urlid,$dispdivstyle,$dimendivstyle, |
$windivstyle,$linktextstyle,$explanationstyle,$labelstyle,$titlestyle, |
$windivstyle,$linktextstyle,$explanationstyle,$labelstyle,$titlestyle, |
$appendstyle,$legend,$urlelem,$toolelem,%toolattr); |
$appendstyle,$gradablestyle,$legend,$urlelem,$toolelem,%toolattr); |
$formname = 'new'.$type; |
$formname = 'new'.$type; |
$toggle = $type; |
$toggle = $type; |
$fieldsetid = 'upload'.$type.'form'; |
$fieldsetid = 'external'.$type.'form'; |
$urlid = $type.'url'; |
$urlid = $type.'url'; |
map { $toolattr{$_} = $type.$_; } ('dispdiv','dimendiv','dimenwidth','dimenheight', |
map { $toolattr{$_} = $type.$_; } ('dispdiv','dimendiv','dimenwidth','dimenheight', |
'crstitlediv','crslabeldiv','crsappenddiv', |
'crstitlediv','crslabeldiv','crsappenddiv', |
'crstitle','crslabel','crsappend','windiv', |
'gradablediv','crstitle','crslabel','crsappend', |
'linktextdiv','explanationdiv','linktext', |
'windiv','linktextdiv','explanationdiv', |
'explanation','providerurl'); |
'linktext','explanation','providerurl'); |
$dispdivstyle = 'display:none'; |
$dispdivstyle = 'display:none'; |
$dimendivstyle = 'display:none'; |
$dimendivstyle = 'display:none'; |
$windivstyle = 'display:none'; |
$windivstyle = 'display:none'; |
Line 352 sub extedit_form {
|
Line 401 sub extedit_form {
|
$labelstyle = 'display:none'; |
$labelstyle = 'display:none'; |
$titlestyle = 'display:none'; |
$titlestyle = 'display:none'; |
$appendstyle = 'display:none'; |
$appendstyle = 'display:none'; |
|
$gradablestyle = 'display:none'; |
if ($supplementalflag) { |
if ($supplementalflag) { |
$formname = 'newsupp'.$type; |
$formname = 'newsupp'.$type; |
$toggle = 'supp'.$type; |
$toggle = 'supp'.$type; |
$fieldsetid = 'uploadsupp'.$type.'form'; |
$fieldsetid = 'externalsupp'.$type.'form'; |
$urlid = 'supp'.$type.'url'; |
$urlid = 'supp'.$type.'url'; |
map { $toolattr{$_} = 'supp'.$toolattr{$_}; } (keys(%toolattr)); |
map { $toolattr{$_} = 'supp'.$toolattr{$_}; } (keys(%toolattr)); |
} |
} |
my ($link,$legend,$active,$srcclass,$extsrc,$preview,$title,$save,$crstitle,$crslabel, |
my ($link,$legend,$active,$srcclass,$extsrc,$preview,$title,$save,$crstitle,$crslabel, |
$crsappend,$fieldsetstyle,$action,$hiddenelem,$form,$width,$height,$tooltarget, |
$crsappend,$fieldsetstyle,$action,$hiddenelem,$form,$width,$height,$tooltarget, |
$linktext,$explanation,$providerurl,%chkstate); |
$linktext,$explanation,$providerurl,$chkgrd,$chknogrd,%chkstate); |
$fieldsetstyle = 'display: none;'; |
$fieldsetstyle = 'display: none;'; |
$action = '/adm/coursedocs'; |
$action = '/adm/coursedocs'; |
my $protocol = ($ENV{'SERVER_PORT'} == 443?'https':'http'); |
my $protocol = ($ENV{'SERVER_PORT'} == 443?'https':'http'); |
Line 393 sub extedit_form {
|
Line 443 sub extedit_form {
|
$active = '<input type="hidden" name="active" value="'.$tabid.'" />'; |
$active = '<input type="hidden" name="active" value="'.$tabid.'" />'; |
} |
} |
$formname = 'edit'.$type.'_'.$residx; |
$formname = 'edit'.$type.'_'.$residx; |
$fieldsetid = 'upload'.$type.$residx; |
$fieldsetid = 'external'.$type.$residx; |
$urlid = $type.'url_'.$residx; |
$urlid = $type.'url_'.$residx; |
map { $toolattr{$_} .= '_'.$residx; } (keys(%toolattr)); |
map { $toolattr{$_} .= '_'.$residx; } (keys(%toolattr)); |
$srcclass = ' class="LC_nobreak"'; |
$srcclass = ' class="LC_nobreak"'; |
Line 408 sub extedit_form {
|
Line 458 sub extedit_form {
|
if ($type eq 'tool') { |
if ($type eq 'tool') { |
$link = $lt{'et'}; |
$link = $lt{'et'}; |
} |
} |
$link = '<a class="LC_menubuttons_link" href="javascript:toggleUpload('."'$toggle'".');">'.$link.'</a>'.$helpitem; |
$link = '<a class="LC_menubuttons_link" href="javascript:toggleExternal('."'$toggle'".');">'.$link.'</a>'.$helpitem; |
if ($type eq 'tool') { |
if ($type eq 'tool') { |
$legend = $lt{'te'}; |
$legend = $lt{'te'}; |
} else { |
} else { |
Line 470 sub extedit_form {
|
Line 520 sub extedit_form {
|
$height = $toolhash{'height'}; |
$height = $toolhash{'height'}; |
$linktext = $toolhash{'linktext'}; |
$linktext = $toolhash{'linktext'}; |
$explanation = $toolhash{'explanation'}; |
$explanation = $toolhash{'explanation'}; |
|
if ($toolhash{'gradable'}) { |
|
$chkgrd = ' checked="checked"'; |
|
} else { |
|
$chknogrd = ' checked="checked"'; |
|
} |
if (ref($ltitools->{$toolhash{'id'}}->{'crsconf'}) eq 'HASH') { |
if (ref($ltitools->{$toolhash{'id'}}->{'crsconf'}) eq 'HASH') { |
if ($ltitools->{$toolhash{'id'}}->{'crsconf'}->{'title'}) { |
if ($ltitools->{$toolhash{'id'}}->{'crsconf'}->{'title'}) { |
$crstitle = $toolhash{'crstitle'}; |
$crstitle = $toolhash{'crstitle'}; |
Line 494 sub extedit_form {
|
Line 549 sub extedit_form {
|
} |
} |
} |
} |
$toolelem = '<span class="LC_nobreak">'.$image.' '.$tooltitle.'</span><br />'; |
$toolelem = '<span class="LC_nobreak">'.$image.' '.$tooltitle.'</span><br />'; |
|
$gradablestyle = 'display:inline'; |
} |
} |
} |
} |
} |
} |
Line 526 sub extedit_form {
|
Line 582 sub extedit_form {
|
$crslabel = $env{'course.'.$cdom.'_'.$cnum.'.internal.coursecode'}; |
$crslabel = $env{'course.'.$cdom.'_'.$cnum.'.internal.coursecode'}; |
$crstitle = $env{'course.'.$cdom.'_'.$cnum.'.description'}; |
$crstitle = $env{'course.'.$cdom.'_'.$cnum.'.description'}; |
$crsappend = ''; |
$crsappend = ''; |
|
$chknogrd = ' checked="checked"'; |
} |
} |
$toolelem .= '<div id="'.$toolattr{'dispdiv'}.'" style="'.$dispdivstyle.'">'. |
$toolelem .= '<div id="'.$toolattr{'dispdiv'}.'" style="'.$dispdivstyle.'">'. |
'<span class="'.$class.'">'.&mt('Display target:').' '. |
'<span class="'.$class.'">'.&mt('Display target:').' '. |
Line 563 sub extedit_form {
|
Line 620 sub extedit_form {
|
'<span class="'.$class.'">'.&mt('Append to URL[_1]', |
'<span class="'.$class.'">'.&mt('Append to URL[_1]', |
'<span id="'.$toolattr{'providerurl'}.'"> ('.$providerurl.')<br /></span>'). |
'<span id="'.$toolattr{'providerurl'}.'"> ('.$providerurl.')<br /></span>'). |
'<input type="text" id="'.$toolattr{'crsappend'}.'" size="30" name="exttoolappend" value="'.$crsappend.'"'.$disabled.' /></span><br />'. |
'<input type="text" id="'.$toolattr{'crsappend'}.'" size="30" name="exttoolappend" value="'.$crsappend.'"'.$disabled.' /></span><br />'. |
'</div>'; |
'</div>'. |
|
'<div id="'.$toolattr{'gradablediv'}.'" style="'.$gradablestyle.'">'. |
|
'<span class="'.$class.'">'.&mt('Gradable').' '. |
|
'<label><input type="radio" name="exttoolgradable" value="1"'.$chkgrd.$disabled. |
|
' />'.&mt('Yes').'</label>'.(' 'x2). |
|
'<label><input type="radio" name="exttoolgradable" value="0"'.$chknogrd.$disabled. |
|
' />'.&mt('No').'</label></span></div>'; |
} |
} |
my $chooser = $toolelem; |
my $chooser = $toolelem; |
if ($type eq 'ext') { |
if ($type eq 'ext') { |
Line 695 sub extedit_javascript {
|
Line 758 sub extedit_javascript {
|
my $append = $toolsref->{$key}->{'crsconf'}->{'append'}; |
my $append = $toolsref->{$key}->{'crsconf'}->{'append'}; |
$toolsjs .= ' ltitoolsAppend['.$i.'] = '."'$append';\n"; |
$toolsjs .= ' ltitoolsAppend['.$i.'] = '."'$append';\n"; |
} |
} |
|
|
$i++; |
$i++; |
} |
} |
} |
} |
Line 702 sub extedit_javascript {
|
Line 766 sub extedit_javascript {
|
my %js_lt = &Apache::lonlocal::texthash( |
my %js_lt = &Apache::lonlocal::texthash( |
invurl => 'Invalid URL', |
invurl => 'Invalid URL', |
titbl => 'Title is blank', |
titbl => 'Title is blank', |
|
invtool => 'Please select an external tool', |
mixfra => 'Show preview in pop-up? (http in https page + no framing)', |
mixfra => 'Show preview in pop-up? (http in https page + no framing)', |
mixonly => 'Show preview in pop-up? (http in https page)', |
mixonly => 'Show preview in pop-up? (http in https page)', |
fraonly => 'Show preview in pop-up? (framing disallowed)', |
fraonly => 'Show preview in pop-up? (framing disallowed)', |
nopopup => 'Pop-up blocked', |
nopopup => 'Pop-up blocked', |
nopriv => 'Insufficient privileges to use preview', |
nopriv => 'Insufficient privileges to use preview', |
badurl => 'URL is not: http://hostname/path or https://hostname/path', |
badurl => 'URL is not: http://hostname/path or https://hostname/path', |
invtool => 'Please select an external tool', |
|
); |
); |
&js_escape(\%js_lt); |
&js_escape(\%js_lt); |
|
|
Line 824 function setExternal(extform,residx,type
|
Line 888 function setExternal(extform,residx,type
|
if (residx > 0) { |
if (residx > 0) { |
labelinput += '_'+residx; |
labelinput += '_'+residx; |
titleinput += '_'+residx; |
titleinput += '_'+residx; |
appendinput += '_'+residx; |
appendinput += '_'+residx; |
} |
} |
if (document.getElementById(labelinput)) { |
if (document.getElementById(labelinput)) { |
var crslabel = document.getElementById(labelinput).value; |
var crslabel = document.getElementById(labelinput).value; |
Line 847 function setExternal(extform,residx,type
|
Line 911 function setExternal(extform,residx,type
|
} else { |
} else { |
info += ':'; |
info += ':'; |
} |
} |
|
var gradablediv = prefix+'toolgradablediv'; |
|
if (residx > 0) { |
|
gradablediv += '_'+residx; |
|
} |
|
if (document.getElementById(gradablediv)) { |
|
if (document.getElementById(gradablediv).style.display == 'inline') { |
|
if (extform.exttoolgradable.length) { |
|
for (var i=0; i<extform.exttoolgradable.length; i++) { |
|
if (extform.exttoolgradable[i].checked) { |
|
if (extform.exttoolgradable[i].value == '1') { |
|
info += ':1'; |
|
} else { |
|
info += ':'; |
|
} |
|
break; |
|
} |
|
} |
|
} else { |
|
info += ':'; |
|
} |
|
} else { |
|
info += ':'; |
|
} |
|
} else { |
|
info += ':'; |
|
} |
info=escape(info); |
info=escape(info); |
if (residx > 0) { |
if (residx > 0) { |
eval("extform.importdetail.value=title+'='+info+'='+residx;extform.submit();"); |
eval("extform.importdetail.value=title+'='+info+'='+residx;extform.submit();"); |
Line 857 function setExternal(extform,residx,type
|
Line 947 function setExternal(extform,residx,type
|
} |
} |
|
|
function editext(residx,type) { |
function editext(residx,type) { |
if (document.getElementById('upload'+type+residx)) { |
if (document.getElementById('external'+type+residx)) { |
var curr = document.getElementById('upload'+type+residx).style.display; |
var curr = document.getElementById('external'+type+residx).style.display; |
if (curr == 'none') { |
if (curr == 'none') { |
disp = 'block'; |
disp = 'block'; |
} else { |
} else { |
disp = 'none'; |
disp = 'none'; |
} |
} |
document.getElementById('upload'+type+residx).style.display=disp; |
document.getElementById('external'+type+residx).style.display=disp; |
} |
} |
resize_scrollbox('contentscroll','1','1'); |
resize_scrollbox('contentscroll','1','1'); |
return; |
return; |
Line 957 function updateExttool(caller,form,suppl
|
Line 1047 function updateExttool(caller,form,suppl
|
labeldiv = prefix+'toolcrslabeldiv'; |
labeldiv = prefix+'toolcrslabeldiv'; |
titlediv = prefix+'toolcrstitlediv'; |
titlediv = prefix+'toolcrstitlediv'; |
appenddiv = prefix+'toolcrsappenddiv'; |
appenddiv = prefix+'toolcrsappenddiv'; |
|
gradablediv = prefix+'toolgradablediv'; |
providerurl = prefix+'toolproviderurl'; |
providerurl = prefix+'toolproviderurl'; |
labelinput = prefix+'toolcrslabel'; |
labelinput = prefix+'toolcrslabel'; |
titleinput = prefix+'toolcrstitle'; |
titleinput = prefix+'toolcrstitle'; |
Line 994 function updateExttool(caller,form,suppl
|
Line 1085 function updateExttool(caller,form,suppl
|
if (document.getElementById(appenddiv)) { |
if (document.getElementById(appenddiv)) { |
document.getElementById(appenddiv).style.display = 'none'; |
document.getElementById(appenddiv).style.display = 'none'; |
} |
} |
|
if (document.getElementById(gradablediv)) { |
|
document.getElementById(gradablediv).style.display = 'none'; |
|
} |
} else { |
} else { |
if (ltitools.length > 0) { |
if (ltitools.length > 0) { |
for (var j=0; j<ltitools.length; j++) { |
for (var j=0; j<ltitools.length; j++) { |
Line 1092 function updateExttool(caller,form,suppl
|
Line 1186 function updateExttool(caller,form,suppl
|
} |
} |
} |
} |
} |
} |
|
if (document.getElementById(gradablediv)) { |
|
if (supplementalflag != 1) { |
|
document.getElementById(gradablediv).style.display = 'inline'; |
|
} |
|
} |
break; |
break; |
} |
} |
} |
} |