allow markdown for customer, project and activity comments (#807)

This commit is contained in:
Kevin Papst
2019-05-25 00:29:23 +02:00
committed by GitHub
parent 8b1c15ccb6
commit 46905e9504
12 changed files with 23 additions and 32 deletions

View File

@@ -191,10 +191,6 @@ class SystemConfigurationController extends AbstractController
->setName('timesheet.mode')
->setType(TimesheetModeType::class)
->setTranslationDomain('system-configuration'),
(new Configuration())
->setName('timesheet.markdown_content')
->setType(CheckboxType::class)
->setTranslationDomain('system-configuration'),
(new Configuration())
->setName('timesheet.rules.allow_future_times')
->setType(CheckboxType::class)
@@ -237,6 +233,11 @@ class SystemConfigurationController extends AbstractController
->setName('theme.select_type')
->setTranslationDomain('system-configuration')
->setType(EnhancedSelectboxType::class),
(new Configuration())
->setName('timesheet.markdown_content')
->setLabel('theme.markdown_content')
->setType(CheckboxType::class)
->setTranslationDomain('system-configuration'),
]),
(new SystemConfigurationModel())
->setSection(SystemConfigurationModel::SECTION_CALENDAR)

View File

@@ -46,6 +46,7 @@ class MarkdownExtension extends AbstractExtension
return [
new TwigFilter('md2html', [$this, 'markdownToHtml'], ['is_safe' => ['html']]),
new TwigFilter('desc2html', [$this, 'timesheetContent'], ['is_safe' => ['html']]),
new TwigFilter('comment2html', [$this, 'timesheetContent'], ['is_safe' => ['html']]),
];
}

View File

@@ -47,7 +47,7 @@
{{ widgets.label_project(entry.project, path('admin_project_edit', {'id' : entry.project.id})) }}
{% endif %}
</td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'comment') }}">{{ entry.comment }}</td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'comment') }}">{{ entry.comment|comment2html }}</td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'visible') }}">{{ widgets.label_visible(entry.visible) }}</td>
<td class="actions">
{{ actions.activity(entry, 'index') }}

View File

@@ -35,7 +35,7 @@
{% for entry in entries %}
<tr{% if is_granted('edit', entry) %} class="modal-ajax-form open-edit" data-href="{{ path('admin_customer_edit', {'id': entry.id}) }}"{% endif %}>
<td>{{ widgets.label_color_dot('customer', true, entry.name, null, entry.color) }} {% if entry.company is not empty %}({{ entry.company }}){% endif %}</td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'comment') }}">{{ entry.comment }}</td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'comment') }}">{{ entry.comment|comment2html }}</td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'country') }}">{{ entry.country|country }}</td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'number') }}">{{ entry.number }}</td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'currency') }}">{{ entry.currency }} {{ entry.currency|currency }}</td>

View File

@@ -37,7 +37,7 @@
<td class="{{ tables.data_table_column_class(tableName, columns, 'customer') }}">
{{ widgets.label_customer(entry.customer, path('admin_customer_edit', {'id' : entry.customer.id})) }}
</td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'comment') }}">{{ entry.comment }}</td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'comment') }}">{{ entry.comment|comment2html }}</td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'budget') }}">{{ entry.budget|money(entry.customer.currency) }}</td>
<td class="{{ tables.data_table_column_class(tableName, columns, 'visible') }}">{{ widgets.label_visible(entry.visible) }}</td>
<td class="actions">

View File

