Index: include/class.history.php
===================================================================
--- include/class.history.php	(revision 3323)
+++ include/class.history.php	(working copy)
@@ -238,6 +238,8 @@
                     iss_prj_id,
                     iss_summary,
                     iss_customer_id,
+                    sta_title,
+                    pri_title,
                     sta_is_closed
                  FROM
                     " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_history,
@@ -246,6 +248,10 @@
                         " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "status
                     ON
                         iss_sta_id = sta_id
+                 LEFT JOIN
+                    " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "project_priority
+                 ON
+                    iss_pri_id = pri_id
                  WHERE
                     his_iss_id = iss_id AND
                     his_usr_id = " . Misc::escapeInteger($usr_id) . " AND
@@ -269,6 +275,9 @@
                 if ($_POST['show_per_issue']) {
                     Time_Tracking::fillTimeSpentByIssueAndTime($res, $usr_id, $start, $end);
                 }
+                if (isset($_POST['separate_statchanged'])) {
+                    History::fillOnlyStatusChangeAtTimeByUser($res, $usr_id, $start, $end);
+                }
                 foreach ($res as $index => $row) {
                     if ((!empty($row["iss_customer_id"])) && (Customer::hasCustomerIntegration($row['iss_prj_id']))) {
                         $details = Customer::getDetails($row["iss_prj_id"], $row["iss_customer_id"]);
@@ -276,6 +285,8 @@
                     }
                     if (($separate_closed) && ($row['sta_is_closed'] == 1)) {
                         $data['closed'][] = $row;
+                    } elseif ((isset($_POST['separate_statchanged'])) && $row['only_stat_changed']) {
+                        $data['status_changed'][] = $row;
                     } else {
                         $data['other'][] = $row;
                     }
@@ -397,6 +408,48 @@
         }
         return $res;
     }
+
+		/**
+    * Method to get to know, has user only changed the status of the
+    * issue at a certain time period
+    *
+    * @access  public
+    * @param   array $res User issues
+    * @param   integer $usr_id The ID of the user this report is for.
+    * @param   integer $start The timestamp of the beginning of the report.
+    * @param   integer $end The timestamp of the end of this report.
+    * @return  boolean True if only status changed else false
+    */
+    function fillOnlyStatusChangeAtTimeByUser(&$res, $usr_id, $start, $end) {
+
+        $issue_ids = array();
+        for ($i = 0; $i < count($res); $i++) {
+            $issue_ids[] = Misc::escapeInteger($res[$i]["iss_id"]);
+        }
+        $ids = implode(", ", $issue_ids);
+
+        $sql = "SELECT
+                    " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_history.his_iss_id,
+                    " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_history.his_htt_id
+                 FROM
+                    " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_history
+                 WHERE
+                    " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_history.his_htt_id != " . History::getTypeID('status_changed') . " AND
+                    " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_history.his_htt_id != " . History::getTypeID('issue_updated') . " AND
+                    " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_history.his_iss_id IN (" . $ids . ") AND
+                    " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_history.his_usr_id = " . Misc::escapeInteger($usr_id) . " AND
+                    " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue_history.his_created_date BETWEEN '" . Misc::escapeString($start) . "' AND '" . Misc::escapeString($end) . "'
+                GROUP BY his_iss_id";
+
+        $result = $GLOBALS["db_api"]->dbh->getAssoc($sql);
+        if (PEAR::isError($result)) {
+            Error_Handler::logError(array($res->getMessage(), $res->getDebugInfo()), __FILE__, __LINE__);
+        } else {
+            foreach($res as $key => $item) {
+                @$res[$key]['only_stat_changed'] = (array_key_exists($item['iss_id'], $result) ? false : true);
+            }
+        }
+    }
 }
 
 // benchmarking the included file (aka setup time)
