seo: add settings for meta tags (#20263)

This commit is contained in:
Frédéric Péters 2020-04-13 09:07:46 +02:00 committed by Nicolas ROCHE
parent e0a3f76626
commit 02e67cf0fc
5 changed files with 48 additions and 2 deletions

View File

@ -25,5 +25,14 @@ class RobotsTxtForm(forms.Form):
widget=forms.Textarea)
class SettingsForm(forms.Form):
meta_description = forms.CharField(
label=_('Description for indexing'),
required=False)
meta_keywords = forms.CharField(
label=_('Keywords for indexing'),
required=False)
class EnableForm(forms.Form):
pass

View File

@ -55,4 +55,16 @@
</div>
{% endif %}
{% if mode == 'customize' or mode == 'allow' %}
<div class="section padded">
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<div class="buttons">
<button class="submit-button">{% trans "Save" %}</button>
</div>
</form>
</div>
{% endif %}
{% endblock %}

View File

@ -19,7 +19,7 @@ from django.http import HttpResponseRedirect
from django.views.generic import FormView, TemplateView
from hobo.environment.utils import get_variable, set_variable
from .forms import RobotsTxtForm
from .forms import RobotsTxtForm, SettingsForm
ALLOW = ""
@ -36,10 +36,22 @@ def get_mode(content):
return 'customize'
class HomeView(TemplateView):
class HomeView(FormView):
template_name = 'hobo/seo_home.html'
form_class = SettingsForm
success_url = reverse_lazy('seo-home')
def get_initial(self):
initial = super(HomeView, self).get_initial()
initial['meta_description'] = get_variable('meta_description').value
initial['meta_keywords'] = get_variable('meta_keywords').value
return initial
def form_valid(self, form):
set_variable('meta_description', form.cleaned_data['meta_description'])
set_variable('meta_keywords', form.cleaned_data['meta_keywords'])
return super(HomeView, self).form_valid(form)
def get_context_data(self, **kwargs):
context = super(HomeView, self).get_context_data(**kwargs)
context['robots_txt'] = get_variable('robots_txt').value

View File

@ -233,3 +233,8 @@ ul#id_scopes li {
-webkit-column-width: 20em;
column-width: 20em;
}
#id_meta_description,
#id_meta_keywords {
width: 100%;
}

View File

@ -98,3 +98,11 @@ def test_custom(app, admin_user):
assert get_variable('robots_txt').value == 'some new content'
resp = resp.follow()
assert resp.html.pre.text == 'some new content'
def test_meta(app, admin_user):
login(app)
resp = app.get('/seo/')
resp.form['meta_description'] = 'meta description'
resp.form['meta_keywords'] = 'meta, keywords'
resp = resp.form.submit()