Сама идея сделать свой ToDo у меня пришла после того, как на хабре опубликовали пост про microToDo. Основным недостатком я считал то, что все сохраняется на куках. Вот потом и появилось мое решение
Этот ToDo будет находиться в модуле board. Итак, приступим. Для начала мы активируем этот модуль. Создаем две категории:
Название 1 категории: Выполнено
Название 2 категории: Не выполнено
Если вы хотите сделать, чтобы смотреть список могли вы, то поставьте при создании категории необходимые права.
Внимание! Обязательно у первой категории должен быть ID 1, у второй - ID 2.
Переходим в настройки модуля и делаем все как на скрине:
Все. Первый этап окончен. Едем дальше.
Заходим в редактирование шаблонов. Модуль - Доска объявлений.
Шаблон: Главная страница модуля
<head>
<title>$MODULE_NAME$ - $SITE_NAME$</title>
<style type='text/css' media='all'>
body {font: normal normal normal large/1.6em Verdana, sans-serif;}
header a, header span {opacity:.3;}
header a:hover {opacity:1; color:#0000FF;}
header a {padding-right:1em; color:black;}
#name {text-decoration:none;}
.ahtung {background:yellow; padding:1em;}
.hidden {display:none;}
.add {margin-top:1em;}
#new {width:40%;}
ul, p, footer {margin:0 0 .2em 6em; padding-left:0;}
footer {font-size:medium;}
ul {padding:1em 0 1em 0; clear:both;}
li {list-style:none;}
li a, footer #del {text-decoration:none; color:red; visibility: hidden; padding:0 .6em;}
li:hover a, footer:hover #del {visibility: visible}
.OK, .add a {opacity:.2;}
.add label * {float:left; padding:.2em; margin:2px; line-height:1.6em; font-size:large;}
.add a {text-decoration:none; color:black; padding:1px; margin:3px 0 0 8px;}
.add a:hover, .add a:active {opacity:1; background:#D8D8D8; margin:1px 0 0 6px; border:2px solid red; border-color:#E9E9E9 #C7C7C7 #C7C7C7 #E9E9E9;}
.add a:active {border-color:#C7C7C7 #E9E9E9 #E9E9E9 #C7C7C7;}
.info {padding:.6em 0; color:#25BA25;}
.info a {color:#179217;} .info a:hover {color:#FF3722;}
.opacity_on {opacity:.3;}
.opacity_off {opacity:1;}
footer {font:0.9em Verdana;}
</style>
</head>
<body>
<header>
<a href='http://vadimklimenko.com/blog/2009-12-01-44' id='name'>
U.ToDo</a>
</header>
<form action='#' method='post' id='add'>
<p class='add'>
<label><input type='text' id='new' value='Что нужно написать?' maxlength='255' onclick="if(this.value=='Что нужно написать?')this.value='';" onblur="if(this.value=='')this.value='Что нужно написать?';" />
<a href='#' id='addtodo' onclick="sendZamech();"> ← Enter </a></label>
</p>
</form>
<ul id="ToDoList">$BODY$</ul>
<script type="text/javascript">
function sendZamech(){
zText = $("#new").val();
$.get('/board/0-0-0-0-1', function(o){
$.post('/board/', {ocat: 1,brief: zText,edttbrief: 2,format_brief: 1,html_brief: 1,coms_allowed: 1,a: 12,ssid: $('input[name="ssid"]', o).val(),numi: 1}, function(qqq){
location.reload();
});
});
} </script>
</body>
<footer>$POWERED_BY$. Дизайн и все такое от <a href='http://ru.bmsubmitter.com/buy/microToDo/demo.html' title='Гыгы' id='name'>µToDo</a>, переделано под uCoz: <a href='http://vadimklimenko.com' id='name'>Vadim Klimenko</a></footer>
</html>
Если же вы не хотите,чтобы пользователи и не видели ToDo, то прописываем так:
*Тут содержимое предыдущего кода*
<?else?>
<html>
<head>
<meta name="robots" content="noindex,nofollow">
<title>
HTTP 403 Запрещено
</title>
<style>
body, td {font-family:Tahoma,Arial;font-size:9pt;} a:link {text-decoration:underline;
color:#0000FF} a:visited {text-decoration:underline; color:#0000FF} a:hover
{text-decoration:underline; color:#FF0000} .copy {font-size:7pt;}
</style>
</head>
<body bgcolor="#FFFFFF">
<table height="100%" width="100%" border="0">
<tr height="100">
<td valign="top" align="center">
<h2>
У вас нет прав для просмотра этого ресурса
</h2>
</td>
</tr>
<tr>
<td valign="top" align="center">
Возможно, просмотр этого ресурса с использованием указанных вами личных
данных не разрешен.
</p>
</td>
</tr>
<tr>
<td valign="bottom" align="center" class="copy">
<br>$POWERED_BY$</b>
</a>
<br>
</td>
</tr>
</table>
</body>
</html>
<?endif?>
Ну и последний этап - вид материалов.
<?if($CATEGORY_NAME$="Выполнено")?><li><label><input onclick="sendZamech$ID$();return false;" title="Пометить как не выполнено" type="checkbox"> $MESSAGE$ <a href="#" title="Удалить" onclick="$('#dltentr$ID$ img[src=\'http://s21.ucoz.net/img/fr/EmnD.gif\']').parent().click();return false;">×</a> </label> </li><?endif?>
<?if($CATEGORY_NAME$="Не выполнено")?><li class="OK"><label><input title="Выполнено?" checked="checked" onclick="sendZamech$ID$();return false;" type="checkbox"> $MESSAGE$ <a href="javascript://" title="Удалить" onclick="$('#dltentr$ID$ img[src=\'http://s21.ucoz.net/img/fr/EmnD.gif\']').parent().click();return false;">×</a> $DATE$($TIME$)</li></label><?endif?>
<?if($CATEGORY_NAME$="Выполнено")?><script type="text/javascript">
function sendZamech$ID$(){
$.get('/board/0-0-0-$ID$-13', function(o){
$.post('/board/', {brief:$('textarea[name="brief"]',o).val(),
jkd498:1,
jkd428:1,
ocat:2,
edttbrief:2,
format_brief:1,
html_brief:1,
is_pending:0,
coms_allowed:1,
id:$ID$,
a:14,
ssid: $('input[name="ssid"]', o).val(),numi: 1}, function(qqq){
location.reload();
});
});
}
</script><?endif?>
<?if($CATEGORY_NAME$="Не выполнено")?><script type="text/javascript">
function sendZamech$ID$(){
$.get('/board/0-0-0-$ID$-13', function(o){
$.post('/board/', {brief:$('textarea[name="brief"]',o).val(),
jkd498:1,
jkd428:1,
ocat:1,
edttbrief:2,
format_brief:1,
html_brief:1,
is_pending:0,
coms_allowed:1,
id:$ID$,
a:14,
ssid: $('input[name="ssid"]', o).val(),numi: 1}, function(qqq){
location.reload();
});
});
}
</script><?endif?>
Текст меняете на свое
Вот и все
Пример
Убедительная просьба: оставляйте копирайты.
При копировании - обязательная ссылка на блог - обязательна.
PS: Все так очень сложно расписано, потому что у меня через sendZamech(id); не получилось
UPD: В последнем коде есть две ссылки на изображение http://s21.ucoz.net/img/fr/EmnD.gif. Чтобы все работало корректно, заменяем в том изображении s21 на номер своего сервера. Вы можете его увидеть у себя в панели управления.