[LON-CAPA-cvs] cvs: loncom /homework lonhomework.pm structuretags.pm /interface loncommon.pm /localize/localize de.pm /xml lonxml.pm

droeschl droeschl at source.lon-capa.org
Fri Apr 17 08:34:13 EDT 2015


droeschl		Fri Apr 17 12:34:13 2015 EDT

  Modified files:              
    /loncom/homework	lonhomework.pm structuretags.pm 
    /loncom/interface	loncommon.pm 
    /loncom/localize/localize	de.pm 
    /loncom/xml	lonxml.pm 
  Log:
  Changes related to editors in authoring space.
  - moved several menu related subroutines from structuretags to lonhomework
  - typos, wording and German translation
  - menu structure (xml editor): merged graphical and advanced sections into miscellaneous
  - replaced the template menu by separate menus for each submenu
  - adjusted styles and structure of the actionbar
  
  
-------------- next part --------------
Index: loncom/homework/lonhomework.pm
diff -u loncom/homework/lonhomework.pm:1.351 loncom/homework/lonhomework.pm:1.352
--- loncom/homework/lonhomework.pm:1.351	Thu Apr 16 10:13:29 2015
+++ loncom/homework/lonhomework.pm	Fri Apr 17 12:33:56 2015
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Homework handler
 #
-# $Id: lonhomework.pm,v 1.351 2015/04/16 10:13:29 droeschl Exp $
+# $Id: lonhomework.pm,v 1.352 2015/04/17 12:33:56 droeschl Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1014,75 +1014,83 @@
                 &mt('Problem Editing').' '.&Apache::loncommon::help_open_topic('Problem_Editor_XML_Index').
               '</div><div class="LC_edit_actionbar" id="actionbar">';
 
-        $result.='<input type="hidden" name="problemmode" value="saveedit" />'.
+    $result.='<input type="hidden" name="problemmode" value="saveedit" />'.
                   &Apache::structuretags::problem_edit_buttons('editxml');
-        $result.='<div class="LC_edit_problem_discards">';
+    $result.='<div>';
 
-		unless ($env{'environment.nocodemirror'}) {
-		# dropdown menues
-    		$result .= '<ol class="LC_primary_menu LC_floatleft">'.
-    		&Apache::lonmenu::create_submenu("#", "", &mt("Templates"), 
-                &Apache::structuretags::insert_menu_datastructure(),
-                "").'</ol>';
-		}
-    $result .= '<ol class="LC_primary_menu LC_floatleft">';
+    $result .= '<ol class="LC_primary_menu" style="display:inline-block;font-size:90%;vertical-align:middle;">';
+
+    unless ($env{'environment.nocodemirror'}) {
+        # dropdown menus
+        $result .= Apache::lonmenu::create_submenu("#", "", 
+            &mt("Problem Templates"), template_dropdown_datastructure());
+
+        $result .= Apache::lonmenu::create_submenu("#", "", 
+            &mt("Response Types"), responseblock_dropdown_datastructure());
+
+        $result .= Apache::lonmenu::create_submenu("#", "", 
+            &mt("Conditional Blocks"), conditional_scripting_datastructure());
+
+        $result .= Apache::lonmenu::create_submenu("#", "", 
+            &mt("Miscellaneous"), misc_datastructure());
+    }
 
     $result .= Apache::lonmenu::create_submenu("#", "", 
         &mt("Help") . ' <img src="/adm/help/help.png" alt="' . &mt("Help") .
         '" style="vertical-align:text-bottom; height: auto; margin:0; "/>', 
-        &Apache::structuretags::helpmenu_datastructure(),"");
+        helpmenu_datastructure(),"");
 
     $result.="</ol></div>";
          
