diff --git a/db/update10.0.alpha.sql b/db/update10.0.alpha.sql
new file mode 100644
index 0000000000..0d6b2557d6
--- /dev/null
+++ b/db/update10.0.alpha.sql
@@ -0,0 +1 @@
+ALTER TABLE `zt_userquery` ADD `shortcut` enum('0','1') COLLATE 'utf8_general_ci' NOT NULL DEFAULT '0';
diff --git a/db/zentao.sql b/db/zentao.sql
index 9322e1dfcf..67a35ca9f1 100644
--- a/db/zentao.sql
+++ b/db/zentao.sql
@@ -833,6 +833,7 @@ CREATE TABLE IF NOT EXISTS `zt_userquery` (
`title` varchar(90) NOT NULL,
`form` text NOT NULL,
`sql` text NOT NULL,
+ `shortcut` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `query` (`account`, `module`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
diff --git a/module/block/lang/en.php b/module/block/lang/en.php
index 82ca1d26eb..a68f05e18d 100644
--- a/module/block/lang/en.php
+++ b/module/block/lang/en.php
@@ -33,7 +33,7 @@ $lang->block->assignToMe = 'Assign To Me';
$lang->block->lblFlowchart = 'Workflow';
$lang->block->welcome = 'Welcome';
-$lang->block->leftToday = 'The rest of the work today';
+$lang->block->leftToday = 'Work for Today';
$lang->block->myTask = 'My Task';
$lang->block->myStory = 'My Story';
$lang->block->myBug = 'My Bug';
@@ -45,7 +45,7 @@ $lang->block->params = new stdclass();
$lang->block->params->name = 'Name';
$lang->block->params->value = 'Value';
-$lang->block->createBlock = 'Add';
+$lang->block->createBlock = 'Add a Block';
$lang->block->editBlock = 'Edit';
$lang->block->ordersSaved = 'Order is saved.';
$lang->block->confirmRemoveBlock = 'Do you want to remove Block?';
@@ -75,7 +75,7 @@ $lang->block->default['product']['3']['grid'] = 8;
$lang->block->default['product']['3']['params']['num'] = 15;
$lang->block->default['product']['3']['params']['type'] = 'noclosed';
-$lang->block->default['product']['4']['title'] = 'My Stories';
+$lang->block->default['product']['4']['title'] = 'My Story';
$lang->block->default['product']['4']['block'] = 'story';
$lang->block->default['product']['4']['grid'] = 4;
@@ -83,7 +83,7 @@ $lang->block->default['product']['4']['params']['num'] = 15;
$lang->block->default['product']['4']['params']['orderBy'] = 'id_desc';
$lang->block->default['product']['4']['params']['type'] = 'assignedTo';
-$lang->block->default['project']['1']['title'] = $lang->projectCommon . 'statistic';
+$lang->block->default['project']['1']['title'] = $lang->projectCommon . ' Report';
$lang->block->default['project']['1']['block'] = 'statistic';
$lang->block->default['project']['1']['grid'] = 8;
@@ -91,7 +91,7 @@ $lang->block->default['project']['1']['params']['orderBy'] = 'id_desc';
$lang->block->default['project']['1']['params']['type'] = 'undone';
$lang->block->default['project']['1']['params']['num'] = 5;
-$lang->block->default['project']['2']['title'] = $lang->projectCommon . 'overview';
+$lang->block->default['project']['2']['title'] = $lang->projectCommon . ' Overview';
$lang->block->default['project']['2']['block'] = 'overview';
$lang->block->default['project']['2']['grid'] = 4;
@@ -111,7 +111,7 @@ $lang->block->default['project']['4']['params']['num'] = 15;
$lang->block->default['project']['4']['params']['orderBy'] = 'id_desc';
$lang->block->default['project']['4']['params']['type'] = 'assignedTo';
-$lang->block->default['qa']['1']['title'] = 'Test Statistic';
+$lang->block->default['qa']['1']['title'] = 'Test Report';
$lang->block->default['qa']['1']['block'] = 'statistic';
$lang->block->default['qa']['1']['grid'] = 8;
@@ -122,7 +122,7 @@ $lang->block->default['qa']['1']['params']['type'] = 'noclosed';
//$lang->block->default['qa']['2']['block'] = 'overview';
//$lang->block->default['qa']['2']['grid'] = 4;
-$lang->block->default['qa']['2']['title'] = 'My Bugs';
+$lang->block->default['qa']['2']['title'] = 'My Bug';
$lang->block->default['qa']['2']['block'] = 'bug';
$lang->block->default['qa']['2']['grid'] = 4;
@@ -130,7 +130,7 @@ $lang->block->default['qa']['2']['params']['num'] = 15;
$lang->block->default['qa']['2']['params']['orderBy'] = 'id_desc';
$lang->block->default['qa']['2']['params']['type'] = 'assignedTo';
-$lang->block->default['qa']['3']['title'] = 'My Cases';
+$lang->block->default['qa']['3']['title'] = 'My Case';
$lang->block->default['qa']['3']['block'] = 'case';
$lang->block->default['qa']['3']['grid'] = 4;
@@ -229,16 +229,16 @@ $lang->block->orderBy = 'Order by';
$lang->block->availableBlocks = new stdclass();
$lang->block->availableBlocks->todo = 'My Todo';
-$lang->block->availableBlocks->task = 'My Tasks';
-$lang->block->availableBlocks->bug = 'My Bugs';
-$lang->block->availableBlocks->case = 'My Cases';
-$lang->block->availableBlocks->story = 'My Stories';
+$lang->block->availableBlocks->task = 'My Task';
+$lang->block->availableBlocks->bug = 'My Bug';
+$lang->block->availableBlocks->case = 'My Case';
+$lang->block->availableBlocks->story = 'My Story';
$lang->block->availableBlocks->product = $lang->productCommon . 'List';
$lang->block->availableBlocks->project = $lang->projectCommon . 'List';
-$lang->block->availableBlocks->plan = 'Plans';
-$lang->block->availableBlocks->release = 'Releases';
-$lang->block->availableBlocks->build = 'Builds';
-$lang->block->availableBlocks->testtask = 'Test Builds';
+$lang->block->availableBlocks->plan = 'Plan';
+$lang->block->availableBlocks->release = 'Release';
+$lang->block->availableBlocks->build = 'Build';
+$lang->block->availableBlocks->testtask = 'Test Build';
$lang->block->moduleList['product'] = $lang->productCommon;
$lang->block->moduleList['project'] = $lang->projectCommon;
@@ -249,24 +249,24 @@ $lang->block->modules['product'] = new stdclass();
$lang->block->modules['product']->availableBlocks = new stdclass();
$lang->block->modules['product']->availableBlocks->statistic = $lang->productCommon . ' Report';
$lang->block->modules['product']->availableBlocks->overview = $lang->productCommon . ' Overview';
-$lang->block->modules['product']->availableBlocks->list = $lang->productCommon . 'List';
-$lang->block->modules['product']->availableBlocks->story = 'Stories';
-$lang->block->modules['product']->availableBlocks->plan = 'Plans';
-$lang->block->modules['product']->availableBlocks->release = 'Releases';
+$lang->block->modules['product']->availableBlocks->list = $lang->productCommon . ' List';
+$lang->block->modules['product']->availableBlocks->story = 'Story';
+$lang->block->modules['product']->availableBlocks->plan = 'Plan';
+$lang->block->modules['product']->availableBlocks->release = 'Release';
$lang->block->modules['project'] = new stdclass();
$lang->block->modules['project']->availableBlocks = new stdclass();
-$lang->block->modules['project']->availableBlocks->statistic = $lang->projectCommon . 'statistic';
-$lang->block->modules['project']->availableBlocks->overview = $lang->projectCommon . 'overview';
-$lang->block->modules['project']->availableBlocks->list = $lang->projectCommon . 'List';
-$lang->block->modules['project']->availableBlocks->task = 'Tasks';
-$lang->block->modules['project']->availableBlocks->build = 'Builds';
+$lang->block->modules['project']->availableBlocks->statistic = $lang->projectCommon . ' Report';
+$lang->block->modules['project']->availableBlocks->overview = $lang->projectCommon . ' Overview';
+$lang->block->modules['project']->availableBlocks->list = $lang->projectCommon . ' List';
+$lang->block->modules['project']->availableBlocks->task = 'Task';
+$lang->block->modules['project']->availableBlocks->build = 'Build';
$lang->block->modules['qa'] = new stdclass();
$lang->block->modules['qa']->availableBlocks = new stdclass();
-$lang->block->modules['qa']->availableBlocks->statistic = 'Test Statistic';
+$lang->block->modules['qa']->availableBlocks->statistic = 'Test Report';
//$lang->block->modules['qa']->availableBlocks->overview = 'Testcase Overview';
-$lang->block->modules['qa']->availableBlocks->bug = 'Bugs';
-$lang->block->modules['qa']->availableBlocks->case = 'Cases';
-$lang->block->modules['qa']->availableBlocks->testtask = 'Test Builds';
+$lang->block->modules['qa']->availableBlocks->bug = 'Bug';
+$lang->block->modules['qa']->availableBlocks->case = 'Case';
+$lang->block->modules['qa']->availableBlocks->testtask = 'Test Build';
$lang->block->modules['todo'] = new stdclass();
$lang->block->modules['todo']->availableBlocks = new stdclass();
$lang->block->modules['todo']->availableBlocks->list = 'Todo';
@@ -321,9 +321,9 @@ $lang->block->orderByList->story['status_desc'] = 'Status Descending';
$lang->block->orderByList->story['stage_asc'] = 'Phase Ascending';
$lang->block->orderByList->story['stage_desc'] = 'Phase Descending';
-$lang->block->todoNum = 'Todo Number';
-$lang->block->taskNum = 'Task Number';
-$lang->block->bugNum = 'Bug Number';
+$lang->block->todoNum = 'Todo';
+$lang->block->taskNum = 'Task';
+$lang->block->bugNum = 'Bug';
$lang->block->typeList = new stdclass();
@@ -388,7 +388,7 @@ $lang->block->gridOptions[4] = 'Right';
$lang->block->flowchart = array();
$lang->block->flowchart[] = array('Administlrator', 'Add Departments', 'Add Users', 'Maintain Privileges');
-$lang->block->flowchart[] = array($lang->productCommon . ' Owner', 'Add ' . $lang->productCommon, 'Maintain Modules', 'Maintain Plans', 'Maintain Stories', 'Create Release');
+$lang->block->flowchart[] = array($lang->productCommon . ' Owner', 'Add ' . $lang->productCommon, 'Maintain Modules', 'Maintain Plans', 'Maintain Stories', 'Create Releases');
$lang->block->flowchart[] = array('Scrum Master', 'Add ' . $lang->projectCommon, 'Maintain Teams', 'Link ' . $lang->productCommon . 's', 'Link Stories', 'Decompose Tasks');
$lang->block->flowchart[] = array('Dev Team', 'Claim Tasks/Bugs', 'Update Status', 'Finish Tasks/Bugs');
-$lang->block->flowchart[] = array('QA Team', 'Write Cases', 'Execute Cases', 'Report Bugs', 'Check Bugs', 'Close Bugs');
+$lang->block->flowchart[] = array('QA Team', 'Write Cases', 'Run Cases', 'Report Bugs', 'Verify Bugs', 'Close Bugs');
diff --git a/module/bug/js/browse.js b/module/bug/js/browse.js
index dabca9ea4b..157727287f 100644
--- a/module/bug/js/browse.js
+++ b/module/bug/js/browse.js
@@ -1,6 +1,6 @@
$(function()
{
- if($('#bugList thead th.w-title').width() < 150) $('#bugList thead th.w-title').width(150);
+ if($('#bugList thead th.c-title').width() < 150) $('#bugList thead th.c-title').width(150);
if(flow == 'onlyTest')
{
@@ -37,8 +37,3 @@ $(function()
})
}
});
-
-function setQueryBar(queryID, title)
-{
- $('#bysearchTab').before("
" + title + "");
-}
diff --git a/module/bug/lang/en.php b/module/bug/lang/en.php
index ad2df0a06b..f3a1a6c135 100644
--- a/module/bug/lang/en.php
+++ b/module/bug/lang/en.php
@@ -130,8 +130,8 @@ $lang->bug->resolvedByMeAB = 'Resolved By Me';
$lang->bug->ditto = 'Ditto';
$lang->bug->dittoNotice = 'This bug is not linked to the same product as the last one!';
-$lang->bug->noAssigned = 'Not Assigned';
-$lang->bug->noBug = 'No Bug. You could ';
+$lang->bug->noAssigned = 'Assign';
+$lang->bug->noBug = 'No bugs. You could ';
$lang->bug->noModule = 'You have no modules
Manage now
';
/* 页面标签。*/
@@ -147,11 +147,11 @@ $lang->bug->createBuild = 'New';
$lang->bug->legendBasicInfo = 'Basic Info';
$lang->bug->legendAttatch = 'Attachment';
$lang->bug->legendPrjStoryTask = $lang->projectCommon . '/Story/Task';
-$lang->bug->lblTypeAndSeverity = 'Type/Priority Level';
+$lang->bug->lblTypeAndSeverity = 'Type/Severity';
$lang->bug->lblSystemBrowserAndHardware = 'System/Browser';
$lang->bug->legendSteps = 'Repro Steps';
$lang->bug->legendComment = 'Note';
-$lang->bug->legendLife = 'Life of Bug';
+$lang->bug->legendLife = 'About the Bug';
$lang->bug->legendMisc = 'Misc';
$lang->bug->legendRelated = 'Related Info';
@@ -242,10 +242,10 @@ $lang->bug->typeList['performance'] = 'Performance';
$lang->bug->typeList['standard'] = 'Standard';
$lang->bug->typeList['automation'] = 'Testing Script';
$lang->bug->typeList['others'] = 'Other';
-$lang->bug->typeList['designchange'] = 'Design Changed';
+$lang->bug->typeList['designchange'] = 'Design Change';
$lang->bug->typeList['newfeature'] = 'New Feature';
$lang->bug->typeList['designdefect'] = 'Design Defect';
-$lang->bug->typeList['trackthings'] = 'Track Things';
+$lang->bug->typeList['trackthings'] = 'Track Work';
$lang->bug->statusList[''] = '';
$lang->bug->statusList['active'] = 'Active';
@@ -256,19 +256,19 @@ $lang->bug->confirmedList[1] = 'Yes';
$lang->bug->confirmedList[0] = 'No';
$lang->bug->resolutionList[''] = '';
-$lang->bug->resolutionList['bydesign'] = 'By Design';
-$lang->bug->resolutionList['duplicate'] = 'Duplicated';
-$lang->bug->resolutionList['external'] = 'External';
+$lang->bug->resolutionList['bydesign'] = 'As Design';
+$lang->bug->resolutionList['duplicate'] = 'Duplicated Bug';
+$lang->bug->resolutionList['external'] = 'External Cause';
$lang->bug->resolutionList['fixed'] = 'Resolved';
$lang->bug->resolutionList['notrepro'] = 'Irreproducible';
-$lang->bug->resolutionList['postponed'] = 'Postponed';
-$lang->bug->resolutionList['willnotfix'] = "Not to Resolve";
-$lang->bug->resolutionList['tostory'] = 'Converted to Story';
+$lang->bug->resolutionList['postponed'] = 'Postpone';
+$lang->bug->resolutionList['willnotfix'] = "Ignore";
+$lang->bug->resolutionList['tostory'] = 'Convert to Story';
/* 统计报表。*/
$lang->bug->report = new stdclass();
$lang->bug->report->common = 'Report';
-$lang->bug->report->select = 'Select Report Type ';
+$lang->bug->report->select = 'Select Type ';
$lang->bug->report->create = 'Generate Report';
$lang->bug->report->charts['bugsPerProject'] = $lang->projectCommon . ' Bugs';
diff --git a/module/bug/view/browse.html.php b/module/bug/view/browse.html.php
index e34412a284..14f481c570 100644
--- a/module/bug/view/browse.html.php
+++ b/module/bug/view/browse.html.php
@@ -101,14 +101,13 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
}
foreach($menus as $menuItem)
{
- if(isset($menuItem->hidden)) continue;
+ if(isset($menuItem->hidden) and $menuItem->name != 'QUERY') continue;
if($this->config->global->flow == 'onlyTest' and $menuItem->name == 'needconfirm') continue;
$menuBrowseType = strpos($menuItem->name, 'QUERY') === 0 ? 'bySearch' : $menuItem->name;
- $barParam = strpos($menuItem->name, 'QUERY') === 0 ? (int)substr($menuItem->name, 5) : 0;
- $label = "{$menuItem->text}";
- $label .= $menuBrowseType == $browseType ? "{$pager->recTotal}" : '';
- $active = $menuBrowseType == $browseType ? 'btn-active-text' : '';
+ $label = "{$menuItem->text}";
+ $label .= $menuBrowseType == $browseType ? "{$pager->recTotal}" : '';
+ $active = $menuBrowseType == $browseType ? 'btn-active-text' : '';
if($menuItem->name == 'my')
{
@@ -118,10 +117,35 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
foreach($lang->bug->mySelects as $key => $value)
{
echo '';
- echo html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=$key¶m=$barParam"), $value);
+ echo html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=$key"), $value);
}
echo '';
}
+ elseif($menuItem->name == 'QUERY')
+ {
+ if(isset($lang->custom->queryList))
+ {
+ echo '';
+ $active = '';
+ $current = $menuItem->text;
+ $dropdownHtml = "';
+
+ echo html::a('javascript:;', $current . " ", '', "data-toggle='dropdown' class='btn btn-link $active'");
+ echo $dropdownHtml;
+ echo '
';
+ }
+ }
else
{
if(strpos(',unconfirmed,assigntonull,longlifebugs,postponedbugs,overduebugs,needconfirm,', $menuItem->name) !== false)
@@ -131,12 +155,12 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
echo "';
}
else
{
- echo html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=$menuBrowseType¶m=$barParam"), $label, '', "class='btn btn-link $active'");
+ echo html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=$menuBrowseType"), $label, '', "class='btn btn-link $active'");
}
}
}
@@ -387,16 +411,9 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
diff --git a/module/testcase/view/caseheader.html.php b/module/testcase/view/caseheader.html.php
index 84e78caf0c..4ec606cc2a 100644
--- a/module/testcase/view/caseheader.html.php
+++ b/module/testcase/view/caseheader.html.php
@@ -85,14 +85,34 @@
?>
hidden)) continue;
+ if(isset($menuItem->hidden) and $menuItem->name != 'QUERY') continue;
$menuType = $menuItem->name;
if(!$config->testcase->needReview and empty($config->testcase->forceReview) and $menuType == 'wait') continue;
if($this->config->global->flow == 'onlyTest' and (strpos(',needconfirm,group,zerocase,', ',' . $menuType . ',') !== false)) continue;
- if($hasBrowsePriv and strpos($menuType, 'QUERY') === 0)
+ if($hasBrowsePriv and $menuType == 'QUERY')
{
- $queryID = (int)substr($menuType, 5);
- echo html::a($this->createLink('testcase', 'browse', "productid=$productID&branch=$branch&browseType=bySearch¶m=$queryID"), "{$menuItem->text}", '', "class='btn btn-link' id='{$menuType}Tab'");
+ if(isset($lang->custom->queryList))
+ {
+ echo '';
+ $active = '';
+ $current = $menuItem->text;
+ $dropdownHtml = "';
+
+ echo html::a('javascript:;', $current . " ", '', "data-toggle='dropdown' class='btn btn-link $active'");
+ echo $dropdownHtml;
+ echo '
';
+ }
}
elseif($hasBrowsePriv and ($menuType == 'all' or $menuType == 'needconfirm' or $menuType == 'wait'))
{
diff --git a/module/testcase/view/create.html.php b/module/testcase/view/create.html.php
index 1f3bb103ea..c44ae3fbe2 100644
--- a/module/testcase/view/create.html.php
+++ b/module/testcase/view/create.html.php
@@ -73,7 +73,7 @@
preview;?>
- createLink('story', 'view', "storyID=$storyID", '', true), $lang->preview, '', "class='btn iframe' id='preview'");?>
+ createLink('story', 'view', "storyID=$storyID", '', true), $lang->preview, '', "class='btn' id='preview'");?>
diff --git a/module/testtask/view/cases.html.php b/module/testtask/view/cases.html.php
index ded7d2c4a8..23de2f9bcf 100644
--- a/module/testtask/view/cases.html.php
+++ b/module/testtask/view/cases.html.php
@@ -129,6 +129,10 @@
show('right', 'pagerjs');?>
+
+
+
testcase->noCase;?> " . $lang->testtask->linkCase, '', "class='btn btn-info'");?>
+
diff --git a/module/todo/lang/en.php b/module/todo/lang/en.php
index 676a55002b..6731f879d3 100644
--- a/module/todo/lang/en.php
+++ b/module/todo/lang/en.php
@@ -11,11 +11,11 @@
*/
$lang->todo->common = 'Todo';
$lang->todo->index = "Home";
-$lang->todo->create = "Create Todo";
-$lang->todo->createCycle = "Create Cycle Todo";
+$lang->todo->create = "Add a Todo";
+$lang->todo->createCycle = "Add Recurring Todo";
$lang->todo->assignTo = "Assign";
$lang->todo->activate = "Activate";
-$lang->todo->batchCreate = "Batch Create";
+$lang->todo->batchCreate = "Batch Add";
$lang->todo->edit = "Edit";
$lang->todo->close = "Close";
$lang->todo->batchEdit = "Batch Edit";
@@ -27,8 +27,8 @@ $lang->todo->delete = "Delete";
$lang->todo->import2Today = "Import to Today";
$lang->todo->import = "Import";
$lang->todo->legendBasic = "Basic Info";
-$lang->todo->cycle = "Cycle";
-$lang->todo->cycleConfig = "Cycle Config";
+$lang->todo->cycle = "Recurrence";
+$lang->todo->cycleConfig = "Set Recurrence";
$lang->todo->reasonList['story'] = "Transfer Story";
$lang->todo->reasonList['task'] = "Transfer Task";
@@ -46,7 +46,7 @@ $lang->todo->beginAndEnd = 'Duration';
$lang->todo->idvalue = 'Link ID';
$lang->todo->type = 'Type';
$lang->todo->pri = 'Priority';
-$lang->todo->name = 'Todo Name';
+$lang->todo->name = 'Title';
$lang->todo->status = 'Status';
$lang->todo->desc = 'Description';
$lang->todo->private = 'Private';
@@ -77,7 +77,7 @@ $lang->todo->priList[4] = 'Low';
$lang->todo->priList[0] = '';
$lang->todo->typeList['custom'] = 'Custom';
-$lang->todo->typeList['cycle'] = 'Periodic';
+$lang->todo->typeList['cycle'] = 'Recurrence';
$lang->todo->typeList['bug'] = 'Bug';
$lang->todo->typeList['task'] = $lang->projectCommon . 'Task';
$lang->todo->typeList['story'] = $lang->projectCommon . 'Story';
@@ -86,19 +86,19 @@ global $config;
if($config->global->flow == 'onlyTest' or $config->global->flow == 'onlyStory') unset($lang->todo->typeList['task']);
if($config->global->flow == 'onlyTask' or $config->global->flow == 'onlyStory') unset($lang->todo->typeList['bug']);
-$lang->todo->confirmDelete = "Are you sure to delete this Todo?";
+$lang->todo->confirmDelete = "Do you want to delete this Todo?";
$lang->todo->thisIsPrivate = 'This is a private Todo';
-$lang->todo->lblDisableDate = 'Set later.';
-$lang->todo->lblBeforeDays = "%s early in advance to be done";
-$lang->todo->lblClickCreate = "Clict to add todo";
-$lang->todo->noTodo = 'No this type of Todo.';
-$lang->todo->noAssignedTo = "The AssignedTo user can't be empty.";
+$lang->todo->lblDisableDate = 'Set later';
+$lang->todo->lblBeforeDays = "Create a todo %s days(s) earlier";
+$lang->todo->lblClickCreate = "Click to add a todo";
+$lang->todo->noTodo = 'No todos of this type.';
+$lang->todo->noAssignedTo = "The AssignedTo should not be empty.";
$lang->todo->periods['all'] = 'All';
$lang->todo->periods['thisYear'] = 'ThisYear';
$lang->todo->periods['future'] = 'Pending';
$lang->todo->periods['before'] = 'Unfinished';
-$lang->todo->periods['cycle'] = 'Cycle';
+$lang->todo->periods['cycle'] = 'Recurrence';
$lang->todo->action = new stdclass();
$lang->todo->action->finished = array('main' => '$date, is $extra by $actor.', 'extra' => 'reasonList');
diff --git a/module/upgrade/css/afterexec.css b/module/upgrade/css/afterexec.css
index 8d820e952d..b5cd835689 100644
--- a/module/upgrade/css/afterexec.css
+++ b/module/upgrade/css/afterexec.css
@@ -1,5 +1,59 @@
.adbox{margin-top:20px;}
+.card.ad{margin-bottom:0px;}
+.card.ad > .img-wrapper {
+ background-position: center;
+ background-repeat: no-repeat;
+ height: 115px;
+ width: 100%;
+}
+
+.card {
+ position: relative;
+ display: block;
+ padding: 0;
+ margin-bottom: 20px;
+ overflow: hidden;
+ border: 1px solid #ddd;
+ border-radius: 0;
+ -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.075);
+ box-shadow: 0 1px 2px rgba(0,0,0,.075);
+ -webkit-transition: all .5s cubic-bezier(.175,.885,.32,1);
+ -o-transition: all .5s cubic-bezier(.175,.885,.32,1);
+ transition: all .5s cubic-bezier(.175,.885,.32,1);
+}
+
+.card .card-heading {
+ display: block;
+ padding: 10px;
+ margin: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.card .card-content
+{
+ padding: 0 10px 10px 10px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.card > .card-reveal {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: #f1f1f1;
+ -webkit-transition: all .8s cubic-bezier(.175,.885,.32,1);
+ -o-transition: all .8s cubic-bezier(.175,.885,.32,1);
+ transition: all .8s cubic-bezier(.175,.885,.32,1);
+}
+
+.card>.card-reveal>.card-heading{padding:20px 10px}
+.card:hover>.card-reveal{top:0}
+
.card.ad{margin-bottom:0px;}
.card.ad > .img-wrapper {
background-position: center;