小试JQuery(续)

这个展开效果的html代码,是在Plone里面扒出来的。原来处理的更好,我这只是做了一个减化。原理只是通过更改dl的样式表来实现这个效果。希望这个HTML代码示例将帮助到任何试图做同样事情的人,因为它有时候是很困难的。当然,如果它不是你想要的,那么也请留下评论,并且请继续阅读以了解如何实现我所说的效果。

JQuery这个JS框架用起来比较舒服。你可以通过$(),这个来找到你的想的结点,支持元素,id,class,还可以使用XPath。toggle这个方法有两个参数,第一个是点击数为奇数时,执行的操作,第二个参数是点击数为偶数时,执行的操作。

CSS:

dl.collapsible {
border: 1px dashed #DD8200 !important;
margin: 1em 0 0 0;
padding: 0;
font-weight: 400;
}

dl.collapsible dt.collapsibleHeader {
display: block;
float: right;
background: White;
line-height: 1.2em;
position: relative;
top: -0.6em;
width: auto;
margin: 0 2em -0.6em 0;
padding: 0 0.5em;
color: #000;

}
dl.collapsible dd.collapsibleContent {
margin: 0;
padding: 0 1em;
clear: left;
}

dl.expandedInlineCollapsible dt.collapsibleHeader{
padding: 0 6px 0 22px;
background: White url(/skin/images/treeExpanded.gif) no-repeat 6px 50%;
cursor: pointer;
}

dl.collapsedInlineCollapsible dd.collapsibleContent{
display: none;
}
dl.collapsedInlineCollapsible {
border: none !important;
height: 1em;
width: auto;
display: inline;
}
dl.collapsedInlineCollapsible dt.collapsibleHeader {
position: static;
float: none;
margin: 0;
padding: 0 0 0 22px;
line-height: 1em;
background: transparent url(/skin/images/treeCollapsed.gif) no-repeat 6px 50%;
cursor: pointer;
display: inline;
}

IE会有点小Bug:

* html dl.collapsible dt.collapsibleHeader {
margin-right: 1em;
}

官方站点上有更多的文档www.jquery.com

小试JQuery

这几天再看JQuery,感觉是个非常优秀的JS框架。今天,通过她加入了一个展开的效果。代码如下:

$(document).ready(function(){
    $("dt.collapsibleHeader").toggle(function(){$("dl.inline").removeClass("collapsedInlineCollapsible").addClass("expandedInlineCollapsible");}, function(){$("dl.inline").removeClass("expandedInlineCollapsible").addClass("collapsedInlineCollapsible");});
});

 Innocent困了,明天再说

Windows上多个Zope版本共存的问题

在Windows上面安装Zope,一般在方法是安装官方提供的安装文件,但安装文件里面自带了一个Python,但这个Python并没有写入注册表,所以安装有些Python的包(比如:PIL)的时候会提供找不到路径。而且,有时Zope的版本对Python的版本也有要求。虽然,改注册表解决路径问题,但容易混淆。我一般都是这样的:

首先安装一个Python,当然你可以装个2.3或2.4,但不要改在一个目录里面。

然后安装Zope,这时默认的安装路径应该是:C:\zope\2.7,像这样。我们如果要装多个Zope版本时,也最好按这个规则,zope文件夹下面通过不同版本号的文件夹来区分不同的Zope版本。

一般在安装Zope时,会提示你是否创建一个实例,这个目录最好不要放在zope文件里面,因为这才是你真正运行时的目录。找个你喜欢的地方放着吧。(比如说:C:\Plone25)Laughing

 最后修改环境变量,进入你实例的目录(比如说:C:\Plone25\bin)打开runzope.bat这个文件,找到@set PYTHON这行并将值改成那个单独安装Python的路径,默认这里会找Zope下的Python。

这样做的好处是当安装某些Python的包时,就默认安装到Python的目录下,而不是Zope里面的Python。Zope2.9和Zope2.10就可以都使用那些包了。

如果你感觉不妥,也可以说说你的想法Smile

Plone3.0的第一个Alpha版释出

24号,Plone官方网站放出了Plone3.0的第一个Alpha版。哈哈,终于开始了Laughing

Plone3.0必需要在Zope2.10.X上面才能跑,这样向Zope3平滑过度又进了一步。虽然,这个Alpha版和最终版本还有很大的区别,但我还是跑进来体验了一下。不知道是心里因素还是什么别的,感觉Zope2.10速度挺快的。

很直观的改变有两点:

  1. 文件类型有了类型版本管理样的功能,代替了原来的历史。具体表示在添加或编辑文档时,可以添加一个版本号。在ZMI里面看到了个diff的工具,我想应该可以比较。
  2. portlet的管理得到了强化,可以直接在页面上面方便的管理。不过好些功能还有点问题。 

整个底层也发生了很多变化:CMF2.11,Zope2.10.X已经整合了Five1.5。 

新技术的引入给Plone带来了更大的活力,Plone3.0真是让人非常期待啊! 

RSS的输出

最近想做点关于RSS的应用,不过在一开始就碰到了问题。RSS到底应该是全文输出,还是部分输出。其实这个问题很矛盾,全文输出对订阅的用户来说,非常有利。部分输出对网站有利。

像某些门户要的就是点击和PV,所以RSS也只输出部分,如果想看完就必须去某个网站。

部分输出也是没有关系,如果没有点击和PV,真不知道那些网站怎么活。

