Compare commits
	
		
			3 Commits
		
	
	
		
			feature.se
			...
			feature.is
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					813184f06c | ||
| 
						 | 
					d860f299fd | ||
| 
						 | 
					33882d4fa7 | 
@@ -109,11 +109,13 @@ class IDF_Views_Issue
 | 
			
		||||
                foreach ($owners as $user => $nb) {
 | 
			
		||||
                    if ($user === '') {
 | 
			
		||||
                        $key = __('Not assigned');
 | 
			
		||||
                        $login = null;
 | 
			
		||||
                    } else {
 | 
			
		||||
                        $obj = Pluf::factory('Pluf_User')->getOne(array('filter'=>'id='.$user));
 | 
			
		||||
                        $key = $obj->first_name . ' ' . $obj->last_name;
 | 
			
		||||
                        $login = $obj->login;
 | 
			
		||||
                    }
 | 
			
		||||
                    $ownerStatistics[$key] = array($nb, (int)(100 * $nb / $opened));
 | 
			
		||||
                    $ownerStatistics[$key] = array($nb, (int)(100 * $nb / $opened), $login);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Issue class tag statistics
 | 
			
		||||
@@ -313,42 +315,55 @@ class IDF_Views_Issue
 | 
			
		||||
     *
 | 
			
		||||
     * Only open issues are shown.
 | 
			
		||||
     */
 | 
			
		||||
    public $myIssues_precond = array('IDF_Precondition::accessIssues',
 | 
			
		||||
                                     'Pluf_Precondition::loginRequired');
 | 
			
		||||
    public function myIssues($request, $match)
 | 
			
		||||
    public $userIssues_precond = array('IDF_Precondition::accessIssues');
 | 
			
		||||
    public function userIssues($request, $match)
 | 
			
		||||
    {
 | 
			
		||||
        $prj = $request->project;
 | 
			
		||||
        
 | 
			
		||||
        $sql = new Pluf_SQL('login=%s', array($match[2]));
 | 
			
		||||
        $user = Pluf::factory('Pluf_User')->getOne(array('filter' => $sql->gen()));
 | 
			
		||||
        if ($user === null) {
 | 
			
		||||
            $url = Pluf_HTTP_URL_urlForView('IDF_Views_Issue::index',
 | 
			
		||||
                                            array($prj->shortname));
 | 
			
		||||
            return new Pluf_HTTP_Response_Redirect($url);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        $otags = $prj->getTagIdsByStatus('open');
 | 
			
		||||
        $ctags = $prj->getTagIdsByStatus('closed');
 | 
			
		||||
        if (count($otags) == 0) $otags[] = 0;
 | 
			
		||||
        if (count($ctags) == 0) $ctags[] = 0;
 | 
			
		||||
        switch ($match[2]) {
 | 
			
		||||
        switch ($match[3]) {
 | 
			
		||||
        case 'submit':
 | 
			
		||||
            $title = sprintf(__('My Submitted %s Issues'), (string) $prj);
 | 
			
		||||
            $f_sql = new Pluf_SQL('project=%s AND submitter=%s AND status IN ('.implode(', ', $otags).')', array($prj->id, $request->user->id));
 | 
			
		||||
            $titleFormat = __('%s %s Submitted %s Issues');
 | 
			
		||||
            $f_sql = new Pluf_SQL('project=%s AND submitter=%s AND status IN ('.implode(', ', $otags).')', array($prj->id, $user->id));
 | 
			
		||||
            break;
 | 
			
		||||
        case 'submitclosed':
 | 
			
		||||
            $title = sprintf(__('My Closed Submitted %s Issues'), (string) $prj);
 | 
			
		||||
            $f_sql = new Pluf_SQL('project=%s AND submitter=%s AND status IN ('.implode(', ', $ctags).')', array($prj->id, $request->user->id));
 | 
			
		||||
            $titleFormat = __('%s %s Closed Submitted %s Issues');
 | 
			
		||||
            $f_sql = new Pluf_SQL('project=%s AND submitter=%s AND status IN ('.implode(', ', $ctags).')', array($prj->id, $user->id));
 | 
			
		||||
            break;
 | 
			
		||||
        case 'ownerclosed':
 | 
			
		||||
            $title = sprintf(__('My Closed Working %s Issues'), (string) $prj);
 | 
			
		||||
            $f_sql = new Pluf_SQL('project=%s AND owner=%s AND status IN ('.implode(', ', $ctags).')', array($prj->id, $request->user->id));
 | 
			
		||||
            $titleFormat = __('%s %s Closed Working %s Issues');
 | 
			
		||||
            $f_sql = new Pluf_SQL('project=%s AND owner=%s AND status IN ('.implode(', ', $ctags).')', array($prj->id, $user->id));
 | 
			
		||||
            break;
 | 
			
		||||
        default:
 | 
			
		||||
            $title = sprintf(__('My Working %s Issues'), (string) $prj);
 | 
			
		||||
            $f_sql = new Pluf_SQL('project=%s AND owner=%s AND status IN ('.implode(', ', $otags).')', array($prj->id, $request->user->id));
 | 
			
		||||
            $titleFormat = __('%s %s Working %s Issues');
 | 
			
		||||
            $f_sql = new Pluf_SQL('project=%s AND owner=%s AND status IN ('.implode(', ', $otags).')', array($prj->id, $user->id));
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        $title = sprintf($titleFormat,
 | 
			
		||||
                         $user->first_name,
 | 
			
		||||
                         $user->last_name,
 | 
			
		||||
                         (string) $prj);
 | 
			
		||||
        
 | 
			
		||||
        // Get stats about the issues
 | 
			
		||||
        $sql = new Pluf_SQL('project=%s AND submitter=%s AND status IN ('.implode(', ', $otags).')', array($prj->id, $request->user->id));
 | 
			
		||||
        $sql = new Pluf_SQL('project=%s AND submitter=%s AND status IN ('.implode(', ', $otags).')', array($prj->id, $user->id));
 | 
			
		||||
        $nb_submit = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
 | 
			
		||||
        $sql = new Pluf_SQL('project=%s AND owner=%s AND status IN ('.implode(', ', $otags).')', array($prj->id, $request->user->id));
 | 
			
		||||
        $sql = new Pluf_SQL('project=%s AND owner=%s AND status IN ('.implode(', ', $otags).')', array($prj->id, $user->id));
 | 
			
		||||
        $nb_owner = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
 | 
			
		||||
        // Closed issues
 | 
			
		||||
        $sql = new Pluf_SQL('project=%s AND submitter=%s AND status IN ('.implode(', ', $ctags).')', array($prj->id, $request->user->id));
 | 
			
		||||
        $sql = new Pluf_SQL('project=%s AND submitter=%s AND status IN ('.implode(', ', $ctags).')', array($prj->id, $user->id));
 | 
			
		||||
        $nb_submit_closed = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
 | 
			
		||||
        $sql = new Pluf_SQL('project=%s AND owner=%s AND status IN ('.implode(', ', $ctags).')', array($prj->id, $request->user->id));
 | 
			
		||||
        $sql = new Pluf_SQL('project=%s AND owner=%s AND status IN ('.implode(', ', $ctags).')', array($prj->id, $user->id));
 | 
			
		||||
        $nb_owner_closed = Pluf::factory('IDF_Issue')->getCount(array('filter'=>$sql->gen()));
 | 
			
		||||
 | 
			
		||||
        // Paginator to paginate the issues
 | 
			
		||||
@@ -359,7 +374,7 @@ class IDF_Views_Issue
 | 
			
		||||
                                       'current_user' => $request->user);
 | 
			
		||||
        $pag->summary = __('This table shows the open issues.');
 | 
			
		||||
        $pag->forced_where = $f_sql;
 | 
			
		||||
        $pag->action = array('IDF_Views_Issue::myIssues', array($prj->shortname, $match[2]));
 | 
			
		||||
        $pag->action = array('IDF_Views_Issue::userIssues', array($prj->shortname, $match[2]));
 | 
			
		||||
        $pag->sort_order = array('modif_dtime', 'ASC'); // will be reverted
 | 
			
		||||
        $pag->sort_reverse_order = array('modif_dtime');
 | 
			
		||||
        $pag->sort_link_title = true;
 | 
			
		||||
@@ -374,9 +389,10 @@ class IDF_Views_Issue
 | 
			
		||||
        $pag->items_per_page = 10;
 | 
			
		||||
        $pag->no_results_text = __('No issues were found.');
 | 
			
		||||
        $pag->setFromRequest($request);
 | 
			
		||||
        return Pluf_Shortcuts_RenderToResponse('idf/issues/my-issues.html',
 | 
			
		||||
        return Pluf_Shortcuts_RenderToResponse('idf/issues/userIssues.html',
 | 
			
		||||
                                               array('project' => $prj,
 | 
			
		||||
                                                     'page_title' => $title,
 | 
			
		||||
                                                     'login' => $user->login,
 | 
			
		||||
                                                     'nb_submit' => $nb_submit,
 | 
			
		||||
                                                     'nb_owner' => $nb_owner,
 | 
			
		||||
                                                     'nb_submit_closed' => $nb_submit_closed,
 | 
			
		||||
 
 | 
			
		||||
@@ -153,10 +153,10 @@ $ctl[] = array('regex' => '#^/p/([\-\w]+)/issues/create/$#',
 | 
			
		||||
               'model' => 'IDF_Views_Issue',
 | 
			
		||||
               'method' => 'create');
 | 
			
		||||
 | 
			
		||||
$ctl[] = array('regex' => '#^/p/([\-\w]+)/issues/my/(\w+)/$#',
 | 
			
		||||
$ctl[] = array('regex' => '#^/p/([\-\w]+)/issues/(.*)/(\w+)/$#',
 | 
			
		||||
               'base' => $base,
 | 
			
		||||
               'model' => 'IDF_Views_Issue',
 | 
			
		||||
               'method' => 'myIssues');
 | 
			
		||||
               'method' => 'userIssues');
 | 
			
		||||
 | 
			
		||||
$ctl[] = array('regex' => '#^/p/([\-\w]+)/issues/attachment/(\d+)/(.*)$#',
 | 
			
		||||
               'base' => $base,
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
<div id="sub-tabs">
 | 
			
		||||
<a {if $inSummaryIssues}class="active" {/if}href="{url 'IDF_Views_Issue::summary', array($project.shortname)}">{trans 'Summary'}</a>
 | 
			
		||||
| <a {if $inOpenIssues}class="active" {/if}href="{url 'IDF_Views_Issue::index', array($project.shortname)}">{trans 'Open Issues'}</a>
 | 
			
		||||
{if !$user.isAnonymous()} | <a {if $inCreate}class="active" {/if}href="{url 'IDF_Views_Issue::create', array($project.shortname)}">{trans 'New Issue'}</a> | <a {if $inMyIssues}class="active" {/if}href="{url 'IDF_Views_Issue::myIssues', array($project.shortname, 'submit')}">{trans 'My Issues'}</a>
 | 
			
		||||
{if !$user.isAnonymous()} | <a {if $inCreate}class="active" {/if}href="{url 'IDF_Views_Issue::create', array($project.shortname)}">{trans 'New Issue'}</a> | <a {if $inMyIssues}class="active" {/if}href="{url 'IDF_Views_Issue::userIssues', array($project.shortname, $user.login, 'submit')}">{trans 'My Issues'}</a>
 | 
			
		||||
| <a {if $inWatchList}class="active" {/if}href="{url 'IDF_Views_Issue::watchList', array($project.shortname, 'open')}">{trans 'My watch list'}</a>{/if} |
 | 
			
		||||
<form class="star" action="{url 'IDF_Views_Issue::search', array($project.shortname)}" method="get">
 | 
			
		||||
<input accesskey="4" type="text" value="{$q}" name="q" size="20" />
 | 
			
		||||
 
 | 
			
		||||
@@ -71,7 +71,12 @@
 | 
			
		||||
    <tbody>
 | 
			
		||||
    {foreach $ownerStatistics as $key => $value}
 | 
			
		||||
        <tr>
 | 
			
		||||
        <td class="name">{$key}</td>
 | 
			
		||||
        <td class="name">
 | 
			
		||||
        {if !empty($value[2])}
 | 
			
		||||
        {aurl 'url', 'IDF_Views_Issue::userIssues', array($project.shortname, $value[2], 'owner')}
 | 
			
		||||
        <a href="{$url}">{$key}</a>
 | 
			
		||||
        {else}{$key}{/if}
 | 
			
		||||
        </td>
 | 
			
		||||
        <td class="count">{$value[0]}</td>
 | 
			
		||||
        <td class="graph">
 | 
			
		||||
            <table class='graph'>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{extends "idf/issues/base.html"}
 | 
			
		||||
{block docclass}yui-t2{assign $inMyIssues = true}{/block}
 | 
			
		||||
{block docclass}yui-t2{if $user.login == $login}{assign $inMyIssues = true}{/if}{/block}
 | 
			
		||||
{block body}
 | 
			
		||||
{$issues.render}
 | 
			
		||||
{if !$user.isAnonymous()}
 | 
			
		||||
@@ -8,10 +8,10 @@
 | 
			
		||||
 | 
			
		||||
{/block}
 | 
			
		||||
{block context}
 | 
			
		||||
{aurl 'owner_url', 'IDF_Views_Issue::myIssues', array($project.shortname, 'owner')}
 | 
			
		||||
{aurl 'submit_url', 'IDF_Views_Issue::myIssues', array($project.shortname, 'submit')}
 | 
			
		||||
{aurl 'owner_closed_url', 'IDF_Views_Issue::myIssues', array($project.shortname, 'ownerclosed')}
 | 
			
		||||
{aurl 'submit_closed_url', 'IDF_Views_Issue::myIssues', array($project.shortname, 'submitclosed')}
 | 
			
		||||
{aurl 'owner_url', 'IDF_Views_Issue::userIssues', array($project.shortname, $login, 'owner')}
 | 
			
		||||
{aurl 'submit_url', 'IDF_Views_Issue::userIssues', array($project.shortname, $login, 'submit')}
 | 
			
		||||
{aurl 'owner_closed_url', 'IDF_Views_Issue::userIssues', array($project.shortname, $login, 'ownerclosed')}
 | 
			
		||||
{aurl 'submit_closed_url', 'IDF_Views_Issue::userIssues', array($project.shortname, $login, 'submitclosed')}
 | 
			
		||||
<p><strong>{trans 'Submitted issues:'}</strong> <a href="{$submit_url}">{$nb_submit}</a> 
 | 
			
		||||
{if $nb_submit_closed}<br /><span class="helptext">{blocktrans $nb_submit_closed}See the <a href="{$submit_closed_url}">{$nb_submit_closed} closed</a>.{plural}See the <a href="{$submit_closed_url}">{$nb_submit_closed} closed</a>.{/blocktrans}</span>{/if}</p>
 | 
			
		||||
{if $nb_owner > 0}
 | 
			
		||||
@@ -10,8 +10,8 @@
 | 
			
		||||
{if $hasWikiAccess}{hotkey 'Shift+o', 'IDF_Views_Wiki::index', array($project.shortname)}{/if}
 | 
			
		||||
{if $hasSourceAccess}{hotkey 'Shift+s', 'IDF_Views_Source::treeBase', array($project.shortname, $project.getScmRoot())}{/if}
 | 
			
		||||
{if $hasIssuesAccess and !$user.isAnonymous()}
 | 
			
		||||
{hotkey 'Shift+m', 'IDF_Views_Issue::myIssues', array($project.shortname, 'submit')}
 | 
			
		||||
{hotkey 'Shift+w', 'IDF_Views_Issue::myIssues', array($project.shortname, 'owner')}
 | 
			
		||||
{hotkey 'Shift+m', 'IDF_Views_Issue::userIssues', array($project.shortname, $user.login, 'submit')}
 | 
			
		||||
{hotkey 'Shift+w', 'IDF_Views_Issue::userIssues', array($project.shortname, $user.login, 'owner')}
 | 
			
		||||
{/if}{/if} //-->
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
<div id="sub-tabs">
 | 
			
		||||
<a {if $inOpenReviews}class="active" {/if}href="{url 'IDF_Views_Review::index', array($project.shortname)}">{trans 'Open Reviews'}</a> {*
 | 
			
		||||
 | 
			
		||||
{if !$user.isAnonymous()} | <a {if $inCreate}class="active" {/if}href="{url 'IDF_Views_Issue::create', array($project.shortname)}">{trans 'New Issue'}</a> | <a {if $inMyIssues}class="active" {/if}href="{url 'IDF_Views_Issue::myIssues', array($project.shortname, 'submit')}">{trans 'My Issues'}</a>{/if} |
 | 
			
		||||
{if !$user.isAnonymous()} | <a {if $inCreate}class="active" {/if}href="{url 'IDF_Views_Issue::create', array($project.shortname)}">{trans 'New Issue'}</a> | <a {if $inMyIssues}class="active" {/if}href="{url 'IDF_Views_Issue::userIssues', array($project.shortname, $user.login, 'submit')}">{trans 'My Issues'}</a>{/if} |
 | 
			
		||||
<form class="star" action="{url 'IDF_Views_Issue::search', array($project.shortname)}" method="get">
 | 
			
		||||
<input accesskey="4" type="text" value="{$q}" name="q" size="20" />
 | 
			
		||||
<input type="submit" name="s" value="{trans 'Search'}" />
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user