-         $result.='<hr style="clear:both;visibility:hidden" /></div></div>'.&Apache::lonxml::message_location().
-                  &Apache::loncommon::xmleditor_js().
-		  '<textarea '.&Apache::edit::element_change_detection().
-	              ' rows="'.$rows.'" cols="'.$cols.'" style="width:100%" '.
-		      ' name="editxmltext" id="LC_editxmltext">'.
-		      &HTML::Entities::encode($problem,'<>&"').'</textarea>
-            <div id="LC_aftertextarea">
-            </div>
-	        </form>';
-	    my $resource = $env{'request.ambiguous'};
-	    unless($env{'environment.nocodemirror'}){
-	        
-	        $result .= '<link rel="stylesheet" href="/adm/codemirror/codemirror-combined-xml.css">
-	        <script src="/adm/codemirror/codemirror-compressed-xml.js"></script>
-	        <script>
-	            CodeMirror.defineMode("mixedmode", function(config) {
-	                return CodeMirror.multiplexingMode(
-	                    CodeMirror.getMode(config, "xml"),
-	                    {
-	                        open: "\<script type=\"loncapa/perl\"\>", close: "\</script\>",
-	                        mode: CodeMirror.getMode(config, "perl"),
-	                        delimStyle: "tag",
-	                    }
-	              );
-	            });
-	            var cm = CodeMirror.fromTextArea(document.getElementById("LC_editxmltext"),
-	            {
-	                mode: "mixedmode",
-	                lineWrapping: true,
-	                lineNumbers: true,
-	                tabSize: 4,
-	                indentUnit: 4,
-
-	                autoCloseTags: true,
-	                autoCloseBrackets: true,
-	                height: "auto",
-	                styleActiveLine: true,
-	                
-	                extraKeys: {
-	                    "Tab": "indentMore",
-	                    "Shift-Tab": "indentLess",
-	                }
-	            });
-	            restoreScrollPosition("'.$resource.'");
-	        </script>';
-	    }
-        $result .= &Apache::loncommon::end_page();
-        &Apache::lonxml::add_messages(\$result);
-        $request->print($result);
+    $result .= '</div></div>' . 
+        &Apache::lonxml::message_location() .
+        &Apache::loncommon::xmleditor_js() .
+        '<textarea ' . &Apache::edit::element_change_detection() .
+        ' rows="'.$rows.'" cols="'.$cols.'" style="width:100%" ' .
+        ' name="editxmltext" id="LC_editxmltext">' .
+        &HTML::Entities::encode($problem,'<>&"') .
+        '</textarea> <div id="LC_aftertextarea"> </div> </form>';
+
+    my $resource = $env{'request.ambiguous'};
+    unless($env{'environment.nocodemirror'}){
+        $result .= '<link rel="stylesheet" href="/adm/codemirror/codemirror-combined-xml.css">
+        <script src="/adm/codemirror/codemirror-compressed-xml.js"></script>
+        <script>
+            CodeMirror.defineMode("mixedmode", function(config) {
+                return CodeMirror.multiplexingMode(
+                    CodeMirror.getMode(config, "xml"),
+                    {
+                        open: "\<script type=\"loncapa/perl\"\>", close: "\</script\>",
+                        mode: CodeMirror.getMode(config, "perl"),
+                        delimStyle: "tag",
+                    }
+              );
+            });
+            var cm = CodeMirror.fromTextArea(document.getElementById("LC_editxmltext"),
+            {
+                mode: "mixedmode",
+                lineWrapping: true,
+                lineNumbers: true,
+                tabSize: 4,
+                indentUnit: 4,
+
+                autoCloseTags: true,
+                autoCloseBrackets: true,
+                height: "auto",
+                styleActiveLine: true,
+                
+                extraKeys: {
+                    "Tab": "indentMore",
+                    "Shift-Tab": "indentLess",
+                }
+            });
+            restoreScrollPosition("'.$resource.'");
+        </script>';
+    }
+
+    $result .= &Apache::loncommon::end_page();
+    &Apache::lonxml::add_messages(\$result);
+    $request->print($result);
     }
     return '';
 }
@@ -1407,5 +1415,174 @@
 
 }
 
