* "show inline task dates" improved

This commit is contained in:
Max Pozdeev 2010-07-17 16:37:15 +04:00
parent 34e0d9c669
commit 20d7965e13
5 changed files with 39 additions and 16 deletions

View file

@ -510,13 +510,22 @@ function prepareTaskRow($r, $tz)
{
global $lang;
$dueA = prepare_duedate($r['duedate'], $tz);
$formatCreatedInline = $formatCompletedInline = 'M d';
if(date('Y') != date('Y',$r['d_created'])) $formatCreatedInline = 'M Y';
if($r['d_completed'] && date('Y') != date('Y',$r['d_completed'])) $formatCompletedInline = 'M Y';
$dCreated = timestampToDatetime($r['d_created'], $tz);
$dCompleted = $r['d_completed'] ? timestampToDatetime($r['d_completed'], $tz) : '';
return array(
'id' => $r['id'],
'title' => escapeTags($r['title']),
'date' => htmlarray($dCreated),
'dateInline' => htmlarray(sprintf($lang->get('taskdate_inline'), $dCreated)),
'dateCompleted' => $r['d_completed'] ? htmlarray(timestampToDatetime($r['d_completed'], $tz)) : '',
'dateInline' => htmlarray(formatTime($formatCreatedInline, $r['d_created'], $tz)),
'dateInlineTitle' => htmlarray(sprintf($lang->get('taskdate_inline_created'), $dCreated)),
'dateCompleted' => htmlarray($dCompleted),
'dateCompletedInline' => $r['d_completed'] ? htmlarray(formatTime($formatCompletedInline, $r['d_completed'], $tz)) : '',
'dateCompletedInlineTitle' => htmlarray(sprintf($lang->get('taskdate_inline_completed'), $dCompleted)),
'compl' => (int)$r['compl'],
'prio' => $r['prio'],
'note' => nl2br(escapeTags($r['note'])),
@ -526,8 +535,9 @@ function prepareTaskRow($r, $tz)
'tags_ids' => htmlarray($r['tags_ids']),
'duedate' => $dueA['formatted'],
'dueClass' => $dueA['class'],
'dueStr' => htmlarray($dueA['str']),
'dueStr' => htmlarray($r['compl'] && $dueA['timestamp'] ? formatTime($formatCompletedInline, $dueA['timestamp'], $tz) : $dueA['str']),
'dueInt' => date2int($r['duedate']),
'dueTitle' => htmlarray(sprintf($lang->get('taskdate_inline_duedate'), $dueA['formatted'])),
);
}
@ -704,12 +714,13 @@ function prepare_duedate($duedate, $tz)
{
global $lang;
$a = array( 'class'=>'', 'str'=>'', 'formatted'=>'' );
$a = array( 'class'=>'', 'str'=>'', 'formatted'=>'', 'timestamp'=>0 );
if($duedate == '') {
return $a;
}
$ad = explode('-', $duedate);
$at = explode('-', gmdate('Y-m-d', time() + $tz*60));
$a['timestamp'] = gmmktime(0,0,0,$ad[1],$ad[2],$ad[0]) + $tz*60;
$diff = mktime(0,0,0,$ad[1],$ad[2],$ad[0]) - mktime(0,0,0,$at[1],$at[2],$at[0]);
if($diff < -604800 && $ad[0] == $at[0]) { $a['class'] = 'past'; $a['str'] = formatDate3(Config::get('dateformatshort'), (int)$ad[0], (int)$ad[1], (int)$ad[2], $lang); }

View file

@ -36,7 +36,9 @@ class DefaultLang
'advanced_add' => "Advanced",
'searching' => "Searching for",
'tasks' => "Tasks",
'taskdate_inline' => "added at %s",
'taskdate_inline_created' => "Created: %s",
'taskdate_inline_completed' => "Completed: %s",
'taskdate_inline_duedate' => "Due: %s",
'taskdate_created' => "Date of creation",
'taskdate_completed' => "Date of completion",
'edit_task' => "Edit Task",

View file

@ -38,7 +38,9 @@ class Lang extends DefaultLang
'advanced_add' => "Advanced",
'searching' => "Searching for",
'tasks' => "Tasks",
'taskdate_inline' => "added at %s",
'taskdate_inline_created' => "Created: %s",
'taskdate_inline_completed' => "Completed: %s",
'taskdate_inline_duedate' => "Due: %s",
'taskdate_created' => "Date of creation",
'taskdate_completed' => "Date of completion",
'edit_task' => "Edit Task",

View file

@ -590,9 +590,11 @@ function prepareTaskStr(item, noteExp)
'<div class="task-actions"><a href="#" class="taskactionbtn"></a></div>'+"\n"+
'<div class="task-left"><div class="task-toggle"></div>'+
'<input type="checkbox" '+(flag.readOnly?'disabled="disabled"':'')+(item.compl?'checked="checked"':'')+'/></div>'+"\n"+
'<div class="task-middle">'+prepareDuedate(item.duedate, item.dueClass, item.dueStr)+"\n"+
'<div class="task-through">'+preparePrio(prio,id)+'<span class="task-title">'+prepareHtml(item.title)+'</span> '+"\n"+
prepareTagsStr(item)+'<span class="task-date">'+item.dateInline+'</span></div>'+
'<div class="task-middle"><div class="task-middle-right">'+prepareDuedate(item)+
'<span class="task-date-completed" title="'+item.dateCompletedInlineTitle+'">'+item.dateCompletedInline+'</span></div>'+"\n"+
'<div class="task-through"><span class="task-date" title="'+item.dateInlineTitle+'">'+item.dateInline+'</span>'+preparePrio(prio,id)+
'<span class="task-title">'+prepareHtml(item.title)+'</span> '+"\n"+
prepareTagsStr(item)+'</div>'+
'<div class="task-note-block">'+
'<div id="tasknote'+id+'" class="task-note"><span>'+prepareHtml(item.note)+'</span></div>'+
'<div id="tasknotearea'+id+'" class="task-note-area"><textarea id="notetext'+id+'"></textarea>'+
@ -642,10 +644,10 @@ function prepareTagsClass(ids)
return ' '+a.join(' ');
};
function prepareDuedate(duedate, c, s)
function prepareDuedate(item)
{
if(!duedate) return '';
return '<span class="duedate" title="'+duedate+'">'+s+'</span>';
if(!item.duedate) return '';
return '<span class="duedate" title="'+item.dueTitle+'"><span class="duedate-arrow">→</span> '+item.dueStr+'</span>';
};

