Fix broken links (Markdown content) for public boards (#319)

This commit is contained in:
Frédéric Guillot
2014-10-20 20:40:50 -04:00
parent 6f527f2055
commit 88a1120d9b
6 changed files with 59 additions and 9 deletions

View File

@@ -21,7 +21,20 @@
<?php endif ?> <?php endif ?>
<div class="markdown"> <div class="markdown">
<?= Helper\markdown($comment['comment']) ?> <?php if (isset($is_public) && $is_public): ?>
<?= Helper\markdown(
$comment['comment'],
array(
'controller' => 'task',
'action' => 'readonly',
'params' => array(
'token' => $project['token']
)
)
) ?>
<?php else: ?>
<?= Helper\markdown($comment['comment']) ?>
<?php endif ?>
</div> </div>
</div> </div>

View File

@@ -8,7 +8,9 @@
<?= Helper\template('comment_show', array( <?= Helper\template('comment_show', array(
'comment' => $comment, 'comment' => $comment,
'task' => $task, 'task' => $task,
'project' => $project,
'not_editable' => isset($not_editable) && $not_editable, 'not_editable' => isset($not_editable) && $not_editable,
'is_public' => isset($is_public) && $is_public,
)) ?> )) ?>
<?php endforeach ?> <?php endforeach ?>

View File

@@ -4,10 +4,24 @@
<p class="pull-right"><?= Helper\a(t('Back to the board'), 'board', 'readonly', array('token' => $project['token'])) ?></p> <p class="pull-right"><?= Helper\a(t('Back to the board'), 'board', 'readonly', array('token' => $project['token'])) ?></p>
<?= Helper\template('task_show_description', array('task' => $task)) ?> <?= Helper\template('task_show_description', array(
'task' => $task,
'project' => $project,
'is_public' => true
)) ?>
<?= Helper\template('subtask_show', array('task' => $task, 'subtasks' => $subtasks, 'not_editable' => true)) ?> <?= Helper\template('subtask_show', array(
'task' => $task,
'subtasks' => $subtasks,
'not_editable' => true
)) ?>
<?= Helper\template('task_comments', array('task' => $task, 'comments' => $comments, 'not_editable' => true)) ?> <?= Helper\template('task_comments', array(
'task' => $task,
'comments' => $comments,
'project' => $project,
'not_editable' => true,
'is_public' => true,
)) ?>
</section> </section>

View File

@@ -4,4 +4,4 @@
<?= Helper\template('subtask_show', array('task' => $task, 'subtasks' => $subtasks)) ?> <?= Helper\template('subtask_show', array('task' => $task, 'subtasks' => $subtasks)) ?>
<?= Helper\template('task_timesheet', array('timesheet' => $timesheet)) ?> <?= Helper\template('task_timesheet', array('timesheet' => $timesheet)) ?>
<?= Helper\template('file_show', array('task' => $task, 'files' => $files)) ?> <?= Helper\template('file_show', array('task' => $task, 'files' => $files)) ?>
<?= Helper\template('task_comments', array('task' => $task, 'comments' => $comments)) ?> <?= Helper\template('task_comments', array('task' => $task, 'comments' => $comments, 'project' => $project)) ?>

View File

@@ -5,7 +5,20 @@
</div> </div>
<article class="markdown task-show-description"> <article class="markdown task-show-description">
<?= Helper\markdown($task['description']) ?: t('There is no description.') ?> <?php if (! isset($is_public)): ?>
<?= Helper\markdown($task['description']) ?>
<?php else: ?>
<?= Helper\markdown(
$task['description'],
array(
'controller' => 'task',
'action' => 'readonly',
'params' => array(
'token' => $project['token']
)
)
) ?>
<?php endif ?>
</article> </article>
</div> </div>
<?php endif ?> <?php endif ?>

View File

@@ -103,17 +103,25 @@ function get_user_id()
/** /**
* Markdown transformation * Markdown transformation
* *
* @param string $text Markdown content * @param string $text Markdown content
* @param array $link Link parameters for replacement
* @return string * @return string
*/ */
function markdown($text) function markdown($text, array $link = array('controller' => 'task', 'action' => 'show', 'params' => array()))
{ {
$html = Parsedown::instance() $html = Parsedown::instance()
->setMarkupEscaped(true) # escapes markup (HTML) ->setMarkupEscaped(true) # escapes markup (HTML)
->text($text); ->text($text);
// Replace task #123 by a link to the task // Replace task #123 by a link to the task
$html = preg_replace('!#(\d+)!i', '<a href="?controller=task&action=show&task_id=$1">$0</a>', $html); $html = preg_replace_callback('!#(\d+)!i', function($matches) use ($link) {
return a(
$matches[0],
$link['controller'],
$link['action'],
$link['params'] + array('task_id' => $matches[1])
);
}, $html);
return $html; return $html;
} }