Index: include/class.issue.php
===================================================================
--- include/class.issue.php	(revision 3323)
+++ include/class.issue.php	(working copy)
@@ -1547,6 +1547,28 @@
             }
 
             Workflow::handleIssueUpdated($prj_id, $issue_id, $usr_id, $current, $_POST);
+
+            // Move issue to another project
+            if (isset($_POST['move_issue'])) {
+                $new_prj_id = (int)@$_POST['new_prj'];
+                if ($prj_id != $new_prj_id and array_key_exists($new_prj_id, Project::getAssocList($usr_id))) {
+
+                    $stmt = "UPDATE
+                                " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "issue
+                            SET
+                                iss_prj_id=" . Misc::escapeInteger($new_prj_id) . "
+                            WHERE
+                                iss_id=$issue_id";
+
+                    $res = $GLOBALS["db_api"]->dbh->query($stmt);
+                    if (PEAR::isError($res)) {
+                        Error_Handler::logError(array($res->getMessage(), $res->getDebugInfo()), __FILE__, __LINE__);
+                        return -1;
+                    } else {
+
+                    }
+                }
+            }
             return 1;
         }
     }
Index: templates/reports/weekly.tpl.html
===================================================================
--- templates/reports/weekly.tpl.html	(revision 3323)
+++ templates/reports/weekly.tpl.html	(working copy)
@@ -73,6 +73,10 @@
             <a id="link" class="link" href="javascript:void(null)"
                             onClick="javascript:toggleCheckbox('weekly_report', 'separate_closed', 0)">{t}Separate Closed Issues{/t}</a>&nbsp;
             <br />
+            <input type="checkbox" name="separate_statchanged" value="1" class="default" {if $smarty.post.separate_statchanged == 1}checked{/if}>
+            <a id="link" class="link" href="javascript:void(null)"
+                            onClick="javascript:toggleCheckbox('weekly_report', 'separate_statchanged', 0)">{t}Separate Only Status Change{/t}</a>&nbsp;
+            <br />
             <input type="checkbox" name="ignore_statuses" value="1" class="default" {if $smarty.post.ignore_statuses == 1}checked{/if}>
             <a id="link" class="link" href="javascript:void(null)"
                             onClick="javascript:toggleCheckbox('weekly_report', 'ignore_statuses', 0)">{t}Ignore Issue Status Changes{/t}</a>&nbsp;
@@ -80,6 +84,14 @@
             <input type="checkbox" name="show_per_issue" value="1" class="default" {if $smarty.post.show_per_issue == 1}checked{/if}>
             <a id="link" class="link" href="javascript:void(null)"
                             onClick="javascript:toggleCheckbox('weekly_report', 'show_per_issue', 0)">{t}Show Times spent on issue{/t}</a>&nbsp;
+            <br />
+            <input type="checkbox" name="show_status" value="1" class="default" {if $smarty.post.show_status == 1}checked{/if}>
+            <a id="link" class="link" href="javascript:void(null)"
+                            onClick="javascript:toggleCheckbox('weekly_report', 'show_status', 0)">{t}Show Status{/t}</a>&nbsp;
+            <br />
+            <input type="checkbox" name="show_priority" value="1" class="default" {if $smarty.post.show_priority == 1}checked{/if}>
+            <a id="link" class="link" href="javascript:void(null)"
+                            onClick="javascript:toggleCheckbox('weekly_report', 'show_priority', 0)">{t}Show Priority{/t}</a>&nbsp;
 
           </td>
         </tr>
Index: templates/reports/weekly_data.tpl.html
===================================================================
--- templates/reports/weekly_data.tpl.html	(revision 3323)
+++ templates/reports/weekly_data.tpl.html	(working copy)
@@ -3,25 +3,40 @@
 {$application_title} {t}issues worked on{/t}:
 
 {section name=issue loop=$data.issues.other}
