diff --git a/src/content/mytinytodo.js b/src/content/mytinytodo.js index a66f28c..b491844 100644 --- a/src/content/mytinytodo.js +++ b/src/content/mytinytodo.js @@ -1230,13 +1230,16 @@ _mtt.prepareDueDate = prepareDueDate; function prepareInlineDate(item) { var inlineDate = item.dateInlineTitle; + var title = item.dateFull; if (item.compl) { inlineDate = item.dateCompletedInlineTitle; + title = item.dateCompletedFull; } else if ( item.isEdited && (curList.sort == 4 || curList.sort == 104) ) { inlineDate = item.dateEditedInlineTitle; + title = item.dateEditedFull; } - return '#' + item.id + ' ' + inlineDate; + return '#' + item.id + ' ' + inlineDate + ''; } _mtt.prepareInlineDate = prepareInlineDate; @@ -1683,16 +1686,16 @@ function editTask(id) form.duedate.value = item.duedate; form.prio.value = item.prio; $('#taskedit_id').text('#' + item.id); - $('#taskedit_info .date-created-value').text(item.date); + $('#taskedit_info .date-created-value').text(item.date).attr('title', item.dateFull);; if (item.isEdited && !item.compl) { - $('#taskedit_info .date-edited-value').text(item.dateEdited); + $('#taskedit_info .date-edited-value').text(item.dateEdited).attr('title', item.dateEditedFull); $('#taskedit_info .date-edited').show() } else { $('#taskedit_info .date-edited').hide(); } if (item.compl) { - $('#taskedit_info .date-completed-value').text(item.dateCompleted); + $('#taskedit_info .date-completed-value').text(item.dateCompleted).attr('title', item.dateCompletedFull);; $('#taskedit_info .date-completed').show() } else { diff --git a/src/content/theme/style.css b/src/content/theme/style.css index 9543ec6..14797a9 100644 --- a/src/content/theme/style.css +++ b/src/content/theme/style.css @@ -930,6 +930,9 @@ li.mtt-item-hidden { display:none; } color:var(--color-text-reduced); padding-top: 4px; } +.mtt-settings-table .td { + line-height: 1.5em; +} .mtt-settings-table .in350 { min-width:350px; } .mtt-settings-table textarea.in350 { height:400px; } .mtt-settings-table input, diff --git a/src/includes/api/TasksController.php b/src/includes/api/TasksController.php index 145f103..808e02f 100644 --- a/src/includes/api/TasksController.php +++ b/src/includes/api/TasksController.php @@ -455,9 +455,19 @@ class TasksController extends ApiController { $lang = Lang::instance(); $dueA = $this->prepareDuedate($r['duedate']); $dCreated = timestampToDatetime($r['d_created']); - $isEdited = $r['d_edited'] != $r['d_created']; + $isEdited = ($r['d_edited'] != $r['d_created']); $dEdited = $isEdited ? timestampToDatetime($r['d_edited']) : ''; $dCompleted = $r['d_completed'] ? timestampToDatetime($r['d_completed']) : ''; + if (!Config::get('showtime')) { + $dCreatedFull = timestampToDatetime($r['d_created'], true); + $dEditedFull = $isEdited ? timestampToDatetime($r['d_edited'], true) : ''; + $dCompletedFull = $r['d_completed'] ? timestampToDatetime($r['d_completed'], true) : ''; + } + else { + $dCreatedFull = $dCreated; + $dEditedFull = $dEdited; + $dCompletedFull = $dCompleted; + } return array( 'id' => $r['id'], @@ -466,12 +476,15 @@ class TasksController extends ApiController { 'listId' => $r['list_id'], 'date' => htmlarray($dCreated), 'dateInt' => (int)$r['d_created'], + 'dateFull' => htmlarray($dCreatedFull), 'dateInlineTitle' => htmlarray(sprintf($lang->get('taskdate_inline_created'), $dCreated)), 'dateEdited' => htmlarray($dEdited), 'dateEditedInt' => (int)$r['d_edited'], + 'dateEditedFull' => htmlarray($dEditedFull), 'dateEditedInlineTitle' => htmlarray(sprintf($lang->get('taskdate_inline_edited'), $dEdited)), 'isEdited' => (bool)$isEdited, 'dateCompleted' => htmlarray($dCompleted), + 'dateCompletedFull' => htmlarray($dCompletedFull), 'dateCompletedInlineTitle' => htmlarray(sprintf($lang->get('taskdate_inline_completed'), $dCompleted)), 'compl' => (int)$r['compl'], 'prio' => $r['prio'], diff --git a/src/includes/class.config.php b/src/includes/class.config.php index ea47a2e..5e259e3 100644 --- a/src/includes/class.config.php +++ b/src/includes/class.config.php @@ -80,6 +80,7 @@ class Config # Show task date in list 'showdate' => array('default'=>0, 'type'=>'i'), + 'showtime' => array('default'=>0, 'type'=>'i'), # Use Markdown syntax for notes. Set to 'v1' to use old v1.6 syntax. 'markup' => array('default'=>'markdown', 'type'=>'s'), diff --git a/src/includes/class.lang.php b/src/includes/class.lang.php index bc66f86..4125d0c 100644 --- a/src/includes/class.lang.php +++ b/src/includes/class.lang.php @@ -103,7 +103,7 @@ class Lang } /* minimal number of translated strings to use in js front-end */ - function jsStrings() + function jsStrings(bool $escape = true) { $a = array(); $a['daysMin'] = $this->get('days_min'); @@ -137,17 +137,7 @@ class Lang ]); $a['_rtl'] = $this->rtl() ? 1 : 0; - return $a; - } - - function makeJS($pretty = 0) - { - $a = $this->jsStrings(); - $opts = JSON_UNESCAPED_UNICODE; - if ($pretty) { - $opts |= JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES; - } - return json_encode($a, $opts); + return ($escape ? htmlarray($a) : $a); } protected function fillWithValues(array &$a, array $keys) diff --git a/src/includes/lang/en.json b/src/includes/lang/en.json index ca7c416..1f31200 100644 --- a/src/includes/lang/en.json +++ b/src/includes/lang/en.json @@ -177,6 +177,7 @@ "set_submit": "Submit changes", "set_cancel": "Cancel", "set_showdate": "Show task date in list", + "set_showtime": "Show time", "set_appearance": "Appearance", "set_appearance_system": "Same as system", "set_appearance_light": "Light theme", diff --git a/src/includes/lang/ru.json b/src/includes/lang/ru.json index 8bd7924..2442c53 100644 --- a/src/includes/lang/ru.json +++ b/src/includes/lang/ru.json @@ -177,6 +177,7 @@ "set_submit": "Сохранить изменения", "set_cancel": "Отмена", "set_showdate": "Показывать дату создания задачи", + "set_showtime": "Показывать время", "set_appearance": "Тема оформления", "set_appearance_system": "Как в системе", "set_appearance_light": "Светлая", diff --git a/src/index.php b/src/index.php index 6c0151e..f1d5494 100644 --- a/src/index.php +++ b/src/index.php @@ -76,6 +76,7 @@ function js_options() "needAuth" => need_auth() ? true : false, "isLogged" => is_logged() ? true : false, "showdate" => Config::get('showdate') ? true : false, + "showtime" => Config::get('showtime') ? true : false, "duedatepickerformat" => htmlspecialchars(Config::get('dateformat2')), "firstdayofweek" => (int) Config::get('firstdayofweek'), "calendarIcon" => get_mttinfo('theme_url'). 'images/calendar.svg', diff --git a/src/init.php b/src/init.php index 05c3b06..303f6e2 100644 --- a/src/init.php +++ b/src/init.php @@ -220,9 +220,12 @@ function setup_and_start_session() session_start(); } -function timestampToDatetime($timestamp) : string +function timestampToDatetime($timestamp, $forceTime = false) : string { - $format = Config::get('dateformat') .' '. (Config::get('clock') == 12 ? 'g:i A' : 'H:i'); + $format = Config::get('dateformat'); + if ($forceTime || Config::get('showtime')) { + $format .= ' '. (Config::get('clock') == 12 ? 'g:i A' : 'H:i'); + } return formatTime($format, $timestamp); } diff --git a/src/settings.php b/src/settings.php index b0fd853..bc3f10c 100644 --- a/src/settings.php +++ b/src/settings.php @@ -51,6 +51,7 @@ if(isset($_POST['save'])) Config::set('dateformatshort', removeNewLines(_post('dateformatshort')) ); Config::set('title', removeNewLines(trim(_post('title'))) ); Config::set('showdate', (int)_post('showdate')); + Config::set('showtime', (int)_post('showtime')); Config::set('appearance', removeNewLines(trim(_post('appearance'))) ); Config::save(); $t['saved'] = 1; @@ -341,7 +342,8 @@ header('Content-type:text/html; charset=utf-8');
:

- +
+