--- rat/lonratedt.pm 2010/08/20 08:13:38 1.100 +++ rat/lonratedt.pm 2016/01/15 19:13:04 1.112 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Edit Handler for RAT Maps # -# $Id: lonratedt.pm,v 1.100 2010/08/20 08:13:38 wenzelju Exp $ +# $Id: lonratedt.pm,v 1.112 2016/01/15 19:13:04 damieng Exp $ # # Copyright Michigan State University Board of Trustees # @@ -43,28 +43,89 @@ use HTML::Entities(); # --------------------------------------------------------- Build up RAT screen sub ratedt { my ($r,$url)=@_; - my %layout = ('border' => "0", - 'rows' => "1,250,*"); - my $js =' -<script type="text/javascript"> - var flag=0; -</script>'; - - my $start_page = - &Apache::loncommon::start_page('Edit Sequence',$js, - {'frameset' => 1, - 'add_entries' => \%layout}); - - my $end_page = - &Apache::loncommon::end_page({'frameset' => 1}); - $r->print(<<ENDDOCUMENT); -$start_page -<frame name="server" src="$url/loadonly/ratserver" noresize="noresize" - noscroll="noscroll" /> -<frame name="code" src="$url/loadonly/adveditmenu" /> -<frame name="mapout" src="/adm/rat/map.html" /> -$end_page +<!DOCTYPE html> +<html> + <head> + <title>Edit Sequence</title> + + <style> +html, body { + margin: 0; + padding: 0; +} +#server { + display: none; +} +#top { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 20%; + border: 0; +} +#bottom { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 80%; + border: 0; +} +#code, #mapout { + position: absolute; + width: 100%; + height: 100%; + border: 0; +} +#infout { + position: absolute; + z-index: 1; + right: 16px; + bottom: 0; + width: 420px; + min-width: 200px; + height: 300px; + border: 1px solid black; + overflow: auto; +} + </style> + </head> + + <body> + <iframe id="server" name="server" src="$url/loadonly/ratserver"></iframe> + <div id="top"><iframe id="code" name="code" src="$url/loadonly/adveditmenu"></iframe></div> + <div id="bottom"><iframe id="mapout" name="mapout" src="/adm/rat/map.html"></iframe></div> + <iframe id="infout"></iframe> + <script> +var flag=0; + +var resize = function(e) { + // auto-resize top iframe + var code = document.getElementById('code'); + var codedoc = (code.contentDocument) ? code.contentDocument : code.contentWindow.document; + var top = document.getElementById('top'); + top.style.height = ''; // reset height in case it needs to be reduced + codedoc.body.style.overflow = 'hidden'; // to hide scrollbar + var topHeight = codedoc.body.scrollHeight; + top.style.height = topHeight + 'px'; + // set remainder to the other iframe + var bottom = document.getElementById('bottom'); + bottom.style.height = window.innerHeight - topHeight + 'px'; + // fix right position of infout depending on scrollbar width + var mapout = document.getElementById('mapout'); + var mapoutdoc = (mapout.contentDocument) ? mapout.contentDocument : mapout.contentWindow.document; + var infout = document.getElementById('infout'); + infout.style.right = (mapout.offsetWidth - mapoutdoc.body.clientWidth) + 'px'; +} +var iframe = document.getElementById('code'); +iframe.onload = resize; +window.addEventListener('resize', resize, false); + </script> + + </body> +</html> ENDDOCUMENT } @@ -72,7 +133,7 @@ ENDDOCUMENT sub buttons { my $adv=shift; - my $output='<form method="post">'; + my $output='<form method="post" action="">'; if ($adv==1) { $output.= '<input type="submit" name="forceadv"' @@ -151,10 +212,10 @@ function idxopen(mode) { } // ------------------------------------------------------ Open groupsort window -function groupopen(url,recover,bookmarks) { +function groupopen(url,recover) { var options="scrollbars=1,resizable=1,menubar=0"; idxflag=1; - idx=open("/adm/groupsort?inhibitmenu=yes&mode=$mode&recover="+recover+"&readfile="+url+"&bookmarks="+bookmarks,"idxout",options); + idx=open("/adm/groupsort?inhibitmenu=yes&mode=$mode&recover="+recover+"&readfile="+url,"idxout",options); idx.focus(); } @@ -229,22 +290,27 @@ sub smpedt { my ($errtext,$fatal)= &LONCAPA::map::mapread(&Apache::lonnet::filelocation('',$url),''); unless ($fatal) { - $targetmsg='<b>'.&mt('Saved.').'</b><br />'; + $targetmsg=&Apache::lonhtmlcommon::confirm_success(&mt('Saved')); } else { - $targetmsg='<b>'.&mt('An error occurred while saving.').'</b><br />'; + $targetmsg=&Apache::lonhtmlcommon::confirm_success( + &mt('An error occurred while saving.'),1); } } if ($env{'form.revert'}) { - $targetmsg='<b>'.&mt('Reverted.').'</b><br />'; + $targetmsg=&Apache::lonhtmlcommon::confirm_success(&mt('Reverted')); unlink($tmpfn); my ($errtext,$fatal)= &LONCAPA::map::mapread(&Apache::lonnet::filelocation('',$url),''); } + $targetmsg = &Apache::loncommon::confirmwrapper($targetmsg) if ($targetmsg); if (-e $tmpfn) { $targetmsg= - '<span class="LC_warning">'.&mt('You are working with an unsaved version of your map.').'</span><br />'; + '<p class="LC_warning">' + .&mt('You are working with an unsaved version of your map.') + .'</p>'; my ($errtext,$fatal)=&LONCAPA::map::mapread($tmpfn,''); } + $errtext = '<p class="LC_error">'.$errtext.'</p>' if ($errtext); # ---------------------------------------------------------- Process form input my @importselect=&Apache::loncommon::get_env_multiple('form.importsel'); @@ -487,12 +553,12 @@ sub smpedt { my $editscript=&editscript('simple'); my %lt=&Apache::lonlocal::texthash( + 'sm' => 'Select Map', 'sa' => 'Save', 'nt' => 'New Title', 'se' => 'Search', 'im' => 'Import', - 'bk' => 'Import Bookmarks', - 'wl' => 'Import from Wishlist', + 'wl' => 'Import from Stored Links', 'vi' => 'View', 'lm' => 'Load Map', 'ds' => 'Discard Selected', @@ -509,9 +575,7 @@ sub smpedt { 'pas' => 'Paste after selected', 'reco' => 'Recover Deleted' ); - my $js=<<ENDJS; -<script type="text/javascript"> - + my $js=&Apache::lonhtmlcommon::scripttag(" $editscript function openview(entry) { @@ -543,14 +607,12 @@ sub smpedt { document.forms.simpleedit.submit(); } } - -</script> -ENDJS +"); &Apache::lonhtmlcommon::clear_breadcrumbs(); &Apache::lonhtmlcommon::add_breadcrumb({ - text => 'Construction Space', - href => &Apache::loncommon::authorspace(), + text => 'Authoring Space', + href => &Apache::loncommon::authorspace($url), faq => 6, bug => 'RAT', help => 'Sequence_Simple_Editor_Creation',}); @@ -564,16 +626,18 @@ ENDJS href => '',}); # Breadcrumbs are included by &start_page - my $start_page = &Apache::loncommon::start_page('Construction Space',$js) + my $start_page = &Apache::loncommon::start_page('Authoring Space',$js) .&Apache::loncommon::head_subbox( &Apache::loncommon::CSTR_pageheader() .&buttons(2)); my $end_page = &Apache::loncommon::end_page(); + my $filetext = &mt('File: [_1]','<span class="LC_filename">'.$url.'</span>'); $r->print(<<ENDSMPHEAD); $start_page -<span class="LC_error">$errtext</span> -<form name="simpleedit" method="post"> +$targetmsg +$errtext +<form name="simpleedit" method="post" action=""> <input type="hidden" name="forcesmp" value="1" /> <input type="hidden" name="renameres" value="0" /> <input type="hidden" name="renametitle" value="" /> @@ -581,41 +645,39 @@ $start_page <table> <tr><th width="40%">$lt{'ta'}</th> <th> </th> -<th width="40%">File: $url</th></tr> +<th width="40%">$filetext</th></tr> <tr><td bgcolor="#FFFFCC"> -<input type="button" onClick="javascript:groupsearch()" value="$lt{'se'}" /> -<input type="button" onClick="javascript:groupimport();" value="$lt{'im'}" /> +<input type="button" onclick="javascript:groupsearch()" value="$lt{'se'}" /> +<input type="button" onclick="javascript:groupimport();" value="$lt{'im'}" /> $lt{'as'} <hr /> <input type="text" size="20" name="importmap" /> <input type="button" -onClick="javascript:openbrowser('simpleedit','importmap','sequence,page','')" -value="Select Map" /><input type="submit" name="loadmap" value="$lt{'lm'}" /><hr /> +onclick="javascript:openbrowser('simpleedit','importmap','sequence,page','')" +value="$lt{'sm'}" /><input type="submit" name="loadmap" value="$lt{'lm'}" /><hr /> <input type="submit" name="discard" value="$lt{'ds'}" /> <input type="submit" name="clear" value="$lt{'ca'}" /> -<input type="button" onClick="javascript:viewimport()" value="$lt{'vi'}" /> +<input type="button" onclick="javascript:viewimport()" value="$lt{'vi'}" /> </td><td> </td><td bgcolor="#FFFFCC"> -<input type="button" onClick= +<input type="button" onclick= "javascript:impfortarget.value=1;groupsearch()" value="$lt{'se'}" /> -<input type="button" onClick= +<input type="button" onclick= "javascript:impfortarget.value=1;groupimport();" value="$lt{'im'}" /> -<input type="button" onClick= -"javascript:impfortarget.value=1;groupopen(0,1,1);" value="$lt{'bk'}" /> -<input type="button" onClick= -"javascript:impfortarget.value=1;open_Wishlist_Import('simple');" value="$lt{'wl'}" /> -<input type="button" onClick= -"javascript:impfortarget.value=1;groupopen('$url',1,0);" value="$lt{'reco'}" /> +<input type="button" onclick= +"javascript:impfortarget.value=1;open_StoredLinks_Import('simple');" value="$lt{'wl'}" /> +<input type="button" onclick= +"javascript:impfortarget.value=1;groupopen('$url',1);" value="$lt{'reco'}" /> $lt{'as'} <hr /> <input type="submit" name="moveup" value="$lt{'mu'}" /> <input type="submit" name="movedown" value="$lt{'md'}" /> -<input type="button" onClick="javascript:renametarget()" value="$lt{'re'}" /> -<hr />$targetmsg +<input type="button" onclick="javascript:renametarget()" value="$lt{'re'}" /> +<hr /> <input type="submit" name="revert" value="$lt{'rv'}" /> <input type="submit" name="save" value="$lt{'sa'}" /> -<input type="button" onClick="javascript:viewtarget()" value="$lt{'vi'}" /> +<input type="button" onclick="javascript:viewtarget()" value="$lt{'vi'}" /> </td></tr> <tr><td bgcolor="#FFFFCC"><select name="importsel" size="10" multiple="multiple"> @@ -624,17 +686,18 @@ $importwindow </td> <td bgcolor="#FFFFAA" align="center"> $lt{'cs'}<br /> -<input type="submit" name="cut" value="<<<" /><p> +<input type="submit" name="cut" value="<<<" /> <hr /> $lt{'ps'}<br /> -<input type="submit" name="copy" value="<--" /><p> -<h /r> +<input type="submit" name="copy" value="<--" /> +<hr /> $lt{'pas'}<br /> -<input type="submit" name="paste" value="-->" /> +<input type="submit" name="paste" value="-->" /> </td> <td bgcolor="#FFFFCC"><select name="target" size="10" multiple="multiple"> $targetwindow </select> +</td></tr> </table> <input type="hidden" name="importdetail" value="" /> <input type="hidden" name="curimpdetail" value="$importdetail" /> @@ -648,12 +711,14 @@ ENDSMPHEAD # ----------------------------------------------------------------- No such dir sub nodir { my ($r,$dir)=@_; - $dir=~s{^/home/$LONCAPA::username_re/public_html}{}; - my $brcrum = [{'href' => &Apache::loncommon::authorspace(), - 'text' => 'Construction Space'}]; + my $londocroot = $r->dir_config('lonDocRoot'); + my ($path) = ($dir =~ m{^\Q$londocroot\E?(/priv/[^/]+/[^/]+/)}); + $dir=~s{^\Q$londocroot/priv/\E[^/]+/[^/]+}{}; + my $brcrum = [{'href' => &Apache::loncommon::authorspace($path), + 'text' => 'Authoring Space'}]; # {'href' => '', # 'text' => 'No such directory'}]; - $r->print(&Apache::loncommon::start_page('Construction Space', + $r->print(&Apache::loncommon::start_page('Authoring Space', undef, {'bread_crumbs' => $brcrum,}) .&Apache::loncommon::head_subbox( @@ -672,8 +737,8 @@ sub viewmap { &Apache::lonhtmlcommon::clear_breadcrumbs(); &Apache::lonhtmlcommon::add_breadcrumb({ - text => 'Construction Space', - href => &Apache::loncommon::authorspace(), + text => 'Authoring Space', + href => &Apache::loncommon::authorspace($url), faq => 6, bug => 'RAT', help => 'Sequence_Simple_Editor_Creation',}); @@ -709,7 +774,7 @@ sub viewmap { .'<th>'.&mt('Title in map').'</th>' .'<th>'.&mt('Filename of resource').'</th>' .'<th>'.&mt('Link to published resource').'</th>' - .'<th>'.&mt('Link to resource in Construction Space').'</th>' + .'<th>'.&mt('Link to resource in Authoring Space').'</th>' .&Apache::loncommon::end_data_table_header_row() ); foreach (&LONCAPA::map::attemptread(&Apache::lonnet::filelocation('',$url))) { @@ -728,10 +793,10 @@ sub viewmap { $filename = $1; } my $cstrurl = $resurl; - $cstrurl =~ s#^/res/[^/]+/([^/]+)/#/priv/$1/#; + $cstrurl =~ s{^/res/}{/priv/}; $r->print(&Apache::loncommon::start_data_table_row() .'<td>' - .'<img src="'.&Apache::loncommon::icon($resfilepath).'" />' + .'<img src="'.&Apache::loncommon::icon($resfilepath).'" alt="" />' .'</td>' .'<td>' .&HTML::Entities::encode(&LONCAPA::map::qtescape($title)) @@ -747,7 +812,7 @@ sub viewmap { $r->print('</td><td>'); if ($url) { $r->print('<a href="'.$cstrurl.'">'. - &mt('Construction space').'</a>'); + &mt('Authoring Space').'</a>'); } else { $r->print(' '); }