+sub template_dropdown_datastructure {
+    # gathering the all templates and their path, title, category and help topic
+    my @templates = get_template_list('problem');
+    # template category => title
+    my %tmplthash = ();
+    # template title => path
+    my %tmpltcontent = ();
+	
+    foreach my $template (@templates){
+        # put in hash if the template is not empty
+        unless ($template->[1] eq ''){
+            push(@{$tmplthash{$template->[2]}}, $template->[1]);
+            push(@{$tmpltcontent{$template->[1]}},$template->[0]);
+        }
+    }
+
+	my $catList = [];
+    foreach my $cat (sort keys %tmplthash) {
+		my $catItems = [];
+        foreach my $title (sort @{$tmplthash{$cat}}) {
+            my $path = $tmpltcontent{$title}->[0];
+            my $code;
+            open(FH, "<$path");
+            while(<FH>){
+                $code.= $_ unless $_ =~ /(<problem>)|(<\/problem>)/;
+            }
+            close(FH);
+
+			if ($code ne '') {				
+                my $href = 'javascript:insertText(\'' . &convert_for_js(&HTML::Entities::encode($code,'<>&"')) . '\')';
+				my $currItem = [$href, $title, undef];
+				push @{$catItems}, $currItem;
+			}
+        }
+		push @{$catList}, [$catItems, $cat, undef];
+    }
+
+    return $catList;
+}
+
+sub responseblock_dropdown_datastructure {
+	
+	my $mathCat = [
+		[
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_formularesponse())) . "\')", &mt("Formula Response"), undef],
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_functionplotresponse())) . "\')", &mt("Function Plot Response"), undef],
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_mathresponse())) . "\')", &mt("Math Response"), undef],
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_numericalresponse())) . "\')", &mt("Numerical Response"), undef]
+		], 
+		&mt("Math"), 
+		undef
+	];
+
+	my $miscCat = [		
+		[
+            ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_imageresponse())) . "\')", &mt("Click on Image"), undef],
+            ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_customresponse())) . "\')", &mt("Custom Response"), undef],
+            ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_externalresponse())) . "\')", &mt("External Response"), undef],
+            ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_matchresponse())) . "\')", &mt("Match Two Lists"), undef],
+            ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_radiobuttonresponse())) . "\')", &mt("One out of N statements"), undef],
+            ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_optionresponse())) . "\')", &mt("Select from Options"), undef], 
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_rankresponse())) . "\')", &mt("Rank Values"), undef]
+		],
+		&mt("Miscellaneous"),
+		undef
+	];
+
+	my $chemCat = [
+		[
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_reactionresponse())) . "\')", &mt("Chemical Reaction"), undef],
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_organicresponse())) . "\')", &mt("Organic Chemical Structure"), undef]
+		],
+		&mt("Chemistry"),
+		undef
+	];
+
+	my $textCat = [
+		[
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_stringresponse())) . "\')", &mt("String Response"), undef],
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_essayresponse())) . "\')", &mt("Essay"), undef]
+		],
+		&mt("Text"),
+		undef
+	];
+
+    return [$mathCat, $miscCat, $chemCat, $textCat];
+}
+
+
+sub conditional_scripting_datastructure {
+# TODO: corresponding routines should be used for the javascript:insertText parts
+# instead of the placeholder routine default_xml_tag with the tags
+# e.g. &default_xml_tag("postanswerdate") should be replaced with a routine which
+# returns the corresponding content for this case
+
+#TODO translated is currently temporarily here, another solution should be found where the
+# needed string can be retrieved
+
+	my $translatedTag = '
+<translated>
+    <lang which="en"></lang>
+    <lang which="default"></lang>
+</translated>';
+    return [
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode($translatedTag)) . "\')", &mt("Translated Block"), undef],
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("block"))) . "\')", &mt("Conditional Block"), undef],
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("postanswerdate"))) . "\')", &mt("After Answer Date Block"), undef],
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("preduedate"))) . "\')", &mt("Before Due Date Block"), undef],
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("solved"))) . "\')", &mt("Block For After Solved"), undef],
+			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("notsolved"))) . "\')", &mt("Block For When Not Solved"), undef]
+        ];
+}
+
+sub misc_datastructure {
+    return [
+        ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_img())) . "\')", &mt("Image"), undef],
+        ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::lonplot::insert_gnuplot())) . "\')", &mt("GNU Plot"), undef],
+        ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_organicstructure())) . "\')", &mt("Organic Structure"), undef],
+        ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_script())) . "\')", &mt("Script Block"), undef],
+        ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("allow"))) . "\')", &mt("File Dependencies"), undef],
+        ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("import"))) . "\')", &mt("Import a File"), undef],
+        ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::londefdef::insert_meta())) . "\')", &mt("Custom Metadata"), undef]
+    ];
+}
+
+# helper routine for the datastructure building subroutines
+sub default_xml_tag {
+	my ($tag) = @_;
+	return "\n<$tag></$tag>";
+}
+
+
+sub helpmenu_datastructure {
+
+	my $width = 500;
+	my $height = 600;
+
+	my $helpers = [
+		['Problem_LON-CAPA_Functions', &mt('Script Functions')],
+		['Greek_Symbols', &mt('Greek Symbols')],
+ 		['Other_Symbols', &mt('Other Symbols')],
+		['Authoring_Output_Tags', &mt('Output Tags')],
+		['Authoring_Multilingual_Problems', 
+			&mt('How to create problems in different languages')]
+	];
+
+	my $help_structure = [];
+
+	foreach my $count (0..(scalar(@{$helpers})-1)) {
+		my $filename = $helpers->[$count]->[0];
+		my $title = $helpers->[$count]->[1];
+		my $href = &HTML::Entities::encode("javascript:openMyModal('/adm/help/$filename.hlp',$width,$height,'yes');");
+		push @{$help_structure}, [$href, $title, undef];
+	}
+
+	return $help_structure;
+}
+
+# we need substitution to not break javascript code
+sub convert_for_js {
+    my $return = shift;
+        $return =~ s|script|ESCAPEDSCRIPT|g;
+        $return =~ s|\\|\\\\|g;
+        $return =~ s|\n|\\r\\n|g;
+        $return =~ s|'|\\'|g;
+		$return =~ s|'|\\'|g;
+    return $return;
+}
+
 1;
 __END__
