|  | @@ -382,9 +382,19 @@ class Search(object):
 | 
	
		
			
				|  |  |          # otherwise, using defined categories to
 | 
	
		
			
				|  |  |          # calculate which engines should be used
 | 
	
		
			
				|  |  |          else:
 | 
	
		
			
				|  |  | -            # set used categories
 | 
	
		
			
				|  |  | +            # set categories/engines
 | 
	
		
			
				|  |  | +            load_default_categories = True
 | 
	
		
			
				|  |  |              for pd_name, pd in self.request_data.items():
 | 
	
		
			
				|  |  | -                if pd_name.startswith('category_'):
 | 
	
		
			
				|  |  | +                if pd_name == 'categories':
 | 
	
		
			
				|  |  | +                    self.categories.extend(categ for categ in pd.split(',') if categ in categories)
 | 
	
		
			
				|  |  | +                elif pd_name == 'engines':
 | 
	
		
			
				|  |  | +                    pd_engines = [{'category': engines[engine].categories[0],
 | 
	
		
			
				|  |  | +                                   'name': engine}
 | 
	
		
			
				|  |  | +                                  for engine in pd.split(',') if engine in engines]
 | 
	
		
			
				|  |  | +                    if pd_engines:
 | 
	
		
			
				|  |  | +                        self.engines.extend(pd_engines)
 | 
	
		
			
				|  |  | +                        load_default_categories = False
 | 
	
		
			
				|  |  | +                elif pd_name.startswith('category_'):
 | 
	
		
			
				|  |  |                      category = pd_name[9:]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      # if category is not found in list, skip
 | 
	
	
		
			
				|  | @@ -398,6 +408,9 @@ class Search(object):
 | 
	
		
			
				|  |  |                          # remove category from list if property is set to 'off'
 | 
	
		
			
				|  |  |                          self.categories.remove(category)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            if not load_default_categories:
 | 
	
		
			
				|  |  | +                return
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              # if no category is specified for this search,
 | 
	
		
			
				|  |  |              # using user-defined default-configuration which
 | 
	
		
			
				|  |  |              # (is stored in cookie)
 |