From: Filipus K. <ch...@gm...> - 2011-08-20 07:09:02
|
Hi lindon, Le 2011-08-19 22:20, lindon a écrit : > Fixed the smarty notice - thanks. > > Agree with the general idea that it would be better to have things in > the module code itself. Wasn't quite sure how to do that for this one > though: > > There are two variables at work: the $_REQUEST['exact_match'] is set > by the user checking or unchecking the checkbox and clicking "Go". > This calls tiki-listpages.php and generates the list of matches. This > variable is never available to the module function AFAICT. > > The second variable is now called $exact, which is a module parameter. > It is passed to smarty automatically without any code in the module > function, and if it is set it in the module function, we get the > unwanted behavior you noted where the checkbox gets reset when the > search term does not. > > That's my take anyway, if I'm off base please let me know. As Confucius once said, "a line of code is worth 1000 words". So rather than trying to explain how to do it, I just did it in r36352. Let me know in case the picture is too blurry. > > Another problem I noted while looking into this: if the user types in > enough of a word in the search field for the autocomplete to kick in, > the $_REQUEST variable is set before the user has a change to > check/uncheck the checkbox. Checking it after the variable is set does > no good. This one's a little beyond me I'm afraid ;) I don't understand. Could you tell me how to "reproduce" this problem? > Regards, > lindon > > > > On Thu, Aug 18, 2011 at 1:17 AM, Filipus Klutiero <ch...@gm... > <mailto:ch...@gm...>> wrote: > > Thanks lindon. Interesting solution, but there's a small issue - > parameters with no value are not passed to Smarty. So an isset() > should > be used to avoid triggering a Smarty notice. > Alternatively, I think the ideal solution would be to pass in any > case a > Smarty variable to the template from the module function indicating > whether the box should be checked or not. I think that would be more > readable and cleaner. > > Le 2011-08-17 22:27, li...@us... > <mailto:li...@us...> a écrit : > > Revision: 36301 > > http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=36301&view=rev > <http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=36301&view=rev> > > Author: lindonb > > Date: 2011-08-18 02:27:04 +0000 (Thu, 18 Aug 2011) > > > > Log Message: > > ----------- > > [FIX] Maintain checkbox status from last search, consistent with > search field. Thanks chealer. > > > > Modified Paths: > > -------------- > > trunk/modules/mod-func-search_wiki_page.php > > trunk/templates/modules/mod-search_wiki_page.tpl > > > > Modified: trunk/modules/mod-func-search_wiki_page.php > > =================================================================== > > --- trunk/modules/mod-func-search_wiki_page.php 2011-08-17 > 23:27:46 UTC (rev 36300) > > +++ trunk/modules/mod-func-search_wiki_page.php 2011-08-18 > 02:27:04 UTC (rev 36301) > > @@ -17,7 +17,7 @@ > > 'description' => tra('Search for a wiki page by > name.'), > > 'prefs' => array('feature_wiki'), > > 'params' => array( > > - 'exact_match' => array( > > + 'exact' => array( > > 'name' => tra('Exact Match'), > > 'description' => tra('Exact match > checkbox checked by default if set to "y".') . " " . tr('Default: > "n".'), > > 'filter' => 'alpha' > > @@ -27,6 +27,5 @@ > > } > > > > function module_search_wiki_page( $mod_reference, > $module_params ) { > > - global $smarty; > > - $smarty->assign('exact_match', > isset($module_params['exact_match']) ? > $module_params['exact_match'] : 'n'); > > + > > } > > > > Modified: trunk/templates/modules/mod-search_wiki_page.tpl > > =================================================================== > > --- trunk/templates/modules/mod-search_wiki_page.tpl 2011-08-17 > 23:27:46 UTC (rev 36300) > > +++ trunk/templates/modules/mod-search_wiki_page.tpl 2011-08-18 > 02:27:04 UTC (rev 36301) > > @@ -5,7 +5,7 @@ > > <form class="forms" method="post" action="tiki-listpages.php"> > > <input type="hidden" name="lang" value=""/> > > <input name="find" size="14" type="text" accesskey="s" > class="pagename"{if isset($find)} value="{$find}"{/if} /> > > -<label><span style="white-space: nowrap">{tr}Exact > match{/tr}</span><input type="checkbox" name="exact_match" {if > !isset($exact_match) or $exact_match ne > 'n'}checked="checked"{/if}/></label> > > +<label><span style="white-space: nowrap">{tr}Exact > match{/tr}</span><input type="checkbox" name="exact_match" {if > (isset($exact_match) and $exact_match eq 'y') or > (!isset($exact_match) and $module_params.exact eq > 'y')}checked="checked"{/if}/></label> > > <input type="submit" class="wikiaction" name="search" > value="{tr}Go{/tr}"/> > > </form> > > {/tikimodule} > > > |