PDA

Zobacz pełną wersję : Zwijanie i rozwijanie formularza wyszukiwania.



bapraster
05-12-2011, 01:42
Witam.
Problem jest następujący mam na stronie formularz wyszukiwania catfilter z wieloma opcjami wyszukiwania i chciałbym dodać w nim przycisk który rozwijałby i zwijał więcej opcji wyszukiwania. Na stałe widocze byłoby jedynie okienko wyszukiwania tekstu i po naciśnięciu przycisku pokazywałaby się reszta opcji. Formularz jest pod Virtuemart ale chodzi mi o jego wygląd w związu z czym mam nadzieję, że piszę w dobrym miejscu o moim problemie.

Próbowałem zrobić to samodzielnie jak tutaj http://websta.pl/download/jquery-pokazywanie-i-ukrywanie-dodatkowych-pol-formularza-plugin i tutaj http://mozillapl.org/forum/viewtopic.php?t=31798 .
Pierwsza metoda rozwala stronę tak że przesówają mi się wszystkie divy na stronie. Druga metoda całkowicie blokuje stronę i wyswietla komunikat o błędzie.
Myślę, że jest tak ze względu na konstrukcję pliku w którym jest napisany formularz.

Formularz możecie zobaczyć na stronie www.phoenixbeauty.ie po lewej stronie pod nagłówkiem search.

a oto skrypt z pliku helper.php (wydaje mi się, że kawałek odpowiedzialny za wyświetlanie znajduje się między 70 a 97 linią kodu):

