上午: 后台管理的用户管理界面可以获得数据了,我要用js来输出这些内容,js控制输出table,成功。 下面处理两个问题,但是思路却是一个,也就是: 1、书的发布和不发布的状态的切换 在books表中添加一个字段,IsPublic,而不再使用原来books表中的IsSafety字段, mysql代码如下: ALTER TABLE books ADD IsPublic INT default 0 这里刚刚开始的时候没有添加default值,在使用IsPublic<>1进行判断时不正确,要用is null来进行判断, 要使用select * from $table where IsPublic is null语句,太麻烦,这里添加默认值约束。 删除原来字段,mysql命令: ALTER TABLE books DROP IsPublic; 其中:1代表发布,其他代表不发布。 php业务逻辑中的sql代码: "UPDATE books SET IsPublic=1 WHERE IsPublic<>1 and IsSafety<>1 and BookId=".$bookId; 例子:UPDATE books SET IsPublic=1 WHERE IsPublic<>1 and IsSafety<>1 and BookId=8 2、用户锁定于不锁定的状态的切换 今天才知道他叫:阿里斯特,一个可爱的外国人。 下午: 搞定图书发布和锁定之间的切换,通过ajax获取后台数据。 通过判断每一个json对象的IsPublic和IsSafe字段的值来确定是否显示public连接,public连接的内容是打开还是关闭。 在books类中添加一个关闭方法,调用前先取出bookid对应的book对象,判断是否公开,公开则关闭,关闭则公开。 添加图书查询界面,暂时不考虑分页,和用户管理中的分页应该是一样的机制。 添加连接到NavOut.tpl中: <div style="display:inline;" mce_style="display:inline;"><a href="BookList.html" mce_href="BookList.html">BookList</a> | </div> 添加同样连接到Nav.tpl中。 查看效果,没有问题。 a)解除BookList的权限控制,游客也可以浏览此页并且获取数据 添加BookList.class.php到page目录下,添加BookList.tpl到template目录下,暂时为两个空的文件。 这里的页面和后台代码可以完全参考MyBooks.class.php和其对应的MyBooks.tpl 这里应该还要在BasePage中的权限认证中添加一条,也就是BookList不要受权限的控制。 代码如下: && $cls!="BookList" ,这里是追加。参考BasePage.class.php中的文件。 在BookHelper中添加getpubbooks方法,在BookList中也添加也这个方法。 这两个方法是一样的不知道是不是重复了,应该删除BookHelper中的安格方法,暂时在那里不先动它。 现在确定哪个都不删除,因为BookHelper中的方法是在登录以后走的路经,而BookList中的是游客访问时走的路经。 测试是否显示正常,成功。暂无分页。 然后进行权限控制,未登录用户可以进行图书的阅读,并且也只能进行阅读。 遇到的问题: 大问题一:链接要可以访问,不能在BasePage.class.php就被禁止了。 大问题二:链接可以访问后,内部的ajax调用的方法数据也不能被禁用,导致不能选取数据。 b)解除Biography的权限控制,游客也可以浏览此页并且获取数据,将权限控制下放到Biography.class.php文件中。 1、如果想要阅读一本书,那么就要进行:'Biography.html?bid='+bookId+(__isWrite>0 ? '&w=1' : '') 请求。 这里的权限控制在BasePage中进行的,如果用户想要阅读的话那么一定要登录,这里就难办了,还要公开,还要权限控制 思路: 这里是这样子设计的,将对Biography的权限控制在BasePage中取消,权限控制下放到Biography类本身中,在这个类中进行判断。 b)解除TopTen的权限控制,游客也可以浏览此页并且获取数据,将权限控制下放到Biography.class.php文件中。 2、现在可以阅读第一个书签Boigraphy,但是阅读第二个书签TopTen要发送类似TopTen.html?bid=19请求,这里的权限控制也要模拟Boigraphy。 思路: 这里是这样子设计的,将对TopTen的权限控制在BasePage中取消,权限控制下放到TopTen类本身中,在这个类中进行判断。 3、Close 变成 make private 李总的要求 4、书签可以查看但是内容去没有得到, 暂时的解决方案:bookHelper的权限取消了,暂时这样先实现功能,以后进一步完善。 5、PhotoAlbum.html?bid=19这是第三个标签进行的请求,这里的设计和Biography中的权限控制是一样的。 思路: 这里是这样子设计的,将对PhotoAlbum的权限控制在BasePage中取消,权限控制下放到PhotoAlbum类本身中,在这个类中进行判断。 晚上: 我的思路乱了,有点烦躁,把所有的编辑器都关闭,计算机重新启动一下,然后整理一下文档。 赵坚要记录的问题: 在BookHelper中有一个方法,在点击PhotoAlbum连接的时候会有异常。 问题在于write导航在游客的身份的情况下是没有的,BoigraphyRead.tpl中,在$('onWrite').outerHTML='<a id="onWrite" href="javascript:onWrite('+leftPageId+')" mce_href="javascript:onWrite('+leftPageId+')">Write</a>';判断 bookmusic的访问权限被放开在BoigraphyRead.tpl的那个。位置大概在140行左右。 PhotoHelper的访问权限被放开在PhotoAlbum.tpl中的ajax请求,位置大概在279行。 赵坚发现的在BasePage中有setupClientConfig方法,这个方法最终的输出结果是: <mce:script type="text/javascript"><!-- var __photoAlbumPageId=105; var __bookId=23 if(typeof Yz=="undefined")var Yz={}; Yz.config={}; Yz.config.attachmentUrl="/webuab/Resource/Files/"; Yz.config.templateImageUrl="/webuab/Resource/Templates/"; Yz.config.imageUrl="/webuab/Resource/Images/"; Yz.config.resourceUrl="/webuab/Resource/"; Yz.config.skin="/webuab/Themes/Default/"; Yz.config.fckBasePath="/webuab/YzLib/JavaScript/fck/"; // --></mce:script> 进入书里面,里面于书签,比如有Boigraphy TopTen PhotoAlbum... 那么这里是如何查找的呢? PhotoAlbum {literal} {/literal}{$smarty.request.bid}{literal} {/literal} 这个是赵坚教给我的,smarty就能这样或者url中或者post过来的参数。 select * from users,books where users.userid = books.userid --这里和inner join的结果是一样的。 SELECT Books.*,users.Firstname,users.FamilyName FROM Books left join users on users.UserId = Books.UserId WHERE Books.IsPublic=1 调试ajax和查找php中函数的功力是工作经验的问题,我这里即使是再细心也是没有用的,因为那种快速定位的功力是靠时间和工作经验换来的。