mirror of
https://github.com/maxpozdeev/mytinytodo.git
synced 2026-03-11 08:55:27 +00:00
+ can hide tab with Ctrl+click
This commit is contained in:
parent
e4fe2074e1
commit
9804ce4f2d
4 changed files with 104 additions and 27 deletions
12
src/ajax.php
12
src/ajax.php
|
|
@ -535,6 +535,17 @@ elseif(isset($_GET['setShowNotesInList']))
|
|||
echo json_encode(array('total'=>1));
|
||||
exit;
|
||||
}
|
||||
elseif(isset($_GET['setHideList']))
|
||||
{
|
||||
check_write_access();
|
||||
$listId = (int)_post('list');
|
||||
$flag = (int)_post('hide');
|
||||
$bitwise = ($flag == 0) ? 'taskview & ~4' : 'taskview | 4';
|
||||
$db->dq("UPDATE {$db->prefix}lists SET taskview=$bitwise WHERE id=$listId");
|
||||
echo json_encode(array('total'=>1));
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
###################################################################################################
|
||||
|
||||
|
|
@ -872,6 +883,7 @@ function prepareList($row)
|
|||
'published' => $row['published'] ? 1 :0,
|
||||
'showCompl' => $taskview & 1 ? 1 : 0,
|
||||
'showNotes' => $taskview & 2 ? 1 : 0,
|
||||
'hidden' => $taskview & 4 ? 1 : 0,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -235,11 +235,12 @@ var mytinytodo = window.mytinytodo = _mtt = {
|
|||
|
||||
// Tabs
|
||||
$('#lists li.mtt-tab').live('click', function(event){
|
||||
tabSelected(this);
|
||||
if(event.metaKey || event.ctrlKey) {
|
||||
// toggle singetab interface
|
||||
_mtt.applySingletab(!_mtt.options.singletab);
|
||||
// hide the tab
|
||||
hideTab(this);
|
||||
return false;
|
||||
}
|
||||
tabSelect(this);
|
||||
return false;
|
||||
});
|
||||
|
||||
|
|
@ -249,7 +250,7 @@ var mytinytodo = window.mytinytodo = _mtt = {
|
|||
hideTab(-1);
|
||||
return false;
|
||||
}
|
||||
tabSelected(-1);
|
||||
tabSelect(-1);
|
||||
return false;
|
||||
});
|
||||
|
||||
|
|
@ -460,13 +461,14 @@ var mytinytodo = window.mytinytodo = _mtt = {
|
|||
this.addAction('listAdded', cmenuOnListAdded);
|
||||
this.addAction('listSelected', cmenuOnListSelected);
|
||||
this.addAction('listOrderChanged', cmenuOnListOrderChanged);
|
||||
this.addAction('listHidden', cmenuOnListHidden);
|
||||
|
||||
// select list menu
|
||||
this.addAction('listsLoaded', slmenuOnListsLoaded);
|
||||
this.addAction('listRenamed', slmenuOnListRenamed);
|
||||
this.addAction('listAdded', slmenuOnListAdded);
|
||||
this.addAction('listSelected', slmenuOnListSelected);
|
||||
this.addAction('listOrderChanged', slmenuOnListsLoaded);
|
||||
this.addAction('listHidden', slmenuOnListHidden);
|
||||
|
||||
return this;
|
||||
},
|
||||
|
|
@ -502,51 +504,57 @@ var mytinytodo = window.mytinytodo = _mtt = {
|
|||
$('#searchbar').hide();
|
||||
}
|
||||
$('#page_tasks').hide();
|
||||
$('#tasklist').html('');
|
||||
|
||||
tabLists.clear();
|
||||
|
||||
this.db.loadLists(null, function(res)
|
||||
{
|
||||
var ti = '';
|
||||
var openListId = 0;
|
||||
if(res && res.total)
|
||||
{
|
||||
// determine if need to open specific tab
|
||||
var openId = res.list[0].id;
|
||||
if(_mtt.options.openList) {
|
||||
for(var i in res.list) {
|
||||
// open required or first non-hidden list
|
||||
for(var i=0; i<res.list.length; i++) {
|
||||
if(_mtt.options.openList) {
|
||||
if(_mtt.options.openList == res.list[i].id) {
|
||||
openId = res.list[i].id;
|
||||
openListId = res.list[i].id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(!res.list[i].hidden) {
|
||||
openListId = res.list[i].id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// or open first if all list are hidden
|
||||
if(!openListId) openListId = res.list[0].id;
|
||||
|
||||
$.each(res.list, function(i,item){
|
||||
tabLists.add(item);
|
||||
ti += '<li id="list_'+item.id+'" class="mtt-tab '+(item.id==openId?'mtt-tabs-selected':'')+'">'+
|
||||
ti += '<li id="list_'+item.id+'" class="mtt-tab'+(item.id==openListId?' mtt-tabs-selected':'')+(item.hidden?' mtt-tabs-hidden':'')+'">'+
|
||||
'<a href="#list/'+item.id+'" title="'+item.name+'"><span>'+item.name+'</span>'+
|
||||
'<div class="list-action"></div></a></li>';
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
if(openListId) {
|
||||
$('#mtt_body').removeClass('no-lists');
|
||||
$('.mtt-need-list').removeClass('mtt-item-disabled');
|
||||
|
||||
curList = tabLists.get(openId);
|
||||
loadTasks();
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
curList = 0;
|
||||
$('#mtt_body').addClass('no-lists');
|
||||
$('.mtt-need-list').addClass('mtt-item-disabled');
|
||||
$('#tasklist').html('');
|
||||
}
|
||||
|
||||
_mtt.options.openList = 0;
|
||||
$('#lists ul').html(ti);
|
||||
$('#lists').show();
|
||||
_mtt.doAction('listsLoaded');
|
||||
if(curList) _mtt.doAction('listSelected', curList);
|
||||
tabSelect(openListId);
|
||||
|
||||
$('#page_tasks').show();
|
||||
|
||||
});
|
||||
|
|
@ -1086,10 +1094,11 @@ function toggleAllNotes(show)
|
|||
};
|
||||
|
||||
|
||||
function tabSelected(elementOrId)
|
||||
function tabSelect(elementOrId)
|
||||
{
|
||||
var id;
|
||||
if(typeof elementOrId == 'number') id = elementOrId;
|
||||
else if(typeof elementOrId == 'string') id = parseInt(elementOrId);
|
||||
else {
|
||||
id = $(elementOrId).attr('id');
|
||||
if(!id) return;
|
||||
|
|
@ -1116,6 +1125,10 @@ function tabSelected(elementOrId)
|
|||
mytinytodo.doAction('listSelected', tabLists.get(id));
|
||||
}
|
||||
curList = tabLists.get(id);
|
||||
if(curList.hidden) {
|
||||
curList.hidden = false;
|
||||
if(curList.id > 0) _mtt.db.request('setHideList', {list:curList.id, hide:0});
|
||||
}
|
||||
flag.tagsChanged = true;
|
||||
cancelTagFilter(0, 1);
|
||||
setTaskview(0);
|
||||
|
|
@ -1728,7 +1741,7 @@ function cmenuOnListsLoaded()
|
|||
var s = '';
|
||||
var all = tabLists.getAll();
|
||||
for(var i in all) {
|
||||
s += '<li id="cmenu_list:'+all[i].id+'">'+all[i].name+'</li>';
|
||||
s += '<li id="cmenu_list:'+all[i].id+'" class="'+(all[i].hidden?'mtt-list-hidden':'')+'">'+all[i].name+'</li>';
|
||||
}
|
||||
$('#cmenulistscontainer ul').html(s);
|
||||
};
|
||||
|
|
@ -1748,7 +1761,7 @@ function cmenuOnListRenamed(list)
|
|||
function cmenuOnListSelected(list)
|
||||
{
|
||||
$('#cmenulistscontainer li').removeClass('mtt-item-disabled');
|
||||
$('#cmenu_list\\:'+list.id).addClass('mtt-item-disabled');
|
||||
$('#cmenu_list\\:'+list.id).addClass('mtt-item-disabled').removeClass('mtt-list-hidden');
|
||||
};
|
||||
|
||||
function cmenuOnListOrderChanged()
|
||||
|
|
@ -1757,6 +1770,11 @@ function cmenuOnListOrderChanged()
|
|||
$('#cmenu_list\\:'+curList.id).addClass('mtt-item-disabled');
|
||||
};
|
||||
|
||||
function cmenuOnListHidden(list)
|
||||
{
|
||||
$('#cmenu_list\\:'+list.id).addClass('mtt-list-hidden');
|
||||
};
|
||||
|
||||
|
||||
function tabmenuOnListSelected(list)
|
||||
{
|
||||
|
|
@ -1869,7 +1887,7 @@ function slmenuOnListsLoaded()
|
|||
var s = '';
|
||||
var all = tabLists.getAll();
|
||||
for(var i in all) {
|
||||
s += '<li id="slmenu_list:'+all[i].id+'" class="'+(all[i].id==curList.id?'mtt-item-checked':'')+' list-id-'+all[i].id+'"><div class="menu-icon"></div><a href="#list/'+all[i].id+'">'+all[i].name+'</a></li>';
|
||||
s += '<li id="slmenu_list:'+all[i].id+'" class="'+(all[i].id==curList.id?'mtt-item-checked':'')+' list-id-'+all[i].id+(all[i].hidden?' mtt-list-hidden':'')+'"><div class="menu-icon"></div><a href="#list/'+all[i].id+'">'+all[i].name+'</a></li>';
|
||||
}
|
||||
$('#slmenucontainer ul>.slmenu-lists-begin').nextAll().remove();
|
||||
$('#slmenucontainer ul>.slmenu-lists-begin').after(s);
|
||||
|
|
@ -1892,10 +1910,15 @@ function slmenuOnListAdded(list)
|
|||
function slmenuOnListSelected(list)
|
||||
{
|
||||
$('#slmenucontainer li').removeClass('mtt-item-checked');
|
||||
$('#slmenucontainer li.list-id-'+list.id).addClass('mtt-item-checked');
|
||||
$('#slmenucontainer li.list-id-'+list.id).addClass('mtt-item-checked').removeClass('mtt-list-hidden');
|
||||
|
||||
};
|
||||
|
||||
function slmenuOnListHidden(list)
|
||||
{
|
||||
$('#slmenucontainer li.list-id-'+list.id).addClass('mtt-list-hidden');
|
||||
};
|
||||
|
||||
function slmenuSelect(el, menu)
|
||||
{
|
||||
if(!el.id) return;
|
||||
|
|
@ -1906,7 +1929,7 @@ function slmenuSelect(el, menu)
|
|||
value = a[1];
|
||||
}
|
||||
if(id == 'slmenu_list') {
|
||||
tabSelected(parseInt(value));
|
||||
tabSelect(parseInt(value));
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
|
@ -1926,10 +1949,44 @@ function feedCurList()
|
|||
|
||||
function hideTab(listId)
|
||||
{
|
||||
if(typeof listId != 'number') {
|
||||
var id = $(listId).attr('id');
|
||||
if(!id) return;
|
||||
listId = parseInt(id.split('_', 2)[1]);
|
||||
}
|
||||
|
||||
if(!tabLists.get(listId)) return false;
|
||||
|
||||
// if we hide current tab
|
||||
var listIdToSelect = 0;
|
||||
if(curList.id == listId) {
|
||||
var all = tabLists.getAll();
|
||||
for(var i in all) {
|
||||
if(all[i].id != curList.id && !all[i].hidden) {
|
||||
listIdToSelect = all[i].id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// do not hide the tab if others are hidden
|
||||
if(!listIdToSelect) return false;
|
||||
}
|
||||
|
||||
if(listId == -1) {
|
||||
$('#list_all').addClass('mtt-tabs-hidden').removeClass('mtt-tabs-selected');
|
||||
var a = tabLists.getAll();
|
||||
if(a[0]) tabSelected(parseInt(a[0].id)); else _mtt.loadLists();
|
||||
}
|
||||
else {
|
||||
$('#list_'+listId).addClass('mtt-tabs-hidden').removeClass('mtt-tabs-selected');
|
||||
}
|
||||
|
||||
tabLists.get(listId).hidden = true;
|
||||
|
||||
if(listId > 0) {
|
||||
_mtt.db.request('setHideList', {list:listId, hide:1});
|
||||
_mtt.doAction('listHidden', tabLists.get(listId));
|
||||
}
|
||||
|
||||
if(listIdToSelect) {
|
||||
tabSelect(listIdToSelect);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -157,6 +157,11 @@ mytinytodoStorageAjax.prototype =
|
|||
{
|
||||
$.post(this.mtt.mttUrl+'ajax.php?setShowNotesInList', { list:params.list, shownotes:params.shownotes }, callback, 'json');
|
||||
},
|
||||
|
||||
setHideList: function(params, callback)
|
||||
{
|
||||
$.post(this.mtt.mttUrl+'ajax.php?setHideList', { list:params.list, hide:params.hide }, callback, 'json');
|
||||
},
|
||||
|
||||
changeListOrder: function(params, callback)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -338,6 +338,9 @@ li.mtt-menu-indicator .submenu-icon {
|
|||
}
|
||||
li.mtt-item-hidden { display:none; }
|
||||
|
||||
#slmenucontainer li.mtt-list-hidden a { font-style:italic; }
|
||||
#cmenulistscontainer li.mtt-list-hidden { font-style:italic; }
|
||||
|
||||
#btnRssFeed .menu-icon { background:url(images/buttons.png) -16px -64px no-repeat; }
|
||||
#btnRssFeed.mtt-item-disabled .menu-icon { background:url(images/buttons.png) 0px -64px no-repeat; }
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue