Diff for /loncom/homework/structuretags.pm between versions 1.534 and 1.535

version 1.534, 2015/04/10 12:01:28 version 1.535, 2015/04/17 12:33:56
Line 752  sub problem_edit_action_button { Line 752  sub problem_edit_action_button {
   
 sub problem_edit_buttons {  sub problem_edit_buttons {
    my ($mode)=@_;     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  # 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);                &problem_edit_action_button('subdiscview','discard','d','Discard Edits and View',1);
    if ($mode eq 'editxml') {     if ($mode eq 'editxml') {
        $result.=&problem_edit_action_button('subedit','edit','e','Edit',1);         $result.=&problem_edit_action_button('subedit','edit','e','Edit',1);
Line 764  sub problem_edit_buttons { Line 774  sub problem_edit_buttons {
        $result.=&problem_edit_action_button('subundo','undo','u','Undo',1);         $result.=&problem_edit_action_button('subundo','undo','u','Undo',1);
    }     }
    $result.="\n</div>";     $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;     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|&#39;|\\&#39;|g;  
     return $return;  
 }  
   
 sub problem_edit_header {  sub problem_edit_header {
     my ($mode)=@_;      my ($mode)=@_;
     my $return = '<input type="hidden" name="submitted" value="edit" />'.      my $return = '<input type="hidden" name="submitted" value="edit" />'.
Line 993  sub problem_edit_header { Line 788  sub problem_edit_header {
         '<input type="hidden" name="problemmode" value="saveedit" />'.          '<input type="hidden" name="problemmode" value="saveedit" />'.
         &problem_edit_buttons();          &problem_edit_buttons();
   
     $return.='<hr style="clear:both;visibility:hidden;" />      $return .= '</div></div>' . &Apache::lonxml::message_location();
     </div></div>'  
     .&Apache::lonxml::message_location();  
     $return .= '<link rel="stylesheet" href="/adm/codemirror/codemirror-combined.css" />      $return .= '<link rel="stylesheet" href="/adm/codemirror/codemirror-combined.css" />
     <script type="text/javascript" src="/adm/codemirror/codemirror-compressed-colorful.js"></script>';      <script type="text/javascript" src="/adm/codemirror/codemirror-compressed-colorful.js"></script>';
   
Line 1008  sub problem_edit_header { Line 801  sub problem_edit_header {
                         $(\'.LC_edit_actionbar\').scrollToFixed(                          $(\'.LC_edit_actionbar\').scrollToFixed(
                             {                              {
                                 fixed: function(){                                  fixed: function(){
                                     $(this).find(\'.LC_edit_actionbar\').css(\'height\', \'31px\');                                      //$(this).find(\'.LC_edit_actionbar\').css(\'height\', \'31px\');
                                       $(this).find(\'.LC_edit_actionbar\');
                                 }                                  }
                             }                              }
                         );                          );

Removed from v.1.534  
changed lines
  Added in v.1.535


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>