diff --git a/src/onegov/org/layout.py b/src/onegov/org/layout.py
index 3ef51dfbbb..fee565adfa 100644
--- a/src/onegov/org/layout.py
+++ b/src/onegov/org/layout.py
@@ -3348,6 +3348,9 @@ def __init__(
elif self.directory.numbering == 'custom':
self.custom_body_attributes['data-default-marker-icon'] = 'custom'
+ def show_label(self, field: Field) -> bool:
+ return False
+
@cached_property
def breadcrumbs(self) -> list[Link]:
return [
diff --git a/src/onegov/org/templates/directory.pt b/src/onegov/org/templates/directory.pt
index a6d810af49..980f85ee3b 100644
--- a/src/onegov/org/templates/directory.pt
+++ b/src/onegov/org/templates/directory.pt
@@ -25,20 +25,25 @@
${directory.configuration.empty_notice}
-
+
-
${entry.title}
-
-
+
+
-
-
+
diff --git a/src/onegov/org/theme/styles/org.scss b/src/onegov/org/theme/styles/org.scss
index 74f7344cf9..5c6b933f67 100644
--- a/src/onegov/org/theme/styles/org.scss
+++ b/src/onegov/org/theme/styles/org.scss
@@ -122,6 +122,7 @@ h6,
/*
Disable hyphenation in e-mail links and make them breakable
*/
+
a[href^="mailto:"] {
@include prefix(hyphens, none);
@include prefix(word-break, break-all);
@@ -3566,6 +3567,14 @@ button {
}
+.accordion .accordion-navigation dl {
+ margin-bottom: 1rem;
+}
+.accordion .accordion-navigation dd a {
+ padding: 0;
+ display: inline;
+}
+
/*
Popup Menu
*/
diff --git a/src/onegov/town6/templates/directory.pt b/src/onegov/town6/templates/directory.pt
index 922e70ceac..062ff1848c 100644
--- a/src/onegov/town6/templates/directory.pt
+++ b/src/onegov/town6/templates/directory.pt
@@ -28,20 +28,25 @@
-
+
-
${entry.title}
-
-
+
+
-
-
+
diff --git a/tests/onegov/town6/test_views_directory.py b/tests/onegov/town6/test_views_directory.py
index a0d09ac407..a7f2d4bb5d 100644
--- a/tests/onegov/town6/test_views_directory.py
+++ b/tests/onegov/town6/test_views_directory.py
@@ -178,34 +178,84 @@ def test_directory_entry_subscription(client):
def test_create_directory_accordion_layout(client):
- def create_directory(client, title):
- page = (client.get('/directories').
- click('Verzeichnis'))
+ def create_directory(client, title, structure):
+ page = (client.get('/directories').click('Verzeichnis'))
page.form['title'] = title
- page.form['structure'] = "Question *= ___\nAnswer *= ___"
+ page.form['structure'] = structure
page.form['title_format'] = '[Question]'
+ page.form['content_fields'] = 'Question\nAnswer'
page.form['layout'] = 'accordion'
return page.form.submit().follow()
+ def edit_directory(client, dir_url_name, structure):
+ page = client.get(f'/directories/{dir_url_name}')
+ page = page.click('Konfigurieren')
+ page.form['structure'] = structure
+ return page.form.submit().form.submit().follow()
+
+ def create_directory_entry(directory, question, answer):
+ page = directory.click('Eintrag')
+ page.form['question'] = question
+ page.form['answer'] = answer
+ return page.form.submit().follow()
+
client.login_admin()
- title = "Questions and Answers about smurfs"
- faq_dir = create_directory(client, title)
+ title = "Questions and Answers about smurfs"
+ structure = "Question *= ___\nAnswer *= ___"
+ faq_dir = create_directory(client, title, structure)
assert title in faq_dir
- question = "Are smurfs real?"
- answer = "Yes, they are."
- q1 = faq_dir.click('Eintrag')
- q1.form['question'] = question
- q1.form['answer'] = answer
- q1 = q1.form.submit().follow()
- assert question in q1
- assert answer not in q1
-
- question = "Who is the boss of the smurfs?"
- q2 = faq_dir.click('Eintrag')
- q2.form['question'] = question
- q2.form['answer'] = 'Papa Schlumpf'
- q2 = q2.form.submit().follow()
- assert question in q2
- assert answer not in q2
+ question_1 = "Are smurfs real?"
+ answer_1 = "Yes, they are."
+ page = create_directory_entry(faq_dir, question_1, answer_1)
+ assert question_1 in page
+ assert answer_1 in page
+
+ question_2 = "Who is the boss of the smurfs?"
+ answer_2 = "Papa Smurf"
+ page = create_directory_entry(faq_dir, question_2, answer_2)
+ assert question_2 in page
+ assert answer_2 in page
+
+ question_3 = "How many smurfs are there?"
+ answer_3 = '- Papa Smurf\n- Smurfette\n- Brainy Smurf\n- Grouchy Smurf'
+ q3 = create_directory_entry(faq_dir, question_3, answer_3)
+ assert question_3 in q3
+ for smurf in answer_3.split('\n'):
+ assert smurf in q3
+
+ page = client.get('/directories/questions-and-answers-about-smurfs')
+ assert question_1 in page
+ assert answer_1 in page
+ assert question_2 in page
+ assert answer_2 in page
+ assert question_3 in page
+ for smurf in answer_3.split('\n'):
+ assert smurf in page
+
+ # with multiline answers
+ structure = "Question *= ___\nAnswer *= ...[10]"
+ page = edit_directory(
+ client, 'questions-and-answers-about-smurfs', structure)
+ assert question_1 in page
+ assert answer_1 in page
+ assert question_2 in page
+ assert answer_2 in page
+ assert question_3 in page
+ for smurf in answer_3.split('\n'):
+ assert smurf in page
+
+ # with markdown answers
+ structure = "Question *= ___\nAnswer *= "
+ page = edit_directory(
+ client, 'questions-and-answers-about-smurfs', structure)
+ assert question_1 in page
+ assert answer_1 in page
+ assert question_2 in page
+ assert answer_2 in page
+ assert question_3 in page
+ for smurf in answer_3.replace('- ', '').split('\n'):
+ assert smurf in page
+ # ensure markdown rendered each smurf in separate li tag
+ assert f'- {smurf}
' in page