Skip to content

Commit

Permalink
[#2302] config now uses autoform
Browse files Browse the repository at this point in the history
  • Loading branch information
tobes committed Aug 3, 2012
1 parent 101dd27 commit 93b36f0
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 48 deletions.
67 changes: 31 additions & 36 deletions 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
Expand Down Expand Up @@ -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)

Expand Down
13 changes: 1 addition & 12 deletions ckan/templates/admin/config.html
Expand Up @@ -10,18 +10,7 @@
<h1 class="page-heading">{{ _('Configuration Settings') }}</h1>

<form method='post' action="" class="form-horizontal">
{{ 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) }}
<div class="form-actions">
{# Update needs to come first so form submits when return is pressed #}
<button type="submit" class="btn btn-primary" name="save">Update</button>
Expand Down

0 comments on commit 93b36f0

Please sign in to comment.