diff --git a/langs/ru.php b/langs/ru.php index 7b91bde..a86710d 100644 --- a/langs/ru.php +++ b/langs/ru.php @@ -7,7 +7,7 @@ Author: Max Pozdeev Author Url: http://www.mytinytodo.net AppVersion: v1.3.4 - Date: 2010-02-10 + Date: 2010-02-12 */ class Lang extends DefaultLang @@ -24,6 +24,7 @@ class Lang extends DefaultLang 'addList' => "Новый список", 'renameList' => "Переименовать список", 'deleteList' => "Вы действительно хотите удалить этот список со всеми задачами?", + 'clearCompleted' => "Удалить все выполненные задачи из списка?", 'settingsSaved' => "Настройки сохранены. Перезагрузка...", ); @@ -83,6 +84,7 @@ class Lang extends DefaultLang 'list_delete' => "Удалить список", 'list_publish' => "Опубликовать список", 'list_showcompleted' => "Показать завершенные задачи", + 'list_clearcompleted' => "Удалить завершенные задачи", 'alltags' => "Все теги:", 'alltags_show' => "Показать все", 'alltags_hide' => "Скрыть все", diff --git a/src/ajax.js b/src/ajax.js index c4c8a26..a2f0a12 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -995,7 +995,6 @@ function deleteCurList() if(!parseInt(json.total)) return; loadLists(); }, 'json'); - } function addsearchToggle(toSearch) @@ -1371,6 +1370,7 @@ function listMenuClick(el, menu) case 'btnDeleteList': deleteCurList(); break; case 'btnPublish': publishCurList(); break; case 'btnShowCompleted': showCompletedToggle(); break; + case 'btnClearCompleted': clearCompleted(); break; case 'sortByHand': setSort(0); break; case 'sortByPrio': setSort(1); break; case 'sortByDueDate': setSort(2); break; @@ -1395,3 +1395,15 @@ mytinytodo.parseAnchor = function() this.options.openList = a[1]; } } + +function clearCompleted() +{ + if(!curList) return false; + var r = confirm(lang.clearCompleted); + if(!r) return; + $.post(mytinytodo.mttUrl+'ajax.php?clearCompletedInList', { list:curList.id }, function(json){ + if(!parseInt(json.total)) return; + flag.tagsChanged = true; + if(curList.showCompl) loadTasks(); + }, 'json'); +} diff --git a/src/ajax.php b/src/ajax.php index 1479c28..403fd8f 100644 --- a/src/ajax.php +++ b/src/ajax.php @@ -464,6 +464,33 @@ elseif(isset($_GET['parseTaskStr'])) echo json_encode($t); exit; } +elseif(isset($_GET['clearCompletedInList'])) +{ + check_write_access(); + stop_gpc($_POST); + $t = array(); + $t['total'] = 0; + $listId = (int)_post('list'); + $setCase = ''; + $aId = array(); + $q = $db->dq("SELECT tag_id,COUNT(task_id) FROM {$db->prefix}tag2task INNER JOIN {$db->prefix}todolist ON task_id=id WHERE list_id=$listId AND compl=1 GROUP BY tag_id"); + while($r = $q->fetch_row()) { + $aId[] = $r[0]; + $setCase .= "WHEN id=$r[0] THEN $r[1]\n"; + } + $db->ex("BEGIN"); + if($aId) { + $ids = implode(',', $aId); + $db->ex("UPDATE {$db->prefix}tags SET tags_count=tags_count - CASE\n $setCase END WHERE id IN ($ids)"); + $db->ex("DELETE FROM {$db->prefix}tag2task WHERE task_id IN (SELECT id FROM {$db->prefix}todolist WHERE list_id=$listId AND compl=1)"); + } + $db->ex("DELETE FROM {$db->prefix}todolist WHERE list_id=$listId and compl=1"); + $t['total'] = $db->affected(); + $db->ex("DELETE FROM {$db->prefix}tags WHERE tags_count < 1"); + $db->ex("COMMIT"); + echo json_encode($t); + exit; +} ################################################################################################### diff --git a/src/lang/class.default.php b/src/lang/class.default.php index 4fe8396..dea019e 100644 --- a/src/lang/class.default.php +++ b/src/lang/class.default.php @@ -22,6 +22,7 @@ class DefaultLang 'addListDefault' => "Todo", 'renameList' => "Rename list", 'deleteList' => "This will delete current list with all tasks in it.\\nAre you sure?", + 'clearCompleted' => "This will delete all completed tasks in the list.\\nAre you sure?", 'settingsSaved' => "Settings saved. Reloading...", ); @@ -81,6 +82,7 @@ class DefaultLang 'list_delete' => "Delete list", 'list_publish' => "Publish list", 'list_showcompleted' => "Show completed tasks", + 'list_clearcompleted' => "Clear completed tasks", 'alltags' => "All tags:", 'alltags_show' => "Show all", 'alltags_hide' => "Hide all", diff --git a/src/lang/en.php b/src/lang/en.php index c01520f..dc71120 100644 --- a/src/lang/en.php +++ b/src/lang/en.php @@ -7,7 +7,7 @@ Author: Max Pozdeev Author Url: http://www.mytinytodo.net AppVersion: v1.3.4 - Date: 2010-02-10 + Date: 2010-02-11 */ class Lang extends DefaultLang @@ -24,6 +24,7 @@ class Lang extends DefaultLang 'addList' => "Create new list", 'renameList' => "Rename list", 'deleteList' => "This will delete current list with all tasks in it.\\nAre you sure?", + 'clearCompleted' => "This will delete all completed tasks in the list.\\nAre you sure?", 'settingsSaved' => "Settings saved. Reloading...", ); @@ -83,6 +84,7 @@ class Lang extends DefaultLang 'list_delete' => "Delete list", 'list_publish' => "Publish list", 'list_showcompleted' => "Show completed tasks", + 'list_clearcompleted' => "Clear completed tasks", 'alltags' => "All tags:", 'alltags_show' => "Show all", 'alltags_hide' => "Hide all", diff --git a/src/themes/default/index.php b/src/themes/default/index.php index b706d4c..fb24330 100644 --- a/src/themes/default/index.php +++ b/src/themes/default/index.php @@ -199,6 +199,8 @@ $().ready(function(){