Index: loncom/homework/structuretags.pm
diff -u loncom/homework/structuretags.pm:1.534 loncom/homework/structuretags.pm:1.535
--- loncom/homework/structuretags.pm:1.534	Fri Apr 10 12:01:28 2015
+++ loncom/homework/structuretags.pm	Fri Apr 17 12:33:56 2015
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA 
 # definition of tags that give a structure to a document
 #
-# $Id: structuretags.pm,v 1.534 2015/04/10 12:01:28 droeschl Exp $
+# $Id: structuretags.pm,v 1.535 2015/04/17 12:33:56 droeschl Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -752,8 +752,18 @@
 
 sub problem_edit_buttons {
    my ($mode)=@_;
+# Buttons that save
+   my $result = '<div style="float:right">';
+   if ($mode eq 'editxml') {
+       $result.=&problem_edit_action_button('subsaveedit','saveeditxml','s','Save and EditXML');
+       $result.=&problem_edit_action_button('subsaveview','saveviewxml','v','Save and View');
+   } else {
+       $result.=&problem_edit_action_button('subsaveedit','saveedit','s','Save and Edit');
+       $result.=&problem_edit_action_button('subsaveview','saveview','v','Save and View');
+   }
+   $result.="\n</div>\n";
 # Buttons that do not save
-   my $result='<div class="LC_edit_problem_discards">'.
+   $result .= '<div>'.
               &problem_edit_action_button('subdiscview','discard','d','Discard Edits and View',1);
    if ($mode eq 'editxml') {
        $result.=&problem_edit_action_button('subedit','edit','e','Edit',1);
@@ -764,224 +774,9 @@
        $result.=&problem_edit_action_button('subundo','undo','u','Undo',1);
    }
    $result.="\n</div>";
-# Buttons that save
-   $result.='<div class="LC_edit_problem_saves">';
-   if ($mode eq 'editxml') {
-       $result.=&problem_edit_action_button('subsaveedit','saveeditxml','s','Save and EditXML');
-       $result.=&problem_edit_action_button('subsaveview','saveviewxml','v','Save and View');
-   } else {
-       $result.=&problem_edit_action_button('subsaveedit','saveedit','s','Save and Edit');
-       $result.=&problem_edit_action_button('subsaveview','saveview','v','Save and View');
-   }
-   $result.="\n</div>\n";
    return $result;
 }
 
