@@ -317,8 +317,8 @@ def pre_request():
317317 allowed_plugins = request.cookies.get('allowed_plugins', '').split(',')
318318 disabled_plugins = request.cookies.get('disabled_plugins', '').split(',')
319319 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):
322322 request.user_plugins.append(plugin)
323323
324324
@@ -508,6 +508,7 @@ def preferences():
508508 blocked_engines = get_blocked_engines(engines, request.cookies)
509509 else: # on save
510510 selected_categories = []
511+ post_disabled_plugins = []
511512 locale = None
512513 autocomplete = ''
513514 method = 'POST'
@@ -534,14 +535,34 @@ def preferences():
534535 safesearch = pd
535536 elif pd_name.startswith('engine_'):
536537 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)]
538541 if engine_name in engines and category in engines[engine_name].categories:
539542 blocked_engines.append((engine_name, category))
540543 elif pd_name == 'theme':
541544 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)
542550 else:
543551 resp.set_cookie(pd_name, pd, max_age=cookie_max_age)
544552
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+
545566 resp.set_cookie(
546567 'blocked_engines', ','.join('__'.join(e) for e in blocked_engines),
547568 max_age=cookie_max_age
@@ -591,6 +612,8 @@ def preferences():
591612 autocomplete_backends=autocomplete_backends,
592613 shortcuts={y: x for x, y in engine_shortcuts.items()},
593614 themes=themes,
615+ plugins=plugins,
616+ allowed_plugins=[plugin.id for plugin in request.user_plugins],
594617 theme=get_current_theme_name())
595618
596619