<?php/* * catfiltering module* @version $Id: helper.php 1.5.4 2009-12-17 19:03:41Z sakisTerzis $* @package catfiltering module* @author Sakis Terzis (sakis@breakDesigns.net)* @copyright Copyright (C) 2009 breakDesigns.net. All rights reserved* @license GNU/GPL v3* see administrator/components/com_catfiltering/COPYING.txt*/
defined('_JEXEC') or die ('Restricted Access');
class ModCatFHelper{
function getVendorCurSymbol($params){ if($params->get('disp_price')==1){ $vend_id=$_SESSION['ps_vendor_id']; if(!$vend_id) $vend_id=1; $db=JFactory::getDBO(); $query='SELECT vendor_currency_display_style AS style FROM #__vm_vendor WHERE vendor_id='.$vend_id; $db->setQuery($query); $result=$db->loadResult(); $result=explode ('|',$result); return $result[1]; } else return; }
function renderFlts($params,$curSymbol){ $db=JFactory::getDBO(); $msg=JText::_('Select a category first'); $selectText =''; $html=''; //ie style $ie6style='<!--[if lte IE 6]> <link rel="stylesheet" href="modules/mod_catfiltering/css/ie6css.css" type="text/css"> <![endif]-->'; $document =& JFactory::getDocument(); $document->addCustomTag($ie6style); //-----------parameters--------------- //include manuf param $inclManuf=$params->get('incl_manufact'); //display text flt $disp_txt=$params->get('disp_txt'); //display categories flts $disp_catf=$params->get('disp_catf'); //display ranges $disp_rflt=$params->get('disp_range_flt'); //display Price field param $dispPrice=$params->get('disp_price'); //cur symbol position $curSymbPoistion=$params->get('CurSymbPoistion'); //hold filters param $hold_flt=$params->get('hold_val'); //reset btn param $reset_btn=$params->get('reset_btn'); //display help button $help_btn=$params->get('help_btn'); //displayed filter ids $cat_filter_ids=$params->get('cat_filter_ids'); //displayed filter ids $rng_filter_ids=$params->get('rng_filter_ids'); //end parameters// $html='<div id="filtersWrapper"><form action="index.php" method="get">'; //keywords if($disp_txt==1) $html.=$this->renderTxtFlt($hold_flt); //cat filters if($disp_catf==1)$html.=$this->renderVMCats($hold_flt,$cat_filter_ids); //ranges if($disp_rflt==1) $html.=$this->renderRangeFlt($hold_flt,$rng_filter_ids); //manufacturers if($inclManuf) $html.=$this->renderMnf($hold_flt); //prices if($dispPrice==1)$html.=$this->renderPrice($hold_flt,$curSymbol,$curSymbPoistion) ; //help btn if($help_btn) $html.='<div style="clear:both"></div><div class="catf_help" title="'.JText::_("Hold Ctrl to select mutiple values from the same Filter").'"></div>'; //reset btn if($reset_btn==1){ $html.='<div id="reset_btn"><a id="reset_link">'.JText::_('Reset').'</a></div>'; $reset_js=' <script type="text/javascript" src="modules/mod_catfiltering/js/javascript.js"></script>'; $document->addCustomTag($reset_js); } $html.='<input type="hidden" name="option" value="com_catfiltering" /> <input type="hidden" name="task" value="search" />'; $html.='<input type="submit" id="fsearch" value="'.JText::_('Search').'"/> </form><div style="clear:both;"></div> </div>'; return $html; }
function renderTxtFlt($hold_flt){ $keywords=''; if($hold_flt) $keywords=JRequest::getVar('keyword','','get'); $html='<div class="filter"> <label for="key_search">'.JText::_('Keyword').'</label> <input type="text" id="key_search" name="keyword" value="'.$keywords.'"/> </div>'; return $html; }
function renderVMCats($hold_flt,$cat_filter_ids){ $slct_cat=NULL; $html=''; $subquer=''; $selectText=JText::_('Select'); $db=JFactory::getDBO();
//check if there are $cat_filter_ids if($cat_filter_ids){ //sanitize them $idArray=explode(',',$cat_filter_ids); JArrayHelper::toInteger($idArray); $idArray=array_filter($idArray);
//set the query part if(count($idArray)>0)$subquer=' AND id IN('.implode(',',$idArray).')'; }

$query="SELECT * FROM `#__catf_filters` WHERE published=1 $subquer ORDER BY ordering ASC"; $db->setQuery($query); $filters=$db->loadObjectList(); if($filters) { $multiple=NULL; foreach($filters as $flt){ //get the categories $query="SELECT ct.category_name AS name, ct.category_id AS id FROM `#__vm_category` AS ct INNER JOIN `#__catf_categories` AS flt ON ct.category_id=flt.vm_cat_id WHERE flt.catf_f_id=".$flt->id." ORDER BY name ASC"; $db->setQuery($query); $catOptions=$db->loadObjectList();
$vm_cats_select=array(); if($hold_flt){//if hold filters get the selected $flt_name='flt'.$flt->id; $vm_cats_select=JRequest::getVar($flt_name,array() ,'get','array'); $vm_cats_select=array_filter($vm_cats_select); }
if(count($catOptions)>0){ //decide the display type switch ($flt->display){ case 0: if($flt->multiple==1) $multiple='multiple="multiple"'; else $multiple='';
$html.='<select name="flt'.$flt->id.'[]" size="'.$flt->size.'" class="filter" '.$multiple.'><option value="0">--'.$selectText.' '.$flt->name.'--</option>'; foreach($catOptions as $copt){ $selected=''; if(in_array($copt->id,$vm_cats_select)) $selected=' selected'; $html.='<option value="'.$copt->id.'"'.$selected.'>'.$copt->name.'</option>'; }//foreach
$html.='</select>'; break;
case 1: $html.='<h4>'.$flt->name.'</h4>'; foreach($catOptions as $copt){ $checked=''; if(in_array($copt->id,$vm_cats_select)) $checked=' checked="checked"'; $html.='<div class="flt"> <input type="checkbox"'.$checked.' name="flt'.$flt->id.'[]" value="'.$copt->id.'" id="catf'.$copt->id.'"/> <label for="catf'.$copt->id.'">'.$copt->name.'</label> </div>'; } break; case 2: $html.='<h4>'.$flt->name.'</h4>'; foreach($catOptions as $copt){ $checked=''; if(in_array($copt->id,$vm_cats_select)) $checked=' checked="checked"'; $html.='<div class="flt"> <input type="radio"'.$checked.' name="flt'.$flt->id.'[]" value="'.$copt->id.'" id="catf'.$copt->id.'"/> <label for="catf'.$copt->id.'">'.$copt->name.'</label></div>'; } break; case 3: $html.='<h4>'.$flt->name.'</h4>'; foreach($catOptions as $copt){ $checked=''; if(in_array($copt->id,$vm_cats_select)) $checked=' class="sel_flt"'; $html.='<div class="flt"><a href="index.php?flt'.$flt->id.'='.$copt->id.'&option=com_catfiltering&task=search"'.$checked.'>'.$copt->name.'</a></div>'; } break; }//switch }//if(count($catOptions)>0) }//foreach }//if (filters) return $html; }

function renderRangeFlt($hold_flt,$rng_filter_ids){ $html=''; $selct=''; $subquer='';

//check if there are $rng_filter_ids if($rng_filter_ids){ //sanitize them $idArray=explode(',',$rng_filter_ids); JArrayHelper::toInteger($idArray); $idArray=array_filter($idArray);
//set the query part if(count($idArray)>0)$subquer=' AND rng.id IN('.implode(',',$idArray).')'; }
$selected=JRequest::getVar('rflt',array(),'get','a rray'); $selectText=JText::_('Select'); $db=JFactory::getDBO(); $query="SELECT rng.* FROM #__catf_range_filters AS rng WHERE rng.published=1 $subquer ORDER BY rng.ordering"; $db->setQuery($query); $results=$db->loadObjectList(); $multiple='';
foreach($results as $res){ $unit_bef=''; $unit_aft=''; if($res->unit_pos==0) $unit_bef=$res->unit; else $unit_aft=$res->unit; $querry="SELECT tbl.id, tbl.from, tbl.to FROM #__cat_ranges_rf_xref AS tbl WHERE tbl.range_flt_id=".$res->id." ORDER BY tbl.from ASC"; $db->setQuery($querry); $rang_fl=$db->loadObjectList();
$vm_rflt_select=array(); if($hold_flt){//if hold filters get the selected $flt_name='rflt'.$res->id; $vm_rflt_select=JRequest::getVar($flt_name,array() ,'get','array'); $vm_rflt_select=array_filter($vm_rflt_select); } if(count($rang_fl)>0){ switch($res->display){ case 0: $multiple=''; if( $res->multiple==1) $multiple='multiple="multiple"'; $html.='<select name="rflt'.$res->id.'[]" class="filter" '.$multiple.' size="'.$res->size.'"><option value="0">--'.$selectText." ".$res->name.'--</option>';
foreach($rang_fl as $r_fl){ $selected=''; if(in_array($r_fl->id,$vm_rflt_select)) $selected=' selected'; $html.='<option value="'.$r_fl->id.'"'. $selected.'>'.$unit_bef.$r_fl->from.$unit_aft.' - '.$unit_bef.$r_fl->to.$unit_aft.'</option>'; $selct=''; } $html.='</select>'; break; case 1: $html.='<h4>'.$res->name.'</h4>'; foreach($rang_fl as $r_fl){ $checked=''; if(in_array($r_fl->id,$vm_rflt_select)) $checked=' checked="checked"'; $html.='<div class="flt"><input type="checkbox" name="rflt'.$res->id.'[]" value="'.$r_fl->id.'" id="rflt'.$r_fl->id.'"'.$checked.'/> <label for="rflt'.$r_fl->id.'">'.$unit_bef.$r_fl->from.$unit_aft.' - '.$unit_bef.$r_fl->to.$unit_aft.'</label></div>'; } break; case 2: $html.='<h4>'.$res->name.'</h4>'; foreach($rang_fl as $r_fl){ $checked=''; if(in_array($r_fl->id,$vm_rflt_select)) $checked=' checked="checked"'; $html.='<div class="flt"> <input type="radio" name="rflt'.$res->id.'[]" value="'.$r_fl->id.'" id="rflt'.$r_fl->id.'"'.$checked.'/> <label for="rflt'.$r_fl->id.'">'.$unit_bef.$r_fl->from.$unit_aft.' - '.$unit_bef.$r_fl->to.$unit_aft.'</label> </div>'; } break; case 3: $html.='<h4>'.$res->name.'</h4>'; foreach($rang_fl as $r_fl){ $checked=''; if(in_array($r_fl->id,$vm_rflt_select)) $checked=' class="sel_flt"'; $html.='<div class="flt"><a href="index.php?rflt'.$res->id.'[]='.$r_fl->id.'&option=com_catfiltering&task=search"'.$checked.'>'.$unit_bef.$r_fl->from.$unit_aft.' - '.$unit_bef.$r_fl->to.$unit_aft.'</a></div>'; } break;
}//switch }// if(count($rang_fl)>0 }//foreach ($results //print_r($results); return $html; }
function renderMnf($hold_flt){ $vm_mnf_select=JRequest::getVar('vm_mnuf',array(), 'get','array'); $selectText=JText::_('Select'); $html=''; $slct_mnf=NULL; $db=JFactory::getDBO(); $manuf=JText::_('Manufacturer'); $query="SELECT manufacturer_id AS id, mf_name AS name FROM #__vm_manufacturer ORDER BY name ASC"; $db->setQuery($query); $manufs=$db->loadObjectList();
//get the manuf settings from the catf_settings table $q="SELECT display,manuf_multiple ,manuf_size FROM #__catf_settings WHERE id=1"; $db->setQuery($q); $settings=$db->loadAssoc(); //print_r($settings);
if (count($manufs)>0){ switch($settings['display']){ case 0: $multiple=''; if($settings['manuf_multiple']==1) $multiple=' multiple="multiple"'; $html.='<select name="vm_mnuf[]" size="'.$settings['manuf_size'].'" class="filter" '.$multiple.'><option value="0">--'.$selectText.' '.$manuf.'--</option>'; foreach($manufs as $m){ if($hold_flt && in_array($m->id,$vm_mnf_select)){ $slct_mnf=' selected="selected"'; } $html.='<option value="'.$m->id.'"'.$slct_mnf.'>'.$m->name.'</option>'; $slct_mnf=''; } $html.="</select>"; break; case 1: $html.='<h4>'.JText::_('Manufacturers').'</h4>'; foreach($manufs as $m){ $slct_mnf=''; if($hold_flt && in_array($m->id,$vm_mnf_select)){ $slct_mnf=' checked="checked"'; } $html.='<div class="flt"> <input type="checkbox" id="manuf'.$m->id.'" name="vm_mnuf[]" value="'.$m->id.'"'.$slct_mnf.'/> <label for="manuf'.$m->id.'">'.$m->name.'</label> </div>'; } break; case 2: $html.='<h4>'.JText::_('Manufacturers').'</h4>'; foreach($manufs as $m){ $slct_mnf=''; if($hold_flt && in_array($m->id,$vm_mnf_select)){ $slct_mnf=' checked="checked"'; } $html.='<div class="flt"> <input type="radio" id="manuf'.$m->id.'" name="vm_mnuf[]" value="'.$m->id.'"'.$slct_mnf.'/> <label for="manuf'.$m->id.'">'.$m->name.'</label> </div>'; } break; case 3: $html.='<h4>'.JText::_('Manufacturers').'</h4>'; foreach($manufs as $m){ $slct_mnf=''; if($hold_flt && in_array($m->id,$vm_mnf_select)){ $slct_mnf=' class="sel_flt"'; } $html.='<div class="flt"> <a href="index.php?vm_mnuf[]='.$m->id.'&option=com_catfiltering&task=search" '.$slct_mnf.'/>'.$m->name.'</a></div>'; } break; }//switch }//if count return $html; }

function renderPrice($hold_flt,$curSymbol,$curSymbPoistion) { $curSymbolBefore=NULL; $curSymbolAfter=NULL;
if($hold_flt){//if hold filters get the selected $vm_cats_select=JRequest::getVar('categories',arra y(),'get','array'); $fprice_select=JRequest::getVar('fr_price','','get ',''); $tprice_select=JRequest::getVar('to_price','','get ','');
}else{ $fprice_select=''; $tprice_select=''; }
if($curSymbPoistion==0); else if($curSymbPoistion==1)$curSymbolBefore=" ".$curSymbol; else $curSymbolAfter=$curSymbol." ";
$priceFileds='<div id="priceWrapper_catf"> <div class="priceWrp"><label for="fr_price" class="catf_label">'.JText::_('From').$curSymbolBefore.'</label> <input type="text" name="fr_price" id="fr_price" value="'.$fprice_select.'"/><span class="crSymbol">'.$curSymbolAfter.'&nbsp;'.'</span></div>'. '<div class="priceWrp"><label for="to_price" class="catf_label">'.JText::_('To').$curSymbolBefore.'</label> <input type="text" name="to_price" id="to_price" value="'.$tprice_select.'"/><span class="crSymbol">'.$curSymbolAfter.'</span></div>'. '</div>'; return $priceFileds;
}}

Z góry dziękuję gdyby ktoś był w stanie jakoś pomóc!

---------- Post dodany o 00:42 ---------- Poprzedni post był o 00:39 ----------

Ups u mnie ten kod wygląda troszkę ładniej, jest lepiej poukładany a tu trochę się popsuło
Oto wycinek kodu z wspomnianej wcześniej linii 70-97 może będzie troszkę jaśniejsze


$html='<div id="filtersWrapper"><form action="index.php" method="get">'; //keywords if($disp_txt==1) $html.=$this->renderTxtFlt($hold_flt); //cat filters if($disp_catf==1)$html.=$this->renderVMCats($hold_flt,$cat_filter_ids); //ranges if($disp_rflt==1) $html.=$this->renderRangeFlt($hold_flt,$rng_filter_ids); //manufacturers if($inclManuf) $html.=$this->renderMnf($hold_flt); //prices if($dispPrice==1)$html.=$this->renderPrice($hold_flt,$curSymbol,$curSymbPoistion) ; //help btn if($help_btn) $html.='<div style="clear:both"></div><div class="catf_help" title="'.JText::_("Hold Ctrl to select mutiple values from the same Filter").'"></div>'; //reset btn if($reset_btn==1){ $html.='<div id="reset_btn"><a id="reset_link">'.JText::_('Reset').'</a></div>'; $reset_js=' <script type="text/javascript" src="modules/mod_catfiltering/js/javascript.js"></script>'; $document->addCustomTag($reset_js); } $html.='<input type="hidden" name="option" value="com_catfiltering" /> <input type="hidden" name="task" value="search" />'; $html.='<input type="submit" id="fsearch" value="'.JText::_('Search').'"/> </form><div style="clear:both;"></div> </div>';