version 1.13, 2024/03/25 17:29:23
|
version 1.18, 2025/02/21 06:09:37
|
Line 46 sub handler {
|
Line 46 sub handler {
|
my $uri = $request->uri; |
my $uri = $request->uri; |
$uri =~ s{^/daxepage}{}; |
$uri =~ s{^/daxepage}{}; |
&Apache::loncommon::content_type($request,'text/html'); |
&Apache::loncommon::content_type($request,'text/html'); |
my ($is_not_assess,$is_assess); |
my ($is_not_assess,$is_assess,$is_course_doc,$is_supp,$supp_path,$supp_title); |
if ($uri =~/\.(xml|html|htm|xhtml|xhtm)$/) { |
if ($uri =~/\.(xml|html|htm|xhtml|xhtm)$/) { |
$is_not_assess = 1; |
$is_not_assess = 1; |
|
if ($Apache::lonnet::env{'request.course.id'}) { |
|
my $cid = $Apache::lonnet::env{'request.course.id'}; |
|
my $cdom = $Apache::lonnet::env{'course.'.$cid.'.domain'}; |
|
my $cnum = $Apache::lonnet::env{'course.'.$cid.'.num'}; |
|
if ($uri =~ m{^/uploaded/\Q$cdom/$cnum\E/(docs|supplemental)/}) { |
|
if ($1 eq 'supplemental') { |
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
|
['folderpath','title']); |
|
$is_supp = 1; |
|
$supp_path = &escape(&HTML::Entities::decode($Apache::lonnet::env{'form.folderpath'})); |
|
$supp_title = &escape(&HTML::Entities::decode($Apache::lonnet::env{'form.title'})); |
|
} |
|
$is_course_doc = 1; |
|
$Apache::lonnet::env{'form.forceedit'} = 1; |
|
} |
|
} |
} elsif ($uri =~ /$LONCAPA::assess_re/) { |
} elsif ($uri =~ /$LONCAPA::assess_re/) { |
unless ($uri =~ /\.form$/) { |
unless ($uri =~ /\.form$/) { |
$is_assess = 1; |
$is_assess = 1; |
Line 58 sub handler {
|
Line 74 sub handler {
|
$request->status(406); |
$request->status(406); |
return OK; |
return OK; |
} |
} |
my %editors = &Apache::loncommon::permitted_editors(); |
my %editors = &Apache::loncommon::permitted_editors($uri); |
unless ($editors{'daxe'}) { |
unless ($editors{'daxe'}) { |
my $msg = '<p class="LC_warning">'. |
my $msg = '<p class="LC_warning">'. |
&mt('Daxe editor is not enabled for this Authoring Space.').'</p>'; |
&mt('Daxe editor is not enabled for this Authoring Space.').'</p>'; |
Line 68 sub handler {
|
Line 84 sub handler {
|
if ($is_not_assess) { |
if ($is_not_assess) { |
delete($editors{'xml'}); |
delete($editors{'xml'}); |
$editors{'edit'} = 1; |
$editors{'edit'} = 1; |
|
$Apache::lonnet::env{'form.editmode'} = 'daxe'; |
|
} else { |
|
$Apache::lonnet::env{'form.problemmode'} = 'daxe'; |
} |
} |
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
'noif' => 'No iframe support.', |
'noif' => 'No iframe support.', |
'show' => 'Show content in pop-up window', |
'show' => 'Show content in pop-up window', |
'save' => 'Save', |
'save' => 'Save', |
|
'text' => 'Text Editor', |
'oeds' => 'other editors', |
'oeds' => 'other editors', |
'othe' => 'other editor', |
'othe' => 'other editor', |
'edit' => 'Save and Edit', |
'edit' => 'Save and Edit', |
'disc' => 'Discard and View', |
'disc' => 'Discard and View', |
'save' => 'Save and View', |
'save' => 'Save and View', |
|
'daxe' => 'Daxe Editor', |
); |
); |
my $name = $uri; |
my $name = $uri; |
$name =~ s/^.*\/([^\/]+)$/$1/; |
$name =~ s/^.*\/([^\/]+)$/$1/; |
Line 86 sub handler {
|
Line 108 sub handler {
|
my $daxeurl = '/adm/daxe/daxe.html?config=config/loncapa_config.xml&save=/daxesave'. |
my $daxeurl = '/adm/daxe/daxe.html?config=config/loncapa_config.xml&save=/daxesave'. |
'&file='.$filearg; |
'&file='.$filearg; |
my $headjs = &Apache::loncommon::iframe_wrapper_headjs(). |
my $headjs = &Apache::loncommon::iframe_wrapper_headjs(). |
&listener_js($lang,$filearg). |
&listener_js($lang,$filearg,$is_assess). |
&toggle_LCmenus_js().&saveandview_js(). |
&toggle_LCmenus_js().&saveandview_js(). |
&Apache::edit::js_change_detection(); |
&Apache::edit::js_change_detection(); |
|
|
Line 95 sub handler {
|
Line 117 sub handler {
|
$headjs .= &Apache::lonxml::setmode_javascript(); |
$headjs .= &Apache::lonxml::setmode_javascript(); |
$clickexit = "javascript:setmode(this.form,'view');"; |
$clickexit = "javascript:setmode(this.form,'view');"; |
} else { |
} else { |
$headjs .= &Apache::lonxml::seteditor_javascript(); |
$headjs .= &Apache::lonxml::seteditor_javascript($is_course_doc,$is_supp, |
|
$supp_path,$supp_title); |
$clickexit = "javascript:seteditmode(this.form,'view');"; |
$clickexit = "javascript:seteditmode(this.form,'view');"; |
} |
} |
$clicksave = "javascript:daxesave('exit');"; |
$clicksave = "javascript:daxesave('exit');"; |
$clickedit = "javascript:daxesave();"; |
$clickedit = "javascript:daxesave();"; |
my $form_events = &Apache::edit::form_change_detection(); |
my $form_events = &Apache::edit::form_change_detection(); |
my $editheader = '<form '.$form_events.' method="post" name="daxeedit" action="'.$uri.'">'. |
my $editheader = '<form '.$form_events.' method="post" name="daxeedit" action="'.$uri.'">'; |
'<input type="hidden" name="problemmode" value="daxe" />'."\n". |
if ($is_assess) { |
'<div class="LC_edit_problem_editxml_header">'."\n"; |
$editheader .= '<input type="hidden" name="problemmode" value="daxe" />'."\n"; |
|
} |
|
$editheader .= '<div class="LC_edit_problem_daxe_header">'."\n"; |
my $saveeditbutton = '<input type="button" name="submitmode" accesskey="s" value="'.$lt{'edit'}. |
my $saveeditbutton = '<input type="button" name="submitmode" accesskey="s" value="'.$lt{'edit'}. |
'" onclick="'.$clickedit.'" />'."\n"; |
'" onclick="'.$clickedit.'" />'."\n"; |
my $exitbutton = '<input type="button" name="submitmode" accesskey="d" value="'.$lt{'disc'}. |
my $exitbutton = '<input type="button" name="submitmode" accesskey="d" value="'.$lt{'disc'}. |
'" onclick="'.$clickexit.'" />'."\n"; |
'" onclick="'.$clickexit.'" />'."\n"; |
my $saveexitbutton = '<input type="button" name="submitmode" accesskey="v" value="'.$lt{'save'}. |
my $saveexitbutton = '<input type="button" name="submitmode" accesskey="v" value="'.$lt{'save'}. |
'" onclick="'.$clicksave.'" />'."\n"; |
'" onclick="'.$clicksave.'" />'."\n"; |
$editheader .= '<table class="LC_edit_problem_header_title"><tr><td>'. |
$editheader .= '<div class="LC_landmark" style="clear:both;">'. |
$uri.'</td><td align="right"><span class="LC_nobreak">'. |
'<div class="LC_floatleft LC_landmark" style="margin-top: 2px">'.$uri.'</div>'. |
|
'<div class="LC_floatright LC_landmark"><span class="LC_nobreak">'. |
$saveeditbutton.$saveexitbutton.$exitbutton.'</span>'; |
$saveeditbutton.$saveexitbutton.$exitbutton.'</span>'; |
if ($editors{'edit'} || $editors{'xml'}) { |
if ($editors{'edit'} || $editors{'xml'}) { |
my $other = (($editors{'edit'} && $editors{'xml'})? $lt{'oeds'} : $lt{'othe'}); |
my $other = (($editors{'edit'} && $editors{'xml'})? $lt{'oeds'} : $lt{'othe'}); |
$editheader .= ' | <span class="LC_nobreak">'.$other.':</span> '. |
$editheader .= ' | <span class="LC_nobreak">'.$other.':</span> '. |
'<span class="LC_nobreak">'; |
'<span class="LC_nobreak">'; |
if ($is_not_assess) { |
if ($is_not_assess) { |
$editheader .= '<input type="hidden" name="editmode" value="" />'."\n". |
$editheader .= '<input type="hidden" name="editmode" value="daxe" />'."\n". |
'<input type="button" name="editordefault" value="'.$lt{'edit'}. |
'<input type="button" name="editordefault" value="'.$lt{'text'}. |
'" onclick="seteditmode(this.form,'."'edit'".');" />'."\n"; |
'" onclick="javascript:seteditmode(this.form,'."'edit'".');" />'."\n"; |
} else { |
} else { |
if ($editors{'edit'}) { |
if ($editors{'edit'}) { |
$editheader .= '<input type="button" name="submitmode" accesskey="e" value="'.&mt('Edit').'" '. |
$editheader .= '<input type="button" name="submitmode" accesskey="e" value="'.&mt('Edit').'" '. |
Line 133 sub handler {
|
Line 159 sub handler {
|
} |
} |
$editheader .= '</span>'; |
$editheader .= '</span>'; |
} |
} |
$editheader .= '</td></tr></table></div></form>'."\n"; |
$editheader .= '</div></div>'. |
|
'<div class="LC_landmark" style="clear:both"></div>'. |
|
'</div></form>'."\n"; |
my $start_collapsed = &collapsible_std_LCmenus(); |
my $start_collapsed = &collapsible_std_LCmenus(); |
my $args = { |
my $args = { |
'collapsible_header' => $editheader, |
'collapsible_header' => $editheader, |
Line 151 sub handler {
|
Line 179 sub handler {
|
$request->print(<<"ENDFRAME"); |
$request->print(<<"ENDFRAME"); |
$startpage |
$startpage |
$script |
$script |
<div class="LC_iframecontainer" style="padding-right: 5px"> |
<div class="LC_iframecontainer" style="padding-right: 5px" role="main"> |
|
<h1 class="LC_visually_hidden">$lt{'daxe'}</h1> |
<iframe src="$dest" id="lcdiframe">$lt{'noif'} $noiframe</iframe> |
<iframe src="$dest" id="lcdiframe">$lt{'noif'} $noiframe</iframe> |
</div> |
</div> |
$endpage |
$endpage |
Line 160 ENDFRAME
|
Line 189 ENDFRAME
|
} |
} |
|
|
sub listener_js { |
sub listener_js { |
my ($lang,$filearg) = @_; |
my ($lang,$filearg,$is_assess) = @_; |
return <<"ENDJS"; |
return <<"ENDJS"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
//<![CDATA[ |
//<![CDATA[ |
Line 171 var messageEvent = eventMethod == "attac
|
Line 200 var messageEvent = eventMethod == "attac
|
|
|
eventer(messageEvent,function(e) { |
eventer(messageEvent,function(e) { |
var reqdOrigin = window.location.protocol+'//'+window.location.hostname; |
var reqdOrigin = window.location.protocol+'//'+window.location.hostname; |
|
var is_assess = '$is_assess'; |
if (e.origin == reqdOrigin) { |
if (e.origin == reqdOrigin) { |
if (e.data == '$filearg') { |
if (e.data == '$filearg') { |
setmode(document.daxeedit,'view'); |
if (is_assess) { |
|
setmode(document.daxeedit,'view'); |
|
} else { |
|
seteditmode(document.daxeedit,'view'); |
|
} |
} else if ((e.data == 'userlclang') || (e.data == 'userlang')) { |
} else if ((e.data == 'userlclang') || (e.data == 'userlang')) { |
window.myIframe = document.getElementById("lcdiframe").contentWindow; |
window.myIframe = document.getElementById("lcdiframe").contentWindow; |
window.myIframe.postMessage(e.data+':$lang',reqdOrigin); |
window.myIframe.postMessage(e.data+':$lang',reqdOrigin); |