HTML扩展
支持HTML扩展方式来调用DWZ组件
Ajax链接扩展

<a href=”xxx” target=“ajax” [rel=“boxId”]>
 
示例: <a href="w_alert.html" target="ajax" rel="container">提示窗口</a>

当前navTab中链接ajax post扩展

<a href="user.do?method=remove" target="navTabTodo">删除</a>

dialog链接扩展

<a href=”xxx” target=“dialog” [rel=“dialogId”]>

Html标签扩展方式示例:

<a href="w_dialog.html" target="dialog" rel="page2">弹出窗口</a>
 

 
<a class="button" href="demo_page1.html" target="dialog" rel="dlg_page1" title="[自定义标题]" width="800" height="480">打开窗口一</a>

JS调用方式示例:

$.pdialog.open(url, dlgId, title);
 

 
$.pdialog.open(url, dlgId, title, {width: 500, height: 300});

navTab链接扩展

<a href=”xxx” target=“navTab” [rel=“tabId”]>
 
示例: <a href="w_alert.html" target="navTab" rel="page1">提示窗口</a>

Tab组件扩展
开发人员不需写任何javacsript, 只要使用下面的html结构就可以.

<div class="tabs">
 
<div class="tabsHeader">
 
[...]

【使用教程】DWZ富客户端框架,基于jQuery实现的Ajax RIA开源框架
2010年04月10日 添加评论 阅读全文

17Joys CMS是一套使用ThinkPHP框架开发,基于PHP+MYSQL免费开源的企业网站系统;

开发目的:为了让跟多的PHP爱好者掌握ThinkPHP框架开发,我们提供CMS源码作为教学案例,希望更多的PHP爱好者可以掌握,并且参与到我们17Joys CMS的开发团队中来

17Joys CMS企业网站管理系统 v1.0 正式发布
2010年02月22日 2 条评论 阅读全文

由于一些同学针对AJAX的研究还不是很深入,我发布一个去除AJAX框架版本的后台页面

17joys的后台页面-去除AJAX框架版本
2010年04月30日 添加评论 阅读全文

DWZ富客户端框架(jQuery RIA framework), 是中国人自己开发的Ajax RIA开源框架, 是基于jQuery实现的UI组件框架. DWZ富客户端框架比ExtJs简单实用,比较适合做二次开发,使用jQuery可以非常方便的 定制特定需求的UI组件,并以jQuery插件的形式发布出来.如有需要也可做定制化开发.
这个框架是我的好友开发,希望大家多多支持,17Joys CMS正在开发的用户中心,便建立在此开源框架的基础上。
DWZ简单介绍:
DWZ富客户端框架设计目标是简单实用, 让开发人员少写js甚至不写js的情况下, 也能用ajax做项目. 比较适合做二次开发.
DWZ使用jQuery可以非常方便的定制特定需求的UI组件, 并以jQuery插件的形式发布出来. 如有需要也可做定制化开发.
欢迎大家提出建议,我们将在下一版本中进一步调整和完善功能.
DWZ富客户端框架是开源项目,可以免费获取源码。希望更多的开发人员使用,共同推进国内整体ajax开发水平。
在线演示地址 http://dwz.duqn.com
在线文档 http://dwz.duqn.com/doc/dwz-user-guide.pdf
视频教材 http://dwz.duqn.com/doc/dwz-user-guide.swf
Google Code下载: http://code.google.com/p/dwz/
演示界面:

2010年04月13日 添加评论 阅读全文

添加用户是我们写的第一个管理操作,以后类似的添加操作都可以模仿此操作编写
首先先上代码,下面的代码要放在UserAction类中

function add(){
$role=new Model(’Role’);//创建一个用户分组模型
$list=$role->select();//提取用户分组数据
$this->assign(’rlist’,$list);//分组数据分配到视图上,为了在添加用户时选择所属分组
$this->display();//调用模板显示
}
 
function insert(){
$user=new UserModel();//创建用户模型
if($data=$user->create()){//通过create方法获取表单数据,只有这样才能激活数据验证功能
if(false!==$user->add()){//通过add方法把数据插入到数据库中
$uid=$user->getLastInsID();//获取新增用户的编号,限于自动增长列
$ru[’role_id’]=$_POST[’role_id’];//获取选择的用户分组
$ru[’user_id’]=$uid;//整合用户分组明细
$roleuser=new Model(’RoleUser’);//创建用户分组明细模型
$roleuser->add($ru);//添加用户分组明细信息
$this->assign(’jumpUrl’,__URL__.’/index’);//设定调整页面
$this->success(’操作成功,插入数据编号为:’.$uid);//成功页面提示信息
}else{
$this->error(’操作失败:adduser’.$user->getDbError());//插入错误提示
}
}else{
$this->error(’操作失败:数据验证( ‘.$user->getError().’ )’);//getError方法获取数据验证失败信息
}
}

视图文件就是创建一个表单即可,视图文件Tpl/default/User/add.html

