|  | @@ -382,9 +382,19 @@ class Search(object):
 | 
	
		
			
			| 382 | 382 |          # otherwise, using defined categories to
 | 
	
		
			
			| 383 | 383 |          # calculate which engines should be used
 | 
	
		
			
			| 384 | 384 |          else:
 | 
	
		
			
			| 385 |  | -            # set used categories
 | 
	
		
			
			|  | 385 | +            # set categories/engines
 | 
	
		
			
			|  | 386 | +            load_default_categories = True
 | 
	
		
			
			| 386 | 387 |              for pd_name, pd in self.request_data.items():
 | 
	
		
			
			| 387 |  | -                if pd_name.startswith('category_'):
 | 
	
		
			
			|  | 388 | +                if pd_name == 'categories':
 | 
	
		
			
			|  | 389 | +                    self.categories.extend(categ for categ in pd.split(',') if categ in categories)
 | 
	
		
			
			|  | 390 | +                elif pd_name == 'engines':
 | 
	
		
			
			|  | 391 | +                    pd_engines = [{'category': engines[engine].categories[0],
 | 
	
		
			
			|  | 392 | +                                   'name': engine}
 | 
	
		
			
			|  | 393 | +                                  for engine in pd.split(',') if engine in engines]
 | 
	
		
			
			|  | 394 | +                    if pd_engines:
 | 
	
		
			
			|  | 395 | +                        self.engines.extend(pd_engines)
 | 
	
		
			
			|  | 396 | +                        load_default_categories = False
 | 
	
		
			
			|  | 397 | +                elif pd_name.startswith('category_'):
 | 
	
		
			
			| 388 | 398 |                      category = pd_name[9:]
 | 
	
		
			
			| 389 | 399 |  
 | 
	
		
			
			| 390 | 400 |                      # if category is not found in list, skip
 | 
	
	
		
			
			|  | @@ -398,6 +408,9 @@ class Search(object):
 | 
	
		
			
			| 398 | 408 |                          # remove category from list if property is set to 'off'
 | 
	
		
			
			| 399 | 409 |                          self.categories.remove(category)
 | 
	
		
			
			| 400 | 410 |  
 | 
	
		
			
			|  | 411 | +            if not load_default_categories:
 | 
	
		
			
			|  | 412 | +                return
 | 
	
		
			
			|  | 413 | +
 | 
	
		
			
			| 401 | 414 |              # if no category is specified for this search,
 | 
	
		
			
			| 402 | 415 |              # using user-defined default-configuration which
 | 
	
		
			
			| 403 | 416 |              # (is stored in cookie)
 |