From 93b36f03a9b2acd6ee0460abe51bf439558692ec Mon Sep 17 00:00:00 2001 From: tobes Date: Fri, 3 Aug 2012 15:26:21 +0100 Subject: [PATCH] [#2302] config now uses autoform --- ckan/controllers/admin.py | 67 +++++++++++++++----------------- ckan/templates/admin/config.html | 13 +------ 2 files changed, 32 insertions(+), 48 deletions(-) diff --git a/ckan/controllers/admin.py b/ckan/controllers/admin.py index b0e087d515f..35366228825 100644 --- a/ckan/controllers/admin.py +++ b/ckan/controllers/admin.py @@ -1,4 +1,4 @@ -from pylons import g +from pylons import config import ckan.lib.base as base import ckan.lib.helpers as h @@ -32,52 +32,47 @@ def __before__(self, action, **params): model.Revision)) def config(self): + + # Styles for use in the form.select() macro. + styles = [{'text': 'Default', 'value': '/base/css/main.css'}, + {'text': 'Red', 'value': '/base/css/red.css'}, + {'text': 'Green', 'value': '/base/css/green.css'}, + {'text': 'Maroon', 'value': '/base/css/maroon.css'}, + {'text': 'Fuchsia', 'value': '/base/css/fuchsia.css'}] + items = [ + {'name': 'ckan.site_title', 'control': 'input', 'label': _('Site Title'), 'placeholder': _('')}, + {'name': 'ckan.main_css', 'control': 'select', 'options': styles, 'label': _('Style'), 'placeholder': _('')}, + {'name': 'ckan.site_description', 'control': 'input', 'label': _('Site Tag Line'), 'placeholder': _('')}, + {'name': 'ckan.site_about', 'control': 'markdown', 'label': _('About'), 'placeholder': _('About page text')}, + {'name': 'ckan.site_intro_text', 'control': 'markdown', 'label': _('Intro Text'), 'placeholder': _('Text on home page')}, + {'name': 'ckan.site_custom_css', 'control': 'plain_textarea', 'label': _('Custom CSS'), 'placeholder': _('Customisable css inserted into the page header')}, + ] + data = request.POST if 'save' in data: # update config from form - style = data.get('style') - app_globals.set_global('ckan.main_css', style) - app_globals.set_main_css(style) - - site_title = data.get('title') - app_globals.set_global('ckan.site_title', site_title) - - tag_line = data.get('tagline') - app_globals.set_global('ckan.site_description', tag_line) - - about = data.get('about') - app_globals.set_global('ckan.site_about', about) - - intro_text = data.get('intro_text') - app_globals.set_global('ckan.site_intro_text', intro_text) - - custom_css = data.get('custom_css') - app_globals.set_global('ckan.site_custom_css', custom_css) + for item in items: + name = item['name'] + if name in data: + app_globals.set_global(name, data[name]) + app_globals.reset() if 'reset' in data: # remove sys info items - for key in app_globals.auto_update: - app_globals.delete_global(key) - app_globals.delete_global('ckan.main_css') + for item in items: + name = item['name'] + app_globals.delete_global(name) # reset to values in config app_globals.reset() - # Styles for use in the form.select() macro. - styles = [{'text': 'Default', 'value': '/base/css/main.css'}, - {'text': 'Red', 'value': '/base/css/red.css'}, - {'text': 'Green', 'value': '/base/css/green.css'}, - {'text': 'Maroon', 'value': '/base/css/maroon.css'}, - {'text': 'Fuchsia', 'value': '/base/css/fuchsia.css'}] - data = {} - data['title'] = g.site_title - data['style'] = g.main_css - data['tagline'] = g.site_description - data['about'] = g.site_about - data['intro_text'] = g.site_intro_text - data['custom_css'] = g.site_custom_css - vars = {'data': data, 'errors': {}, 'styles': styles} + data = {} + for item in items: + name = item['name'] + data[name] = config.get(name) + + vars = {'data': data, 'errors': {}, 'form_items': items} return base.render('admin/config.html', extra_vars = vars) diff --git a/ckan/templates/admin/config.html b/ckan/templates/admin/config.html index c133992bd3e..614f60ab363 100644 --- a/ckan/templates/admin/config.html +++ b/ckan/templates/admin/config.html @@ -10,18 +10,7 @@

{{ _('Configuration Settings') }}

- {{ form.select('style', id='field-style', label=_('Style'), options=styles, selected=data.style, error=errors.style) }} - - {{ form.input('title', id='field-title', label=_('Site Title'), placeholder=_('eg. CKAN'), value=data.title, error=errors.title, classes=['control-medium']) }} - - {{ form.input('tagline', id='field-tagline', label=_('Tag Line'), placeholder=_('eg. The Open Source Data Portal'), value=data.tagline, error=errors.tagline, classes=['control-medium']) }} - - {{ form.markdown('about', id='field-about', label=_('About Text'), placeholder=_('About contents'), value=data.about, error=errors.about) }} - - {{ form.markdown('intro_text', id='field-intro', label=_('Intro Text'), placeholder=_('Intro contents'), value=data.intro_text, error=errors.intro_text) }} - - {{ form.plain_textarea('custom_css', id='field-intro', label=_('Custom CSS'), placeholder=_('Custom css'), value=data.custom_css, error=errors.custom_css) }} - + {{ form.autoform(form_items, data, errors) }}
{# Update needs to come first so form submits when return is pressed #}