* finish task #3759.

This commit is contained in:
wangyidong
2018-04-04 15:01:19 +08:00
parent 5105af3d89
commit 6975faef68
4 changed files with 115 additions and 49 deletions
+40 -5
View File
@@ -600,8 +600,8 @@ class actionModel extends model
->beginIF($productID == 'notzero')->andWhere('product')->gt(0)->andWhere('product')->notlike('%,0,%')->fi()
->beginIF($projectID == 'notzero')->andWhere('project')->gt(0)->fi()
->beginIF($projectID == 'all' or $productID == 'all')->andWhere("IF((objectType!= 'doc' && objectType!= 'doclib'), ($condition), '1=1')")->fi()
->beginIF($docs)->andWhere("IF(objectType != 'doc', '1=1', objectID " . helper::dbIN($docs) . ")")->fi()
->beginIF($libs)->andWhere("IF(objectType != 'doclib', '1=1', objectID " . helper::dbIN(array_keys($libs)) . ') ')->fi()
->beginIF($docs and !$this->app->user->admin)->andWhere("IF(objectType != 'doc', '1=1', objectID " . helper::dbIN($docs) . ")")->fi()
->beginIF($libs and !$this->app->user->admin)->andWhere("IF(objectType != 'doclib', '1=1', objectID " . helper::dbIN(array_keys($libs)) . ') ')->fi()
->orderBy($orderBy)->page($pager)->fetchAll();
if(!$actions) return array();
@@ -738,9 +738,10 @@ class actionModel extends model
$actionType = strtolower($action->action);
$objectType = strtolower($action->objectType);
$action->date = date(DT_MONTHTIME2, strtotime($action->date));
$action->actionLabel = isset($this->lang->action->label->$actionType) ? $this->lang->action->label->$actionType : $action->action;
$action->objectLabel = $objectType;
$action->originalDate = $action->date;
$action->date = date(DT_MONTHTIME2, strtotime($action->date));
$action->actionLabel = isset($this->lang->action->label->$actionType) ? $this->lang->action->label->$actionType : $action->action;
$action->objectLabel = $objectType;
if(isset($this->lang->action->label->$objectType))
{
$objectLabel = $this->lang->action->label->$objectType;
@@ -955,4 +956,38 @@ class actionModel extends model
->exec();
$this->file->updateObjectID($this->post->uid, $action->objectID, $action->objectType);
}
/**
* Get action count.
*
* @param string $account
* @access public
* @return int
*/
public function getCount($account = '')
{
if(empty($account)) $account = $this->app->user->account;
return $this->dao->select('count(*) AS count')->from(TABLE_ACTION)->where('actor')->eq($account)->fetch('count');
}
/**
* Build date group by actions
*
* @param array $actions
* @access public
* @return array
*/
public function buildDateGroup($actions)
{
$dateGroup = array();
foreach($actions as $action)
{
$timeStamp = strtotime(isset($action->originalDate) ? $action->originalDate : $action->date);
$date = date(DT_DATE4, $timeStamp);
$action->time = date(DT_TIME2, $timeStamp);
$dateGroup[$date][] = $action;
}
return $dateGroup;
}
}
+5 -1
View File
@@ -533,7 +533,7 @@ class my extends control
* @access public
* @return void
*/
public function dynamic($type = 'today', $orderBy = 'date_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
public function dynamic($type = 'today', $orderBy = 'date_desc', $recTotal = 0, $recPerPage = 50, $pageID = 1)
{
/* Save session. */
$uri = $this->app->getURI(true);
@@ -559,6 +559,8 @@ class my extends control
$this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->dynamic;
$this->view->position[] = $this->lang->my->dynamic;
$actions = $this->loadModel('action')->getDynamic($this->app->user->account, $type, $sort, $pager);
/* Assign. */
$this->view->type = $type;
$this->view->recTotal = $recTotal;
@@ -567,6 +569,8 @@ class my extends control
$this->view->orderBy = $orderBy;
$this->view->pager = $pager;
$this->view->actions = $this->loadModel('action')->getDynamic($this->app->user->account, $type, $sort, $pager);
$this->view->dateGroups = $this->action->buildDateGroup($actions);
$this->view->allCount = $this->action->getCount();
$this->display();
}
+20
View File
@@ -0,0 +1,20 @@
#dynamics {padding: 10px 0;}
.dynamic {position: relative; padding-left: 170px;}
.dynamic-date {position: absolute; left: 0; top: 0; width: 150px; border: 2px solid #eee; border-radius: 4px; padding: 14px 20px; height: 58px;}
.dynamic-date:before {content: ' '; display: block; position: absolute; right: -22px; top: 26px; height: 2px; width: 20px; background-color: #eee;}
.dynamic-date > .date-label,
.dynamic-date > .date-text {font-size: 18px; display: block;}
.dynamic-date > .date-label + .date-text {font-size: 14px; line-height: 14px;}
.dynamic-date > .date-label {margin-top: -8px;}
.dynamic-date > .btn {position: absolute; right: 10px; top: 15px;}
.dynamic .timeline {border: 2px solid #eee; border-radius: 4px; margin-bottom: 20px; padding: 10px 20px 10px 100px; max-height: 800px; transition: max-height .2s; overflow: hidden;}
.dynamic .timeline-tag {left: -75px; font-size: 14px; color: #838A9D;}
.dynamic .timeline-text {color: #3C4353;}
.dynamic .text-muted {color: #838A9D;}
.dynamic .label-id {top: -1px;}
.dynamic.active .timeline,
.dynamic.active .dynamic-date {border-color: #00a9fc;}
.dynamic.active .dynamic-date:before {background-color: #00a9fc;}
.dynamic.collapsed .timeline {max-height: 58px;}
.dynamic.collapsed .timeline > li + li:after {display: none;}
.dynamic.collapsed .dynamic-btn > .icon:before {content: '\f0d7';}
+50 -43
View File
@@ -11,47 +11,54 @@
*/
?>
<?php include '../../common/view/header.html.php';?>
<div id='featurebar'>
<nav class='nav'>
<?php
echo '<li id="today">' . html::a(inlink('dynamic', "type=today"), $lang->action->dynamic->today) . '</li>';
echo '<li id="yesterday">' . html::a(inlink('dynamic', "type=yesterday"), $lang->action->dynamic->yesterday) . '</li>';
echo '<li id="twodaysago">' . html::a(inlink('dynamic', "type=twodaysago"), $lang->action->dynamic->twoDaysAgo) . '</li>';
echo '<li id="thisweek">' . html::a(inlink('dynamic', "type=thisweek"), $lang->action->dynamic->thisWeek) . '</li>';
echo '<li id="lastweek">' . html::a(inlink('dynamic', "type=lastweek"), $lang->action->dynamic->lastWeek) . '</li>';
echo '<li id="thismonth">' . html::a(inlink('dynamic', "type=thismonth"), $lang->action->dynamic->thisMonth) . '</li>';
echo '<li id="lastmonth">' . html::a(inlink('dynamic', "type=lastmonth"), $lang->action->dynamic->lastMonth) . '</li>';
echo '<li id="all">' . html::a(inlink('dynamic', "type=all"), $lang->action->dynamic->all) . '</li>';
?>
</nav>
</div>
<table class='table table-condensed table-hover table-striped tablesorter table-fixed'>
<?php $vars = "type=$type&orderBy=%s&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"; ?>
<thead>
<tr class='colhead'>
<th class='w-150px'><?php common::printOrderLink('date', $orderBy, $vars, $lang->action->date);?></th>
<th class='w-user'> <?php common::printOrderLink('actor', $orderBy, $vars, $lang->action->actor);?></th>
<th class='w-100px'><?php common::printOrderLink('action', $orderBy, $vars, $lang->action->action);?></th>
<th class='w-80px'> <?php common::printOrderLink('objectType', $orderBy, $vars, $lang->action->objectType);?></th>
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
<th><?php echo $lang->action->objectName;?></th>
</tr>
</thead>
<tbody>
<?php foreach($actions as $action):?>
<?php $module = $action->objectType == 'case' ? 'testcase' : $action->objectType;?>
<tr class='text-center'>
<td><?php echo $action->date;?></td>
<td><?php echo $app->user->realname;?></td>
<td><?php echo $action->actionLabel;?></td>
<td><?php echo $lang->action->objectTypes[$action->objectType];?></td>
<td><?php echo $action->objectID;?></td>
<td class='text-left'><?php echo html::a($action->objectLink, $action->objectName);?></td>
</tr>
<?php endforeach;?>
</tbody>
<tfoot><tr><td colspan='6'><?php $pager->show();?></td></tr></tfoot>
</table>
<script>$('#<?php echo $type;?>').addClass('active')</script>
<main id="main">
<div class="container">
<div id="mainMenu" class="clearfix">
<div class="btn-toolbar pull-left">
<?php
echo html::a(inlink('dynamic', "type=all"), "<span class='text'>{$lang->action->dynamic->all}</span> <span class='label label-light label-badge'>{$allCount}</span>", '', "class='btn btn-link " . ($type == 'all' ? 'btn-active-text' : '') . "'");
echo html::a(inlink('dynamic', "type=today"), "<span class='text'>{$lang->action->dynamic->today}</span>", '', "class='btn btn-link " . ($type == 'today' ? 'btn-active-text' : '') . "'");
echo html::a(inlink('dynamic', "type=yesterday"), "<span class='text'>{$lang->action->dynamic->yesterday}</span>", '', "class='btn btn-link " . ($type == 'yesterday' ? 'btn-active-text' : '') . "'");
echo html::a(inlink('dynamic', "type=thisweek"), "<span class='text'>{$lang->action->dynamic->thisWeek}</span>", '', "class='btn btn-link " . ($type == 'thisweek' ? 'btn-active-text' : '') . "'");
echo html::a(inlink('dynamic', "type=lastweek"), "<span class='text'>{$lang->action->dynamic->lastWeek}</span>", '', "class='btn btn-link " . ($type == 'lastweek' ? 'btn-active-text' : '') . "'");
echo html::a(inlink('dynamic', "type=thismonth"), "<span class='text'>{$lang->action->dynamic->thisMonth}</span>", '', "class='btn btn-link " . ($type == 'thismonth' ? 'btn-active-text' : '') . "'");
echo html::a(inlink('dynamic', "type=lastmonth"), "<span class='text'>{$lang->action->dynamic->lastMonth}</span>", '', "class='btn btn-link " . ($type == 'lastmonth' ? 'btn-active-text' : '') . "'");
?>
</div>
</div>
<div id="mainContent" class="main-content">
<div id="dynamics">
<?php foreach($dateGroups as $date => $actions):?>
<div class="dynamic">
<div class="dynamic-date">
<?php if(date(DT_DATE4) == $date):?>
<span class="date-label"><?php echo $lang->action->dynamic->today;?></span>
<?php endif;?>
<span class="date-text"><?php echo $date;?></span>
<button type="button" class="btn btn-info btn-icon btn-sm dynamic-btn"><i class="icon icon-caret-up"></i></button>
</div>
<ul class="timeline timeline-tag-left">
<?php foreach($actions as $i => $action):?>
<li <?php if($i % 3 == 0) echo "class='active'";?>><div><span class="timeline-tag"><?php echo $action->time?></span><span class="timeline-text"><?php echo $app->user->realname . ' ' . $action->actionLabel;?> <span class="text-muted"><?php echo $action->objectLabel;?></span> <span class="label label-id"><?php echo $action->objectID;?></span> <?php echo html::a($action->objectLink, $action->objectName);?></span></div></li>
<?php endforeach;?>
</ul>
</div>
<?php endforeach;?>
</div>
<?php if($pager->recTotal > $pager->recPerPage):?>
<div class='table-footer'><?php $pager->show('right', 'pagerjs');?></div>
<?php endif;?>
</div>
</div>
</main>
<script>
$(function()
{
$('#dynamics .dynamic:first').addClass('active');
$('#dynamics').on('click', '.dynamic-btn', function()
{
$(this).closest('.dynamic').toggleClass('collapsed');
});
})
</script>
<?php include '../../common/view/footer.html.php';?>