-{$data.issues.other[issue].iss_id|str_pad:5:" ":"STR_PAD_LEFT"} {$data.issues.other[issue].iss_summary|htmlspecialchars} {if
-$smarty.post.show_per_issue == 1}({$data.issues.other[issue].time_spent}){/if}
+<a href="{$rel_url}view.php?id={$data.issues.other[issue].iss_id}" target="_parent">{$data.issues.other[issue].iss_id|str_pad:5:" ":"STR_PAD_LEFT"}</a> {$data.issues.other[issue].iss_summary|htmlspecialchars} {if
+$smarty.post.show_per_issue == 1}({$data.issues.other[issue].time_spent}){/if}{if $smarty.post.show_status == 1} ({$data.issues.other[issue].sta_title}){/if}{if $smarty.post.show_priority == 1} ({$data.issues.other[issue].pri_title}){/if}
 
 {sectionelse}
 {t}No issues touched this time period{/t}
+
 {/section}
 
 {if $smarty.post.separate_closed == 1}
 {t}Issues Closed{/t}:
 
 {section name=issue loop=$data.issues.closed}
-{$data.issues.closed[issue].iss_id|str_pad:5:" ":"STR_PAD_LEFT"} {$data.issues.closed[issue].iss_summary|htmlspecialchars} {if
-$smarty.post.show_per_issue == 1}({$data.issues.closed[issue].time_spent}){/if}
+<a href="{$rel_url}view.php?id={$data.issues.closed[issue].iss_id}" target="_parent">{$data.issues.closed[issue].iss_id|str_pad:5:" ":"STR_PAD_LEFT"}</a> {$data.issues.closed[issue].iss_summary|htmlspecialchars} {if
+$smarty.post.show_per_issue == 1}({$data.issues.closed[issue].time_spent}){/if}{if $smarty.post.show_status == 1} ({$data.issues.closed[issue].sta_title}){/if}{if $smarty.post.show_priority == 1} ({$data.issues.closed[issue].pri_title}){/if}
 
 {sectionelse}
 {t}No issues closed this time period{/t}
 {/section}
+
 {/if}
 
+{if $smarty.post.separate_statchanged == 1}
+{t}Issues with only status changed{/t}:
+
+{section name=issue loop=$data.issues.status_changed}
+<a href="{$rel_url}view.php?id={$data.issues.status_changed[issue].iss_id}" target="_parent">{$data.issues.status_changed[issue].iss_id|str_pad:5:" ":"STR_PAD_LEFT"}</a> {$data.issues.status_changed[issue].iss_summary|htmlspecialchars} {if
+$smarty.post.show_per_issue == 1}({$data.issues.status_changed[issue].time_spent}){/if}{if $smarty.post.show_status == 1} ({$data.issues.status_changed[issue].sta_title}){/if}{if $smarty.post.show_priority == 1} ({$data.issues.status_changed[issue].pri_title}){/if}
+
+{sectionelse}
+{t}No issues closed this time period{/t}
+{/section}
+{/if}
+
+
 {t}New Issues Assigned{/t}:  {$data.new_assigned_count}
 
 {section name=status loop=$data.status_counts}
@@ -44,3 +59,4 @@
 
 
 {t}Total Time Spent{/t}:     {$data.total_time}
+
Index: templates/update_form.tpl.html
===================================================================
--- templates/update_form.tpl.html	(revision 3323)
+++ templates/update_form.tpl.html	(working copy)
@@ -142,6 +142,11 @@
         <tr>
           <td colspan="2" class="default" nowrap>
             <b>{t}Update Issue Overview{/t}</b> (ID: <a href="{$rel_url}view.php?id={$issue.iss_id}" class="link">{$issue.iss_id}</a>)
+            &nbsp;<b>Project:</b>
+            <select name="new_prj" class="shortcut" style="font-size: 90%">
+                {html_options options=$active_projects selected=$current_project}
+            </select>
+            <input type="submit" class="shortcut" name="move_issue" style="font-size: 90%" value="Move">
           </td>
           <td colspan="2" align="right" class="default">
             {if $current_role > $roles.customer}
