33
0
mirror of https://github.com/joomla-extensions/patchtester.git synced 2025-01-25 16:18:26 +00:00

Correctly link to the issue tracker if able (Fix #130)

This commit is contained in:
Michael Babker 2016-03-18 17:34:31 -04:00
parent 60b48e2236
commit 0fe1c63146
6 changed files with 98 additions and 11 deletions

View File

@ -0,0 +1,69 @@
<?php
/**
* Patch testing component for the Joomla! CMS
*
* @copyright Copyright (C) 2011 - 2012 Ian MacLennan, Copyright (C) 2013 - 2016 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later
*/
namespace PatchTester;
/**
* Helper class for Joomla's issue tracker integrations
*
* @since 2.0
*/
abstract class TrackerHelper
{
/**
* Array containing the supported repositories integrated with the Joomla! Issue Tracker
*
* @var array
* @since 2.0
*/
private static $projects = array(
'joomla-cms' => array(
'githubUser' => 'joomla',
'githubrepo' => 'joomla-cms',
'projectAlias' => 'joomla-cms',
),
'patchtester' => array(
'githubUser' => 'joomla-extensions',
'githubrepo' => 'patchtester',
'projectAlias' => 'patchtester',
),
'weblinks' => array(
'githubUser' => 'joomla-extensions',
'githubrepo' => 'weblinks',
'projectAlias' => 'weblinks',
),
);
/**
* Get the issue tracker project alias for a GitHub repository
*
* @param string $githubUser The owner of the GitHub repository (user or organization)
* @param string $githubRepo The GitHub repository name
*
* @return string|boolean The project alias if supported or boolean false
*
* @since 2.0
*/
public static function getTrackerAlias($githubUser, $githubRepo)
{
// If the repo isn't even listed, no point in going further
if (!array_key_exists($githubRepo, self::$projects))
{
return false;
}
// Now the GitHub user must match the project (we don't support forks, sorry!)
if (self::$projects[$githubRepo]['githubUser'] !== $githubUser)
{
return false;
}
// This project is supported
return self::$projects[$githubRepo]['projectAlias'];
}
}

View File

@ -8,6 +8,7 @@
namespace PatchTester\View\Pulls; namespace PatchTester\View\Pulls;
use PatchTester\TrackerHelper;
use PatchTester\View\DefaultHtmlView; use PatchTester\View\DefaultHtmlView;
/** /**
@ -36,7 +37,15 @@ class PullsHtmlView extends DefaultHtmlView
protected $items; protected $items;
/** /**
* State object * Pagination object
*
* @var \JPagination
* @since 2.0
*/
protected $pagination;
/**
* The model state
* *
* @var \Joomla\Registry\Registry * @var \Joomla\Registry\Registry
* @since 2.0 * @since 2.0
@ -44,12 +53,12 @@ class PullsHtmlView extends DefaultHtmlView
protected $state; protected $state;
/** /**
* Pagination object * The issue tracker project alias
* *
* @var \JPagination * @var string|boolean
* @since 2.0 * @since 2.0
*/ */
protected $pagination; protected $trackerAlias;
/** /**
* Method to render the view. * Method to render the view.
@ -73,9 +82,10 @@ class PullsHtmlView extends DefaultHtmlView
// Only process the data if there are no environment errors // Only process the data if there are no environment errors
if (!count($this->envErrors)) if (!count($this->envErrors))
{ {
$this->state = $this->model->getState(); $this->state = $this->model->getState();
$this->items = $this->model->getItems(); $this->items = $this->model->getItems();
$this->pagination = $this->model->getPagination(); $this->pagination = $this->model->getPagination();
$this->trackerAlias = TrackerHelper::getTrackerAlias($this->state->get('github_user'), $this->state->get('github_repo'));
} }
$this->addToolbar(); $this->addToolbar();
@ -92,7 +102,7 @@ class PullsHtmlView extends DefaultHtmlView
*/ */
protected function addToolbar() protected function addToolbar()
{ {
\JToolBarHelper::title(\JText::_('COM_PATCHTESTER'), 'patchtester icon-apply'); \JToolbarHelper::title(\JText::_('COM_PATCHTESTER'), 'patchtester icon-apply');
if (!count($this->envErrors)) if (!count($this->envErrors))
{ {
@ -110,7 +120,7 @@ class PullsHtmlView extends DefaultHtmlView
); );
} }
\JToolBarHelper::preferences('com_patchtester'); \JToolbarHelper::preferences('com_patchtester');
} }
/** /**

View File

@ -81,9 +81,11 @@ $filterApplied = $this->escape($this->state->get('filter.applied'));
<th width="8%" class="nowrap center"> <th width="8%" class="nowrap center">
<?php echo \JText::_('COM_PATCHTESTER_GITHUB'); ?> <?php echo \JText::_('COM_PATCHTESTER_GITHUB'); ?>
</th> </th>
<?php if ($this->trackerAlias !== false) : ?>
<th width="8%" class="nowrap center"> <th width="8%" class="nowrap center">
<?php echo \JText::_('COM_PATCHTESTER_JISSUES'); ?> <?php echo \JText::_('COM_PATCHTESTER_JISSUES'); ?>
</th> </th>
<?php endif; ?>
<th width="10%" class="nowrap center"> <th width="10%" class="nowrap center">
<?php echo \JText::_('JSTATUS'); ?> <?php echo \JText::_('JSTATUS'); ?>
</th> </th>

View File

@ -30,11 +30,13 @@ foreach ($this->items as $i => $item) :
<span class="octicon octicon-mark-github"></span> <?php echo \JText::_('COM_PATCHTESTER_GITHUB'); ?> <span class="octicon octicon-mark-github"></span> <?php echo \JText::_('COM_PATCHTESTER_GITHUB'); ?>
</a> </a>
</td> </td>
<?php if ($this->trackerAlias !== false) : ?>
<td class="center"> <td class="center">
<a class="btn btn-small btn-warning" href="https://issues.joomla.org/tracker/joomla-cms/<?php echo $item->pull_id; ?>" target="_blank"> <a class="btn btn-small btn-warning" href="https://issues.joomla.org/tracker/<?php echo $this->trackerAlias; ?>/<?php echo $item->pull_id; ?>" target="_blank">
<i class="icon-joomla"></i> <?php echo \JText::_('COM_PATCHTESTER_JISSUE'); ?> <i class="icon-joomla"></i> <?php echo \JText::_('COM_PATCHTESTER_JISSUE'); ?>
</a> </a>
</td> </td>
<?php endif; ?>
<td class="center"> <td class="center">
<?php if ($item->applied) : ?> <?php if ($item->applied) : ?>
<span class="label label-success"> <span class="label label-success">

View File

@ -70,9 +70,11 @@ echo \JHtml::_(
<th width="8%" class="nowrap center"> <th width="8%" class="nowrap center">
<?php echo \JText::_('COM_PATCHTESTER_GITHUB'); ?> <?php echo \JText::_('COM_PATCHTESTER_GITHUB'); ?>
</th> </th>
<?php if ($this->trackerAlias !== false) : ?>
<th width="8%" class="nowrap center"> <th width="8%" class="nowrap center">
<?php echo \JText::_('COM_PATCHTESTER_JISSUES'); ?> <?php echo \JText::_('COM_PATCHTESTER_JISSUES'); ?>
</th> </th>
<?php endif; ?>
<th width="10%" class="nowrap center"> <th width="10%" class="nowrap center">
<?php echo \JHtml::_('grid.sort', 'JSTATUS', 'applied', $listDirn, $listOrder); ?> <?php echo \JHtml::_('grid.sort', 'JSTATUS', 'applied', $listDirn, $listOrder); ?>
</th> </th>

View File

@ -29,11 +29,13 @@ foreach ($this->items as $i => $item) :
<span class="octicon octicon-mark-github"></span> <?php echo \JText::_('COM_PATCHTESTER_GITHUB'); ?> <span class="octicon octicon-mark-github"></span> <?php echo \JText::_('COM_PATCHTESTER_GITHUB'); ?>
</a> </a>
</td> </td>
<?php if ($this->trackerAlias !== false) : ?>
<td> <td>
<a class="btn btn-small btn-warning" href="https://issues.joomla.org/tracker/joomla-cms/<?php echo $item->pull_id; ?>" target="_blank"> <a class="btn btn-small btn-warning" href="https://issues.joomla.org/tracker/<?php echo $this->trackerAlias; ?>/<?php echo $item->pull_id; ?>" target="_blank">
<i class="icon-joomla"></i> <?php echo \JText::_('COM_PATCHTESTER_JISSUE'); ?> <i class="icon-joomla"></i> <?php echo \JText::_('COM_PATCHTESTER_JISSUE'); ?>
</a> </a>
</td> </td>
<?php endif; ?>
<td class="center"> <td class="center">
<?php if ($item->applied) : ?> <?php if ($item->applied) : ?>
<span class="label label-success"> <span class="label label-success">