From 20d7965e13436d23acc0dd32b3b193695f223007 Mon Sep 17 00:00:00 2001 From: Max Pozdeev Date: Sat, 17 Jul 2010 16:37:15 +0400 Subject: [PATCH] * "show inline task dates" improved --- src/ajax.php | 19 +++++++++++++++---- src/lang/class.default.php | 4 +++- src/lang/en.php | 4 +++- src/mytinytodo.js | 14 ++++++++------ src/themes/default/style.css | 14 ++++++++++---- 5 files changed, 39 insertions(+), 16 deletions(-) diff --git a/src/ajax.php b/src/ajax.php index 2eb28f7..d1555fa 100644 --- a/src/ajax.php +++ b/src/ajax.php @@ -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); } diff --git a/src/lang/class.default.php b/src/lang/class.default.php index 3debe89..fc22905 100644 --- a/src/lang/class.default.php +++ b/src/lang/class.default.php @@ -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", diff --git a/src/lang/en.php b/src/lang/en.php index 516cae4..bee63c1 100644 --- a/src/lang/en.php +++ b/src/lang/en.php @@ -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", diff --git a/src/mytinytodo.js b/src/mytinytodo.js index 76e70eb..d682af6 100644 --- a/src/mytinytodo.js +++ b/src/mytinytodo.js @@ -590,9 +590,11 @@ function prepareTaskStr(item, noteExp) '
'+"\n"+ '
'+ '
'+"\n"+ - '
'+prepareDuedate(item.duedate, item.dueClass, item.dueStr)+"\n"+ - '
'+preparePrio(prio,id)+''+prepareHtml(item.title)+' '+"\n"+ - prepareTagsStr(item)+''+item.dateInline+'
'+ + '
'+prepareDuedate(item)+ + ''+item.dateCompletedInline+'
'+"\n"+ + '
'+item.dateInline+''+preparePrio(prio,id)+ + ''+prepareHtml(item.title)+' '+"\n"+ + prepareTagsStr(item)+'
'+ '
'+ '
'+prepareHtml(item.note)+'
'+ '
'+ @@ -642,10 +644,10 @@ function prepareTagsClass(ids) return ' '+a.join(' '); }; -function prepareDuedate(duedate, c, s) +function prepareDuedate(item) { - if(!duedate) return ''; - return ''+s+''; + if(!item.duedate) return ''; + return ' '+item.dueStr+''; }; diff --git a/src/themes/default/style.css b/src/themes/default/style.css index 793f5e1..be7c00d 100644 --- a/src/themes/default/style.css +++ b/src/themes/default/style.css @@ -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; }