<form action="__URL__/insert" method="post">
<table class="admintable" id="admintable">
<tr>
<td class="key">用户名:<span class="red_font">*</span></td><td><input type="text" name="username" class="inputbox" /></td>
</tr>
<tr>
<td class="key">密码:<span class="red_font">*</span></td><td><input type="password" name="pwd" class="inputbox" /></td>
</tr>
[...]

2010年04月10日 添加评论 阅读全文

用户名模型创建完毕后,接下来就要完成控制器的定义了,也就是要决定用户都有哪些操作。
ThinkPHP采用模块和操作的方式来执行,首先,用户的请求会通过入口文件生成一个应用实例,应用控制器(我们称之为核心控制器)会管理整个用户执行的过程,并负责模块的调度和操作的执行,并且在最后销毁该应用实例。任何一个WEB行为都可以认为是一个模块的某个操作,系统会根据当前的URL来分析要执行的模块和操作。这个分析工作由URL调度器来实现,官方内置了Dispatcher类来完成该调度。
在Dispatcher调度器中,会根据URL:http://servername/appName/moduleName/actionName/params
来获取当前需要执行的项目(appName)、模块(moduleName)和操作(actionName),在某些情况下,appName可以不需要(通常是网站的首页,因为项目名称可以在入口文件中指定,这种情况下,appName就会被入口文件替代)。在复杂一点的情况下面,可能还会出现分组(groupName)。
每个模块是一个Action文件,类似于我们平常所说的控制器,系统会自动寻找项目类库Action目录下面的相关类,如果没有找到,则会定位到空模块,否则抛出异常。
而actionName操作是首先判断是否存在Action类的公共方法,如果不存在则会继续寻找父类中的方法,如果依然不存在,就会寻找是否存在自动匹配的模版文件。如果存在模版文件,那么就直接渲染模版输出。
因此应用开发中的一个重要过程就是给不同的模块定义具体的操作。一个应用如果不需要和数据库交互的时候可以不需要定义模型类,但是必须定义Action控制器。
Action控制器的定义非常简单,只要继承Action基础类就可以了,例如:
class UserAction extends Action{
}
如果我们要执行下面的URL
http://servername/index.php/User/add
你需要增加一个add方法就可以了,例如

Class UserAction extends Action{
 
// 定义一个add操作方法,注意操作方法不需要任何参数
 
Public function add(){
 
// add操作方法的逻辑实现
 
// ……
 
$this->display(); // 输出模板页面
 
}
 
}

操作方法必须定义为Public类型,否则会报错。并注意操作方法的命名不要和内置的Action类的方法重复。系统会自动定位当前操作的模板文件,而默认的模板文件应该位于项目目录下面的Tpl\default\User\add.html。
17JoysCMS用户管理功能需要的操作就是:用户列表、创建用户、编辑用户、删除用户、插入用户数据、更新用户数据
所以控制器的结构如下

class UserAction extends CommonAction{
/*
用户列表
*/
funciton index(){
[...]

2010年04月10日 添加评论 阅读全文

17Joys CMS是一套使用ThinkPHP框架开发,基于PHP+MYSQL免费开源的企业网站系统;

开发目的:为了让跟多的PHP爱好者掌握ThinkPHP框架开发,我们提供CMS源码作为教学案例,希望更多的PHP爱好者可以掌握,并且参与到我们17Joys CMS的开发团队中来

2010年03月19日 2 条评论 阅读全文

经过了2个多月断断续续的开发,17JoysCMS系统终于开发完毕,已经具备了文章发布、页面模块管理等基本功能,稍后整理完毕会发布源码给大家,欢迎大家给出建议。

2010年02月22日 2 条评论 阅读全文

由于一些同学针对AJAX的研究还不是很深入,我发布一个去除AJAX框架版本的后台页面

2010年01月27日 1条评论 阅读全文

现在后台页面的搭建工作已经完成,不知道大家有没有找到满意的模板,反正我是找到了,呵呵!接下来要做的就是后台的功能了,第一个需要完成的功能就是用户管理功能。对于功能的编写说白了主要就是对数据库的操作,数据的操作无外乎增、删、改、查这四大项,在ThinkPHP中叫CURD。

2010年01月27日 2 条评论 阅读全文

现在模块控制器有了,接下来当我们访问模块的操作时,就该给用户呈现页面了,这就是视图。终于轮到前台的XHTML+CSS+JavaScript大显身手了。

2010年01月27日 添加评论 阅读全文

在我们编写代码的时候,尽量要多考虑一些以后可能会附带的功能要求,为这些功能留下编写的余地,这样就能增加扩展性,我在查看ThinkPHP源码的时候发现,每次控制器初始化的时候都会去调用一个_initialize()方法,那我就思考,以后肯定会针对所有的控制器模块定义公共方法,所以我考虑扩展Action类,把这些公共方法都放进去,这就产生了CommonAction类。