mirror of
https://github.com/maxpozdeev/mytinytodo.git
synced 2026-03-11 08:55:27 +00:00
+* v1.3 prototype
This commit is contained in:
parent
d13d93c9ce
commit
f59a53fa4d
7 changed files with 147 additions and 188 deletions
84
src/ajax.js
84
src/ajax.js
|
|
@ -17,10 +17,12 @@ var tz = 0;
|
|||
var img = {
|
||||
'note': ['images/page_white_text_add_bw.png','images/page_white_text_add.png'],
|
||||
'edit': ['images/page_white_edit_bw.png','images/page_white_edit.png'],
|
||||
'del': ['images/page_cross_bw.png','images/page_cross.png']
|
||||
'del': ['images/page_cross_bw.png','images/page_cross.png'],
|
||||
'toggle': ['images/toggle_plus.gif','images/toggle_minus.gif']
|
||||
};
|
||||
var taskCnt = { total:0, past: 0, today:0, soon:0 };
|
||||
var tmp = {};
|
||||
var oBtnMenu = {};
|
||||
|
||||
function loadTasks()
|
||||
{
|
||||
|
|
@ -60,11 +62,12 @@ function prepareTaskStr(item)
|
|||
'<a href="#" onClick="return toggleTaskNote('+id+')"><img src="'+img.note[0]+'" onMouseOver="this.src=img.note[1]" onMouseOut="this.src=img.note[0]" title="'+lang.actionNote+'"></a>'+
|
||||
'<a href="#" onClick="return editTask('+id+')"><img src="'+img.edit[0]+'" onMouseOver="this.src=img.edit[1]" onMouseOut="this.src=img.edit[0]" title="'+lang.actionEdit+'"></a>'+
|
||||
'<a href="#" onClick="return deleteTask('+id+')"><img src="'+img.del[0]+'" onMouseOver="this.src=img.del[1]" onMouseOut="this.src=img.del[0]" title="'+lang.actionDelete+'"></a></div>'+
|
||||
'<div class="task-left"><input type="checkbox" '+(readOnly?'disabled':'')+' onClick="completeTask('+id+',this)" '+(item.compl?'checked':'')+'></div>'+
|
||||
'<div class="task-left"><img src="'+img.toggle[0]+'" class="mtt-toggle '+(item.note==''?'invisible':'')+'" onClick="toggleNote('+id+')">'+
|
||||
'<input type="checkbox" '+(readOnly?'disabled':'')+' onClick="completeTask('+id+',this)" '+(item.compl?'checked':'')+'></div>'+
|
||||
'<div class="task-middle">'+prepareDuedate(item.duedate, item.dueClass, item.dueStr)+
|
||||
'<span class="nobr"><span class="task-through">'+preparePrio(prio,id)+'<span class="task-title">'+prepareHtml(item.title)+'</span>'+
|
||||
prepareTagsStr(item.tags)+'<span class="task-date">'+lang.taskDate(item.date)+'</span></span></span>'+
|
||||
'<div class="task-note-block'+(item.note==''?' hidden':'')+'">'+
|
||||
'<div class="task-note-block hidden">'+
|
||||
'<div id="tasknote'+id+'" class="task-note"><span>'+prepareHtml(item.note)+'</span></div>'+
|
||||
'<div id="tasknotearea'+id+'" class="task-note-area"><textarea id="notetext'+id+'"></textarea>'+
|
||||
'<span class="task-note-actions"><a href="#" onClick="return saveTaskNote('+id+')">'+lang.actionNoteSave+
|
||||
|
|
@ -837,3 +840,78 @@ function editFormResize(startstop, event)
|
|||
}
|
||||
else $('#page_taskedit textarea').height(f.height() - tmp.editformdiff);
|
||||
}
|
||||
|
||||
function mttTabSelected(el, indx)
|
||||
{
|
||||
$(el.parentNode.parentNode).children('.mtt-tabs-selected').removeClass('mtt-tabs-selected');
|
||||
$(el.parentNode).addClass('mtt-tabs-selected');
|
||||
|
||||
}
|
||||
|
||||
function btnMenu(el)
|
||||
{
|
||||
if(!el.id) return;
|
||||
oBtnMenu.container = el.id+'container';
|
||||
oBtnMenu.targets = [el.id, oBtnMenu.container];
|
||||
w = $('#'+oBtnMenu.container);
|
||||
if(w.css('display') == 'none')
|
||||
{
|
||||
oBtnMenu.h = [];
|
||||
$(w).children('.li').each( function(i,o){
|
||||
if(o.onclick) {
|
||||
oBtnMenu.h[i] = o.onclick;
|
||||
$(o).bind("click2", o.onclick);
|
||||
o.onclick = function(event) { $('#'+oBtnMenu.container).hide(); $(o).trigger('click2'); btnMenuClose(); }
|
||||
} else {
|
||||
oBtnMenu.h[i] = null;
|
||||
}
|
||||
} );
|
||||
offset = $(el).offset();
|
||||
w.css({ position: 'absolute', top: offset.top+el.offsetHeight-1, left: offset.left , 'min-width': $(el).width() }).show();
|
||||
$(document).bind("click", btnMenuClose);
|
||||
}
|
||||
else {
|
||||
el.blur();
|
||||
btnMenuClose();
|
||||
}
|
||||
}
|
||||
|
||||
function btnMenuClose(e)
|
||||
{
|
||||
if(e) {
|
||||
if(isParentId(e.target, oBtnMenu.targets)) return;
|
||||
}
|
||||
$(document).unbind("click", btnMenuClose);
|
||||
$('#'+oBtnMenu.container).hide().children('.li').each( function(i,o){
|
||||
if(oBtnMenu.h[i]) {
|
||||
o.onclick = oBtnMenu.h[i];
|
||||
$(o).unbind('click2');
|
||||
}
|
||||
});
|
||||
oBtnMenu = {};
|
||||
}
|
||||
|
||||
function toggleNote(id)
|
||||
{
|
||||
var o = $('#taskrow_'+id+'>div>div.task-note-block');
|
||||
if(o.is('.hidden')) $('#taskrow_'+id+'>div>.mtt-toggle').attr('src', img.toggle[1]);
|
||||
else $('#taskrow_'+id+'>div>.mtt-toggle').attr('src', img.toggle[0]);
|
||||
o.toggleClass('hidden');
|
||||
}
|
||||
|
||||
function toggleAllNotes(showhide)
|
||||
{
|
||||
for(id in taskList)
|
||||
{
|
||||
if(taskList[id].note == '') continue;
|
||||
if(showhide) {
|
||||
$('#taskrow_'+id+'>div>.mtt-toggle').attr('src', img.toggle[1]);
|
||||
$('#taskrow_'+id+'>div>div.task-note-block').removeClass('hidden');
|
||||
}
|
||||
else {
|
||||
$('#taskrow_'+id+'>div>.mtt-toggle').attr('src', img.toggle[0]);
|
||||
$('#taskrow_'+id+'>div>div.task-note-block').addClass('hidden');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,158 +0,0 @@
|
|||
<?php
|
||||
|
||||
class DatabaseResult_Sqlite
|
||||
{
|
||||
private $parent;
|
||||
private $q;
|
||||
var $query;
|
||||
private $rows = NULL;
|
||||
private $affected = NULL;
|
||||
|
||||
function __construct($query, &$h, $resultless = 0)
|
||||
{
|
||||
$this->parent = $h;
|
||||
$this->query = $query;
|
||||
|
||||
if($resultless) $this->q = @$this->parent->dbh->queryExec($query, $error);
|
||||
else $this->q = @$this->parent->dbh->query($query, 0, $error);
|
||||
|
||||
if(!$this->q)
|
||||
{
|
||||
if($error) throw new Exception($error);
|
||||
else throw new Exception(sqlite_error_string($this->parent->dbh->lastError()));
|
||||
}
|
||||
}
|
||||
|
||||
function rows()
|
||||
{
|
||||
if (!is_null($this->rows)) return $this->rows;
|
||||
$this->rows = $this->q->numRows();
|
||||
return $this->rows;
|
||||
}
|
||||
|
||||
function fetch_row()
|
||||
{
|
||||
return $this->q->fetch(SQLITE_NUM);
|
||||
}
|
||||
|
||||
function fetch_assoc()
|
||||
{
|
||||
return $this->q->fetch(SQLITE_ASSOC);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class Database_Sqlite
|
||||
{
|
||||
var $dbh;
|
||||
private $affected = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
function connect($filename, $mode=0666)
|
||||
{
|
||||
try {
|
||||
$this->dbh = new SQLiteDatabase($filename, 0666, $error);
|
||||
}
|
||||
catch(Exception $e) {
|
||||
throw new Exception($error);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function sq($query, $p = NULL)
|
||||
{
|
||||
$q = $this->_dq($query, $p);
|
||||
|
||||
if($q->rows()) $res = $q->fetch_row();
|
||||
else return NULL;
|
||||
|
||||
if(sizeof($res) > 1) return $res;
|
||||
else return $res[0];
|
||||
}
|
||||
|
||||
function sqa($query, $p = NULL)
|
||||
{
|
||||
$q = $this->_dq($query, $p);
|
||||
|
||||
if($q->rows()) $res = $q->fetch_assoc();
|
||||
else return NULL;
|
||||
|
||||
if(sizeof($res) > 1) return $res;
|
||||
else return $res[0];
|
||||
}
|
||||
|
||||
function dq($query, $p = NULL)
|
||||
{
|
||||
return $this->_dq($query, $p);
|
||||
}
|
||||
|
||||
/*
|
||||
for resultless queries like INSERT,UPDATE
|
||||
*/
|
||||
function ex($query, $p = NULL)
|
||||
{
|
||||
return $this->_dq($query, $p, 1);
|
||||
}
|
||||
|
||||
private function _dq($query, $p = NULL, $resultless = 0)
|
||||
{
|
||||
if(!isset($p)) $p = array();
|
||||
elseif(!is_array($p)) $p = array($p);
|
||||
|
||||
$m = explode('?', $query);
|
||||
|
||||
if(sizeof($p)>0)
|
||||
{
|
||||
if(sizeof($m)< sizeof($p)+1) {
|
||||
throw new Exception("params to set MORE than query params");
|
||||
}
|
||||
if(sizeof($m)> sizeof($p)+1) {
|
||||
throw new Exception("params to set LESS than query params");
|
||||
}
|
||||
$query = "";
|
||||
for($i=0; $i<sizeof($m)-1; $i++) {
|
||||
$query .= $m[$i]. $this->quote($p[$i]);
|
||||
}
|
||||
$query .= $m[$i];
|
||||
}
|
||||
return new DatabaseResult_Sqlite($query, $this, $resultless);
|
||||
}
|
||||
|
||||
function affected()
|
||||
{
|
||||
if(is_null($this->affected))
|
||||
{
|
||||
$this->affected = $this->dbh->changes();
|
||||
}
|
||||
return $this->affected;
|
||||
}
|
||||
|
||||
function quote($s)
|
||||
{
|
||||
return '\''. sqlite_escape_string($s). '\'';
|
||||
}
|
||||
|
||||
function quoteForLike($format, $s)
|
||||
{
|
||||
$s = str_replace(array('\\','%','_'), array('\\\\','\%','\_'), $s);
|
||||
return $this->quote(sprintf($format, $s));
|
||||
}
|
||||
|
||||
function last_insert_id()
|
||||
{
|
||||
return $this->dbh->lastInsertRowid();
|
||||
}
|
||||
|
||||
function table_exists($table)
|
||||
{
|
||||
$table = $this->quote($table);
|
||||
$q = @$this->dbh->query("SELECT 1 FROM $table WHERE 1=0");
|
||||
if($q === false) return false;
|
||||
else return true;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -6,9 +6,6 @@ $config = array();
|
|||
# Uncomment this line if you want to use Mysql, in format: array("host","login","password","database");
|
||||
#$config['mysql'] = array("localhost","user","password", "mytinytodo");
|
||||
|
||||
# To use old SQLite2 (instead of SQLite3) uncomment the line below
|
||||
#$config['sqlite'] = 2;
|
||||
|
||||
# Language pack
|
||||
$config['lang'] = "en";
|
||||
|
||||
|
|
|
|||
BIN
src/images/toggle_minus.gif
Normal file
BIN
src/images/toggle_minus.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 83 B |
BIN
src/images/toggle_plus.gif
Normal file
BIN
src/images/toggle_plus.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 86 B |
|
|
@ -56,7 +56,7 @@ function __($s)
|
|||
|
||||
<script type="text/javascript">
|
||||
$().ready(function(){
|
||||
$("#tabs").tabs({ select: tabSelected <?php echo $tabDisabled; ?>});
|
||||
// $("#tabs").tabs({ select: tabSelected <?php echo $tabDisabled; ?>});
|
||||
$("#tasklist").sortable({cancel:'span,input,a,textarea', delay: 150, update:orderChanged, start:sortStart, items:'> :not(.task-completed)'});
|
||||
$("#tasklist").bind("click", tasklistClick);
|
||||
$("#edittags").autocomplete('ajax.php?suggestTags', {scroll: false, multiple: true, selectFirst:false, max:8});
|
||||
|
|
@ -100,6 +100,10 @@ $().ajaxStop( function(r,s) {$("#loading").fadeOut();} );
|
|||
<div id="bar">
|
||||
<div style="float:left"><span id="msg" onClick="toggleMsgDetails()"></span><div id="msgdetails"></div></div>
|
||||
<div id="bar_auth" align="right">
|
||||
|
||||
<a href="#" id="mylists" class="nodecor" onClick="btnMenu(this);return false;"><u>My lists</u> <img src="images/arrdown.gif" border=0></a> |
|
||||
<a href="settings.php">Settings</a> |
|
||||
|
||||
<span id="bar_login"><span id="authstr"> </span> <a href="#" class="nodecor" onClick="showAuth(this);return false;"><u><?php __('a_login');?></u> <img src="images/arrdown.gif" border=0></a></span>
|
||||
<a href="#" id="bar_logout" onClick="logout();return false"><?php __('a_logout');?></a>
|
||||
</div>
|
||||
|
|
@ -109,23 +113,38 @@ $().ajaxStop( function(r,s) {$("#loading").fadeOut();} );
|
|||
|
||||
<div id="page_tasks">
|
||||
|
||||
<div id="tabs">
|
||||
<div id="lists" class="mtt-tabs">
|
||||
<ul class="">
|
||||
<li><a href="#newtask"><?php __('tab_newtask');?></a></li>
|
||||
<li><a href="#searchtask"><?php __('tab_search');?></a></li>
|
||||
</ul><br clear="all">
|
||||
<div class="tab-content" id="newtask">
|
||||
<form onSubmit="return submitNewTask(this)"><input type="text" name="task" value="" maxlength="250" id="task"> <input type="submit" value="<?php __('btn_add');?>"></form>
|
||||
</div>
|
||||
<div class="tab-content" id="searchtask">
|
||||
<form onSubmit="return searchTasks()"><input type="text" name="search" value="" maxlength="250" id="search" onKeyUp="timerSearch()" autocomplete="off"> <input type="submit" value="<?php __('btn_search');?>"></form>
|
||||
<div id="searchbar"><?php __('searching');?> <span id="searchbarkeyword"></span></div>
|
||||
<li class="mtt-tabs-selected"><a href="#list1" onClick="mttTabSelected(this,0)">ToDo</a></li>
|
||||
<li><a href="#list2" onClick="mttTabSelected(this,1)">Todo #2</a></li>
|
||||
</ul>
|
||||
<div class="mtt-htabs">
|
||||
|
||||
<span id="htab_newtask">
|
||||
|
||||
New task
|
||||
<form onSubmit="return submitNewTask(this)"><input type="text" name="task" value="" maxlength="250" id="task"> <input type="submit" value="<?php __('btn_add');?>"></form>
|
||||
|
||||
| <a href="#" onClick="showhide($('#htab_search'),$('#htab_newtask')); return false;">Search</a> </span>
|
||||
|
||||
<span id="htab_search" style="display:none">
|
||||
|
||||
<a href="#" onClick="showhide($('#htab_newtask'),$('#htab_search')); return false;">New task</a> |
|
||||
|
||||
Search
|
||||
<form onSubmit="return searchTasks()"><input type="text" name="search" value="" maxlength="250" id="search" onKeyUp="timerSearch()" autocomplete="off"> <input type="submit" value="<?php __('btn_search');?>"></form>
|
||||
<div id="searchbar"><?php __('searching');?> <span id="searchbarkeyword"></span></div>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<h3><span id="taskviewcontainer" onClick="showTaskview(this);"><span class="btnstr"><?php __('tasks');?></span> (<span id="total">0</span>) <img src="images/arrdown.gif"></span>
|
||||
<span id="sort" onClick="showSort(this);"><span class="btnstr"></span> <img src="images/arrdown.gif"></span>
|
||||
<span id="tagcloudbtn" onClick="showTagCloud(this);" title="<?php __('tags');?>"><span class="btnstr"><?php __('tags');?></span> <img src="images/arrdown.gif"></span>
|
||||
<span class="mtt-notes-showhide">Notes: <a href="#" onClick="toggleAllNotes(1);this.blur();return false;">Show</a> / <a href="#" onClick="toggleAllNotes(0);this.blur();return false;">Hide</a></span>
|
||||
</h3>
|
||||
|
||||
<div id="taskcontainer">
|
||||
|
|
@ -183,11 +202,17 @@ $().ajaxStop( function(r,s) {$("#loading").fadeOut();} );
|
|||
<div id="tagcloudcontent"></div>
|
||||
</div>
|
||||
|
||||
<div id="mylistscontainer" class="mtt-btnmenu-container" style="display:none">
|
||||
<div class="li" onClick="prompt('New list', 'To-Do')">New list</div>
|
||||
<div class="li" onClick="prompt('Rename list', 'list name')">Rename</div>
|
||||
<div class="li" onClick="confirm('This will delete current list with all tasks in it.\nAre you sure?')">Delete</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="space"></div>
|
||||
</div>
|
||||
|
||||
<div id="footer"><div id="footer_content">Powered by <strong><a href="http://www.pozdeev.com/mytinytodo/">myTinyTodo</a></strong> v1.2.6 </div></div>
|
||||
<div id="footer"><div id="footer_content">Powered by <strong><a href="http://www.pozdeev.com/mytinytodo/">myTinyTodo</a></strong> v1.3a </div></div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -22,13 +22,22 @@ a { color:#0000ff; }
|
|||
#authform div { padding:2px 0px; }
|
||||
#authform div.h { font-weight:bold; }
|
||||
|
||||
#tabs ul { list-style: none; padding:0; margin:0; }
|
||||
#tabs ul li { margin:0; font-size: 9pt; font-weight:bold; float: left; width:90px; text-align:center; margin-right: 6px; }
|
||||
#tabs ul a { margin:0px; text-decoration: none; color:#444444; display: block; height:24px; width: 100%; padding-top: 4px; outline:none; }
|
||||
#tabs ul li.ui-tabs-selected { background-color: #ededed; }
|
||||
#tabs ul li.ui-state-hover a { color: #888888; }
|
||||
/*
|
||||
.tabs ul { list-style: none; padding:0; margin:0; }
|
||||
.tabs ul li { margin:0; font-size: 9pt; font-weight:bold; float: left; width:90px; text-align:center; margin-right: 6px; }
|
||||
.tabs ul a { margin:0px; text-decoration: none; color:#444444; display: block; height:24px; width: 100%; padding-top: 4px; outline:none; }
|
||||
.tabs ul li.ui-tabs-selected { background-color: #ededed; }
|
||||
.tabs ul li.ui-state-hover a { color: #888888; }
|
||||
.ui-tabs .ui-tabs-hide { display: none; }
|
||||
#tabs ul li.ui-state-disabled a { color: #cccccc; }
|
||||
.tabs ul li.ui-state-disabled a { color: #cccccc; }
|
||||
*/
|
||||
|
||||
.mtt-tabs ul { list-style: none; padding:0; margin:0; }
|
||||
.mtt-tabs ul li { margin:0; font-size: 9pt; font-weight:bold; float: left; width:90px; text-align:center; margin-right: 6px; }
|
||||
.mtt-tabs ul a { margin:0px; text-decoration: none; color:#444444; display: block; height:24px; width: 100%; padding-top: 4px; outline:none; }
|
||||
.mtt-tabs ul li:hover a { color: #888888; }
|
||||
.mtt-tabs ul li.mtt-tabs-selected { background-color:#ededed; }
|
||||
.mtt-htabs { clear:both; background-color:#ededed; padding:8px; border-bottom:2px solid #DEDEDE; }
|
||||
|
||||
.tab-content { background-color: #ededed; padding:8px; border-bottom:2px solid #DEDEDE; }
|
||||
#loading { float:left; padding-top:5px; background-color:#ffffff; display:none; padding-right:6px;}
|
||||
|
|
@ -46,8 +55,11 @@ a { color:#0000ff; }
|
|||
#sortform .li { margin:1px 0px; padding:2px; cursor:pointer; }
|
||||
#sortform .li:hover { background-color:#316AC5; color:white; }
|
||||
|
||||
.task-left { width:25px; float:left; }
|
||||
.task-middle { margin-left:25px; margin-right:65px; }
|
||||
.mtt-notes-showhide { font-size:8pt; font-weight:normal; margin-left:5px; }
|
||||
|
||||
.task-left { float:left; }
|
||||
.task-left .mtt-toggle { cursor:pointer; }
|
||||
.task-middle { margin-left:40px; margin-right:65px; }
|
||||
.nobr input { margin-left:0px; margin-right:4px; }
|
||||
#tasklist { list-style-type: none; margin: 0; padding: 0;}
|
||||
#tasklist li { padding:6px 2px 6px 6px; border-bottom:1px solid #DEDEDE; min-height:18px; margin-bottom:1px; background-color:#fff; }
|
||||
|
|
@ -82,16 +94,17 @@ div.task-note-area { display:none; margin-bottom:5px; }
|
|||
div.task-note-area textarea { color:#999999; width:100%; display:block; height:65px; }
|
||||
.task-note-actions { font-size:8pt; }
|
||||
.hidden { display:none; }
|
||||
.invisible { visibility:hidden; }
|
||||
.in500 { width:500px; color:#444444; }
|
||||
.in100 { width:100px; color:#444444; }
|
||||
.task-note span a { color:#777777; }
|
||||
.task-note span a:hover { color:#af0000; }
|
||||
|
||||
.task-prio { padding-left:2px; padding-right:2px; margin-left: 2px; margin-right:3px; cursor:default; }
|
||||
.task-prio { padding-left:2px; padding-right:2px; margin-left:0px; margin-right:4px; cursor:default; }
|
||||
.prio-neg { background-color:#3377ff; color:#ffffff; }
|
||||
.prio-pos { background-color:#ff3030; color:#ffffff; }
|
||||
.prio-o { background-color:#dedede; }
|
||||
#tasklist li .prio-o { display:none; }
|
||||
.task-prio.prio-o { display:none; }
|
||||
|
||||
#authstr { display: none; color:#999999; }
|
||||
#authstr.attention { color:#ff0000; }
|
||||
|
|
@ -152,7 +165,7 @@ div.task-note-area textarea { color:#999999; width:100%; display:block; height:6
|
|||
.ui-datepicker-title { text-align:center; }
|
||||
.ui-datepicker-prev, .ui-datepicker-next { cursor:pointer; padding:0px 3px; }
|
||||
|
||||
#taskviewcontainer { border-bottom:1px dashed #ccc; padding:1px 2px; }
|
||||
#taskviewcontainer { border-bottom:1px dashed #ccc; padding:1px 2px; margin-left:4px; }
|
||||
#taskviewcontainer:hover { cursor:pointer; border-bottom:1px solid #bbb; }
|
||||
#taskview { overflow: hidden; z-index:103; background-color:#f9f9f9; border:1px solid #cccccc; padding:3px; }
|
||||
#taskview .li { margin:1px 0px; padding:2px; cursor:pointer; }
|
||||
|
|
@ -164,3 +177,7 @@ div.task-note-area textarea { color:#999999; width:100%; display:block; height:6
|
|||
.ui-resizable-s { cursor:s-resize; height:7px; width:100%; bottom:-5px; left:0px; }
|
||||
.ui-resizable-e { cursor:e-resize; width:7px; right:-5px; top:0px; height:100%; }
|
||||
.ui-resizable-se { cursor:se-resize; width:12px; height:12px; right:1px; bottom:1px; }
|
||||
|
||||
.mtt-btnmenu-container { overflow: hidden; z-index:103; background-color:#f9f9f9; border:1px solid #cccccc; padding:3px; }
|
||||
.mtt-btnmenu-container .li { margin:1px 0px; padding:2px; cursor:pointer; }
|
||||
.mtt-btnmenu-container .li:hover { background-color:#316AC5; color:white; }
|
||||
Loading…
Reference in a new issue