续上篇:http://lazycai.blog.51cto.com/690494/765860

其实发现做hacking这种活儿,只要思路顺了,写起来还是挺快的··

1、数据库添加一个cycle字段,类型为int,不同的数值分别代表0【不重复】1【每日重复(工作日)】2【每周重复】3【每月重复】。
默认值为0
 
2、进入 code/mod/todo.class.php 。这一次,我们不仅要修改 update (save先不改了,这个周期设置的功能无需在添加任务时设定),还要修改 check 这个功能。首先是update,思路跟之前添加due_date的思路类似,添加
$cycle = z(v('cycle'));
以及
`cycle` = '" . $cycle . "'
的字段在相应的位置。然后进入 view/layout/ajax/todo/modify.tpl.html 进行测试,添加radio buttons:
<div id="todo_cycle">
     重复周期:<input type="radio" name="cycle" value="0">不重复&nbsp;&nbsp;<input type="radio" name="cycle" value="1">每日&nbsp;&nbsp;<input type="radio" name="cycle" value="2">每周&nbsp;&nbsp;<input type="radio" name="cycle" value="3">每月
</div>
这样就可以输入了,不过这个页面现在默认打开是啥项都没选,我们需要让他默认选择了正确的项,让正确的项处于默认checked的状态。
这个可能可以用一个变量的方式来处理,不过具体怎么传值没想好,所以下面就用了一个笨办法,倒是也管用:
重复周期:<input type="radio" name="cycle" value="0" <?php if( $tinfo['cycle'] == 0 ){ echo 'checked'; } ?>>不重复&nbsp;&nbsp;<input type="radio" name="cycle" value="1" <?php if( $tinfo['cycle'] == 1 ){ echo 'checked'; } ?>>每日&nbsp;&nbsp;<input type="radio" name="cycle" value="2" <?php if( $tinfo['cycle'] == 2 ){ echo 'checked'; } ?>>每周&nbsp;&nbsp;<input type="radio" name="cycle" value="3" <?php if( $tinfo['cycle'] == 3 ){ echo 'checked'; } ?>>每月
ok,这样数值输入的部分就搞定了,接下来去修改check功能。
 
3、我们需要的修改,说穿了是在 check 这个动作的同时,将之前的todo复制一份,把一份check掉,另一份改个due_date(以及id)。那么,首先考虑复制的实现。
直接帖代码吧:
首先在check函数中添加如下代码,我直接放在$todo定