Send absolute links in email notifications

This commit is contained in:
Frederic Guillot
2016-10-08 09:53:46 -04:00
parent e5c449788a
commit 5e2e0272ed
7 changed files with 45 additions and 24 deletions

View File

@@ -51,20 +51,35 @@ class UrlHelper extends Base
* Link element * Link element
* *
* @access public * @access public
* @param string $label Link label * @param string $label Link label
* @param string $controller Controller name * @param string $controller Controller name
* @param string $action Action name * @param string $action Action name
* @param array $params Url parameters * @param array $params Url parameters
* @param boolean $csrf Add a CSRF token * @param boolean $csrf Add a CSRF token
* @param string $class CSS class attribute * @param string $class CSS class attribute
* @param string $title * @param string $title Link title
* @param boolean $new_tab Open the link in a new tab * @param boolean $new_tab Open the link in a new tab
* @param string $anchor Link Anchor * @param string $anchor Link Anchor
* @param bool $absolute
* @return string * @return string
*/ */
public function link($label, $controller, $action, array $params = array(), $csrf = false, $class = '', $title = '', $new_tab = false, $anchor = '') public function link($label, $controller, $action, array $params = array(), $csrf = false, $class = '', $title = '', $new_tab = false, $anchor = '', $absolute = false)
{ {
return '<a href="'.$this->href($controller, $action, $params, $csrf, $anchor).'" class="'.$class.'" title=\''.$title.'\' '.($new_tab ? 'target="_blank"' : '').'>'.$label.'</a>'; return '<a href="'.$this->href($controller, $action, $params, $csrf, $anchor, $absolute).'" class="'.$class.'" title=\''.$title.'\' '.($new_tab ? 'target="_blank"' : '').'>'.$label.'</a>';
}
/**
* Absolute link
*
* @param string $label
* @param string $controller
* @param string $action
* @param array $params
* @return string
*/
public function absoluteLink($label, $controller, $action, array $params = array())
{
return $this->link($label, $controller, $action, $params, false, '', '', true, '', true);
} }
/** /**
@@ -155,7 +170,7 @@ class UrlHelper extends Base
/** /**
* Build relative url * Build relative url
* *
* @access private * @access protected
* @param string $separator Querystring argument separator * @param string $separator Querystring argument separator
* @param string $controller Controller name * @param string $controller Controller name
* @param string $action Action name * @param string $action Action name
@@ -165,7 +180,7 @@ class UrlHelper extends Base
* @param boolean $absolute Absolute or relative link * @param boolean $absolute Absolute or relative link
* @return string * @return string
*/ */
private function build($separator, $controller, $action, array $params = array(), $csrf = false, $anchor = '', $absolute = false) protected function build($separator, $controller, $action, array $params = array(), $csrf = false, $anchor = '', $absolute = false)
{ {
$path = $this->route->findUrl($controller, $action, $params); $path = $this->route->findUrl($controller, $action, $params);
$qs = array(); $qs = array();

View File

@@ -2,6 +2,6 @@
Kanboard Kanboard
<?php if (isset($application_url) && ! empty($application_url)): ?> <?php if (isset($application_url) && ! empty($application_url)): ?>
- <a href="<?= $this->url->href('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', true) ?>"><?= t('view the task on Kanboard') ?></a> - <?= $this->url->absoluteLink(t('view the task on Kanboard'), 'TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?>
- <a href="<?= $this->url->href('BoardViewController', 'show', array('project_id' => $task['project_id']), false, '', true) ?>"><?= t('view the board on Kanboard') ?></a> - <?= $this->url->absoluteLink(t('view the board on Kanboard'), 'BoardViewController', 'show', array('project_id' => $task['project_id'])) ?>
<?php endif ?> <?php endif ?>

View File

@@ -3,7 +3,7 @@
<p> <p>
<?= e( <?= e(
'This task is now linked to the task %s with the relation "%s"', 'This task is now linked to the task %s with the relation "%s"',
$this->url->link(t('#%d', $task_link['opposite_task_id']), 'TaskViewController', 'show', array('task_id' => $task_link['opposite_task_id'])), $this->url->absoluteLink(t('#%d', $task_link['opposite_task_id']), 'TaskViewController', 'show', array('task_id' => $task_link['opposite_task_id'])),
$this->text->e($task_link['label']) $this->text->e($task_link['label'])
) ?> ) ?>
</p> </p>

View File

@@ -4,7 +4,7 @@
<?= e( <?= e(
'The link with the relation "%s" to the task %s have been removed', 'The link with the relation "%s" to the task %s have been removed',
$this->text->e($task_link['label']), $this->text->e($task_link['label']),
$this->url->link(t('#%d', $task_link['opposite_task_id']), 'TaskViewController', 'show', array('task_id' => $task_link['opposite_task_id'])) $this->url->absoluteLink(t('#%d', $task_link['opposite_task_id']), 'TaskViewController', 'show', array('task_id' => $task_link['opposite_task_id']))
) ?> ) ?>
</p> </p>

View File

@@ -2,4 +2,4 @@
<p><?= t('The task #%d have been opened.', $task['id']) ?></p> <p><?= t('The task #%d have been opened.', $task['id']) ?></p>
<?= $this->render('notification/footer', array('task' => $task, 'application_url' => $application_url)) ?> <?= $this->render('notification/footer', array('task' => $task, 'application_url' => $application_url)) ?>

View File

@@ -13,16 +13,16 @@
<tr style="overflow: hidden; background: #fff; text-align: left; padding-top: .5em; padding-bottom: .5em; padding-left: 3px; padding-right: 3px;"> <tr style="overflow: hidden; background: #fff; text-align: left; padding-top: .5em; padding-bottom: .5em; padding-left: 3px; padding-right: 3px;">
<td style="border: 1px solid #eee;">#<?= $task['id'] ?></td> <td style="border: 1px solid #eee;">#<?= $task['id'] ?></td>
<td style="border: 1px solid #eee;"> <td style="border: 1px solid #eee;">
<?php if ($application_url): ?> <?php if (! empty($application_url)): ?>
<a href="<?= $this->url->href('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', true) ?>"><?= $this->text->e($task['title']) ?></a> <?= $this->url->absoluteLink($this->text->e($task['title']), 'TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?>
<?php else: ?> <?php else: ?>
<?= $this->text->e($task['title']) ?> <?= $this->text->e($task['title']) ?>
<?php endif ?> <?php endif ?>
</td> </td>
<td style="border: 1px solid #eee;"><?= $this->dt->date($task['date_due']) ?></td> <td style="border: 1px solid #eee;"><?= $this->dt->date($task['date_due']) ?></td>
<td style="border: 1px solid #eee;"><?= $task['project_name'] ?></td> <td style="border: 1px solid #eee;"><?= $this->text->e($task['project_name']) ?></td>
<td style="border: 1px solid #eee;"> <td style="border: 1px solid #eee;">
<?php if ($task['assignee_username']): ?> <?php if (! empty($task['assignee_username'])): ?>
<?= $this->text->e($task['assignee_name'] ?: $task['assignee_username']) ?> <?= $this->text->e($task['assignee_name'] ?: $task['assignee_username']) ?>
<?php endif ?> <?php endif ?>
</td> </td>

View File

@@ -72,8 +72,14 @@
<div class="dropdown"> <div class="dropdown">
<a href="#" class="dropdown-menu dropdown-menu-link-icon"><i class="fa fa-cog fa-fw"></i><i class="fa fa-caret-down"></i></a> <a href="#" class="dropdown-menu dropdown-menu-link-icon"><i class="fa fa-cog fa-fw"></i><i class="fa fa-caret-down"></i></a>
<ul> <ul>
<li><?= $this->url->link(t('Edit'), 'TaskInternalLinkController', 'edit', array('link_id' => $link['id'], 'task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?></li> <li>
<li><?= $this->url->link(t('Remove'), 'TaskInternalLinkController', 'confirm', array('link_id' => $link['id'], 'task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?></li> <i class="fa fa-edit fa-fw"></i>
<?= $this->url->link(t('Edit'), 'TaskInternalLinkController', 'edit', array('link_id' => $link['id'], 'task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?>
</li>
<li>
<i class="fa fa-trash-o fa-fw"></i>
<?= $this->url->link(t('Remove'), 'TaskInternalLinkController', 'confirm', array('link_id' => $link['id'], 'task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'popover') ?>
</li>
</ul> </ul>
</div> </div>
</td> </td>