Changeset 7958
- Timestamp:
- 06/28/10 20:33:07 (2 years ago)
- Location:
- trunk/PreferencesPlugin
- Files:
-
- 2 edited
-
lib/Foswiki/Plugins/PreferencesPlugin.pm (modified) (1 diff)
-
test/unit/PreferencesPlugin/PreferencesPluginTests.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/PreferencesPlugin/lib/Foswiki/Plugins/PreferencesPlugin.pm
r7943 r7958 88 88 89 89 # Replace setting values by form fields but not inside comments Item4816 90 # and also not inside verbatim blocks Item1117 90 91 my $outtext = ''; 91 92 my $insidecomment = 0; 92 foreach my $token ( split /(<!--|-->)/, $_[0] ) { 93 if ( $token =~ /<!--/ ) { 93 my $insideverbatim = 0; 94 foreach my $token ( split /(<!--|-->|<\/?verbatim\b[^>]*>)/, $_[0] ) { 95 if ( !$insideverbatim and $token =~ /<!--/ ) { 94 96 $insidecomment++; 95 97 } 96 elsif ( $token =~ /-->/ ) {98 elsif ( !$insideverbatim and $token =~ /-->/ ) { 97 99 $insidecomment-- if ( $insidecomment > 0 ); 98 100 } 99 elsif ( !$insidecomment ) { 101 elsif ( $token =~ /<verbatim/ ) { 102 $insideverbatim++; 103 } 104 elsif ( $token =~ /<\/verbatim/ ) { 105 $insideverbatim-- if ( $insideverbatim > 0 ); 106 } 107 elsif ( !$insidecomment and !$insideverbatim) { 100 108 $token =~ 101 109 s/^($Foswiki::regex{setRegex})($Foswiki::regex{tagNameRegex})\s*\=(.*$(?:\n[ \t]+[^\s*].*$)*)/ -
trunk/PreferencesPlugin/test/unit/PreferencesPlugin/PreferencesPluginTests.pm
r7943 r7958 106 106 * Set HIDDENSETTING = hidden 107 107 --> 108 HTML 109 110 $session->finish(); 111 } 112 113 # Item1117 114 sub test_edit_multiple_with_verbatim { 115 my $this = shift; 116 my $query = new Unit::Request( { prefsaction => ['edit'], } ); 117 my $text = <<HERE; 118 Normal text outside form 119 <verbatim> 120 <!-- Comment-start inside verbatim is ignored 121 </verbatim> 122 %EDITPREFERENCES% 123 * Set FLEEGLE = floon 124 <verbatim> 125 Not in the form 126 * Set VERBATIMSETTING = ignored 127 </verbatim> 128 * Set FLEEGLE2 = floontoo 129 HERE 130 my $session = new Foswiki( undef, $query ); 131 $Foswiki::Plugins::SESSION = $session; 132 my $result = 133 Foswiki::Func::expandCommonVariables( $text, $this->{test_topic}, 134 $this->{test_web}, undef ); 135 my $viewUrl = 136 Foswiki::Func::getScriptUrl( $this->{test_web}, $this->{test_topic}, 137 'viewauth' ); 138 Foswiki::Plugins::PreferencesPlugin::postRenderingHandler($result); 139 140 # That <!-- in the verbatim block is encoded when rendering 141 # and it must be encoded here or else the "html_equals" fails 142 $result =~ s/<!-- Comment/<!-- Comment/; 143 $result =~ s/<(\/?)verbatim>/<$1pre>/g; 144 $this->assert_html_equals( <<HTML, $result ); 145 Normal text outside form 146 <pre> 147 <!-- Comment-start inside verbatim is ignored 148 </pre> 149 <form method="post" action="$viewUrl" enctype="multipart/form-data" name="editpreferences"> 150 <input type="submit" name="prefsaction" value="Save new settings" accesskey="s" class="foswikiSubmit" /> 151 152 <input type="submit" name="prefsaction" value="Cancel" accesskey="c" class="foswikiButtonCancel" /> 153 * Set <span style="font-weight:bold;" class="foswikiAlert">FLEEGLE = <input type="text" name="FLEEGLE" value="floon" size="80" class="foswikiAlert foswikiInputField" /></span> 154 <pre> 155 Not in the form 156 * Set VERBATIMSETTING = ignored 157 </pre> 158 * Set <span style="font-weight:bold;" class="foswikiAlert">FLEEGLE2 = <input type="text" name="FLEEGLE2" value="floontoo" size="80" class="foswikiAlert foswikiInputField" /></span></form> 108 159 HTML 109 160
Note: See TracChangeset
for help on using the changeset viewer.
