r2679 - getCellFilter(): signal upwards about code parse error
authorDenis Ovsienko <infrastation@yandex.ru>
Sat, 2 May 2009 10:04:30 +0000 (10:04 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Sat, 2 May 2009 10:04:30 +0000 (10:04 +0000)
 - renderCellFilterPortlet(): handle "extra" class, if it is provided; highlight initial value of and/or selector

inc/functions.php
inc/interface.php

index b276f6dc31111a3f70f2f5ee849db9274d4f6532..0a4a57ca6d783f00bc68e29392485bf270d8c02a 100644 (file)
@@ -1277,7 +1277,7 @@ function getCellFilter ()
                        }
        }
        if (isset ($_REQUEST['cfe']))
-               $ret['extratext'] = $_REQUEST['cfe'];
+               $ret['extratext'] = trim ($_REQUEST['cfe']);
        $finaltext = array();
        if (strlen ($ret['text']))
                $finaltext[] = '(' . $ret['text'] . ')';
@@ -1288,6 +1288,11 @@ function getCellFilter ()
        {
                $parse = spotPayload ($finaltext, 'SYNT_EXPR');
                $ret['expression'] = $parse['result'] == 'ACK' ? $parse['load'] : NULL;
+               // It's not quite fair enough to put the blame of the whole text onto
+               // non-empty "extra" portion of it, but it's the only user-generated portion
+               // of it, thus the most probable cause of parse error.
+               if (strlen ($ret['extratext']))
+                       $ret['extraclass'] = $parse['result'] == 'ACK' ? 'validation-success' : 'validation-error';
        }
        return $ret;
 }
index bc030a26403185d6b6803b2a326f70d92f3db49a..3f474d61326df41a06717d46929d058a60f65414 100644 (file)
@@ -5023,11 +5023,14 @@ function renderCellFilterPortlet ($preselect, $realm, $bypass_name = '', $bypass
                echo $hr;
                $hr = $ruler;
                $andor = strlen ($preselect['andor']) ? $preselect['andor'] : getConfigVar ('FILTER_DEFAULT_ANDOR');
-               echo '<tr><td class=tagbox><input type=radio name=andor value=and';
-               echo ($andor == 'and' ? ' checked' : '') . '>and</input></td>';
-               echo '<td class=tagbox><input type=radio name=andor value=or';
-               echo ($andor == 'or' ? ' checked' : '') . '>or</input></td>';
-               echo "</td></tr>";
+               echo '<tr>';
+               foreach (array ('and', 'or') as $boolop)
+               {
+                       $class = $andor == $boolop ? 'seltagbox' : 'tagbox';
+                       $checked = $andor == $boolop ? ' checked' : '';
+                       echo "<td class=${class}><input type=radio name=andor value=${boolop}";
+                       echo $checked . ">${boolop}</input></td>";
+               }
        }
        // tags block
        if (getConfigVar ('FILTER_SUGGEST_TAGS') == 'yes' or count ($preselect['tagidlist']))
@@ -5072,7 +5075,8 @@ function renderCellFilterPortlet ($preselect, $realm, $bypass_name = '', $bypass
        {
                echo $hr;
                $hr = $ruler;
-               echo "<tr><td colspan=2><textarea name=cfe>\n" . $preselect['extratext'];
+               $class = isset ($preselect['extraclass']) ? 'class=' . $preselect['extraclass'] : '';
+               echo "<tr><td colspan=2><textarea name=cfe ${class}>\n" . $preselect['extratext'];
                echo "</textarea></td></tr>\n";
        }
        // submit block