




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JumbotCms二次开发手册随风缘网站内容管理系统JumbotCmsV2009二次开发手册2009年目 录1模块开发31.1模块分析31.2表字段修改/新表创建61.2.1修改用户表71.2.2修改栏目表71.2.3创建军种兵种表71.2.4创建译文表71.2.5创建日志表81.3后台程序设计81.3.1克隆下载模块项目81.3.2替换相关内容81.3.3页面和程序修改后台译文列表页后台译文ajax页后台译文编辑页面前台内容页242插件开发322.1插件规范322.1.1命名空间的规范322.1.2文件路径的规范332.2插件开发结束语351 模块开发好多朋友都想让我写一个详细的手册,我真是没有太多的时间去写这次正好老板要求我二次开发一个以前的东西(asp),需要加入新闻模块,我琢磨了半天,反正东西也不多,干脆就是用jumbotcms重新做,顺便写一个详细的开发笔记,好,现在就开始,GO1.1 模块分析首先来看一下那套系统的功能:网站配置、添加文章、文章管理、文章分类、军种兵种、用户管理、下载日志等,细细分析一下便知,网站配置、文章分类、用户管理等都是不需要再重新开发的(jumbotcms系统现有的),只做稍微的调整即可。管理后台功能菜单网站配置与原jumbotcms系统相比,多了一个“单位名称”,这个属性完全可以在前台模板里设置,可有可无,去除即可。文章编辑表单这是译文的全部信息,研究半天,发现它更接近当前的“下载模块”,稍后我们就拿“下载模块”的程序进行改造即可。军种/兵种编辑表单军种和兵种:需要重新设计,但不难,类似于栏目管理,到时也改造一下即可。栏目编辑表单这里比原来的栏目多了一个“编号”这里多了“点数”和“到期时间VIP用户”,这可以在当前的用户表增加2个字段。这需要重新设计,主要是对某位“译者”翻译的文章附件被下载的情况进行统计,然后根据情况给予相应报酬。这样一来,思路很清晰了:1、 jcms_normal_user用户表表只要增加一个字段“积分”、用于控制会员下载资料时扣分用的。2、 jcms_normal_class栏目表增加一个字段“编号”。3、 创建一个“军种兵种”表,取名为jcms_module_version_arms。4、 创建一个译文表,取名为jcms_module_version。5、 创建一个日志表jcms_module_version_downlogs,用于记录会员下载资料的。6、前后台代码、模板都可仿造Down模块。1.2 表字段修改/新表创建熟悉脚本的朋友可以直接在后台对数据库进行升级,不熟悉的朋友就只有手工去改数据库了。1.2.1 修改用户表增加int型字段Points。1.2.2 修改栏目表增加varchar型字段Number,字段大小为10。1.2.3 创建军种兵种表1.2.4 创建译文表1.2.5 创建日志表1.3 后台程序设计1.3.1 克隆下载模块项目因为之前说过模块之间都是有相同点的,而和译文模块最接近的就是下载模块(当然你可以创建全新的项目,只因为本人在学校时数学还不错,知道如何找同类项,这个“优点”让我在程序开发中受益匪浅)。将JumbotCms2009.Modules.Soft文件夹复制并取名为JumbotCms2009.Modules.Version。1.3.2 替换相关内容1、使用VS2008打开JJumbotCms2009.Modules.Soft.csproj;2、将相关的名称改掉;修改前结构修改后结构 3、打开项目属性,修改程序集名称和默认命名空间;修改前修改后4、替换“Soft”为“Version”, 替换“soft”为“version”,为保证正确无误,不建议批量替换,我选择逐个查找替换;以上工作完成后,初步的框架已经出来了,下面就要进行详细的修改了(毕竟字段都不一样);保存当前项目,打开解决方案JumbotCms2009.sln;将项目JumbotCms2009.Modules.Version添加进来。1.3.3 页面和程序修改 后台译文列表页这个页面是一个循环模板,前台使用jQuery+jTemplates处理的,与其他模块大同小异,没有啥好修改的,只要把第六行中的标题改为译文标题即可(因为这个模块还有原文标题一说)。 后台译文ajax页打开ajax.aspx.cs,不难从简单的英文单词发现,它的功能有四个:list (文章列表)、batchoper(批量处理)、del (删除文章)、checkname (判断标题名)从上往下看:这东西嘛,跟其他模块基本一样,不需要修改,直接跳过删除内容的部分,也大同小异,所以也跳过我感觉也大同小异,呵呵,这样一来,这个文件貌似就没改过(之前批量替换的时候已经把相关的表名都改好了)。 后台译文编辑页面哈哈,关键的来了,大家看到这不免要说,咋什么都不用改?那我告诉你:NO!这个页面要改的东西就很多了,LET GO。先处理edit.aspx页(说明一下:因为内容的增加和修改有好多共同点,这里我就合并在一起了,具体的差异具体处理)结合我们之前的表结构设计,我们对edit.aspx进行一些修改(保留通用的)。老规矩,从上往下看:直到40行为止,我觉得没啥好改的,它是一段校验标题是否重复的js代码,唯一要改的就是把第6行的软件编辑改成译文编辑,继续往下:直到,这里有一个js代码需要修改,但是目前怎么修改还不是太清楚,记住这个位置,待会我们再回来修改,先看body部分。这些根据实际情况,增加一个“英文标题”和一个“作者单位”,修改后如下。再往下,我一次性把跟下载模块有关的全部去掉,包括什么类别、语言、运行环境、授权方式、运行平台、解压密码等等,顺便再加上缺少的几个(文中涉及国家地区、译者、全文字数、下载所需点数、译文地址、原文地址),修改完之后就成下面这样了。说明一下,为了对表单进行一个验证,我对一部分数据进行了约束,输入错误会在相应的地方显示错误信息,显示位置在,具体显示在哪里,是根据id来定位的,好,下一步我们来完善一下表单验证,回到上面,目前我们还只对标题进行验证,这是不够的,我们将对下列数据进行提交前的格式控制:译者(每个姓名都用“”和“”来框起来,约束它是便于我们后续可以查找某一位译者的所有译文)、全文字数(肯定只能输入数字)、下载所需点数(只能是数字)、译文地址(简单的判断不为空就行了),这部分就要求对正则有一定的了解了哈,完善后的js代码如下:var ccid = joinValue(ccid);$(document).ready(function()$.formValidator.initConfig(onError:function(msg)/*alert(msg)*/);$(#txtTitle).formValidator(tipid:tipTitle,onshow:请输入译文标题,单引号之类的将自动过滤,onfocus:至少输入10个字符,oncorrect:).InputValidator(min:10,onerror:至少输入10个字符,请确认).AjaxValidator(type : get,data: id= + ccid,url: /cmsfile/modules/version/admin/ajax.aspx?oper=checkname&time=+(new Date().getTime(),datatype : json,success : function(d)if(d.result = 1)return true;elsereturn false;,buttons: $(#btnSave),error: function()alert(服务器没有返回数据,可能服务器忙,请重试);,onerror : 该标题已经存在,onwait : 正在对标题进行合法性校验,请稍候.).DefaultPassed();$(#txtTranslator).formValidator(tipid:tipTranslator,onshow:每个人用括起来,例如:姓名1姓名2,onfocus:每个人用括起来,例如:姓名1姓名2,oncorrect:).RegexValidator(regexp:(1a-zA-Z0-9u4E00-u9FA5uF900-uFA2D+1)+$,onerror:每个人用括起来,例如:姓名1姓名2);$(#txtWordCount).formValidator(tipid:tipWordCount,onshow:请填写非0数字,onfocus:请填写非0数字,oncorrect:).RegexValidator(regexp:(1-910-9*)$,onerror:请填写非0数字);$(#txtPoints).formValidator(tipid:tipPoints,onshow:请填写数字,onfocus:请填写数字,oncorrect:).RegexValidator(regexp:(0-9+)$,onerror:请填写数字);$(#txtDownUrl1).formValidator(tipid:tipDownUrl1,onshow:必须填写,onfocus:必须填写,oncorrect:).InputValidator(min:1,onerror:必须填写););验证部分写完了,最后就是处理附件上传的jsPS:一般写正则或什么复杂的东西不是一气呵成的,有时需要多次的修改,不用着急,慢慢来。根据上述代码,我们要求点击译文单选按钮时,译文地址自动变成上传后文件的url,反之亦然,好,继续写说到这里,我忘记了我还有3件事没做:A) 在模块表jcms_normal_modules下手工增加一条记录;B) 在模板表jcms_normal_template中增加三条记录;C) 主项目下cmsfile/config/ upload.config增加一个节点。嘿嘿,做完上述工作,再回到刚才的js问题:还需要解释一下代码含义吗?不需要了吧呵呵,到这里先告一段落,已经快23:30了,该休息了明天继续。接着昨天的话题,我们修改好了edit.aspx,那么还有edit.aspx.cs未修改,我们打开它!为了让大家更清楚这套系统的结构,我顺便对每行代码加上注释以上代码部分我没做任何修改,只是加了注释。以上代码估计我得解释一下,对于文本框、下拉菜单,我们只有三个参数:A) 第一个参数是当前页面的webControls;B) 第二个参数是数据字段;C) 第三个代表绑定的是不是字符串。对于单选、多选,我们有四个参数:A) 第一个参数是当前页面的webControls;B) 第二个参数是需要绑定的值,SelectedValue代表选中的value,否则绑定自定义的值;C) 第二个参数是数据字段;D) 第三个代表绑定的是不是字符串。其他更详细的绑定就不说了,大家可以去Jumbot.DataOper来看看源码,我们接着看下面代码。注释的比较清楚了,不废话了。也清楚了吧?我默认发表时间是当前系统时间,当然你也可以定义一个文本框,然后绑定!当前模块,修改内容和增加内容唯一不同的是修改成功后还要删除已经缓存的静态页面。好了,如此一“折腾”,对于译文模块的后台部分,就完成的差不多了。(什么?不是还有会员投稿部分吗?)依葫芦画瓢,你还不会啊?细心的人马上就提出来了:不是还有军种兵种吗?不是会员表新增了点数吗?不是?不忙,这些我们先放一边,下来设计前台页的代码吧,先让这个模块能运行起来再说。 前台内容页因为前台页面都是利用模板引擎的,所以version.aspx不需要修改,打开version.aspx.cs即可。简单的参数值判断,里面用到的函数可以到相应位置去看(找位置的话,鼠标移上去即可)。没啥说,都注明了。清楚吧?没做修改,也不说了哈。最后,把protected string GetContentStr()改成如下内容,为加快进度,不细说了。OK,还有一个文件下载页要修改。这个页主要是通过id和NO来传参数:id代表文章id,NO代表译文地址/原文地址。还有译文不是随便下载的,首先判断当前用户是否登录,点数是否够,如果不够就禁止下载,否则就扣除相应点数。尝试发布一下项目JumbotCms2009.Modules.Version,看到下面信息,说明项目没有语法错误。大家想想还有啥没做的?想想!我先吃饭了!(2009-04-08 11:25)吃完饭,休息一下,继续做,还有啥没改?想到了吗?对,就是前台模板页,每个模块都有三套基本模板:频道首页模板、频道列表页模板和频道内容页模板。我们进入JumbotCms2009.Webcmsfiletemplatesv2009,先克隆一下这三个模板文件。 对应的先把文件名称改好(当然你DIY模板也是没问题的,具体模板标签对应的是啥,将会在其他地方另外说明)我觉得频道首页没啥改的(和其他模块一样即可,直接使用大家都熟悉的记事本打开version_class.htm(列表页),并检索一下“soft”。发现只有一处地方,就是循环列表的地方,我们按照译文的特性,修改即可(修改完再克隆一下softbox样式表,想改就改一下,不改也可以,这里不再赘述了)。稍做修改成如下:最后打开内容页,这页面需要大改,先看看最终的页面效果:那我们就根据这个效果,配上字段标签吧,这里省略说了。到这里我们就应该具体设计军种和兵种了,马上,跟着我,走。上次我们讲到军种和兵种的结构其实和栏目差不多,只不过有以下不同:A) 栏目可以无限分类,而军种和兵种只有2级;B) 栏目属于频道,而军种和兵种没有归属,所以修改的时候要去掉ChannelId。C) 栏目分外部栏目和内部栏目,而军种兵种不分。这样一来,我们直接锁定这个目录,老规矩,克隆后取名为adminarms,拷贝至。根据上述A、B、C开始改东西,首先打开templates/_list.htm(这个是列表模板),去掉一些不需要的参数和代码后,整理成下面这样再打开list.htm文件,去掉ccid参数,把相应的目录改过来,没发现这样改 工作量会减少很多吗?1分钟就改完一个页面,接着就改ajax.aspx,这页面只要改命名空间即可,只需要把第一行中的改成。打开ajax.aspx.cs,按照要求改即可,去掉不必要的东西(依葫芦画瓢),我的懒得讲解了。最后留一个edit0.aspx并改名edit.aspx(因为没有内、外之分),另外手动改难免有错误,这个时候你可采用边改边发布的方式来检验语法错误。改完之后,我们就应该将它链接在后台的某个位置了,想来想去,就放在译文列表页面,先以文字的形式展现,稍后可放个图片啥的代替(虽然不是太好看,但毕竟军种兵种是它独有的玩意,不想去修改模块共同页的内容!)打开,在头部加上如下代码:发布项目,看看后台的效果:马马虎虎先这么着吧,然后去随便添加几个军种和兵种试试:好了,军种和兵种做完了,这时候想到了前面我们编辑“译文内容”的页面上并没有指定译文的军种和兵种,回过去再稍做修改一下吧。首先打开edit.aspx,在表单处加上一段代码然后回到edit.aspx.cs,在绑定数据的区域加上如下代码,表示加载页面的时候将军种和兵种绑定到WebControls上去。绑定完之后,还应该显示当前数据的选中值(修改数据的时候),所以还应该添加如下语句。上面的语句功能:不但能显示单条数据的值,还能在点击提交后自动将选中的值赋给字段ArmsId,这种思想是c/s架构中带过来的。特别是编写过Delphi的人很了解。改写完之后我们再发布一下,测试测试,添加一个译文,并选择一个兵种,保存后再点击编辑,看是否自动绑定。测试成功,到这里,差不多可以告一段落了,剩下几个小地方的完善工作就不废话了。模块的开发就讲到这里,下回讲解插件的开发,这是大家比较关心的,我会适当写详细一点哈。2 插件开发2.1 插件规范为了不与其他主程序、插件冲突,相应的规范是必须遵守的,特别是内嵌式的插件,它会调用自身独有的一些js和css样式,那么所谓的规范无疑就是:命名规范。命名规范主要分为:命名空间的规范、文件路径的规范、js函数的规范、css中id和class的规范。下面我就以“友情链接”为例,看看到底需要如何规范。2.1.1 命名空间的规范首先我确定我的插件名称为Link(注意大小写),创建一个项目,取得项目名称就应该是:,程序集名称为JumbotCms2009.Extends.Link,而且每一个aspx页的命名空间都是JumbotCms2009.Extends.Link或以它开头。顺便说一下,插件可以引用的程序集有三个:Jumbot.Common.dll、Jumbot.DataOper.dll和JumbotCms2009.CommonExtends.dll(封装了一些数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环境监测销售知识培训课件
- 丰田打造标准工程方案(3篇)
- 房屋加固工程专项方案(3篇)
- 猫咪饮食基础知识培训课件
- 小学语文散文类课文教学的优化策略
- 猫咪的聚会课件
- 返乡老屋改造工程方案(3篇)
- 安全教育校本培训课件
- 电网工程安全评估方案(3篇)
- 安全教育干部培训会讲话课件
- 国企清产核资制度
- 动画运动规律-动画概论
- 中级注册安全工程师考试《安全生产专业实务道路运输安全》模拟卷及详解
- 龙虎山正一日诵早晚课
- 米粉及杂粮类制品课件
- 楔形平板产生的等厚干涉
- 骨髓腔穿刺在急诊急救中的应用课件
- 机械动力学PPT完整全套教学课件
- 年产2.03万吨高端精细化学品及5G新材料项目环评报告书
- 群众文化副高答辩问题及答案
- GB/T 41972-2022铸铁件铸造缺陷分类及命名
评论
0/150
提交评论