你是想让你的订阅者更方便?还是想让你的订阅者更麻烦?Laughing

Plone3.0将支持OpenID

原来在看Plone大会上的文档时,看到OpenID这个东西,当初不知道是什么,以为是Plone取了一个奇怪的命名而已。今天,无意中在Google了一下,原来这也是个有趣的东西。Smile

在网上看了几篇文章,这里一篇文章讲得很清晰。从功能上看,感觉跟SSO差不多,都是解决多个系统的authentication问题。但OpenID不局限于某个网站,这是跟SSO最大的区别,也是OpenID的最大特点,登陆只需要一个URL就行了。看了几篇文章国内的少数网站准备支持这种服务,不过就前景来说,现在并不怎么明朗。

Plone3.0会支持这项服务,这样对Plone是非常有好处的。由于Plone本身是一个非常强大的CMS,在某些方面技术非常前卫。完整的工作流和权限管理,支持各种浏览器,全文检索,及非常好的Cache技术。但有些应用也并不适合用Plone来做,所以,异构系统就是非常有必要的,异构系统之间必须要解决好authentication的问题。OpenID将好是一个最优的方案。

哈哈,让我们来关注Plone3.0吧!Laughing

Plone获得2006CMS大会的第三名

在2006的CMS大会上,Plone拿到了第三名的成绩。在五个候选名单中,其余四个都是基于PHP的,最终joomla取得了第一名。在结果出来的之前,通过google的趋势查看这五个候选名单,joomla以非常大的优势,完全不是一个数量级的。至于joomla何方神圣,自己Google一个。

简单看了一下joomla提供的基本功能,有些东西Plone自身根本就没有,必须安装一些Products才能实现,而且有些实现并不怎么好,再加上Zope平台本身就非常复杂。想简单的改下皮肤也并不是那么容易。虽然Plone本身提供很强大的功能,但在易用方面确实还不太好。

Plone3.0也许是个值得期待的版本,终于开始和Zope3亲密接触了。在最新的Plone大会上的消息来看,Plone3.0使协同工作更方便了。Laughing

终于移植过来了

现在这在程序已经是基于Zend Framework构建的了。虽然Zend Framework现在还处于0.2版,但基本功能也够用了,让我熟悉一下基于这种MVC框架的开发工作。

还有许多细节没搞好,刚才看IE尽然颜色有点问题。

其它的,明天再整吧。Laughing

通过RewriteRouter写出漂亮的URL

通过RewriteRouter写出漂亮的URL

在使用ZF中,是通过URL来确定使用的控制器和动作,如:/blog/view/bid/1这样的URL,如果参数多的话,应该是非常难看的。而且暴露了一些东西,反正我是不喜欢看到这样的URL的。不过幸运的是,ZF提供RewriteRouter类,通过这个我们可以写出自己喜欢的URL,而且非常灵活。
这一切都只要在index.php里添加几句代码就可以实现,也就是那个入口文件。

首先创建一个RewriteRouter实例
$router = new Zend_Controller_RewriteRouter()

然后设置路由的基本路径,这一步是必须的。
$router->setRewriteBase('/')

开始了,最核心的地方添加路由

$router->addRoute($name,Zend_Controller_Router_Route_Interface $route);

第一个参数$name是路由表的参数,由保持路由表的唯一性。重名并不会报错。第二个参数是一个Zend_Controller_Router_Route对象。在这里需要注意的一个,ZF0.2ZF0.15这个方法有点区别,ZF0.2直接就是一个Zend_Controller_Router_Route,而在ZF0.15中,是要创建Zend_Controller_Router_Route的参数。这里例子以ZF0.2为主。

Zend_Controller_Router_Route($route,$defaults = array(), $reqs = array())
可以接受三个参数,只有第一个是必须的。$routeURL的映射关系,$defaults指定相应的控制器和动作及参数的默认值,$reqs参数的约束条件。如:

newZend_Controller_Router_Route('/blog/:bid', array('controller' => 'blog','action' => 'view'), array('bid' => '\d+'))

/blog/:bid代表的URL的映射关系,:bid表示映射的参数,参数必须是已:开始,array('controller' => 'blog','action' => 'view')用于指定使用的控制器及动作,当然你也可以在这里设定bid的默认值’bid’ =>1, array('bid' => '\d+')指定bid必需是一个数字,这里的参数是正则表达式。

现在,我们把他们写在一起
$router->addRoute('blog', new Zend_Controller_Router_Route('/blog/:bid', array('controller' => 'blog', 'action' => 'view'), array('bid' => '\d+')));

这样直接/blog/1就能达到/blog/view/bid/1的效果。

最后不是要忘了$controller->setRouter($router);

IE华丽的新装傲游2.0

今天,发布了傲游2.0的第一个beta版。我试用了一下,说说感想。

真的,挺不错的新装。 现在只有1.6M的大小,UI上面整体都比较漂亮的,还是有些细节需要打磨,使用中最让我受不了的是,进入的https的页面时,地址栏变成黄色了,本来是起到警告的作用,但这颜色太…

就浏览速度来说,让我感到有些惊讶,非常的快,不过由于内核的落后,在某些方面还是差了点,比如说:平滑滚动。

而且在内存占用方面也做比较好。如果Vista的内存要求在1G左右的话,那100M还算什么呢。

不知道装了IE7后,是怎么样的。

估计,又有fans们开始叫骂了。 在这里我只想说IE就像人的皮肤,而傲游2.0则是一款名牌服装。