﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-随心芸芸 @ JPeanut（旧版）</title><link>http://www.blogjava.net/JPeanut/</link><description>搬迁至 http://www.17m.net.cn/</description><language>zh-cn</language><lastBuildDate>Tue, 05 May 2026 05:24:37 GMT</lastBuildDate><pubDate>Tue, 05 May 2026 05:24:37 GMT</pubDate><ttl>60</ttl><item><title>Drupal5.x创建自定义模块指南－02把你的模块告知Drupal系统(Creating modules - a tutorial: Drupal 5.x －－02. Telling Drupal about your module)</title><link>http://www.blogjava.net/JPeanut/archive/2007/03/27/106584.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Tue, 27 Mar 2007 01:32:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2007/03/27/106584.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/106584.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2007/03/27/106584.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/106584.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/106584.html</trackback:ping><description><![CDATA[		 <span style="font-weight: bold;"><font size="2">[翻译:陈市明 摘自:http://drupal.org/node/82926]</font></span><br />   在5.x中，你模块的基本信息不再是通过函数hook_help提供给Drupal，而是在info文件定义name和description即可（具体格式参见info文件指南）。在我们的例子中，该文件为onthisdate.info<br /> 通常格式如下：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">; $Id$<br />name </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> Module Name<br />description </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">A description of what your module does.</span><span style="color: rgb(0, 0, 0);">"</span></div><br />如果没有这个文件，则drupal不能在模块安装的时候找到该模块。<br />在我们的例子中，onthisdate.info应该包含如下数据：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">; $Id$<br />name </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> On </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);"> date<br />description </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">A block module that lists links to content such as blog entries or forum discussions that were created one week ago.</span><span style="color: rgb(0, 0, 0);">"</span></div>将把这些代码写到onthisdate.info文件中，保存到sites/all/modules/onthisdate目录<br />下面3句是在info文件中是可选的<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">dependencies </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> module1 module2 module3<br /></span><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Your arbitrary grouping string</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"><br />version </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">$Name$</span><span style="color: rgb(0, 0, 0);">"</span></div>在我们的例子中，将不使用这些代码。如果你的模块依赖其他模块，则Drupal在你的依赖模块没有被激活的情况下是不允许激活的。<br />Package：在模块列表页面中的显示分组，如果该值为空则默认为“Uncategorized”。<br />Version：通过cvs直接得到的模块的版本号<br />该文件使用的是ini格式，所以该文件可以包含;表示注释；<br />; $Id$则让cvs自动把该文件的ID信息自动替换掉<br />关于ini的格式，具体参见PHP.net parse_ini_file documentation<br /><br />除了info文件，我们还可以通过实现help钩子来添加额外的帮助信息。不管怎么样，最好还是实现help钩子。onthisdate模块的help钩子叫做onthisdate_help：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">&lt;?</span><span style="color: rgb(0, 0, 0);">php<br />function onthisdate_help($section</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">''</span><span style="color: rgb(0, 0, 0);">) {<br />}</span><span style="color: rgb(0, 0, 0);">?&gt;</span></div>$section变量：是该页面的结点路径。官方推荐，最好在模块中通过swtich case语句来判断是否是该模块的结点路径。你可以参照如下代码：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">&lt;?</span><span style="color: rgb(0, 0, 0);">php<br /></span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />* 显示帮助和模块信息<br />* </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> 当前帮助结点的路径#模块名<br />* </span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"> 显示的帮助信息<br /></span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />function onthisdate_help($section</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">''</span><span style="color: rgb(0, 0, 0);">) {<br />  $output </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">''</span><span style="color: rgb(0, 0, 0);">;<br />  </span><span style="color: rgb(0, 0, 255);">switch</span><span style="color: rgb(0, 0, 0);"> ($section) {<br />    </span><span style="color: rgb(0, 0, 255);">case</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">admin/help#onthisdate</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">:<br />      $output </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">&lt;p&gt;</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">.  t(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Displays links to nodes created on this date</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">). </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">&lt;/p&gt;</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">;<br />      </span><span style="color: rgb(0, 0, 255);">break</span><span style="color: rgb(0, 0, 0);">;<br />  }<br />  </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> $output;<br />} </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> function onthisdate_help</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">?&gt;</span></div>把这些代码写到onthisdate.module文件中，保存到目录sites/all/modules/onthisdate<br /><br /><br /><br />原文：<br /><br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">In Drupal </span><span style="color: rgb(0, 0, 0);">5</span><span style="color: rgb(0, 0, 0);">.x the basic information about your module, its name and description, is no longer provided by hook_help. Instead, all modules now need to have a modulename.info file, containing meta information about the module (</span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> details see Writing .info files (Drupal </span><span style="color: rgb(0, 0, 0);">5</span><span style="color: rgb(0, 0, 0);">.x)). For our example, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">onthisdate.info'.</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);"><br />The general format is:<br /><br />; $Id$<br />name </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> Module Name<br />description </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">A description of what your module does.</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"><br /><br />Without </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);"> file, your module will not show up in the module listing</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">.<br /><br /></span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> our example, it could contain the following:<br /><br />; $Id$<br />name </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> On </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);"> date<br />description </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">A block module that lists links to content such as blog entries or forum discussions that were created one week ago.</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"><br /><br />Add the source above to a file named to onthisdate.info before saving in your module</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">s directory at sites/all/modules/onthisdate.</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);"><br />There are also three optional lines that may appear in the .info file:<br />dependencies </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> module1 module2 module3<br /></span><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Your arbitrary grouping string</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"><br />version </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">$Name$</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"><br /><br />For our example module, these don</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">t apply and we will simply omit them. If you assign dependencies for your module, Drupal will not allow it to be activated until the required dependencies are met.</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);"><br />If you assign a </span><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> string </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> your module, on the admin</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">build</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">modules page it will be listed with other modules with the same category. If you </span><span style="color: rgb(0, 0, 255);">do</span><span style="color: rgb(0, 0, 0);"> not assign one, it will simply be listed as </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">Uncategorized</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">. Not assigning a </span><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> your module is perfectly ok; in general packages are best used </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> modules that are distributed together or are meant to be used together. If you have any doubt, leave </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);"> field blank.<br /><br />Suggested examples of appropriate items </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> the </span><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> field:<br /><br />    </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> Audio<br />    </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> Bot<br />    </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> CCK<br />    </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> Chat<br />    </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> E</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">Commerce<br />    </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> Event<br />    </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> Feed Parser<br />    </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> Organic groups<br />    </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> Station<br />    </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> Video<br />    </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> Views<br />    </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> Voting (</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> it uses</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">requires VotingAPI) <br /><br />The version line will provide the version string </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> users getting their modules directly from CVS rather than using the tarball </span><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> that is created with a release.<br /><br />The files use the ini format and can include a ; $Id$ to have CVS insert the file ID information.<br /><br />For more information on ini file formatting, see the PHP.net parse_ini_file documentation.<br /><br />We can also provide help and additional information about our module. Because of the use of the .info file described above, </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);"> hook is now optional. However, it is a good idea to implement it. The hook name </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);"> function is </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">help</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">, so start with the onthisdate_help function:<br /><br /></span><span style="color: rgb(0, 0, 0);">&lt;?</span><span style="color: rgb(0, 0, 0);">php<br />function onthisdate_help($section</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">''</span><span style="color: rgb(0, 0, 0);">) {<br /><br />}<br /></span><span style="color: rgb(0, 0, 0);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br /><br />The $section variable provides context </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> the help: where in Drupal or the module are we looking </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> help. The recommended way to process </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);"> variable is with a </span><span style="color: rgb(0, 0, 255);">switch</span><span style="color: rgb(0, 0, 0);"> statement. You</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">ll see this code pattern in other modules.</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);">&lt;?</span><span style="color: rgb(0, 0, 0);">php<br /></span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />* Display help and module information<br />* </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> section which section of the site we're displaying help<br />* </span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"> help text for section<br /></span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />function onthisdate_help($section</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">''</span><span style="color: rgb(0, 0, 0);">) {<br /><br />  $output </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">''</span><span style="color: rgb(0, 0, 0);">;<br /><br />  </span><span style="color: rgb(0, 0, 255);">switch</span><span style="color: rgb(0, 0, 0);"> ($section) {<br />    </span><span style="color: rgb(0, 0, 255);">case</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">admin/help#onthisdate</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">:<br />      $output </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">&lt;p&gt;</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">.  t(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Displays links to nodes created on this date</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">). </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">&lt;/p&gt;</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">;<br />      </span><span style="color: rgb(0, 0, 255);">break</span><span style="color: rgb(0, 0, 0);">;<br />  }<br /><br />  </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> $output;<br />} </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> function onthisdate_help</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br /><br />The admin</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">help#modulename </span><span style="color: rgb(0, 0, 255);">case</span><span style="color: rgb(0, 0, 0);"> is used by the Drupal core to linked from the main help page (</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">admin</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">help or </span><span style="color: rgb(0, 0, 0);">?</span><span style="color: rgb(0, 0, 0);">q</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">admin</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">help). You will eventually want to add more text to provide a better help message to the user.<br /><br />More information about the help hook:<br />Drupal HEAD<br /><br />Add the source above to a file named to onthisdate.module before saving in your Drupal installation. </span></div><br /><img src ="http://www.blogjava.net/JPeanut/aggbug/106584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2007-03-27 09:32 <a href="http://www.blogjava.net/JPeanut/archive/2007/03/27/106584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Drupal5.x创建自定义模块指南－01开始(Creating modules - a tutorial: Drupal 5.x －－01. Getting started)</title><link>http://www.blogjava.net/JPeanut/archive/2007/03/26/106555.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Mon, 26 Mar 2007 15:43:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2007/03/26/106555.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/106555.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2007/03/26/106555.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/106555.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/106555.html</trackback:ping><description><![CDATA[ <span style="font-weight: bold;"><font size="2">[翻译:陈市明 摘自:http://drupal.org/node/82926]</font></span><br />   To focus this tutorial, we'll start by creating a block module that lists links to content such as blog entries or forum discussions that were created one week ago.这份指南将教会我们如何在一个drupal的结点上创建block content,创建链接和回复信息。<br />   首先在drupal的安装路径下创建目录sites/all/modules/onthisdate（呵呵 当然先得创建目录sites/all/modules哈）。在目录sites/all/modules/ onthisdate下创建一个文件，命名为onthisdate.module。在drupal 5.x中，目录sites/all/modules放置的是一些非核心模块。这个使得你在升级核心模块的时候更加方便，无需担心你之前定制化。<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">&lt;?</span><span style="color: rgb(0, 0, 0);">php<br /></span><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);"> $Id$ </span><span style="color: rgb(0, 128, 0);">*/</span></div><br />   在每个模块的php文件末尾可以省去?&gt;的标记，只要在开头加上&lt;?php即可。$Id$则是有助CVS的版本控制。在你模块中，所有需要被Drupal调用的函数都必须以“{模块名}_{钩子名}”命名，钩子名是drupal中一些预定义的方法的前缀。通过这样的命名方式，可以很容易的让Druapl调用到这些方法，从而得到你定制的数据。<br />   这个模块目前还没运行起来，因为它还没有被激活。在后面的章节中，我们可以看到如何激活该模块。<br /><br /><p class="MsoNormal" style="margin-left: 17.95pt; text-indent: 13.45pt;"><span style="font-family: 宋体;"></span><span style="" lang="EN-GB"><o:p></o:p></span></p><br /><br />原文<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">01</span><span style="color: rgb(0, 0, 0);">. Getting started<br />Drupal </span><span style="color: rgb(0, 0, 0);">5</span><span style="color: rgb(0, 0, 0);">.x<br /><br />To focus </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);"> tutorial, we</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">ll start by creating a block module that lists links to content such as blog entries or forum discussions that were created one week ago. The full tutorial will teach us how to create block content, write links, and retrieve information from Drupal nodes.</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 0);"><br />Start your module by creating a folder in your Drupal installation at the path: sites</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">all</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">modules</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">onthisdate You may need to create the sites</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">all</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">modules directory first. Create a PHP file and save it as onthisdate.module in the directory sites</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">all</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">modules</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">onthisdate. As of Drupal </span><span style="color: rgb(0, 0, 0);">5</span><span style="color: rgb(0, 0, 0);">.x, sites</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">all</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">modules is the preferred place </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> non</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">core modules (and sites</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">all</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">themes </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> non</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">core themes), since </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);"> places all site</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">specific files in the sites directory. This allows you to more easily update the core files and modules without erasing your customizations.<br /><br /></span><span style="color: rgb(0, 0, 0);">&lt;?</span><span style="color: rgb(0, 0, 0);">php<br /></span><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);"> $Id$ </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br /><br />As per the Coding standards, omit the closing </span><span style="color: rgb(0, 0, 0);">?&gt;</span><span style="color: rgb(0, 0, 0);"> tag and use the longhand </span><span style="color: rgb(0, 0, 0);">&lt;?</span><span style="color: rgb(0, 0, 0);">php tag. The $Id$ string will help keep track of the revision number and date when you commit the file to CVS.<br /><br />All functions in your module that will be used by Drupal are named {modulename}_{hook}, where </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">hook</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> is a pre</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">defined function name suffix. Drupal will call these functions to get specific data, so having these well</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">defined names means Drupal knows where to look. We will come to hooks in a </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">.<br /><br />The module is not operational yet: it hasn</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">t been activated. We</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">ll activate the module later in the tutorial. </span></div><br /><img src ="http://www.blogjava.net/JPeanut/aggbug/106555.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2007-03-26 23:43 <a href="http://www.blogjava.net/JPeanut/archive/2007/03/26/106555.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Drupal Object Reference--$node - Node object(Drupal 结点对象) for drupal 5.1</title><link>http://www.blogjava.net/JPeanut/archive/2007/03/25/106281.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Sun, 25 Mar 2007 14:34:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2007/03/25/106281.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/106281.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2007/03/25/106281.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/106281.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/106281.html</trackback:ping><description><![CDATA[
		<span style="font-weight: bold;">
				<font size="2">[翻译:陈市明 摘自:http://drupal.org/node/49768]<br /><br />Node对象:<br />[name] =&gt; 创建结点的用户名<br />[date] </font>
		</span>
		<span style="font-weight: bold;">
				<font size="2">=&gt; 创建结点的时间<br />[status] </font>
		</span>
		<span style="font-weight: bold;">
				<font size="2">=&gt; 是否发布{True:发布|False:未发布</font>
		</span>
		<span style="font-weight: bold;">
				<font size="2">}(在action+workflow中可以做审核处理)</font>
		</span>
		<br />
		<span style="font-weight: bold;">
				<font size="2">[moderate]</font>
		</span>
		<span style="font-weight: bold;">
				<font size="2">
				</font>
		</span>
		<span style="font-weight: bold;">
				<font size="2">=&gt; 是否可修改{0:只读|1:修改}<br />[promote]</font>
		</span>
		<span style="font-weight: bold;">
				<font size="2">
				</font>
		</span>
		<span style="font-weight: bold;">
				<font size="2">=&gt; 是否发布首页{0:是|1:否}</font>
		</span>
		<br />
		<span style="font-weight: bold;">
				<font size="2">[sticky]</font>
		</span>
		<span style="font-weight: bold;">
				<font size="2">
				</font>
		</span>
		<span style="font-weight: bold;">
				<font size="2">=&gt; 是否置顶{0:否|1:是}<br />[revision]</font>
		</span>
		<span style="font-weight: bold;">
				<font size="2">
				</font>
		</span>
		<span style="font-weight: bold;">
				<font size="2">=&gt; </font>
		</span>TRUE/FALSE  this is a new revision (if TRUE, will be saved as a separate entry in the database)<br /><span style="font-weight: bold;"><font size="2">[comment]</font></span><span style="font-weight: bold;"></span><span style="font-weight: bold;"><font size="2"></font></span><span style="font-weight: bold;"><font size="2">=&gt; 对该结点是否允许添加,阅读或者是对其设置权限<br />[simple_access]</font></span><span style="font-weight: bold;"></span><span style="font-weight: bold;"><font size="2"></font></span><span style="font-weight: bold;"><font size="2">=&gt; 对权限模块的一个<br />[title] =&gt; 显示结点页面的标题<br />[taxonomy] =&gt; 分类(数组,具体查看Taxonomy模块)<br />[body] =&gt; 结点的内容<br />[format] =&gt; 符合Filter模块的Content内容<br />[uid] =&gt; 创建结点的用户ID<br />[created] =&gt; 创建结点的Unix类型的时间戳<br />[type] =&gt; 结点类型(如:book,page,forum,具体查看cck模块)<br />[teaser] =&gt; 内容概要<br />[validated] =&gt; 该结点是否有效{0:否|1:是}(是否已经保存)<br />[changed] =&gt; </font></span><span style="font-weight: bold;"><font size="2">修改结点的Unix类型的时间戳</font></span><br /><span style="font-weight: bold;"><font size="2">[nid] =&gt; 结点ID</font></span><span style="font-weight: bold;"></span><br /><br /><br /><br /><span style="font-weight: bold;"><font size="2">原文:<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">&amp;</span><span style="color: rgb(0, 0, 0);">$node </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);"> Node object<br /><br />[name] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Username of node creator<br />[date] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Date the node was created<br />[status] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> TRUE</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">FALSE </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> published</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">unpublished<br />[moderate] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Moderation enabled (</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">|</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">)<br />[promote] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Promoted to front page (</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">|</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">)<br />[sticky] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Sticky (</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">|</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">)<br />[revision] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> TRUE</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">FALSE </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);"> is a </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> revision (</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> TRUE, will be saved as a separate entry in the database)<br />[comment] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> whether comments can be added, read, or accessed, </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);"> node<br />[simple_access] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Array </span><span style="color: rgb(0, 0, 0);">--</span><span style="color: rgb(0, 0, 0);"> A list of permissions </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> the Simple Access module<br />(<br />[view] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);"><br />)<br /><br />[title] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Page title<br />[taxonomy] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Array </span><span style="color: rgb(0, 0, 0);">--</span><span style="color: rgb(0, 0, 0);"> Taxonomy classification<br />(<br />[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);"><br />)<br /><br />[body] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Body content of node<br /><br />[format] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> which filter applies to </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);"> content.<br />[uid] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> User ID of node creator<br />[created] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> UNIX timestamp of node creation date.<br />[type] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Type of node (e.g. book, page, forum)<br />[teaser] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Teaser (the initial part of the body)<br /><br />[validated] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> has the node passed validation</span><span style="color: rgb(0, 0, 0);">?</span><span style="color: rgb(0, 0, 0);"> (</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">|</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">) (is it ready to be saved).<br />[changed] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> UNIX timestamp of last time node was changed.<br />[nid] </span><span style="color: rgb(0, 0, 0);">=&gt;</span><span style="color: rgb(0, 0, 0);"> Node ID</span></div><br /></font></span><img src ="http://www.blogjava.net/JPeanut/aggbug/106281.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2007-03-25 22:34 <a href="http://www.blogjava.net/JPeanut/archive/2007/03/25/106281.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>随心芸芸 @ JPeanut 的 blog 搬家了</title><link>http://www.blogjava.net/JPeanut/archive/2007/01/05/92083.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Fri, 05 Jan 2007 11:15:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2007/01/05/92083.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/92083.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2007/01/05/92083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/92083.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/92083.html</trackback:ping><description><![CDATA[  安家在blogjava也快一年了 想起第一次申请blog的时候 还是鼓足胆子给blogjava管理员发送了mail。现在要搬家了 呵呵 还是狠喜欢blogjava的 有点舍不得。 感觉blogjava的blog还是做的狠专业的，也相当稳定。唯一的一个问题：在firefox下，FreeTextBox的编译器经常出现问题。<br />  随心芸芸@JPeanut 的新家不太稳定 只是那里是我自己的空间 备份和修改源码都比较方便。<br /><br /><br />  新家地址 http://blog.17m.net.cn/  <br /><img src ="http://www.blogjava.net/JPeanut/aggbug/92083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2007-01-05 19:15 <a href="http://www.blogjava.net/JPeanut/archive/2007/01/05/92083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的方向 我作主 （ 维护-&gt;开发-&gt;测试-&gt;设计 ）</title><link>http://www.blogjava.net/JPeanut/archive/2006/12/28/90612.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Thu, 28 Dec 2006 15:18:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2006/12/28/90612.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/90612.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2006/12/28/90612.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/90612.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/90612.html</trackback:ping><description><![CDATA[
		<p>      清楚的想起了1年前，徐大哥 推荐我来测试组的情形，因为公司的需要、对测试的好奇、还有一些私人的原因来到了测试小组。如今，因公司内部的整合，我又要被调离了测试组，真的有点舍不得。<br />      时间一晃而过，在测试小组里面，虽然挂着“品质保证工程师”的职位，但是，到手上的工作基本还是都是测试主管才会去接受做的事情。回想一年的工作，做的事情也不少了咯</p>
		<ol>
				<li>性能测试流程和方法的建立 
</li>
				<li>单元测试流程和方法的建立，JATest单元测试架构的设计开发实施
</li>
				<li>单元测试实现功能测试的项目实现 
</li>
				<li>BTS（Bugfree＋Testlink）项目的建立 
</li>
				<li>职能化设计测试场景用例（运用了正交表） 
</li>
				<li>Bugfree的绩效考核设计开发 
</li>
				<li>内存泄漏工具的了解及其简单运用</li>
				<li>基于CVS的文档代码搜索系统 DCI ( Document &amp; Code Index System)<br /></li>
				<li>测试了若干项目<br /></li>
		</ol>
		<p>      这个一年里面，说闲也不闲，除了测试以外，维护、开发和设计的工作可一样没少过哦，也正是这些工作的机会，我的代码能力也一直在进步着。想起了编写JATest的时候，就把《设计模式》的书和JUnit的源码整整反反看了好多遍；说忙也不忙咯，毕竟测试小组的工作我自己分配，想干啥就干啥，我就是老大，^_^，我要每天QQ聊天咯<br />      <br />      一次次的转变，让我对整个项目组更加不一样的感觉<br /><br />   起初是 一年的维护经验 转成 开发人员<br />   去年是 二年的开发经验 转成 测试人员<br />   如今是 一年的测试经验 转成 设计人员<br /><br />       这个一年里，最大的收获是 认识了 朱大姐，从进维护组的一天，她的帮助就没少过，感激的。能认识这个 姐姐 狠开心<br /><br /></p>
<img src ="http://www.blogjava.net/JPeanut/aggbug/90612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2006-12-28 23:18 <a href="http://www.blogjava.net/JPeanut/archive/2006/12/28/90612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>服务器连接数统计工具 NSHelper_v1.1 发布(免费)</title><link>http://www.blogjava.net/JPeanut/archive/2006/12/28/90598.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Thu, 28 Dec 2006 14:33:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2006/12/28/90598.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/90598.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2006/12/28/90598.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/90598.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/90598.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">&lt;陈市明<strong></strong><span style="font-family: 宋体;"> 摘自：<a href="../archive/2006/JPeanut">http://www.blogjava.net/JPeanut</a>&gt;</span></font>
		</p>
		<p>
				<span id="Edit_dgrItems_ctl04_Label2" name="Label1">
						<br />
				</span>
		</p>
		<p>
				<span id="Edit_dgrItems_ctl04_Label2" name="Label1">
						<font size="5">
								<b>&lt;<a href="/Files/JPeanut/NSHelper_v1.1.rar">下载</a>&gt;</b>
						</font>
				</span>
		</p>
		<p>
				<span id="Edit_dgrItems_ctl04_Label2" name="Label1">
						<br />服务器连接数统计工具 </span>免费简单易用<br /><span id="Edit_dgrItems_ctl04_Label2" name="Label1"></span><br /><b>功能</b>： <br /></p>
		<p>    监控当前服务器的某个端口的连接情况，自动生成日志文件</p>
		<p>
				<b>运行:</b>
		</p>
		<p>
				<b>    </b>在dos下运行或者双击 NSHelper.exe</p>
		<p>
				<b>      </b>
				<i> 服务器IP:监控端口、监控的间隔时间 需要用户自己输入</i>
				<b>
						<br />
				</b>
		</p>
		<p>
				<img src="http://www.blogjava.net/images/blogjava_net/jpeanut/NSHelper/nshelp_look_1_1.jpg" alt="nshelp_look_1_1.jpg" border="0" height="328" width="667" />
				<br />
		</p>
		<p>系统运行后，会自动在log目录下生成日志文件，每天生成一个。日志文件可以用记事本打开</p>
		<br />
		<br />
		<p>如果使用中有什么建议和问题,欢迎留言,或者qq 594799855留言</p>
		<br />
		<p>
				<br />
		</p>
		<br />
		<p>
		</p>
		<br />
<img src ="http://www.blogjava.net/JPeanut/aggbug/90598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2006-12-28 22:33 <a href="http://www.blogjava.net/JPeanut/archive/2006/12/28/90598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>性能测试流程规范说明</title><link>http://www.blogjava.net/JPeanut/archive/2006/12/28/90462.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Thu, 28 Dec 2006 04:41:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2006/12/28/90462.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/90462.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2006/12/28/90462.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/90462.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/90462.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &lt;陈市明 摘自：http://www.blogjava.net/JPeanut&gt;																																												&lt;下载&gt;																																																														 	...&nbsp;&nbsp;<a href='http://www.blogjava.net/JPeanut/archive/2006/12/28/90462.html'>阅读全文</a><img src ="http://www.blogjava.net/JPeanut/aggbug/90462.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2006-12-28 12:41 <a href="http://www.blogjava.net/JPeanut/archive/2006/12/28/90462.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BTS的评价</title><link>http://www.blogjava.net/JPeanut/archive/2006/12/13/87487.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Wed, 13 Dec 2006 06:53:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2006/12/13/87487.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/87487.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2006/12/13/87487.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/87487.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/87487.html</trackback:ping><description><![CDATA[TestLink 和 Bugfree 整合还在在继续开发中<br />希望各位能提出意见<br /><img src ="http://www.blogjava.net/JPeanut/aggbug/87487.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2006-12-13 14:53 <a href="http://www.blogjava.net/JPeanut/archive/2006/12/13/87487.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>曾经MY的朋友们,你们现在还好吗?</title><link>http://www.blogjava.net/JPeanut/archive/2006/12/13/87416.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Wed, 13 Dec 2006 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2006/12/13/87416.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/87416.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2006/12/13/87416.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/87416.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/87416.html</trackback:ping><description><![CDATA[豆豆 好久 去大副本玩了<br />想起 23人去MC的情形<br />还是 令人挺怀念的 <br />一段值得怀念的回忆<br />曾经MY的朋友门,你们现在还好吗?<br /><img height="1024" alt="31mc2B.JPG" src="http://www.blogjava.net/images/blogjava_net/jpeanut/wow/23mc/31mc2B.JPG" width="1280" border="0" /><img src ="http://www.blogjava.net/JPeanut/aggbug/87416.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2006-12-13 10:51 <a href="http://www.blogjava.net/JPeanut/archive/2006/12/13/87416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用bts系统 生成的一份 测试用例单(测试用咯)</title><link>http://www.blogjava.net/JPeanut/archive/2006/11/28/83980.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Tue, 28 Nov 2006 02:23:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2006/11/28/83980.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/83980.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2006/11/28/83980.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/83980.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/83980.html</trackback:ping><description><![CDATA[ 
<div class="pageheader"><span style="float: right;">BSTEEL_BTS</span></div><h1>Test Specification-</h1><div style="margin: 50px;"><p>Product: BSTEEL_BTS</p><p>Author: admin </p><p>Printed by TestLink on 28/11/2006</p></div><div class="toc"><h2>Table Of Contents</h2><p><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#com14">逻辑功能测试</a></p><p><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#com15">场景测试</a></p><p style="padding-left: 10px;"><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#cat24">项目管理</a></p><p style="padding-left: 20px;"><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#tc77">项目修改</a></p><p style="padding-left: 20px;"><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#tc78">项目绑定</a></p><p style="padding-left: 20px;"><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#tc79">项目失效</a></p><p><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#com13">功能测试</a></p><p style="padding-left: 10px;"><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#cat21">项目管理</a></p><p style="padding-left: 20px;"><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#tc73">testlink 项目新建</a></p><p style="padding-left: 20px;"><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#tc74">testlink 项目修改,失效和删除</a></p><p style="padding-left: 20px;"><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#tc75">bugfree 项目管理</a></p><p style="padding-left: 20px;"><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#tc76">testlink 与 bugfree 项目绑定</a></p><p style="padding-left: 10px;"><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#cat22">用户管理</a></p><p style="padding-left: 10px;"><a href="http://127.0.0.1/testlink/lib/print/printData.php?edit=product&amp;data=9&amp;format=html&amp;header=y&amp;body=y&amp;summary=y&amp;type=product&amp;toc=y#cat23">需求管理</a></p></div><hr /><a name="com14"></a><h1>1 Component 逻辑功能测试</h1><h2>1.0 Introduction</h2><div>对一些比较复杂的业务逻辑计算,比如复杂的价格计算,PSR校验等</div><h3>1.0.1 Scope</h3><div><ol><li>通过查看内存和数据库来确认是否逻辑是否正确</li><li>如果是接口的,查看接口的参数是否符合要求</li></ol></div><h3>1.0.2 References</h3><div>业务需求说明书<br />软件需求说明说<br />基本设计</div><h2>1.1 Methodology</h2><div>单元测试 或者 手动测试</div><h3>1.1.1 Limitations</h3><div></div><h2>1.2 Categories</h2><a name="com15"></a><h1>2 Component 场景测试</h1><h2>2.0 Introduction</h2><div>通过流程的方式来对项目进行测试,具体可参考周毅<span style="font-family: 宋体;">的《使用用例场景</span><span style="font-family: 宋体;">设计测试用例》<br />要点:<br />  遍历所有可能发生的流程</span></div><h3>2.0.1 Scope</h3><div></div><h3>2.0.2 References</h3><div>业务需求说明书<br />软件需求说明说<br />基本设计</div><h2>2.1 Methodology</h2><div></div><h3>2.1.1 Limitations</h3><div></div><h2>2.2 Categories</h2><a name="cat24"></a><h3>2.2.1 项目管理</h3><p><span style="font-weight: bold;">(数据库:参考 功能测试-&gt;项目管理)<br /></span></p><h4>2.2.1.1 Setup and Configuration</h4><div><span style="font-weight: bold;">测试假定代号</span><br /><ul><li>(1)  ---  &lt;testlink&gt;新建项目 <br /></li><li>(2)  ---  &lt;testlink&gt;修改项目 <br /></li><li>(3)  ---  项目绑定 <br /></li><li>(4)  ---  &lt;testlink&gt;项目失效 <br /></li><li>(5)  ---  &lt;testlink&gt;项目删除</li></ul><span style="font-weight: bold;">特殊需求<br /></span><ul><li>项目在新建之后,所有的角色的用户都可以看到</li><li>项目经过修改后,用户的可见度不变(比如:原来的只有admin才可以看到的,修改之后仍然是只有admin可以看到;如果所有用户都可以见,那么修改后,该项目项目仍然是所有用户都可见)</li><li>项目在修改失效后只有admin角色的用户才可以看到项目(一共五中角色:)</li><li>项目在删除后,所有角色的用户都看不到项目,数据库Project表中已经没有该记录</li></ul><span style="font-weight: bold;">五中角色<br /></span><ul><li>Guest</li><li>Test executor</li><li>Test analyst</li><li>Test</li><li>Admin</li></ul></div><h4>2.2.1.2 Test Data</h4><div></div><h4>2.2.1.3 Tools</h4><div></div><h4>2.2.1.4 Test Cases</h4><p><a name="tc77"></a></p><div class="tc"><table width="90%"><tbody><tr><th>Test Case 77: 项目修改</th></tr><tr><td><u>Summary</u>: 项目修改后,在各种操作下是否会出现问题</td></tr><tr><td><u>Steps</u>:<br /><ol><li>admin角色的用户登入系统</li><li>(1)(2)(2)(3)(2)(4)(2)(5)(1)</li></ol><span style="font-weight: bold;">(注:在最后"删除项目"再做"新建项目"的操作时,新建的项目名称为之前删除的项目名称)</span><br /><br /><br /><font style="font-style: italic;" size="2">注:<br />根据在"场景测试-&gt;项目管理 Configuration -&gt;测试假定代号 " 已经描述<br />比如:</font><br style="font-style: italic;" /><span style="font-style: italic;">   (1)(2)(2)(3)(2)(4)(2)(5)(1) </span><br style="font-style: italic;" /><span style="font-style: italic;">   对应的操作是: </span><br style="font-style: italic;" /><span style="font-style: italic;">   新建-&gt;修改项目-&gt;修改项目-&gt;绑定项目-&gt;修改项目-&gt;失效项目-&gt;修改项目-&gt;删除项目-&gt;新建项目<br /><br /></span><font style="font-style: italic;" size="2">根据在"场景测试-&gt;项目管理 Configuration -&gt;</font><span style="font-style: italic;">特殊需求</span><font style="font-style: italic;" size="2">" 已经描述<br />比如:<br />  </font><span style="font-style: italic;">  (1) (2)(2)(3)(2)(4)(2)(5)(1) <br />  对应的操作是:<br /></span><font style="font-style: italic;" size="2">  1.新建项目  之后应该用 其他角色的帐号查看该项目是否可见<br />  2.修改项目 </font><font style="font-style: italic;" size="2">之后应该用 其他角色的帐号查看该项目是否可见<br />  3.修改项目</font><font style="font-style: italic;" size="2"></font><font style="font-style: italic;" size="2">之后应该用 其他角色的帐号查看该项目是否可见</font><br /><font style="font-style: italic;" size="2">  </font><span style="font-style: italic;">4.</span><span style="font-style: italic;">绑定项目</span><font style="font-style: italic;" size="2"></font><font style="font-style: italic;" size="2">之后应该用 其他角色的帐号查看该项目是否可见</font><br /><span style="font-style: italic;">   5.修改项目</span><font style="font-style: italic;" size="2"></font><font style="font-style: italic;" size="2">之后应该用 其他角色的帐号查看该项目是否可见</font><br /><span style="font-style: italic;">   6.失效项目</span><font style="font-style: italic;" size="2"></font><font style="font-style: italic;" size="2">之后应该用 其他角色的帐号查看该项目是否可见</font><br /><span style="font-style: italic;">   7.修改项目</span><font style="font-style: italic;" size="2"></font><font style="font-style: italic;" size="2">之后应该用 其他角色的帐号查看该项目是否可见</font><br /><span style="font-style: italic;">   8.删除项目</span><font style="font-style: italic;" size="2"></font><font style="font-style: italic;" size="2">之后应该用 其他角色的帐号查看该项目是否可见,然后到后台数据库Project表中查找该数据记录<br />  9.新建项目  (项目名为刚才删除的项目名) </font><font style="font-style: italic;" size="2">之后应该用 其他角色的帐号查看该项目是否可见</font><br /><br />  <br /> </td></tr><tr><td><u>Expected Results</u>:<br /></td></tr></tbody></table></div><a name="tc78"></a><div class="tc"><table width="90%"><tbody><tr><th>Test Case 78: 项目绑定</th></tr><tr><td><u>Summary</u>: 项目绑定后,在各种操作下是否会出现问题</td></tr><tr><td><u>Steps</u>:<br /><ol><li>admin角色的用户登入系统</li><li>(3)(3)(4)(3)(5)</li></ol></td></tr><tr><td><u>Expected Results</u>:<br /></td></tr></tbody></table></div><a name="tc79"></a><div class="tc"><table width="90%"><tbody><tr><th>Test Case 79: 项目失效</th></tr><tr><td><u>Summary</u>: 项目失效后,在各种操作下是否会出现问题</td></tr><tr><td><u>Steps</u>:<br /><ol><li>admin角色的用户登入系统</li><li>(1)(4)(4)(5)</li></ol></td></tr><tr><td><u>Expected Results</u>:<br /></td></tr></tbody></table></div><a name="com13"></a><h1>3 Component 功能测试</h1><h2>3.0 Introduction</h2><div>基本上对页面上的一些简单的逻辑进行测试,采用的是灰盒测试<br /> </div><h3>3.0.1 Scope</h3><div><ol><li>页面上对数据的增删改功能是否按照需求和设计正确实现(可以通过数据库等校验方式)</li><li>页面上的组件是按照要求起到作用</li><li>页面的文字是否正确</li><li>对异常处理是否正常合理</li><li>操作后,数据是否正确入库,入内存,写入文本...</li></ol></div><h3>3.0.2 References</h3><div>业务需求说明书<br />软件需求说明说<br />基本设计</div><h2>3.1 Methodology</h2><div>建议采用手动测试</div><h3>3.1.1 Limitations</h3><div>对于比较复杂的业务逻辑计算的功能应该归到 "逻辑功能测试"中</div><h2>3.2 Categories</h2><a name="cat21"></a><h3>3.2.1 项目管理</h3><p><span style="font-weight: bold;">主要涉及数据库表格(具体可以询问项目组相关成员)</span><br /></p><ul><li>testlink 项目存放:&lt;testlink&gt;project  </li><li>bugfeee项目存放: &lt;bugfree&gt;bugproject</li><li>testlink和bugfree的绑定关系:&lt;testlink&gt;bt_bind_product</li></ul><p></p><h4>3.2.1.1 Setup and Configuration</h4><div></div><h4>3.2.1.2 Test Data</h4><div></div><h4>3.2.1.3 Tools</h4><div></div><h4>3.2.1.4 Test Cases</h4><p><a name="tc73"></a></p><div class="tc"><table width="90%"><tbody><tr><th>Test Case 73: testlink 项目新建</th></tr><tr><td><u>Summary</u>: <span style="font-weight: bold;">简要说明:</span><br /><ul><li>  在testlink项目中新建一个测试的项目</li></ul><span style="font-weight: bold;">权限说明:</span><br /><ul><li>  admin角色有此权限</li></ul><span style="font-weight: bold;">触发条件<br /></span><ul><li>角色为admin用户登入, [Menu:Home-&gt;Create Project]</li></ul><span style="font-weight: bold;">基本流</span><br /><ul><li>  输入Name,Color,Enable Requirements functionality点击 [按钮:Create] 即新建项目</li><li>  点击Color后的颜色选择按钮,弹出颜色选择框,选择后,把选择的颜色按照RGB的标准把值带回Color框中</li><li>  Color代表该项目的页面风格的颜色,在新建后选择该项目后,可以看到具体效果</li><li>  新建成功后系统提示新建成功,返回新建页面,并且当前项目选定为该项目</li><li> 点击 [标签:Edit / Delete]  进入该项目的修改页面</li></ul><span style="font-weight: bold;">备选流</span><br /><ul><li>  Name输入为空,系统提示错误信息</li><li>  Name不唯一,系统提示错误信息</li><li>  Color输入不规范,系统提示错误信息</li></ul>  <br /><span style="font-weight: bold;">特殊需求</span><br /><ul><li>  Name大小写不区分</li><li> 项目Name唯一,如果发生不唯一则系统正确提示</li><li> 如果项目覆盖了当前选定的项目为严重错误</li></ul></td></tr><tr><td><u>Steps</u>:<br /></td></tr><tr><td><u>Expected Results</u>:<br /></td></tr></tbody></table></div><a name="tc74"></a><div class="tc"><table width="90%"><tbody><tr><th>Test Case 74: testlink 项目修改,失效和删除</th></tr><tr><td><u>Summary</u>: <span style="font-weight: bold;">简要说明:</span><br /><ul><li>  修改已经建立的项目</li><li>  失效:使得该项目除了admin角色外都看不到该项目</li><li>  删除:从后台数据库中删除该数据(区别以置标志位)</li></ul><span style="font-weight: bold;">权限说明:</span><br /><ul><li>  admin角色有此权限</li></ul><span style="font-weight: bold;">触发条件:<br /></span><ul><li>角色为admin的用户登入,选择需要操作的项目, [Menu:Home-&gt;Edit / Delete Product]<br /></li></ul><span style="font-weight: bold;">基本流</span><br /><ul><li>   Name,Color,Enable Requirements functionality显示当前项目信息</li><li>   修改Name,Color,Enable Requirements functionality,点击 [按钮:Update] ,修改数据</li><li>   Color代表该项目的页面风格的颜色,在Update后可以看到修改效果</li><li>   点击Color后的颜色选择按钮,弹出颜色选择框,选择颜色后,把选择的颜色按照RGB的标准把值带回Color框中</li><li>   点击 [按钮:Inactivate] 即进行失效操作,点击失效后,提示失效成功.此时其他角色用户看不到此项目</li><li>   点击 [按钮:Delete] 即进行删除操作,删除后提示删除成功,管理员可以重新新建Name为刚才删除的项目Name</li><li>   点击 [标签:Create] 进入项目新建页面</li></ul><span style="font-weight: bold;">备选流</span><br /><ul><li>  Name输入为空,系统提示错误信息</li><li>  Name不唯一,系统提示错误信息</li><li>  Color输入不规范,系统提示错误信息</li><li>  在整个系统没有项目时,不能进入该操作页面</li></ul><span style="font-weight: bold;">特殊需求</span><br /><ul><li>  Name大小写区分</li><li>  项目名唯一,如果发生不唯一情况,系统提示相关错误信息</li><li>  修改项目的操作不能改变项目在数据库库中的id属性<br /></li></ul></td></tr><tr><td><u>Steps</u>:<br /></td></tr><tr><td><u>Expected Results</u>:<br /></td></tr></tbody></table></div><a name="tc75"></a><div class="tc"><table width="90%"><tbody><tr><th>Test Case 75: bugfree 项目管理</th></tr><tr><td><u>Summary</u>: <span style="font-weight: bold;">简要说明</span><br /><ul><li>对bugfree中的项目进行操作:新建,删除</li><li>(注:bugfree没有删除操作)</li></ul><span style="font-weight: bold;">权限说明 </span><br /><ul><li>bugfree的超级管理员</li></ul><span style="font-weight: bold;">触发条件</span><br /><ul><li>两种进入方式: 1)bugfree登入, [Menu:后台管理-&gt;新建项目/维护] 2)如果已经和testlink用户绑定,则可以通过testlink登入, [Menu:Services-&gt;后台管理-&gt;新建项目/维护]</li></ul><span style="font-weight: bold;">基本流<br /></span><br /><ul><li>管理模式选择"编辑当前项目",项目名,项目文档,项目计划显示当前的项目的信息</li><li>管理模式选择"编辑当前项目",输入项目名,项目文档,项目计划,点击 [按钮:提交] 则进行修改操作</li><li>管理模式选择"添加当前项目",项目名,项目文档,项目计划则显示为空</li><li>管理模式选择"添加当前项目",输入项目名,项目文档,项目计划,点击 [按钮:提交] 则进行添加操作</li></ul><span style="font-weight: bold;">备选流</span><br /><ul><li>  项目名唯一,如果不唯一,系统正确提示</li></ul><ul><li>项目名不能为空,若为空则系统提示用户</li></ul><span style="font-weight: bold;">特殊需求<br /></span><ul><li>修改项目的操作不能改变项目在数据库库中的id属性</li><li>项目名大小写区分</li><li>项目名唯一,如果发生不唯一情况,系统提示相关错误信息</li></ul></td></tr><tr><td><u>Steps</u>:<br /></td></tr><tr><td><u>Expected Results</u>:<br /></td></tr></tbody></table></div><a name="tc76"></a><div class="tc"><table width="90%"><tbody><tr><th>Test Case 76: testlink 与 bugfree 项目绑定</th></tr><tr><td><u>Summary</u>: <span style="font-weight: bold;">简要说明</span><br /><ul><li>建立testlink和bugfree的项目的关联</li></ul><span style="font-weight: bold;">权限说明</span><br /><ul><li>testlink的admin角色的用户</li></ul><span style="font-weight: bold;">触发条件</span><br /><ul><li>testlink登入后,选择需绑定的项目 [Menu:Edit / Delete Product-&gt;BIND BTS PRODUCT]</li></ul><span style="font-weight: bold;">基本流</span><br /><ul><li>进入页面,显示2列数据,分别是:TestLink当前选择的项目和bugfree的全部项目(项目名+一级模块名)</li><li>选择testlink项目在bugfree中对象的项目后,点击 [按钮:update] 进行修改操作(可以不选则任何项目)</li><li>点击 [按钮:close] 关闭此页面  </li><li>操作成功后,显示操作的结果</li></ul><span style="font-weight: bold;">备选流</span><br /><ul><li>无</li></ul><span style="font-weight: bold;">特殊需求</span><br /><ul><li>无</li></ul></td></tr><tr><td><u>Steps</u>:<br /></td></tr><tr><td><u>Expected Results</u>:<br /></td></tr></tbody></table></div><a name="cat22"></a><h3>3.2.2 用户管理</h3><p><font size="7"><span style="font-weight: bold;">[略]</span></font></p><h4>3.2.2.1 Setup and Configuration</h4><div></div><h4>3.2.2.2 Test Data</h4><div></div><h4>3.2.2.3 Tools</h4><div></div><h4>3.2.2.4 Test Cases</h4><p></p><p>No Test Case</p><a name="cat23"></a><h3>3.2.3 需求管理</h3><p><font size="7">[略]</font></p><h4>3.2.3.1 Setup and Configuration</h4><div></div><h4>3.2.3.2 Test Data</h4><div></div><h4>3.2.3.3 Tools</h4><div></div><h4>3.2.3.4 Test Cases</h4><p></p><p>No Test Case</p><img src ="http://www.blogjava.net/JPeanut/aggbug/83980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2006-11-28 10:23 <a href="http://www.blogjava.net/JPeanut/archive/2006/11/28/83980.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BTS（BUGFREE+TESTLINK） 简易操作手册</title><link>http://www.blogjava.net/JPeanut/archive/2006/11/21/82536.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Tue, 21 Nov 2006 06:45:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2006/11/21/82536.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/82536.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2006/11/21/82536.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/82536.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/82536.html</trackback:ping><description><![CDATA[
		<div align="left">&lt;<font size="2">陈市明</font><strong></strong><font size="2">摘自：http://www.blogjava.net/JPeanut&gt;<br /><br /></font><p class="MsoNormal"><span style="font-family: 宋体;">熟悉</span><span lang="EN-US">testlink</span><span style="font-family: 宋体;">和</span><span lang="EN-US">bugfree</span><span style="font-family: 宋体;">的可以直接以下说明</span><span lang="EN-US">:</span></p><p class="MsoNormal"><span style="font-family: 宋体;">此次二次开发的主要内容</span><span lang="EN-US">:</span></p><p class="MsoNormal"><span lang="EN-US">1.Testlink</span><span style="font-family: 宋体;">和</span><span lang="EN-US">Bugfree</span><span style="font-family: 宋体;">的项目之间的绑定</span></p><p class="MsoNormal"><span lang="EN-US"><span style="">  
</span>&lt;testlink&gt;home-&gt;Edit / Delete Product-&gt;BIND BTS PRODUCT</span></p><p class="MsoNormal"><span lang="EN-US">2.Testlink</span><span style="font-family: 宋体;">和</span><span lang="EN-US">Bugfree</span><span style="font-family: 宋体;">的用户之间的绑定</span></p><p class="MsoNormal"><span lang="EN-US"><span style="">  
</span>&lt;testlink&gt;User Administration-&gt;Modify Users-&gt;BIND BTS USER</span></p><p class="MsoNormal"><span lang="EN-US">3.</span><span style="font-family: 宋体;">执行用例如遇到</span><span lang="EN-US">Failed</span><span style="font-family: 宋体;">的时候保存即直接进入添加缺陷单页面</span></p><p class="MsoNormal"><span lang="EN-US"><span style="">   </span>&lt;testlink&gt;Execute-&gt;Results:Failed-&gt;Save
Results</span></p><p class="MsoNormal"><span lang="EN-US">4.</span><span style="font-family: 宋体;">在用例的页面里面列出了与此相关的缺陷单</span></p><p class="MsoNormal"><span lang="EN-US"><span style="">  
</span>&lt;testlink&gt;Execute</span><span style="font-family: 宋体;">画面如果有缺陷</span><span lang="EN-US">,</span><span style="font-family: 宋体;">则下方会列出并显示缺陷状态</span><span lang="EN-US">(</span><span style="font-family: 宋体;">该状态来自</span><span lang="EN-US">bugfree)</span></p><p class="MsoNormal"><span lang="EN-US">5.</span><span style="font-family: 宋体;">在</span><span lang="EN-US">Results</span><span style="font-family: 宋体;">统计中显示用例关联的</span><span lang="EN-US">bug</span></p><p class="MsoNormal"><span lang="EN-US"><span style="">  
</span>&lt;testlink&gt;Results-&gt;Total Bugs For Each Test Case</span></p><p class="MsoNormal"><span lang="EN-US">6.</span><span style="font-family: 宋体;">在</span><span lang="EN-US">bugfree</span><span style="font-family: 宋体;">中显示来自</span><span lang="EN-US">Testlink</span><span style="font-family: 宋体;">的缺陷单</span><span lang="EN-US">,</span><span style="font-family: 宋体;">支持链接功能</span></p><p class="MsoNormal"><span lang="EN-US"><span style="">  
</span>&lt;bugfree&gt;</span><span style="font-family: 宋体;">打开</span><span lang="EN-US">bug</span><span style="font-family: 宋体;">名以</span><span lang="EN-US">[FLT]</span><span style="font-family: 宋体;">开头的缺陷单</span><span lang="EN-US">,</span><span style="font-family: 宋体;">可以直接点击来自</span><span lang="EN-US">testlink</span><span style="font-family: 宋体;">的链接</span></p><p class="MsoNormal"><br /><span style="font-family: 宋体;"></span></p><p class="MsoNormal"><br /><span style="font-family: 宋体;"></span></p><p class="MsoNormal"><span style="font-family: 宋体;">对TestLink和Bugfree都不熟悉的可以参照</span></p><p class="MsoNormal"><br /><span style="font-family: 宋体;"></span></p><img src="http://www.blogjava.net/images/blogjava_net/jpeanut/bts/BTS%EF%BC%88BUGFREE+TESTLINK%EF%BC%89%20%E7%AE%80%E6%98%93%E6%93%8D%E4%BD%9C%E6%89%8B%E5%86%8C/bts.jpg" alt="bts.jpg" border="0" height="1350" width="950" /><p><span style="font-family: 宋体;"></span></p></div>
<img src ="http://www.blogjava.net/JPeanut/aggbug/82536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2006-11-21 14:45 <a href="http://www.blogjava.net/JPeanut/archive/2006/11/21/82536.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>无限关联下拉菜单JS</title><link>http://www.blogjava.net/JPeanut/archive/2006/11/21/82498.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Tue, 21 Nov 2006 04:51:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2006/11/21/82498.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/82498.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2006/11/21/82498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/82498.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/82498.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &lt;陈市明摘自：http://www.blogjava.net/JPeanut&gt;		在公司需求预测模块开发了无限级下拉菜单js版本下载										  1								使用注意一下几点:				&lt;				br				&gt;																		  2																		&...&nbsp;&nbsp;<a href='http://www.blogjava.net/JPeanut/archive/2006/11/21/82498.html'>阅读全文</a><img src ="http://www.blogjava.net/JPeanut/aggbug/82498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2006-11-21 12:51 <a href="http://www.blogjava.net/JPeanut/archive/2006/11/21/82498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>testlink和bugfree整合-bug缺陷单添加ubb的支持</title><link>http://www.blogjava.net/JPeanut/archive/2006/11/17/81868.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Fri, 17 Nov 2006 14:59:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2006/11/17/81868.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/81868.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2006/11/17/81868.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/81868.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/81868.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 默认的bugfree在buginfo的显示上不支持ubb的,此次针对 显示 关于testlink的地址的ubb连接&nbsp;&nbsp;<a href='http://www.blogjava.net/JPeanut/archive/2006/11/17/81868.html'>阅读全文</a><img src ="http://www.blogjava.net/JPeanut/aggbug/81868.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2006-11-17 22:59 <a href="http://www.blogjava.net/JPeanut/archive/2006/11/17/81868.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS的进度条</title><link>http://www.blogjava.net/JPeanut/archive/2006/11/17/81661.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Fri, 17 Nov 2006 01:06:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2006/11/17/81661.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/81661.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2006/11/17/81661.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/81661.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/81661.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 呵呵,无意中翻到2年前写的一段JS,感觉还是比较有用&nbsp;&nbsp;<a href='http://www.blogjava.net/JPeanut/archive/2006/11/17/81661.html'>阅读全文</a><img src ="http://www.blogjava.net/JPeanut/aggbug/81661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2006-11-17 09:06 <a href="http://www.blogjava.net/JPeanut/archive/2006/11/17/81661.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>testlink和bugfree整合-菜单整合</title><link>http://www.blogjava.net/JPeanut/archive/2006/11/16/81585.html</link><dc:creator>陈市明</dc:creator><author>陈市明</author><pubDate>Thu, 16 Nov 2006 10:35:00 GMT</pubDate><guid>http://www.blogjava.net/JPeanut/archive/2006/11/16/81585.html</guid><wfw:comment>http://www.blogjava.net/JPeanut/comments/81585.html</wfw:comment><comments>http://www.blogjava.net/JPeanut/archive/2006/11/16/81585.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/JPeanut/comments/commentRss/81585.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JPeanut/services/trackbacks/81585.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天testlink+bugfree终于能外网访问了,又来了修改的灵感,继续优化<br>此次是针对菜单,优化的结果使得bugfree系统看起来完全像是testlink的一个子模块了&nbsp;&nbsp;<a href='http://www.blogjava.net/JPeanut/archive/2006/11/16/81585.html'>阅读全文</a><img src ="http://www.blogjava.net/JPeanut/aggbug/81585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JPeanut/" target="_blank">陈市明</a> 2006-11-16 18:35 <a href="http://www.blogjava.net/JPeanut/archive/2006/11/16/81585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>