+ added ability to delete completed tasks (thanks to merzhin)

This commit is contained in:
Max Pozdeev 2010-02-12 15:00:11 +03:00
parent 3fce9df852
commit f61890f061
7 changed files with 51 additions and 4 deletions

View file

@ -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' => "Скрыть все",

View file

@ -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');
}

View file

@ -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;
}
###################################################################################################

View file

@ -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",

View file

@ -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",

View file

@ -199,6 +199,8 @@ $().ready(function(){
<ul>
<li class="mtt-need-list" id="btnRenameList"><?php _e('list_rename');?></li>
<li class="mtt-need-list" id="btnDeleteList"><?php _e('list_delete');?></li>
<li class="mtt-need-list" id="btnClearCompleted"><?php _e('list_clearcompleted');?></li>
<li class="mtt-btnmenu-delimiter"></li>
<li class="mtt-need-list" id="btnPublish"><div class="menu-icon"></div><?php _e('list_publish');?></li>
<li class="mtt-need-list" id="btnShowCompleted"><div class="menu-icon"></div><?php _e('list_showcompleted');?></li>
<li class="mtt-btnmenu-delimiter"></li>

View file

@ -1 +1 @@
1.3.3
1.3.4