|  | @@ -317,8 +317,8 @@ def pre_request():
 | 
	
		
			
			| 317 | 317 |      allowed_plugins = request.cookies.get('allowed_plugins', '').split(',')
 | 
	
		
			
			| 318 | 318 |      disabled_plugins = request.cookies.get('disabled_plugins', '').split(',')
 | 
	
		
			
			| 319 | 319 |      for plugin in plugins:
 | 
	
		
			
			| 320 |  | -        if ((plugin.default_on and plugin.name not in disabled_plugins)
 | 
	
		
			
			| 321 |  | -                or plugin.name in allowed_plugins):
 | 
	
		
			
			|  | 320 | +        if ((plugin.default_on and plugin.id not in disabled_plugins)
 | 
	
		
			
			|  | 321 | +                or plugin.id in allowed_plugins):
 | 
	
		
			
			| 322 | 322 |              request.user_plugins.append(plugin)
 | 
	
		
			
			| 323 | 323 |  
 | 
	
		
			
			| 324 | 324 |  
 | 
	
	
		
			
			|  | @@ -508,6 +508,7 @@ def preferences():
 | 
	
		
			
			| 508 | 508 |          blocked_engines = get_blocked_engines(engines, request.cookies)
 | 
	
		
			
			| 509 | 509 |      else:  # on save
 | 
	
		
			
			| 510 | 510 |          selected_categories = []
 | 
	
		
			
			|  | 511 | +        post_disabled_plugins = []
 | 
	
		
			
			| 511 | 512 |          locale = None
 | 
	
		
			
			| 512 | 513 |          autocomplete = ''
 | 
	
		
			
			| 513 | 514 |          method = 'POST'
 | 
	
	
		
			
			|  | @@ -534,14 +535,34 @@ def preferences():
 | 
	
		
			
			| 534 | 535 |                  safesearch = pd
 | 
	
		
			
			| 535 | 536 |              elif pd_name.startswith('engine_'):
 | 
	
		
			
			| 536 | 537 |                  if pd_name.find('__') > -1:
 | 
	
		
			
			| 537 |  | -                    engine_name, category = pd_name.replace('engine_', '', 1).split('__', 1)
 | 
	
		
			
			|  | 538 | +                    # TODO fix underscore vs space
 | 
	
		
			
			|  | 539 | +                    engine_name, category = [x.replace('_', ' ') for x in
 | 
	
		
			
			|  | 540 | +                                             pd_name.replace('engine_', '', 1).split('__', 1)]
 | 
	
		
			
			| 538 | 541 |                      if engine_name in engines and category in engines[engine_name].categories:
 | 
	
		
			
			| 539 | 542 |                          blocked_engines.append((engine_name, category))
 | 
	
		
			
			| 540 | 543 |              elif pd_name == 'theme':
 | 
	
		
			
			| 541 | 544 |                  theme = pd if pd in themes else default_theme
 | 
	
		
			
			|  | 545 | +            elif pd_name.startswith('plugin_'):
 | 
	
		
			
			|  | 546 | +                plugin_id = pd_name.replace('plugin_', '', 1)
 | 
	
		
			
			|  | 547 | +                if not any(plugin.id == plugin_id for plugin in plugins):
 | 
	
		
			
			|  | 548 | +                    continue
 | 
	
		
			
			|  | 549 | +                post_disabled_plugins.append(plugin_id)
 | 
	
		
			
			| 542 | 550 |              else:
 | 
	
		
			
			| 543 | 551 |                  resp.set_cookie(pd_name, pd, max_age=cookie_max_age)
 | 
	
		
			
			| 544 | 552 |  
 | 
	
		
			
			|  | 553 | +        disabled_plugins = []
 | 
	
		
			
			|  | 554 | +        allowed_plugins = []
 | 
	
		
			
			|  | 555 | +        for plugin in plugins:
 | 
	
		
			
			|  | 556 | +            if plugin.default_on:
 | 
	
		
			
			|  | 557 | +                if plugin.id in post_disabled_plugins:
 | 
	
		
			
			|  | 558 | +                    disabled_plugins.append(plugin.id)
 | 
	
		
			
			|  | 559 | +            elif plugin.id not in post_disabled_plugins:
 | 
	
		
			
			|  | 560 | +                allowed_plugins.append(plugin.id)
 | 
	
		
			
			|  | 561 | +
 | 
	
		
			
			|  | 562 | +        resp.set_cookie('disabled_plugins', ','.join(disabled_plugins), max_age=cookie_max_age)
 | 
	
		
			
			|  | 563 | +
 | 
	
		
			
			|  | 564 | +        resp.set_cookie('allowed_plugins', ','.join(allowed_plugins), max_age=cookie_max_age)
 | 
	
		
			
			|  | 565 | +
 | 
	
		
			
			| 545 | 566 |          resp.set_cookie(
 | 
	
		
			
			| 546 | 567 |              'blocked_engines', ','.join('__'.join(e) for e in blocked_engines),
 | 
	
		
			
			| 547 | 568 |              max_age=cookie_max_age
 | 
	
	
		
			
			|  | @@ -591,6 +612,8 @@ def preferences():
 | 
	
		
			
			| 591 | 612 |                    autocomplete_backends=autocomplete_backends,
 | 
	
		
			
			| 592 | 613 |                    shortcuts={y: x for x, y in engine_shortcuts.items()},
 | 
	
		
			
			| 593 | 614 |                    themes=themes,
 | 
	
		
			
			|  | 615 | +                  plugins=plugins,
 | 
	
		
			
			|  | 616 | +                  allowed_plugins=[plugin.id for plugin in request.user_plugins],
 | 
	
		
			
			| 594 | 617 |                    theme=get_current_theme_name())
 | 
	
		
			
			| 595 | 618 |  
 | 
	
		
			
			| 596 | 619 |  
 |