@@ -61,7 +61,6 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertAccessIsGranted($client, '/admin/system-config/');
$configService = $client->getContainer()->get(SystemConfiguration::class);
$this->assertEquals(false, $configService->find('timesheet.markdown_content'));
$this->assertEquals('default', $configService->find('timesheet.mode'));
$this->assertEquals(true, $configService->find('timesheet.rules.allow_future_times'));
$this->assertEquals(1, $configService->find('timesheet.active_entries.hard_limit'));
@@ -72,7 +71,6 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
'system_configuration_form_timesheet' => [
'configuration' => [
['name' => 'timesheet.mode', 'value' => 'duration_only'],
['name' => 'timesheet.markdown_content', 'value' => 1],
['name' => 'timesheet.rules.allow_future_times', 'value' => false],
['name' => 'timesheet.active_entries.hard_limit', 'value' => 99],
['name' => 'timesheet.active_entries.soft_limit', 'value' => 77],
@@ -86,7 +84,6 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertHasFlashSaveSuccess($client);
$configService = $client->getContainer()->get(SystemConfiguration::class);
$this->assertEquals(true, $configService->find('timesheet.markdown_content'));
$this->assertEquals('duration_only', $configService->find('timesheet.mode'));
$this->assertEquals(false, $configService->find('timesheet.rules.allow_future_times'));
$this->assertEquals(99, $configService->find('timesheet.active_entries.hard_limit'));
@@ -103,7 +100,6 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
'system_configuration_form_timesheet' => [
'configuration' => [
['name' => 'timesheet.mode', 'value' => 'foo'],
['name' => 'timesheet.markdown_content', 'value' => 1],
['name' => 'timesheet.rules.allow_future_times', 'value' => 1],
['name' => 'timesheet.active_entries.hard_limit', 'value' => -1],
['name' => 'timesheet.active_entries.soft_limit', 'value' => -1],
@@ -112,8 +108,8 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
],
[
'#system_configuration_form_timesheet_configuration_0_value', // mode
'#system_configuration_form_timesheet_configuration_3_value', // hard_limit
'#system_configuration_form_timesheet_configuration_4_value', // soft_limit
'#system_configuration_form_timesheet_configuration_2_value', // hard_limit
'#system_configuration_form_timesheet_configuration_3_value', // soft_limit
],
true
);
@@ -181,6 +177,7 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertAccessIsGranted($client, '/admin/system-config/');
$configService = $client->getContainer()->get(SystemConfiguration::class);
$this->assertEquals(false, $configService->find('timesheet.markdown_content'));
$this->assertNull($configService->find('theme.select_type'));
$form = $client->getCrawler()->filter('form[name=system_configuration_form_theme]')->form();
@@ -188,6 +185,7 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
'system_configuration_form_theme' => [
'configuration' => [
['name' => 'theme.select_type', 'value' => '1'],
['name' => 'timesheet.markdown_content', 'value' => 1],
]
]
]);
@@ -199,6 +197,7 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$configService = $client->getContainer()->get(SystemConfiguration::class);
$this->assertEquals('selectpicker', $configService->find('theme.select_type'));
$this->assertEquals(true, $configService->find('timesheet.markdown_content'));
}
public function testUpdateThemeConfigValidation()
@@ -211,6 +210,7 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
'system_configuration_form_theme' => [
'configuration' => [
['name' => 'theme.select_type', 'value' => 'foo'],
['name' => 'timesheet.markdown_content', 'value' => 1],
]
]
],

View File

@@ -26,9 +26,10 @@ class MarkdownExtensionTest extends TestCase
$config = new TimesheetConfiguration($loader, ['markdown_content' => true]);
$sut = new MarkdownExtension(new Markdown(), $config);
$filters = $sut->getFilters();
$this->assertCount(2, $filters);
$this->assertCount(3, $filters);
$this->assertEquals('md2html', $filters[0]->getName());
$this->assertEquals('desc2html', $filters[1]->getName());
$this->assertEquals('comment2html', $filters[2]->getName());
}
public function testMarkdownToHtml()

View File

@@ -26,9 +26,9 @@
<source>calendar</source>
<target>Kalender</target>
</trans-unit>
<trans-unit id="label.timesheet.markdown_content">
<source>label.timesheet.markdown_content</source>
<target>Erlaube Markdown in den Beschreibungen der erfassten Zeiten</target>
<trans-unit id="label.theme.markdown_content">
<source>label.theme.markdown_content</source>
<target>Erlaube Markdown-Formatierungen in Beschreibungen und Kommentaren</target>
</trans-unit>
<trans-unit id="label.timesheet.mode">
<source>label.timesheet.mode</source>

View File

@@ -26,9 +26,9 @@
<source>calendar</source>
<target>Calendar</target>
</trans-unit>
<trans-unit id="label.timesheet.markdown_content">
<source>label.timesheet.markdown_content</source>
<target>Allow Markdown in the timesheet descriptions</target>
<trans-unit id="label.theme.markdown_content">
<source>label.theme.markdown_content</source>
<target>Allow markdown-formattings in descriptions and comments</target>
</trans-unit>
<trans-unit id="label.timesheet.mode">
<source>label.timesheet.mode</source>

View File

@@ -18,10 +18,6 @@
<source>form_customer</source>
<target>Új ügyfél alapértelmezett értékei</target>
</trans-unit>
<trans-unit id="label.timesheet.markdown_content">
<source>label.timesheet.markdown_content</source>
<target>Markdown használatának engedélyezése a rögzítések leírásában</target>
</trans-unit>
<trans-unit id="label.timesheet.mode_duration_only">
<source>label.timesheet.mode_duration_only</source>
<target>"Csak időtartam" mód - a befejezés mezőt kicseréli időtartamra</target>

View File

@@ -22,10 +22,6 @@
<source>theme</source>
<target>テーマ</target>
</trans-unit>
<trans-unit id="label.timesheet.markdown_content">
<source>label.timesheet.markdown_content</source>
<target>タイムシートの説明文を Markdown 書式で書けるようにする</target>
</trans-unit>
<trans-unit id="label.timesheet.mode">
<source>label.timesheet.mode</source>
<target>タイムトラッキング モード</target>

View File

@@ -18,10 +18,6 @@
<source>form_customer</source>
<target state="translated">Skapa kund - standardvärden</target>
</trans-unit>
<trans-unit id="label.timesheet.markdown_content">
<source>label.timesheet.markdown_content</source>
<target state="translated">Tillåt Markdown i tidskriftsbeskrivningarna</target>
</trans-unit>
<trans-unit id="label.timesheet.mode">
<source>label.timesheet.mode</source>
<target state="translated">Tidsredovisningsläge</target>