-sub insert_menu_datastructure {
-
-	my $template_menu = &template_dropdown_datastructure();
-	my $responseblock_menu = &responseblock_dropdown_datastructure();
-	my $conditional_scripting = &conditional_scripting_datastructure();
-	my $misc = &misc_datastructure();
-	
-	my @menu = ($template_menu, $responseblock_menu, $conditional_scripting, $misc);
-	return \@menu;
-
-}
-
-sub template_dropdown_datastructure {
-    # gathering the all templates and their path, title, category and help topic
-    my @templates = &Apache::lonhomework::get_template_list('problem');
-    # template category => title
-    my %tmplthash = ();
-    # template title => path
-    my %tmpltcontent = ();
-	
-    foreach my $template (@templates){
-        # put in hash if the template is not empty
-        unless ($template->[1] eq ''){
-            push(@{$tmplthash{$template->[2]}}, $template->[1]);
-            push(@{$tmpltcontent{$template->[1]}},$template->[0]);
-        }
-    }
-
-	my $catList = [];
-    foreach my $cat (sort keys %tmplthash) {
-		my $catItems = [];
-        foreach my $title (sort @{$tmplthash{$cat}}) {
-            my $path = $tmpltcontent{$title}->[0];
-            my $code;
-            open(FH, "<$path");
-            while(<FH>){
-                $code.= $_ unless $_ =~ /(<problem>)|(<\/problem>)/;
-            }
-            close(FH);
-
-			if ($code ne '') {				
-                my $href = 'javascript:insertText(\'' . &convert_for_js(&HTML::Entities::encode($code,'<>&"')) . '\')';
-				my $currItem = [$href, $title, undef];
-				push @{$catItems}, $currItem;
-			}
-        }
-		push @{$catList}, [$catItems, $cat, undef];
-    }
-
-	my $templDropdown = [$catList, &mt("Complete Problem Templates"), undef];
-    return $templDropdown;
-}
-
-sub responseblock_dropdown_datastructure {
-	
-	my $mathCat = [
-		[
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_formularesponse())) . "\')", &mt("Formula Response"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_functionplotresponse())) . "\')", &mt("Function Plot Response"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_mathresponse())) . "\')", &mt("Math Response"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_numericalresponse())) . "\')", &mt("Numerical Response"), undef]
-		], 
-		&mt("Math"), 
-		undef
-	];
-
-	my $miscCat = [		
-		[
-            ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_imageresponse())) . "\')", &mt("Click on Image"), undef],
-            ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_customresponse())) . "\')", &mt("Custom Response"), undef],
-            ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_externalresponse())) . "\')", &mt("External Response"), undef],
-            ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_matchresponse())) . "\')", &mt("Match Response"), undef],
-            ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_radiobuttonresponse())) . "\')", &mt("One out of N Statement"), undef],
-            ["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_optionresponse())) . "\')", &mt("Optionresponse"), undef], 
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_rankresponse())) . "\')", &mt("Rank Values"), undef]
-		],
-		&mt("Misc"),
-		undef
-	];
-
-	my $chemCat = [
-		[
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_reactionresponse())) . "\')", &mt("Chemical Reaction"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_organicresponse())) . "\')", &mt("Organic Structure"), undef]
-		],
-		&mt("Chemical"),
-		undef
-	];
-
-	my $textCat = [
-		[
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_stringresponse())) . "\')", &mt("String Response"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_essayresponse())) . "\')", &mt("Essay"), undef]
-		],
-		&mt("Text"),
-		undef
-	];
-
-	my $cats = [[$mathCat, $miscCat, $chemCat, $textCat], &mt("Response Types"), undef];
-	return $cats;
-}
-
-
-sub conditional_scripting_datastructure {
-# TODO: corresponding routines should be used for the javascript:insertText parts
-# instead of the placeholder routine default_xml_tag with the tags
-# e.g. &default_xml_tag("postanswerdate") should be replaced with a routine which
-# returns the corresponding content for this case
-
-#TODO translated is currently temporarily here, another solution should be found where the
-# needed string can be retrieved
-
-	my $translatedTag = '
-<translated>
-    <lang which="en"></lang>
-    <lang which="default"></lang>
-</translated>';
-
-	my $cat = [
-		[
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode($translatedTag)) . "\')", &mt("Translated Tag"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("block"))) . "\')", &mt("Conditional Block"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("postanswerdate"))) . "\')", &mt("After Answer Block"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("preduedate"))) . "\')", &mt("Before Due Date Block"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("solved"))) . "\')", &mt("Block For After Solved"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("notsolved"))) . "\')", &mt("Block For When Not Solved"), undef]
-		],
-		&mt("Contitional Scripting"),
-		undef
-	];
-
-	return $cat;
-}
-
-sub misc_datastructure {
-	
-	my $graphicalCat = [
-		[
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_img())) . "\')", &mt("Image"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::lonplot::insert_gnuplot())) . "\')", &mt("GNU Plot"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_organicstructure())) . "\')", &mt("Organic Structure"), undef]
-		],
-		"Graphical",
-		undef
-	];
-
-	my $advancedCat = [
-		[
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::edit::insert_script())) . "\')", &mt("Script Block"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("allow"))) . "\')", &mt("File Dependencies"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&default_xml_tag("import"))) . "\')", &mt("Import a File"), undef],
-			["javascript:insertText(\'" . &convert_for_js(&HTML::Entities::encode(&Apache::londefdef::insert_meta())) . "\')", &mt("Custom Metadata"), undef]
-		],
-		"advanced",
-		undef
-	];
-	
-	my $cats = [[$graphicalCat, $advancedCat], &mt("misc"), undef];
-	return $cats;
-}
-
-# helper routine for the datastructure building subroutines
-sub default_xml_tag {
-	my ($tag) = @_;
-	return "\n<$tag></$tag>";
-}
-
-
-sub helpmenu_datastructure {
-
-	my $width = 500;
-	my $height = 600;
-
-	my $helpers = [
-		['Problem_LON-CAPA_Functions', &mt('Script Functions')],
-		['Greek_Symbols', &mt('Greek Symbols')],
- 		['Other_Symbols', &mt('Other Symbols')],
-		['Authoring_Output_Tags', &mt('Output Tags')],
-		['Authoring_Multilingual_Problems', 
-			&mt('How to create problems in different languages')]
-	];
-
-	my $help_structure = [];
-
-	foreach my $count (0..(scalar(@{$helpers})-1)) {
-		my $filename = $helpers->[$count]->[0];
-		my $title = $helpers->[$count]->[1];
-		my $href = &HTML::Entities::encode("javascript:openMyModal('/adm/help/$filename.hlp',$width,$height,'yes');");
-		push @{$help_structure}, [$href, $title, undef];
-	}
-
-	return $help_structure;
-}
-
-# we need substitution to not break javascript code
-sub convert_for_js {
-    my $return = shift;
-        $return =~ s|script|ESCAPEDSCRIPT|g;
-        $return =~ s|\\|\\\\|g;
-        $return =~ s|\n|\\r\\n|g;
-        $return =~ s|'|\\'|g;
-		$return =~ s|'|\\'|g;
-    return $return;
-}
-
 sub problem_edit_header {
     my ($mode)=@_;
     my $return = '<input type="hidden" name="submitted" value="edit" />'.
@@ -993,9 +788,7 @@
         '<input type="hidden" name="problemmode" value="saveedit" />'.
         &problem_edit_buttons();
 
-    $return.='<hr style="clear:both;visibility:hidden;" />
-    </div></div>'
-    .&Apache::lonxml::message_location();
+    $return .= '</div></div>' . &Apache::lonxml::message_location();
     $return .= '<link rel="stylesheet" href="/adm/codemirror/codemirror-combined.css" />
     <script type="text/javascript" src="/adm/codemirror/codemirror-compressed-colorful.js"></script>';
 
@@ -1008,7 +801,8 @@
                         $(\'.LC_edit_actionbar\').scrollToFixed(
                             {
                                 fixed: function(){
-                                    $(this).find(\'.LC_edit_actionbar\').css(\'height\', \'31px\');
+                                    //$(this).find(\'.LC_edit_actionbar\').css(\'height\', \'31px\');
+                                    $(this).find(\'.LC_edit_actionbar\');
                                 }
                             }
                         );
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.1217 loncom/interface/loncommon.pm:1.1218
--- loncom/interface/loncommon.pm:1.1217	Mon Apr 13 18:52:44 2015
+++ loncom/interface/loncommon.pm	Fri Apr 17 12:34:01 2015
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.1217 2015/04/13 18:52:44 raeburn Exp $
+# $Id: loncommon.pm,v 1.1218 2015/04/17 12:34:01 droeschl Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -6814,7 +6814,6 @@
 div.LC_edit_problem_footer div,
 div.LC_edit_problem_editxml_header,
 div.LC_edit_problem_editxml_header div {
-  margin-top: 5px;
   z-index: 100;
 }
 
@@ -6831,19 +6830,17 @@
   background: $tabbg;
 }
 
-div.LC_edit_problem_discards {
-  float: left;
-}
-
 div.LC_edit_actionbar {
-    margin: -5px 0px 0px 0px !important;
     background-color: $sidebg;
-    height: 35px;
+    margin: 0;
+    padding: 0;
+    line-height: 200%;
 }
 
-div.LC_edit_problem_saves {
-  float: right;
-  padding-bottom: 5px;
+div.LC_edit_actionbar div{
+    padding: 0;
+    margin: 0;
+    display: inline-block;
 }
 
 .LC_edit_opt {
Index: loncom/localize/localize/de.pm
diff -u loncom/localize/localize/de.pm:1.610 loncom/localize/localize/de.pm:1.611
--- loncom/localize/localize/de.pm:1.610	Thu Apr 16 10:13:20 2015
+++ loncom/localize/localize/de.pm	Fri Apr 17 12:34:07 2015
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # German Localization Lexicon
 #
-# $Id: de.pm,v 1.610 2015/04/16 10:13:20 droeschl Exp $
+# $Id: de.pm,v 1.611 2015/04/17 12:34:07 droeschl Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -14246,7 +14246,7 @@
 => 'Mathematische Antwort mit Computer-Algebra-System und Hinweisen (mathresponse)',
 
    'Numerical Response'
-=> 'Numerisch',
+=> 'Numerische Antwort',
 
    'One of Multiple Answers Numerical Problem'
 => 'Numerisch - eine aus mehreren Antworten',
@@ -30020,8 +30020,62 @@
    'Student-viewable roster settings'
 => 'Einstellungen zur studierendeeinsehbaren Teilnehmerliste',
 
-   'Templates'
-=> 'Vorlagen'
+   'Problem Templates'
+=> 'Aufgabenvorlagen',
+
+   'Response Types'
+=> 'Antworttypen',
+
+   'Conditional Blocks'
+=> 'Bedingungsabhängige Blöcke', #FIXME kürzere Übersetzung
+
+   'Chemistry'
+=> 'Chemie',
+
+   'Math'
+=> 'Mathematik',
+
+   'Translated Block'
+=> 'Block: Ãœbersetzung',
+
+   'Formula Response'
+=> 'Formelantwort',
+
+   'Function Plot Response'
+=> '"Function Plot"-Antwort',
+
+   'Math Response'
+=> 'Mathematische Antwort',
+
+   'Click on Image'
+=> 'Klick-ins-Bild',
+
+   'One out of N statements'
+=> 'Single Choice (1-aus-N-Auswahl / Radiobutton)',
+
+   'Match Two Lists'
+=> 'Indirekte Zuordnung',
+
+   'Select from Options'
+=> 'Auswahl aus Optionen',
+
+   'Rank Values'
+=> 'Rangordnung',
+
+   'Chemical Reaction'
+=> 'Chemische Reaktion',
+
+   'Organic Chemical Structure'
+=> 'Organisch-chemische Struktur',
+
+   ''
+=> '',
+
+   ''
+=> '',
+
+   ''
+=> ''
 
 #SYNCMARKER
 );
Index: loncom/xml/lonxml.pm
diff -u loncom/xml/lonxml.pm:1.553 loncom/xml/lonxml.pm:1.554
--- loncom/xml/lonxml.pm:1.553	Mon Apr  6 16:27:12 2015
+++ loncom/xml/lonxml.pm	Fri Apr 17 12:34:12 2015
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # XML Parser Module 
 #
-# $Id: lonxml.pm,v 1.553 2015/04/06 16:27:12 raeburn Exp $
+# $Id: lonxml.pm,v 1.554 2015/04/17 12:34:12 droeschl Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1641,11 +1641,11 @@
         $xml_help
       </td></tr>
     </table>
-    <div class="LC_edit_problem_discards">
+    <div>
       <input type="submit" name="discardview" accesskey="d" value="$lt{'dv'}" />
       $undo $htmlerror $deps_button $dragmath_button
     </div>
-    <div class="LC_edit_problem_saves">
+    <div style="float:right">
       <input type="submit" name="savethisfile" accesskey="s" value="$lt{'st'}" />
       <input type="submit" name="viewmode" accesskey="v" value="$lt{'vi'}" />
     </div>


More information about the LON-CAPA-cvs mailing list