summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorFrédéric Guillot <fred@kanboard.net>2014-10-20 20:40:50 -0400
committerFrédéric Guillot <fred@kanboard.net>2014-10-20 20:40:50 -0400
commit88a1120d9b4fde8b3e8cddad6d2be3cdd9fbf806 (patch)
treeb2f052e71a7f10ee345a4077acc85af90da97233 /app
parent6f527f2055a5dbd51a6e3e35d7a7e9d9ccdf2517 (diff)
Fix broken links (Markdown content) for public boards (#319)
Diffstat (limited to 'app')
-rw-r--r--app/Templates/comment_show.php15
-rw-r--r--app/Templates/task_comments.php2
-rw-r--r--app/Templates/task_public.php20
-rw-r--r--app/Templates/task_show.php2
-rw-r--r--app/Templates/task_show_description.php15
-rw-r--r--app/helpers.php14
6 files changed, 59 insertions, 9 deletions
diff --git a/app/Templates/comment_show.php b/app/Templates/comment_show.php
index 5069120d..b2ccc25a 100644
--- a/app/Templates/comment_show.php
+++ b/app/Templates/comment_show.php
@@ -21,7 +21,20 @@
<?php endif ?>
<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>
diff --git a/app/Templates/task_comments.php b/app/Templates/task_comments.php
index 12deff98..5cfa99ce 100644
--- a/app/Templates/task_comments.php
+++ b/app/Templates/task_comments.php
@@ -8,7 +8,9 @@
<?= Helper\template('comment_show', array(
'comment' => $comment,
'task' => $task,
+ 'project' => $project,
'not_editable' => isset($not_editable) && $not_editable,
+ 'is_public' => isset($is_public) && $is_public,
)) ?>
<?php endforeach ?>
diff --git a/app/Templates/task_public.php b/app/Templates/task_public.php
index 3f44ceec..13fef1ed 100644
--- a/app/Templates/task_public.php
+++ b/app/Templates/task_public.php
@@ -4,10 +4,24 @@
<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> \ No newline at end of file
diff --git a/app/Templates/task_show.php b/app/Templates/task_show.php
index 0964a8f0..ec5d5da4 100644
--- a/app/Templates/task_show.php
+++ b/app/Templates/task_show.php
@@ -4,4 +4,4 @@
<?= Helper\template('subtask_show', array('task' => $task, 'subtasks' => $subtasks)) ?>
<?= Helper\template('task_timesheet', array('timesheet' => $timesheet)) ?>
<?= Helper\template('file_show', array('task' => $task, 'files' => $files)) ?>
-<?= Helper\template('task_comments', array('task' => $task, 'comments' => $comments)) ?> \ No newline at end of file
+<?= Helper\template('task_comments', array('task' => $task, 'comments' => $comments, 'project' => $project)) ?> \ No newline at end of file
diff --git a/app/Templates/task_show_description.php b/app/Templates/task_show_description.php
index 67a38444..25312149 100644
--- a/app/Templates/task_show_description.php
+++ b/app/Templates/task_show_description.php
@@ -5,7 +5,20 @@
</div>
<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>
</div>
<?php endif ?> \ No newline at end of file
diff --git a/app/helpers.php b/app/helpers.php
index 9e0c2698..cd6d630e 100644
--- a/app/helpers.php
+++ b/app/helpers.php
@@ -103,17 +103,25 @@ function get_user_id()
/**
* Markdown transformation
*
- * @param string $text Markdown content
+ * @param string $text Markdown content
+ * @param array $link Link parameters for replacement
* @return string
*/
-function markdown($text)
+function markdown($text, array $link = array('controller' => 'task', 'action' => 'show', 'params' => array()))
{
$html = Parsedown::instance()
->setMarkupEscaped(true) # escapes markup (HTML)
->text($text);
// 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;
}