From 386240af6aea8f8508c1c0631412b79c07119ef7 Mon Sep 17 00:00:00 2001 From: Max Pozdeev Date: Fri, 29 Oct 2010 10:09:30 +0400 Subject: [PATCH] + added sorting by date created and date modified; All sortings available in reverse order --- src/ajax.php | 15 +++++++-- src/lang/class.default.php | 2 ++ src/lang/en.php | 2 ++ src/mytinytodo.js | 59 +++++++++++++++++++++++++++++++++--- src/themes/default/index.php | 8 +++-- 5 files changed, 75 insertions(+), 11 deletions(-) diff --git a/src/ajax.php b/src/ajax.php index 3eecf17..cb4c742 100644 --- a/src/ajax.php +++ b/src/ajax.php @@ -73,8 +73,14 @@ elseif(isset($_GET['loadTasks'])) if($s != '') $sqlWhere .= " AND (title LIKE ". $db->quoteForLike("%%%s%%",$s). " OR note LIKE ". $db->quoteForLike("%%%s%%",$s). ")"; $sort = (int)_get('sort'); $sqlSort = "ORDER BY compl ASC, "; - if($sort == 1) $sqlSort .= "prio DESC, ddn ASC, duedate ASC, ow ASC"; - elseif($sort == 2) $sqlSort .= "ddn ASC, duedate ASC, prio DESC, ow ASC"; + if($sort == 1) $sqlSort .= "prio DESC, ddn ASC, duedate ASC, ow ASC"; // byPrio + elseif($sort == 101) $sqlSort .= "prio ASC, ddn DESC, duedate DESC, ow DESC"; // byPrio (reverse) + elseif($sort == 2) $sqlSort .= "ddn ASC, duedate ASC, prio DESC, ow ASC"; // byDueDate + elseif($sort == 102) $sqlSort .= "ddn DESC, duedate DESC, prio ASC, ow DESC";// byDueDate (reverse) + elseif($sort == 3) $sqlSort .= "d_created ASC, prio DESC, ow ASC"; // byDateCreated + elseif($sort == 103) $sqlSort .= "d_created DESC, prio ASC, ow DESC"; // byDateCreated (reverse) + elseif($sort == 4) $sqlSort .= "d_edited ASC, prio DESC, ow ASC"; // byDateModified + elseif($sort == 104) $sqlSort .= "d_edited DESC, prio ASC, ow DESC"; // byDateModified (reverse) else $sqlSort .= "ow ASC"; $t = array(); $t['total'] = 0; @@ -426,7 +432,8 @@ elseif(isset($_GET['setSort'])) check_write_access(); $listId = (int)_post('list'); $sort = (int)_post('sort'); - if($sort < 0 || $sort > 2) $sort = 0; + if($sort < 0 || $sort > 104) $sort = 0; + elseif($sort < 101 && $sort > 4) $sort = 0; $db->ex("UPDATE {$db->prefix}lists SET sorting=$sort,d_edited=? WHERE id=$listId", array(time())); echo json_encode(array('total'=>1)); exit; @@ -535,8 +542,10 @@ function prepareTaskRow($r) 'id' => $r['id'], 'title' => escapeTags($r['title']), 'date' => htmlarray($dCreated), + 'dateInt' => (int)$r['d_created'], 'dateInline' => htmlarray(formatTime($formatCreatedInline, $r['d_created'])), 'dateInlineTitle' => htmlarray(sprintf($lang->get('taskdate_inline_created'), $dCreated)), + 'dateEditedInt' => (int)$r['d_edited'], 'dateCompleted' => htmlarray($dCompleted), 'dateCompletedInline' => $r['d_completed'] ? htmlarray(formatTime($formatCompletedInline, $r['d_completed'])) : '', 'dateCompletedInlineTitle' => htmlarray(sprintf($lang->get('taskdate_inline_completed'), $dCompleted)), diff --git a/src/lang/class.default.php b/src/lang/class.default.php index aad3720..e2a7213 100644 --- a/src/lang/class.default.php +++ b/src/lang/class.default.php @@ -59,6 +59,8 @@ class DefaultLang 'sortByHand' => "Sort by hand", 'sortByPriority' => "Sort by priority", 'sortByDueDate' => "Sort by due date", + 'sortByDateCreated' => "Sort by date created", + 'sortByDateModified' => "Sort by date modified", 'due' => "Due", 'daysago' => "%d days ago", 'indays' => "in %d days", diff --git a/src/lang/en.php b/src/lang/en.php index 673a29e..6eae93a 100644 --- a/src/lang/en.php +++ b/src/lang/en.php @@ -61,6 +61,8 @@ class Lang extends DefaultLang 'sortByHand' => "Sort by hand", 'sortByPriority' => "Sort by priority", 'sortByDueDate' => "Sort by due date", + 'sortByDateCreated' => "Sort by date created", + 'sortByDateModified' => "Sort by date modified", 'due' => "Due", 'daysago' => "%d days ago", 'indays' => "in %d days", diff --git a/src/mytinytodo.js b/src/mytinytodo.js index 3a34209..277dbdf 100644 --- a/src/mytinytodo.js +++ b/src/mytinytodo.js @@ -840,22 +840,67 @@ function changeTaskOrder(id) id = parseInt(id); if(taskOrder.length < 2) return; var oldOrder = taskOrder.slice(); + // sortByHand if(curList.sort == 0) taskOrder.sort( function(a,b){ if(taskList[a].compl != taskList[b].compl) return taskList[a].compl-taskList[b].compl; return taskList[a].ow-taskList[b].ow }); + // sortByPrio else if(curList.sort == 1) taskOrder.sort( function(a,b){ if(taskList[a].compl != taskList[b].compl) return taskList[a].compl-taskList[b].compl; if(taskList[a].prio != taskList[b].prio) return taskList[b].prio-taskList[a].prio; if(taskList[a].dueInt != taskList[b].dueInt) return taskList[a].dueInt-taskList[b].dueInt; return taskList[a].ow-taskList[b].ow; }); + // sortByPrio (reverse) + else if(curList.sort == 101) taskOrder.sort( function(a,b){ + if(taskList[a].compl != taskList[b].compl) return taskList[a].compl-taskList[b].compl; + if(taskList[a].prio != taskList[b].prio) return taskList[a].prio-taskList[b].prio; + if(taskList[a].dueInt != taskList[b].dueInt) return taskList[b].dueInt-taskList[a].dueInt; + return taskList[b].ow-taskList[a].ow; + }); + // sortByDueDate else if(curList.sort == 2) taskOrder.sort( function(a,b){ if(taskList[a].compl != taskList[b].compl) return taskList[a].compl-taskList[b].compl; if(taskList[a].dueInt != taskList[b].dueInt) return taskList[a].dueInt-taskList[b].dueInt; if(taskList[a].prio != taskList[b].prio) return taskList[b].prio-taskList[a].prio; return taskList[a].ow-taskList[b].ow; }); + // sortByDueDate (reverse) + else if(curList.sort == 102) taskOrder.sort( function(a,b){ + if(taskList[a].compl != taskList[b].compl) return taskList[a].compl-taskList[b].compl; + if(taskList[a].dueInt != taskList[b].dueInt) return taskList[b].dueInt-taskList[a].dueInt; + if(taskList[a].prio != taskList[b].prio) return taskList[a].prio-taskList[b].prio; + return taskList[b].ow-taskList[a].ow; + }); + // sortByDateCreated + else if(curList.sort == 3) taskOrder.sort( function(a,b){ + if(taskList[a].compl != taskList[b].compl) return taskList[a].compl-taskList[b].compl; + if(taskList[a].dateInt != taskList[b].dateInt) return taskList[a].dateInt-taskList[b].dateInt; + if(taskList[a].prio != taskList[b].prio) return taskList[b].prio-taskList[a].prio; + return taskList[a].ow-taskList[b].ow; + }); + // sortByDateCreated (reverse) + else if(curList.sort == 103) taskOrder.sort( function(a,b){ + if(taskList[a].compl != taskList[b].compl) return taskList[a].compl-taskList[b].compl; + if(taskList[a].dateInt != taskList[b].dateInt) return taskList[b].dateInt-taskList[a].dateInt; + if(taskList[a].prio != taskList[b].prio) return taskList[a].prio-taskList[b].prio; + return taskList[b].ow-taskList[a].ow; + }); + // sortByDateModified + else if(curList.sort == 4) taskOrder.sort( function(a,b){ + if(taskList[a].compl != taskList[b].compl) return taskList[a].compl-taskList[b].compl; + if(taskList[a].dateEditedInt != taskList[b].dateEditedInt) return taskList[a].dateEditedInt-taskList[b].dateEditedInt; + if(taskList[a].prio != taskList[b].prio) return taskList[b].prio-taskList[a].prio; + return taskList[a].ow-taskList[b].ow; + }); + // sortByDateModified (reverse) + else if(curList.sort == 104) taskOrder.sort( function(a,b){ + if(taskList[a].compl != taskList[b].compl) return taskList[a].compl-taskList[b].compl; + if(taskList[a].dateEditedInt != taskList[b].dateEditedInt) return taskList[b].dateEditedInt-taskList[a].dateEditedInt; + if(taskList[a].prio != taskList[b].prio) return taskList[a].prio-taskList[b].prio; + return taskList[b].ow-taskList[a].ow; + }); else return; if(oldOrder.toString() == taskOrder.toString()) return; if(id && taskList[id]) @@ -911,10 +956,12 @@ function setTaskPrio(id, prio) function setSort(v, init) { - $('#mylistscontainer .sort-item').removeClass('mtt-item-checked'); + $('#mylistscontainer .sort-item').removeClass('mtt-item-checked').children('.mtt-sort-direction').text(''); if(v == 0) $('#sortByHand').addClass('mtt-item-checked'); - else if(v == 1) $('#sortByPrio').addClass('mtt-item-checked'); - else if(v == 2) $('#sortByDueDate').addClass('mtt-item-checked'); + else if(v==1 || v==101) $('#sortByPrio').addClass('mtt-item-checked').children('.mtt-sort-direction').text(v==1 ? '↑' : '↓'); + else if(v==2 || v==102) $('#sortByDueDate').addClass('mtt-item-checked').children('.mtt-sort-direction').text(v==2 ? '↑' : '↓'); + else if(v==3 || v==103) $('#sortByDateCreated').addClass('mtt-item-checked').children('.mtt-sort-direction').text(v==3 ? '↓' : '↑'); + else if(v==4 || v==104) $('#sortByDateModified').addClass('mtt-item-checked').children('.mtt-sort-direction').text(v==4 ? '↓' : '↑'); else return; /* //port: @@ -1049,8 +1096,10 @@ function listMenuClick(el, menu) case 'btnShowCompleted': showCompletedToggle(); break; case 'btnClearCompleted': clearCompleted(); break; case 'sortByHand': setSort(0); break; - case 'sortByPrio': setSort(1); break; - case 'sortByDueDate': setSort(2); break; + case 'sortByPrio': setSort(curList.sort==1 ? 101 : 1); break; + case 'sortByDueDate': setSort(curList.sort==2 ? 102 : 2); break; + case 'sortByDateCreated': setSort(curList.sort==3 ? 103 : 3); break; + case 'sortByDateModified': setSort(curList.sort==4 ? 104 : 4); break; } }; diff --git a/src/themes/default/index.php b/src/themes/default/index.php index 5bcb6e6..4d71f55 100644 --- a/src/themes/default/index.php +++ b/src/themes/default/index.php @@ -226,9 +226,11 @@ $().ready(function(){
  • -
  • -
  • -
  • +
  • +
  • +
  • +
  • +