View file

@ -142,12 +142,15 @@ a { color:#0000ff; cursor:pointer; text-decoration:underline; }
li.task-has-note .task-toggle { visibility:visible; }
li.task-expanded .task-toggle { background-position:-48px 0; }
.task-middle { margin-left:40px; margin-right:25px; }
.task-middle-right { float:right; }
#tasklist { list-style-type: none; margin: 0; padding: 0;}
#tasklist li { padding:6px 2px 6px 6px; border-bottom:1px solid #DEDEDE; min-height:18px; margin-bottom:1px; background-color:#fff; }
#tasklist li:hover { background-color:#f6f6f6; }
.task-actions { float:right; width:25px; text-align:right; }
.task-date { color:#999999; font-size:8pt; margin-left:4px; display:none; }
.show-inline-date .task-date { display:inline; }
.task-date { display:inline-block; min-width:55px; color:#999999; margin-right:10px; display:none; }
.task-date-completed { color:#999999; display:none; margin-left:5px; }
.show-inline-date .task-date { display:inline-block; }
.show-inline-date .task-completed .task-date-completed { display:inline-block; text-decoration:line-through; color:#777777; }
.task-through { overflow:hidden; }
.task-title a { color:#000000; }
.task-title a:hover { color:#af0000; }
@ -155,11 +158,13 @@ li.task-expanded .task-toggle { background-position:-48px 0; }
.task-tags { padding:0px 2px; }
.task-tags .tag { font-size:8pt; font-weight:bold; color:#333333; text-decoration:underline; }
.task-tags .tag:hover { }
.duedate { color:#333333; padding:0px; padding-left:1px; margin-left:5px; float:right; }
.duedate { color:#333333; padding:0px; padding-left:1px; margin-left:5px; }
li.task-completed .duedate { /*font-size:8pt;*/ display:none; }
#tasklist li.soon .duedate { color:#008000; border-color:#008000; }
#tasklist li.today .duedate { color:#FF0000; border-color:#FF0000; }
#tasklist li.past .duedate { color:#A52A2A; border-color:#A52A2A; }
li.task-completed .task-through { text-decoration:line-through; color:#777777; }
li.task-completed .task-middle-right { text-decoration:line-through; color:#777777; }
li.task-completed .task-title a { color:#777777; }
#tasklist li.task-completed .duedate { color:#777777; border-color:#777777; }
li.task-completed { opacity:0.8; }
@ -174,6 +179,7 @@ li:hover a.taskactionbtn, a.taskactionbtn.mtt-menu-button-active { background-po
#tasklist.filter-past li.task-completed, #tasklist.filter-today li.task-completed, #tasklist.filter-soon li.task-completed { display:none; }
.task-note-block { margin-left:2px; color:#777777; background:url(images/page_white_text.png) left 2px no-repeat; padding-left:19px; padding-top:2px; min-height:16px; margin-top:2px; display:none; }
.show-inline-date .task-note-block { margin-left:65px; }
li.task-expanded .task-note-block { display:block; }
li.task-completed .task-note-block .task-note { text-decoration:line-through; }
.task-note-area { display:none; margin-bottom:5px; }
@ -186,7 +192,7 @@ li.task-completed .task-note-block .task-note { text-decoration:line-through; }
.task-note span a { color:#777777; }
.task-note span a:hover { color:#af0000; }
.task-prio { padding-left:2px; padding-right:2px; margin-left:0px; margin-right:4px; cursor:default; }
.task-prio { padding-left:2px; padding-right:2px; margin-left:0px; margin-right:5px; cursor:default; }
.prio-neg { background-color:#3377ff; color:#ffffff; }
.prio-pos { background-color:#ff3333; color:#ffffff; }
.prio-pos-1 { background-color:#ff7700; color:#ffffff; }