diff --git a/oss/joomla/trunk/CHANGELOG.php b/oss/joomla/trunk/CHANGELOG.php
index 42738aa4..cf430fc4 100644
--- a/oss/joomla/trunk/CHANGELOG.php
+++ b/oss/joomla/trunk/CHANGELOG.php
@@ -1,6 +1,6 @@
Language fix or change
- -> Removed
! -> Note
+
+-------------------- 1.5.19 Stable Release [15-July-2010] ------------------
+
+15-July-2010 Mark Dexter
+# [#21419] Incorrect Joomla! Community Magazine address
+^ [#21421] *Credits.php update for 1.5.19
+
+14-July-2010 Ian MacLennan
+ + [#21404] New installation language bs-BA
+ + [#20984] New installation language ta-IN
+
+14-July-2010 Louis Landry
+ + [#21416] Mootools 1.2.4 Upgrade Plugin
+
+02-June-2010 Sam Moffat
+ ! Line ending fix for some XML/HTML files
+
-------------------- 1.5.18 Stable Release [27-May-2010] ------------------
25-May-2010 Ian MacLennan
diff --git a/oss/joomla/trunk/CREDITS.php b/oss/joomla/trunk/CREDITS.php
index 398dd353..32e20630 100644
--- a/oss/joomla/trunk/CREDITS.php
+++ b/oss/joomla/trunk/CREDITS.php
@@ -1,6 +1,6 @@
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 16 Jul 2010 15:38:57 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:36:"Joomla 1.6 Beta 5 现已提供下载";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://forums.hawebs.net/computer/viewthread.php?tid=1163";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:408:"据 Joomla! 官方网站 2010年0712的消息,Joomla 1.6 beta5版本于今天发布了。
+
+下载地址
+http://joomlacode.org/gf/project/joomla/frs/?action=FrsReleaseBrowse&frs_package_id=5314[/url]
+
+这个版本修正了 beta4 中的65个问题。这个版本仍然是开发中的版本,不建议用于正 ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 16 Jul 2010 15:23:47 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:2;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:17:"Joomla FTP 备份";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://forums.hawebs.net/computer/viewthread.php?tid=1045";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:451:"Joomla 有一个备份插件名为 JoomlaPack,目前这个插件已经被更名为 "Akeeba Backup"。
+
+你可以用安装插件的方式给 Joomla 进行备份。
+
+至于「是否可以用 FTP 将整个 程序文件夹夹全部备份下来?」答案是可以的。
+
+需要注意的是,Joomla! 和所有的 PHP 程序是一样的,分为PHP ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 12 Jul 2010 04:28:50 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:3;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:58:"Joomla 构建的网站,常常遇到需要迁移的问题";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://forums.hawebs.net/computer/viewthread.php?tid=1044";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:453:"Joomla 网站迁移与 SEF
+
+Joomla 构建的网站,常常遇到需要迁移的问题。
+
+有下面的问题,具体描述如下:
+
+最近因为旧站空间开始不够用,所以另外找了一个新的网站空间,需要进行网站的备份和迁移。
+
+网站迁移的过程简单说明就是,利用FileZilla FTP 把joomla 根资料夹的档案全 ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 12 Jul 2010 01:08:31 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:4;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:40:"Joomla 聚合新闻中不能显示中文";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://forums.hawebs.net/computer/viewthread.php?tid=1037";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:355:"在安装了 Joomla 的默认数据库后,不管怎么修改语言文件,聚合新闻那里还是显示为英文。
+
+这是因为默认数据库的安装时,代码为英文。
+
+需要在实际使用的时候将代码英文修改为中文。
+
+1575[/attach] ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 11 Jul 2010 03:56:21 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:5;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:34:"Joomla 显示聚合新闻时出错";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://forums.hawebs.net/computer/viewthread.php?tid=1036";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:406:"Joomla 在聚合新闻显示的时候出现 【订阅数据加载错误】 的提示。
+
+这是因为该聚合新闻的地址在后台显示不正确。
+
+1572[/attach]
+
+可以登录后台,选择组件的聚合新闻。
+
+1573[/attach]
+
+重新修改出现错误的聚合新闻地址就可以了。
+
+1574[/attach] ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 11 Jul 2010 03:28:08 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:6;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:29:"Joomla! 具有的技术特性";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://forums.hawebs.net/computer/viewthread.php?tid=1035";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:461:"*开放源代码
+
+*具有大型且健全的使用及开发社群
+
+*有针对注册用户提供简单的文件审核等级
+
+*线上说明文件
+
+*网页快取机制,可以提升忙碌网站的效能
+
+*资源管理功能
+
+*广告管理(广告看板功能…其它)
+
+*媒体(图片、档桉)上传与管理功能
+
+*内容显示排程功能
+
+*内容联合供稿 ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 11 Jul 2010 03:03:37 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:7;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:22:"Joomla 名称的由来";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://forums.hawebs.net/computer/viewthread.php?tid=1034";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:231:"这个名称来自非洲斯瓦希里语的方言"Jumla",意思是"一起"(All together)或"as a whole"。
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 11 Jul 2010 03:00:41 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:8;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:23:"Joomla! 的优秀特点";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://forums.hawebs.net/computer/viewthread.php?tid=1033";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:465:"当然每个知名的开源码程式都会有其吸引人的优点,反之当然会有缺点。以下整理出在网路上来自使用者对Joomla!程式的喜好重点:
+
+1. 先进的网站技术的运用:
+Joomla!应用了非常多的网站进步的新技术,像是「网站快取技术」可以加速网站的反应与效能。「RSS新闻联播与新闻读取」 ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 11 Jul 2010 02:58:57 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:9;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:74:"Joomla 扩展使用的社区组件 JomSocial 將有可能是用 GPL 授权";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://forums.hawebs.net/computer/viewthread.php?tid=1032";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:435:"JomSocial 官方网站2010年05月12日消息,JomSocial的下一个版本将会使用GPL的授权规定。
+
+目前JomSocial的购买方式为订阅式购买,这个改变当然希望有更多人能来使用JomSocial,也加强JomSocial未来的发展。目前JomSocial的售价是从99元美金起。
+
+在Facebook爆红后,社群相关 ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 11 Jul 2010 02:53:21 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:10;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:31:"Joomla! 扩展项目突破 5000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://forums.hawebs.net/computer/viewthread.php?tid=1031";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:445:"根据 Joomla 官方博客的消息,2010年5月,JED(Joomla Extensions Directory,Joomla!扩展目录)网站是所有用Joomla!的人都一定会去找扩充网站突破5千项目关卡,是一个值得分享的时间点。
+
+在数年前,JED中并不设定收录的相关套件的授权限制,有许多商业扩充套件的开发者,都 ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 11 Jul 2010 02:42:00 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:11;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:36:"微软携 WinCache 助力 Joomla CMS";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"http://forums.hawebs.net/computer/viewthread.php?tid=928";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:408:"2010年4月27日,Open Source Matters(OSM)宣布:微软公司(Microsoft)正式签署了 JCA (Joomla! Contributor Agreement)协议 , 成为 Joomla! CMS 的代码贡献者(contributor)之一。这个合作的直接结果是:用户将在 Joomla 1.5.16 版本中体验到与微软 Internet Information ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 06 Jul 2010 20:30:36 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:12;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:31:"Joomla weblinks 组件的使用";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"http://forums.hawebs.net/computer/viewthread.php?tid=927";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:449:"Weblinks 主要在 Joomla 中用于管理扩展链接。
+
+在后台的组件下,你可以找到友情链接,这个部分的内容就用于管理你系统中的链接的。
+
+1515[/attach]
+
+通过上面的入口,可以看到网站现在正在使用的链接情况。
+
+可以使用点击数来查看这个链接被点击的次数。
+
+1516[/attach]
+
+如 ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 06 Jul 2010 19:50:36 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:13;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:25:"为什么要选用 Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"http://forums.hawebs.net/computer/viewthread.php?tid=904";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:451:"市场上有大量的 CMS 系统可以供大家选择,我们为什么要选用 Joomla 呢?同时,我们也注意到 Joomla 已经被大量的个人、企业、非营利组织、知名公司、政府机构所采用。
+
+主要原因是 Joomla 非常易于使用,如果你有基本的 Web 知识或者其他 CMS 系统的知识,只要你用过 Joomla ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 05 Jul 2010 00:12:44 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:14;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:44:"Joomla 内容管理系统 (CMS)的弱点";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"http://forums.hawebs.net/computer/viewthread.php?tid=903";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:472:"有这样一个问题,为什么不是所有的人都将应用部署到内容管理系统上来呢?
+
+其实有下面几个点是需要考虑的。
+
+1.最主要的应该是使用习惯了。当人们已经习惯于一件事物的时候,是很难促使人们做出改变的。不管这几个事物是多么的古老,人们依然很难接受新的事物和挑战。尤其是 ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 04 Jul 2010 23:45:04 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:15;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:31:"内容管理系统 (CMS) 简介";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"http://forums.hawebs.net/computer/viewthread.php?tid=892";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:452:"当互联网技术第一次出现的时候,创建网站,甚至是最简单的网页都需要一些专业的计算机知识和学习 HTML 语言。从这时候开始各种各样的软件被开发出来而供计算机专业人员进行使用,像我们常用的 Adobe Dreamweaver 和 Microsofte FrontPage。这些工具的诞生是创建和维护网站变 ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 04 Jul 2010 07:02:56 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:16;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:44:"Mambo 的历史与 Joomla 的简要介绍";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"http://forums.hawebs.net/computer/viewthread.php?tid=891";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:423:"尽管 Joomla 于 2005 年首次发行了 1.0 版。但是,Joomla 的来源可以追溯到 2001 年一个名叫 Mambo 的开源内容管理系统 (CMS) 的首次发行。Mambo 是作为 Miro Corporation of Australia 内部的 CMS 产品而被开发出来的。在 2001 年的 4月 Mambo 被首次发布到开源社区。从这 ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 04 Jul 2010 05:36:35 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:17;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:34:"Joomla 默认安装界面的截图";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"http://forums.hawebs.net/computer/viewthread.php?tid=890";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:214:"下面的界面是 Joomla 默认模板的安装界面。
+
+虽然有点简陋,但是也显得比较清爽。
+
+1511[/attach]
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:10:"honeymoose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 04 Jul 2010 05:34:54 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:18;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:36:"Joomla 1.6 Beta 4 现已提供下载";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"http://forums.hawebs.net/computer/viewthread.php?tid=880";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:413:"Joomla 项目小组近期宣布, Joomla 1.6 beta 4 目前已经开始提供下载了。
+
+下载链接如下:
+
+http://joomlacode.org/gf/project/joomla/frs/?action=FrsReleaseBrowse&frs_package_id=5300[/url]
+
+请注意:
+Beta 版本不适用于任何生产系统,只供评估和测试使用。请不要在你当 ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:9:"huyucheng";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sat, 03 Jul 2010 02:47:59 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:19;a:6:{s:4:"data";s:47:"
+
+
+
+
+
+
+ ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:38:"新版的 Joomla 社区杂志已发布";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"http://forums.hawebs.net/computer/viewthread.php?tid=879";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:439:"在众多 Joomla 社区志愿者的数月艰苦劳动下,今天,我们自豪的宣布,新的 Joomla 社区杂志已经发布了。
+
+你可以通过单击新杂志的链接来翻阅 JCM。
+
+这个链接在 Joomla 社区上能找到,或者通过直接单击下面的链接
+
+http://magazine.joomla.org[/url]
+
+Joomla 社区杂志将会每月 ...
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:6:"Joomla";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"author";a:1:{i:0;a:5:{s:4:"data";s:9:"huyucheng";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sat, 03 Jul 2010 02:37:06 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}s:27:"http://www.w3.org/2005/Atom";a:1:{s:4:"link";a:2:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:3:{s:3:"rel";s:4:"self";s:4:"type";s:19:"application/rss+xml";s:4:"href";s:38:"http://feeds.feedburner.com/Oss-Joomla";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:2:{s:3:"rel";s:3:"hub";s:4:"href";s:32:"http://pubsubhubbub.appspot.com/";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:42:"http://rssnamespace.org/feedburner/ext/1.0";a:1:{s:4:"info";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:1:{s:3:"uri";s:10:"oss-joomla";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}}}}}}s:4:"type";i:128;s:7:"headers";a:10:{s:13:"last-modified";s:29:"Fri, 16 Jul 2010 18:51:02 GMT";s:4:"etag";s:27:"W7olqcjzUgBs7W2JJH304UT/+jo";s:12:"content-type";s:23:"text/xml; charset=UTF-8";s:4:"date";s:29:"Fri, 16 Jul 2010 18:51:02 GMT";s:7:"expires";s:29:"Fri, 16 Jul 2010 18:51:02 GMT";s:13:"cache-control";s:18:"private, max-age=0";s:22:"x-content-type-options";s:7:"nosniff";s:16:"x-xss-protection";s:13:"1; mode=block";s:6:"server";s:3:"GSE";s:17:"transfer-encoding";s:7:"chunked";}s:5:"build";s:14:"20090627192103";}
\ No newline at end of file
diff --git a/oss/joomla/trunk/administrator/components/com_cpanel/admin.cpanel.php b/oss/joomla/trunk/administrator/components/com_cpanel/admin.cpanel.php
index 2ea58144..a295866b 100644
--- a/oss/joomla/trunk/administrator/components/com_cpanel/admin.cpanel.php
+++ b/oss/joomla/trunk/administrator/components/com_cpanel/admin.cpanel.php
@@ -1,6 +1,6 @@
getUserState('com_cpanel.mtupgrade.checked')) {
+
+ // If it is not enabled, let's check to see if it is even installed.
+ $db = &JFactory::getDBO();
+ $db->setQuery(
+ 'SELECT id' .
+ ' FROM #__plugins' .
+ ' WHERE folder = "system"' .
+ ' AND element = "mtupgrade"'
+ );
+ $exists = (bool) $db->loadResult();
+
+ // If it is not installed, install it as disabled and raise a notice.
+ if (!$exists) {
+ $plg = & JTable::getInstance('plugin');
+ $plg->name = 'System - Mootools Upgrade';
+ $plg->ordering = 0;
+ $plg->folder = 'system';
+ $plg->iscore = 0;
+ $plg->access = 0;
+ $plg->client_id = 0;
+ $plg->element = 'mtupgrade';
+ $plg->published = 0;
+
+ // If unable to store the plugin, raise a notice.
+ if (!$plg->store()) {
+ JError::raiseNotice(500, $plg->getError() /*JText::sprintf('Unable to auto-install the Mootools Upgrade plugin.', $plg->getError())*/);
+ }
+ // Show a message stating that the plugin is now available.
+ else {
+ //$app->enqueueMessage(JText::_('Mootools Upgrade plugin available.'));
+ }
+ }
+
+ // Set the mtupgrade plugin checked flag for the session.
+ $app->setUserState('com_cpanel.mtupgrade.checked', true);
+ }
+
+
+ }
+
//set the component specific template file in the request
JRequest::setVar('tmpl', 'cpanel');
HTML_cpanel::display();
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.banners.html b/oss/joomla/trunk/administrator/help/en-GB/screen.banners.html
index c3e4452a..75e266bb 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.banners.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.banners.html
@@ -1,14 +1,14 @@
-
-
-
-Banner Manager
-
-
-
-
-
-Banner Manager
+
+
+
+Banner Manager
+
+
+
+
+
+Banner Manager
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.categories.html b/oss/joomla/trunk/administrator/help/en-GB/screen.categories.html
index e6e217be..bd5dfff7 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.categories.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.categories.html
@@ -1,14 +1,14 @@
-
-
-
-Category Manager
-
-
-
-
-
-Category Manager
+
+
+
+Category Manager
+
+
+
+
+
+Category Manager
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.checkin.html b/oss/joomla/trunk/administrator/help/en-GB/screen.checkin.html
index f4485218..56c9831b 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.checkin.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.checkin.html
@@ -1,14 +1,14 @@
-
-
-
-Global Check-in
-
-
-
-
-
-Global Check-in
+
+
+
+Global Check-in
+
+
+
+
+
+Global Check-in
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.config.html b/oss/joomla/trunk/administrator/help/en-GB/screen.config.html
index 0be0217a..f0fdb876 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.config.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.config.html
@@ -1,14 +1,14 @@
-
-
-
-Global Configuration
-
-
-
-
-
-Global Configuration
+
+
+
+Global Configuration
+
+
+
+
+
+Global Configuration
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.contactmanager.html b/oss/joomla/trunk/administrator/help/en-GB/screen.contactmanager.html
index 493ac339..c7f78198 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.contactmanager.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.contactmanager.html
@@ -1,14 +1,14 @@
-
-
-
-Contact Manager
-
-
-
-
-
-Contact Manager
-The local copy of this help file is no longer maintained. Please use the online version.
-
+
+
+
+Contact Manager
+
+
+
+
+
+Contact Manager
+The local copy of this help file is no longer maintained. Please use the online version.
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.content.html b/oss/joomla/trunk/administrator/help/en-GB/screen.content.html
index 002dfdf6..1889c364 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.content.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.content.html
@@ -1,14 +1,14 @@
-
-
-
-Article Manager
-
-
-
-
-
-Article Manager
+
+
+
+Article Manager
+
+
+
+
+
+Article Manager
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.cpanel.html b/oss/joomla/trunk/administrator/help/en-GB/screen.cpanel.html
index d6dd3e45..9bc4274f 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.cpanel.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.cpanel.html
@@ -1,14 +1,14 @@
-
-
-
-Control Panel
-
-
-
-
-
-Control Panel
+
+
+
+Control Panel
+
+
+
+
+
+Control Panel
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.frontpage.html b/oss/joomla/trunk/administrator/help/en-GB/screen.frontpage.html
index ec5f5b31..d49186cd 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.frontpage.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.frontpage.html
@@ -1,14 +1,14 @@
-
-
-
-Frontpage Manager
-
-
-
-
-
-Frontpage Manager
+
+
+
+Frontpage Manager
+
+
+
+
+
+Frontpage Manager
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.languages.html b/oss/joomla/trunk/administrator/help/en-GB/screen.languages.html
index 2685b202..995715bd 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.languages.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.languages.html
@@ -1,14 +1,14 @@
-
-
-
-Language Manager
-
-
-
-
-
-Language Manager
+
+
+
+Language Manager
+
+
+
+
+
+Language Manager
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.mediamanager.html b/oss/joomla/trunk/administrator/help/en-GB/screen.mediamanager.html
index 928cfb16..5d25cf52 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.mediamanager.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.mediamanager.html
@@ -1,14 +1,14 @@
-
-
-
-Media Manager
-
-
-
-
-
-Media Manager
+
+
+
+Media Manager
+
+
+
+
+
+Media Manager
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.menumanager.html b/oss/joomla/trunk/administrator/help/en-GB/screen.menumanager.html
index b9534689..77bbf225 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.menumanager.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.menumanager.html
@@ -1,14 +1,14 @@
-
-
-
-Menu Manager
-
-
-
-
-
-Menu Manager
+
+
+
+Menu Manager
+
+
+
+
+
+Menu Manager
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.modules.edit.html b/oss/joomla/trunk/administrator/help/en-GB/screen.modules.edit.html
index 65d544b6..384f8af3 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.modules.edit.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.modules.edit.html
@@ -1,14 +1,14 @@
-
-
-
-Module - Edit
-
-
-
-
-
-Module - Edit
-The local copy of this help file is no longer maintained. Please use the online version.
-
+
+
+
+Module - Edit
+
+
+
+
+
+Module - Edit
+The local copy of this help file is no longer maintained. Please use the online version.
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.modules.html b/oss/joomla/trunk/administrator/help/en-GB/screen.modules.html
index 41046f80..ab4a09f2 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.modules.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.modules.html
@@ -1,14 +1,14 @@
-
-
-
-Module Manager
-
-
-
-
-
-Module Manager
-The local copy of this help file is no longer maintained. Please use the online version.
-
+
+
+
+Module Manager
+
+
+
+
+
+Module Manager
+The local copy of this help file is no longer maintained. Please use the online version.
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.modules.new.html b/oss/joomla/trunk/administrator/help/en-GB/screen.modules.new.html
index 49349c8c..fad3b881 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.modules.new.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.modules.new.html
@@ -1,14 +1,14 @@
-
-
-
-Module - New
-
-
-
-
-
-Module - New
-The local copy of this help file is no longer maintained. Please use the online version.
-
+
+
+
+Module - New
+
+
+
+
+
+Module - New
+The local copy of this help file is no longer maintained. Please use the online version.
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.newsfeeds.html b/oss/joomla/trunk/administrator/help/en-GB/screen.newsfeeds.html
index 0e8b5dc9..eb2a3b5b 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.newsfeeds.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.newsfeeds.html
@@ -1,14 +1,14 @@
-
-
-
-News Feeds Manager
-
-
-
-
-
-News Feeds Manager
+
+
+
+News Feeds Manager
+
+
+
+
+
+News Feeds Manager
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.plugins.html b/oss/joomla/trunk/administrator/help/en-GB/screen.plugins.html
index 1763e904..ef5c7f54 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.plugins.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.plugins.html
@@ -1,14 +1,14 @@
-
-
-
-Plugin Manager
-
-
-
-
-
-Plugin Manager
-The local copy of this help file is no longer maintained. Please use the online version.
-
+
+
+
+Plugin Manager
+
+
+
+
+
+Plugin Manager
+The local copy of this help file is no longer maintained. Please use the online version.
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.polls.html b/oss/joomla/trunk/administrator/help/en-GB/screen.polls.html
index d89712e3..bc5e7e30 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.polls.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.polls.html
@@ -1,14 +1,14 @@
-
-
-
-Poll Manager
-
-
-
-
-
-Poll Manager
+
+
+
+Poll Manager
+
+
+
+
+
+Poll Manager
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.sections.html b/oss/joomla/trunk/administrator/help/en-GB/screen.sections.html
index 9c1cfae6..8d45d5e7 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.sections.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.sections.html
@@ -1,14 +1,14 @@
-
-
-
-Section Manager
-
-
-
-
-
-Section Manager
+
+
+
+Section Manager
+
+
+
+
+
+Section Manager
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.stats.searches.html b/oss/joomla/trunk/administrator/help/en-GB/screen.stats.searches.html
index 2a846337..fb4c6fbb 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.stats.searches.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.stats.searches.html
@@ -1,14 +1,14 @@
-
-
-
-Search Statistics
-
-
-
-
-
-Search Statistics
+
+
+
+Search Statistics
+
+
+
+
+
+Search Statistics
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.system.info.html b/oss/joomla/trunk/administrator/help/en-GB/screen.system.info.html
index bfc17c09..54abd984 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.system.info.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.system.info.html
@@ -1,14 +1,14 @@
-
-
-
-System Information
-
-
-
-
-
-System Information
+
+
+
+System Information
+
+
+
+
+
+System Information
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.templates.html b/oss/joomla/trunk/administrator/help/en-GB/screen.templates.html
index e0b3f2cc..f7f52965 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.templates.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.templates.html
@@ -1,14 +1,14 @@
-
-
-
-Template Manager
-
-
-
-
-
-Template Manager
+
+
+
+Template Manager
+
+
+
+
+
+Template Manager
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.trashmanager.html b/oss/joomla/trunk/administrator/help/en-GB/screen.trashmanager.html
index 293e44f1..e9ab7cbf 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.trashmanager.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.trashmanager.html
@@ -1,14 +1,14 @@
-
-
-
-Trash Manager
-
-
-
-
-
-Trash Manager
+
+
+
+Trash Manager
+
+
+
+
+
+Trash Manager
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.users.edit.html b/oss/joomla/trunk/administrator/help/en-GB/screen.users.edit.html
index d1ee6fed..7bdecc09 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.users.edit.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.users.edit.html
@@ -1,14 +1,14 @@
-
-
-
-User Manager - Add or Edit Users
-
-
-
-
-
-User Manager - Add or Edit Users
+
+
+
+User Manager - Add or Edit Users
+
+
+
+
+
+User Manager - Add or Edit Users
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.users.massmail.html b/oss/joomla/trunk/administrator/help/en-GB/screen.users.massmail.html
index 5a7e67d6..a025ef89 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.users.massmail.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.users.massmail.html
@@ -1,14 +1,14 @@
-
-
-
-Mass Mail Users
-
-
-
-
-
-Mass Mail Users
+
+
+
+Mass Mail Users
+
+
+
+
+
+Mass Mail Users
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.weblink.edit.html b/oss/joomla/trunk/administrator/help/en-GB/screen.weblink.edit.html
index 4383c274..4335ed29 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.weblink.edit.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.weblink.edit.html
@@ -1,14 +1,14 @@
-
-
-
-Web Link Manager : New / Edit
-
-
-
-
-
-Web Link Manager : New / Edit
+
+
+
+Web Link Manager : New / Edit
+
+
+
+
+
+Web Link Manager : New / Edit
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/administrator/help/en-GB/screen.weblink.html b/oss/joomla/trunk/administrator/help/en-GB/screen.weblink.html
index 1dab762e..3257c42c 100644
--- a/oss/joomla/trunk/administrator/help/en-GB/screen.weblink.html
+++ b/oss/joomla/trunk/administrator/help/en-GB/screen.weblink.html
@@ -1,14 +1,14 @@
-
-
-
-Web Link Manager
-
-
-
-
-
-Web Link Manager
+
+
+
+Web Link Manager
+
+
+
+
+
+Web Link Manager
The local copy of this help file is no longer maintained. Please use the online version.
-
+
diff --git a/oss/joomla/trunk/components/com_contact/metadata.xml b/oss/joomla/trunk/components/com_contact/metadata.xml
index a88555c6..588de837 100644
--- a/oss/joomla/trunk/components/com_contact/metadata.xml
+++ b/oss/joomla/trunk/components/com_contact/metadata.xml
@@ -1,4 +1,4 @@
-
+
-
\ No newline at end of file
+
diff --git a/oss/joomla/trunk/components/com_contact/views/contact/tmpl/default.xml b/oss/joomla/trunk/components/com_contact/views/contact/tmpl/default.xml
index edc44511..247c887d 100644
--- a/oss/joomla/trunk/components/com_contact/views/contact/tmpl/default.xml
+++ b/oss/joomla/trunk/components/com_contact/views/contact/tmpl/default.xml
@@ -1,5 +1,5 @@
-
+
@@ -23,4 +23,4 @@
-
\ No newline at end of file
+
diff --git a/oss/joomla/trunk/components/com_content/views/article/tmpl/default.xml b/oss/joomla/trunk/components/com_content/views/article/tmpl/default.xml
index 668854f2..94886993 100644
--- a/oss/joomla/trunk/components/com_content/views/article/tmpl/default.xml
+++ b/oss/joomla/trunk/components/com_content/views/article/tmpl/default.xml
@@ -14,4 +14,4 @@
-
\ No newline at end of file
+
diff --git a/oss/joomla/trunk/components/com_content/views/article/tmpl/form.xml b/oss/joomla/trunk/components/com_content/views/article/tmpl/form.xml
index 1323ee29..522e0d97 100644
--- a/oss/joomla/trunk/components/com_content/views/article/tmpl/form.xml
+++ b/oss/joomla/trunk/components/com_content/views/article/tmpl/form.xml
@@ -11,4 +11,4 @@
-
\ No newline at end of file
+
diff --git a/oss/joomla/trunk/components/com_user/views/login/tmpl/default.xml b/oss/joomla/trunk/components/com_user/views/login/tmpl/default.xml
index 4fe5dbb4..7c6c7539 100644
--- a/oss/joomla/trunk/components/com_user/views/login/tmpl/default.xml
+++ b/oss/joomla/trunk/components/com_user/views/login/tmpl/default.xml
@@ -52,4 +52,4 @@
-
\ No newline at end of file
+
diff --git a/oss/joomla/trunk/components/com_weblinks/views/weblink/tmpl/form.xml b/oss/joomla/trunk/components/com_weblinks/views/weblink/tmpl/form.xml
index 3708b9b2..95d319f4 100644
--- a/oss/joomla/trunk/components/com_weblinks/views/weblink/tmpl/form.xml
+++ b/oss/joomla/trunk/components/com_weblinks/views/weblink/tmpl/form.xml
@@ -11,4 +11,4 @@
-
\ No newline at end of file
+
diff --git a/oss/joomla/trunk/libraries/joomla/version.php b/oss/joomla/trunk/libraries/joomla/version.php
index b10ed3bb..6c22bd3b 100644
--- a/oss/joomla/trunk/libraries/joomla/version.php
+++ b/oss/joomla/trunk/libraries/joomla/version.php
@@ -1,6 +1,6 @@
- * @copyright Author
- */
-var SqueezeBox = {
-
- presets: {
- size: {x: 600, y: 450},
- sizeLoading: {x: 200, y: 150},
- marginInner: {x: 20, y: 20},
- marginImage: {x: 150, y: 200},
- handler: false,
- adopt: null,
- closeWithOverlay: true,
- zIndex: 65555,
- overlayOpacity: 0.7,
- classWindow: '',
- classOverlay: '',
- disableFx: false,
- onOpen: Class.empty,
- onClose: Class.empty,
- onUpdate: Class.empty,
- onResize: Class.empty,
- onMove: Class.empty,
- onShow: Class.empty,
- onHide: Class.empty,
- fxOverlayDuration: 250,
- fxResizeDuration: 750,
- fxContentDuration: 250,
- ajaxOptions: {}
- },
-
- initialize: function(options) {
- if (this.options) return this;
- this.presets = $merge(this.presets, options)
- this.setOptions(this.presets);
- this.build();
- this.listeners = {
- window: this.reposition.bind(this, [null]),
- close: this.close.bind(this),
- key: this.onkeypress.bind(this)};
- this.isOpen = this.isLoading = false;
- this.window.close = this.listeners.close;
- return this;
- },
-
- build: function() {
- this.overlay = new Element('div', {
- id: 'sbox-overlay',
- styles: {
- display: 'none',
- zIndex: this.options.zIndex
- }
- });
- this.content = new Element('div', {
- id: 'sbox-content'
- });
- this.btnClose = new Element('a', {
- id: 'sbox-btn-close',
- href: '#'
- });
- this.window = new Element('div', {
- id: 'sbox-window',
- styles: {
- display: 'none',
- zIndex: this.options.zIndex + 2
- }
- }).adopt(this.btnClose, this.content);
-
- if (!window.ie6) {
- this.overlay.setStyles({
- position: 'fixed',
- top: 0,
- left: 0
- });
- this.window.setStyles({
- position: 'fixed',
- top: '50%',
- left: '50%'
- });
- } else {
- this.overlay.style.setExpression('marginTop', 'document.documentElement.scrollTop + "px"');
- this.window.style.setExpression('marginTop', '0 - parseInt(this.offsetHeight / 2) + document.documentElement.scrollTop + "px"');
-
- this.overlay.setStyles({
- position: 'absolute',
- top: '0%',
- left: '0%'
- //,marginTop: "expression(document.documentElement.scrollTop + 'px')"
- });
-
- this.window.setStyles({
- position: 'absolute',
- top: '0%',
- left: '0%'
- //,marginTop: "(expression(0 - parseInt(this.offsetHeight / 2) + document.documentElement.scrollTop + 'px')"
- });
- }
-
- $(document.body).adopt(this.overlay, this.window);
-
- this.fx = {
- overlay: this.overlay.effect('opacity', {
- duration: this.options.fxOverlayDuration,
- wait: false}).set(0),
- window: this.window.effects({
- duration: this.options.fxResizeDuration,
- wait: false}),
- content: this.content.effect('opacity', {
- duration: this.options.fxContentDuration,
- wait: false}).set(0)
- };
- },
-
- addClick: function(el) {
- return el.addEvent('click', function() {
- if (this.fromElement(el)) return false;
- }.bind(this));
- },
-
- fromElement: function(el, options) {
- this.initialize();
- this.element = $(el);
- if (this.element && this.element.rel) options = $merge(options || {}, Json.evaluate(this.element.rel));
- this.setOptions(this.presets, options);
- this.assignOptions();
- this.url = (this.element ? (this.options.url || this.element.href) : el) || '';
-
- if (this.options.handler) {
- var handler = this.options.handler;
- return this.setContent(handler, this.parsers[handler].call(this, true));
- }
- var res = false;
- for (var key in this.parsers) {
- if ((res = this.parsers[key].call(this))) return this.setContent(key, res);
- }
- return this;
- },
-
- assignOptions: function() {
- this.overlay.setProperty('class', this.options.classOverlay);
- this.window.setProperty('class', this.options.classWindow);
- },
-
- close: function(e) {
- if (e) new Event(e).stop();
- if (!this.isOpen) return this;
- this.fx.overlay.start(0).chain(this.toggleOverlay.bind(this));
- this.window.setStyle('display', 'none');
- this.trashImage();
- this.toggleListeners();
- this.isOpen = null;
- this.fireEvent('onClose', [this.content]).removeEvents();
- this.options = {};
- this.setOptions(this.presets).callChain();
- return this;
- },
-
- onError: function() {
- if (this.image) this.trashImage();
- this.setContent('Error during loading');
- },
-
- trashImage: function() {
- if (this.image) this.image = this.image.onload = this.image.onerror = this.image.onabort = null;
- },
-
- setContent: function(handler, content) {
- this.content.setProperty('class', 'sbox-content-' + handler);
- this.applyTimer = this.applyContent.delay(this.fx.overlay.options.duration, this, [this.handlers[handler].call(this, content)]);
- if (this.overlay.opacity) return this;
- this.toggleOverlay(true);
- this.fx.overlay.start(this.options.overlayOpacity);
- this.reposition();
- return this;
- },
-
- applyContent: function(content, size) {
- this.applyTimer = $clear(this.applyTimer);
- this.hideContent();
- if (!content) this.toggleLoading(true);
- else {
- if (this.isLoading) this.toggleLoading(false);
- this.fireEvent('onUpdate', [this.content], 20);
- }
- this.content.empty()[['string', 'array', false].contains($type(content)) ? 'setHTML' : 'adopt'](content || '');
- this.callChain();
- if (!this.isOpen) {
- this.toggleListeners(true);
- this.resize(size, true);
- this.isOpen = true;
- this.fireEvent('onOpen', [this.content]);
- } else this.resize(size);
- },
-
- resize: function(size, instantly) {
- var sizes = window.getSize();
- this.size = $merge(this.isLoading ? this.options.sizeLoading : this.options.size, size);
- var to = {
- width: this.size.x,
- height: this.size.y,
- marginLeft: - this.size.x / 2,
- marginTop: - this.size.y / 2
- //left: (sizes.scroll.x + (sizes.size.x - this.size.x - this.options.marginInner.x) / 2).toInt(),
- //top: (sizes.scroll.y + (sizes.size.y - this.size.y - this.options.marginInner.y) / 2).toInt()
- };
- $clear(this.showTimer || null);
- this.hideContent();
- if (!instantly) this.fx.window.start(to).chain(this.showContent.bind(this));
- else {
- this.window.setStyles(to).setStyle('display', '');
- this.showTimer = this.showContent.delay(50, this);
- }
- this.reposition(sizes);
- },
-
- toggleListeners: function(state) {
- var task = state ? 'addEvent' : 'removeEvent';
- this.btnClose[task]('click', this.listeners.close);
- if (this.options.closeWithOverlay) this.overlay[task]('click', this.listeners.close);
- document[task]('keydown', this.listeners.key);
- window[task]('resize', this.listeners.window);
- window[task]('scroll', this.listeners.window);
- },
-
- toggleLoading: function(state) {
- this.isLoading = state;
- this.window[state ? 'addClass' : 'removeClass']('sbox-loading');
- if (state) this.fireEvent('onLoading', [this.window]);
- },
-
- toggleOverlay: function(state) {
- this.overlay.setStyle('display', state ? '' : 'none');
- $(document.body)[state ? 'addClass' : 'removeClass']('body-overlayed');
- },
-
- showContent: function() {
- if (this.content.opacity) this.fireEvent('onShow', [this.window]);
- this.fx.content.start(1);
- },
-
- hideContent: function() {
- if (!this.content.opacity) this.fireEvent('onHide', [this.window]);
- this.fx.content.stop().set(0);
- },
-
- onkeypress: function(e) {
- switch (e.key) {
- case 'esc':
- case 'x':
- this.close();
- break;
- }
- },
-
- reposition: function(sizes) {
- sizes = sizes || window.getSize();
- this.overlay.setStyles({
- //'left': sizes.scroll.x, 'top': sizes.scroll.y,
- width: sizes.size.x,
- height: sizes.size.y
- });
- /*
- this.window.setStyles({
- left: (sizes.scroll.x + (sizes.size.x - this.window.offsetWidth) / 2).toInt(),
- top: (sizes.scroll.y + (sizes.size.y - this.window.offsetHeight) / 2).toInt()
- });
- */
- this.fireEvent('onMove', [this.overlay, this.window, sizes]);
- },
-
- removeEvents: function(type){
- if (!this.$events) return this;
- if (!type) this.$events = null;
- else if (this.$events[type]) this.$events[type] = null;
- return this;
- },
-
- parsers: {
- 'image': function(preset) {
- return (preset || this.url.test(/\.(jpg|jpeg|png|gif|bmp)$/i)) ? this.url : false;
- },
- 'adopt': function(preset) {
- if ($(this.options.adopt)) return $(this.options.adopt);
- if (preset || ($(this.element) && !this.element.parentNode)) return $(this.element);
- var bits = this.url.match(/#([\w-]+)$/);
- return bits ? $(bits[1]) : false;
- },
- 'url': function(preset) {
- return (preset || (this.url && !this.url.test(/^javascript:/i))) ? this.url: false;
- },
- 'iframe': function(preset) {
- return (preset || this.url) ? this.url: false;
- },
- 'string': function(preset) {
- return true;
- }
- },
-
- handlers: {
- 'image': function(url) {
- this.image = new Image();
- var events = {
- loaded: function() {
- var win = {x: window.getWidth() - this.options.marginImage.x, y: window.getHeight() - this.options.marginImage.y};
- var size = {x: this.image.width, y: this.image.height};
- for (var i = 0; i < 2; i++)
- if (size.x > win.x) {
- size.y *= win.x / size.x;
- size.x = win.x;
- } else if (size.y > win.y) {
- size.x *= win.y / size.y;
- size.y = win.y;
- }
- size = {x: parseInt(size.x), y: parseInt(size.y)};
- if (window.webkit419) this.image = new Element('img', {'src': this.image.src});
- else $(this.image);
- this.image.setProperties({
- 'width': size.x,
- 'height': size.y});
- this.applyContent(this.image, size);
- }.bind(this),
- failed: this.onError.bind(this)
- };
- (function() {
- this.src = url;
- }).delay(10, this.image);
- this.image.onload = events.loaded;
- this.image.onerror = this.image.onabort = events.failed;
- },
- 'adopt': function(el) {
- return el.clone();
- },
- 'url': function(url) {
- this.ajax = new Ajax(url, this.options.ajaxOptions);
- this.ajax.addEvent('onSuccess', function(resp) {
- this.applyContent(resp);
- this.ajax = null;
- }.bind(this));
- this.ajax.addEvent('onFailure', this.onError.bind(this));
- this.ajax.request.delay(10, this.ajax);
- },
- 'iframe': function(url) {
- return new Element('iframe', {
- 'src': url,
- 'frameBorder': 0,
- 'width': this.options.size.x,
- 'height': this.options.size.y
- });
- },
- 'string': function(str) {
- return str;
- }
- },
-
- extend: $extend
-};
-
-SqueezeBox.extend(Events.prototype);
-SqueezeBox.extend(Options.prototype);
-SqueezeBox.extend(Chain.prototype);
\ No newline at end of file
+/**
+ * SqueezeBox - Expandable Lightbox
+ *
+ * Allows to open various content as modal,
+ * centered and animated box.
+ *
+ * Inspired by
+ * ... Lokesh Dhakar - The original Lightbox v2
+ * ... Cody Lindley - ThickBox
+ *
+ * @version 1.0rc1
+ *
+ * @license MIT-style license
+ * @author Harald Kirschner
+ * @copyright Author
+ */
+var SqueezeBox = {
+
+ presets: {
+ size: {x: 600, y: 450},
+ sizeLoading: {x: 200, y: 150},
+ marginInner: {x: 20, y: 20},
+ marginImage: {x: 150, y: 200},
+ handler: false,
+ adopt: null,
+ closeWithOverlay: true,
+ zIndex: 65555,
+ overlayOpacity: 0.7,
+ classWindow: '',
+ classOverlay: '',
+ disableFx: false,
+ onOpen: Class.empty,
+ onClose: Class.empty,
+ onUpdate: Class.empty,
+ onResize: Class.empty,
+ onMove: Class.empty,
+ onShow: Class.empty,
+ onHide: Class.empty,
+ fxOverlayDuration: 250,
+ fxResizeDuration: 750,
+ fxContentDuration: 250,
+ ajaxOptions: {}
+ },
+
+ initialize: function(options) {
+ if (this.options) return this;
+ this.presets = $merge(this.presets, options)
+ this.setOptions(this.presets);
+ this.build();
+ this.listeners = {
+ window: this.reposition.bind(this, [null]),
+ close: this.close.bind(this),
+ key: this.onkeypress.bind(this)};
+ this.isOpen = this.isLoading = false;
+ this.window.close = this.listeners.close;
+ return this;
+ },
+
+ build: function() {
+ this.overlay = new Element('div', {
+ id: 'sbox-overlay',
+ styles: {
+ display: 'none',
+ zIndex: this.options.zIndex
+ }
+ });
+ this.content = new Element('div', {
+ id: 'sbox-content'
+ });
+ this.btnClose = new Element('a', {
+ id: 'sbox-btn-close',
+ href: '#'
+ });
+ this.window = new Element('div', {
+ id: 'sbox-window',
+ styles: {
+ display: 'none',
+ zIndex: this.options.zIndex + 2
+ }
+ }).adopt(this.btnClose, this.content);
+
+ if (!window.ie6) {
+ this.overlay.setStyles({
+ position: 'fixed',
+ top: 0,
+ left: 0
+ });
+ this.window.setStyles({
+ position: 'fixed',
+ top: '50%',
+ left: '50%'
+ });
+ } else {
+ this.overlay.style.setExpression('marginTop', 'document.documentElement.scrollTop + "px"');
+ this.window.style.setExpression('marginTop', '0 - parseInt(this.offsetHeight / 2) + document.documentElement.scrollTop + "px"');
+
+ this.overlay.setStyles({
+ position: 'absolute',
+ top: '0%',
+ left: '0%'
+ //,marginTop: "expression(document.documentElement.scrollTop + 'px')"
+ });
+
+ this.window.setStyles({
+ position: 'absolute',
+ top: '0%',
+ left: '0%'
+ //,marginTop: "(expression(0 - parseInt(this.offsetHeight / 2) + document.documentElement.scrollTop + 'px')"
+ });
+ }
+
+ $(document.body).adopt(this.overlay, this.window);
+
+ this.fx = {
+ overlay: this.overlay.effect('opacity', {
+ duration: this.options.fxOverlayDuration,
+ wait: false}).set(0),
+ window: this.window.effects({
+ duration: this.options.fxResizeDuration,
+ wait: false}),
+ content: this.content.effect('opacity', {
+ duration: this.options.fxContentDuration,
+ wait: false}).set(0)
+ };
+ },
+
+ addClick: function(el) {
+ return el.addEvent('click', function() {
+ if (this.fromElement(el)) return false;
+ }.bind(this));
+ },
+
+ fromElement: function(el, options) {
+ this.initialize();
+ this.element = $(el);
+ if (this.element && this.element.rel) options = $merge(options || {}, Json.evaluate(this.element.rel));
+ this.setOptions(this.presets, options);
+ this.assignOptions();
+ this.url = (this.element ? (this.options.url || this.element.href) : el) || '';
+
+ if (this.options.handler) {
+ var handler = this.options.handler;
+ return this.setContent(handler, this.parsers[handler].call(this, true));
+ }
+ var res = false;
+ for (var key in this.parsers) {
+ if ((res = this.parsers[key].call(this))) return this.setContent(key, res);
+ }
+ return this;
+ },
+
+ assignOptions: function() {
+ this.overlay.setProperty('class', this.options.classOverlay);
+ this.window.setProperty('class', this.options.classWindow);
+ },
+
+ close: function(e) {
+ if (e) new Event(e).stop();
+ if (!this.isOpen) return this;
+ this.fx.overlay.start(0).chain(this.toggleOverlay.bind(this));
+ this.window.setStyle('display', 'none');
+ this.trashImage();
+ this.toggleListeners();
+ this.isOpen = null;
+ this.fireEvent('onClose', [this.content]).removeEvents();
+ this.options = {};
+ this.setOptions(this.presets).callChain();
+ return this;
+ },
+
+ onError: function() {
+ if (this.image) this.trashImage();
+ this.setContent('Error during loading');
+ },
+
+ trashImage: function() {
+ if (this.image) this.image = this.image.onload = this.image.onerror = this.image.onabort = null;
+ },
+
+ setContent: function(handler, content) {
+ this.content.setProperty('class', 'sbox-content-' + handler);
+ this.applyTimer = this.applyContent.delay(this.fx.overlay.options.duration, this, [this.handlers[handler].call(this, content)]);
+ if (this.overlay.opacity) return this;
+ this.toggleOverlay(true);
+ this.fx.overlay.start(this.options.overlayOpacity);
+ this.reposition();
+ return this;
+ },
+
+ applyContent: function(content, size) {
+ this.applyTimer = $clear(this.applyTimer);
+ this.hideContent();
+ if (!content) this.toggleLoading(true);
+ else {
+ if (this.isLoading) this.toggleLoading(false);
+ this.fireEvent('onUpdate', [this.content], 20);
+ }
+ this.content.empty()[['string', 'array', false].contains($type(content)) ? 'setHTML' : 'adopt'](content || '');
+ this.callChain();
+ if (!this.isOpen) {
+ this.toggleListeners(true);
+ this.resize(size, true);
+ this.isOpen = true;
+ this.fireEvent('onOpen', [this.content]);
+ } else this.resize(size);
+ },
+
+ resize: function(size, instantly) {
+ var sizes = window.getSize();
+ this.size = $merge(this.isLoading ? this.options.sizeLoading : this.options.size, size);
+ var to = {
+ width: this.size.x,
+ height: this.size.y,
+ marginLeft: - this.size.x / 2,
+ marginTop: - this.size.y / 2
+ //left: (sizes.scroll.x + (sizes.size.x - this.size.x - this.options.marginInner.x) / 2).toInt(),
+ //top: (sizes.scroll.y + (sizes.size.y - this.size.y - this.options.marginInner.y) / 2).toInt()
+ };
+ $clear(this.showTimer || null);
+ this.hideContent();
+ if (!instantly) this.fx.window.start(to).chain(this.showContent.bind(this));
+ else {
+ this.window.setStyles(to).setStyle('display', '');
+ this.showTimer = this.showContent.delay(50, this);
+ }
+ this.reposition(sizes);
+ },
+
+ toggleListeners: function(state) {
+ var task = state ? 'addEvent' : 'removeEvent';
+ this.btnClose[task]('click', this.listeners.close);
+ if (this.options.closeWithOverlay) this.overlay[task]('click', this.listeners.close);
+ document[task]('keydown', this.listeners.key);
+ window[task]('resize', this.listeners.window);
+ window[task]('scroll', this.listeners.window);
+ },
+
+ toggleLoading: function(state) {
+ this.isLoading = state;
+ this.window[state ? 'addClass' : 'removeClass']('sbox-loading');
+ if (state) this.fireEvent('onLoading', [this.window]);
+ },
+
+ toggleOverlay: function(state) {
+ this.overlay.setStyle('display', state ? '' : 'none');
+ $(document.body)[state ? 'addClass' : 'removeClass']('body-overlayed');
+ },
+
+ showContent: function() {
+ if (this.content.opacity) this.fireEvent('onShow', [this.window]);
+ this.fx.content.start(1);
+ },
+
+ hideContent: function() {
+ if (!this.content.opacity) this.fireEvent('onHide', [this.window]);
+ this.fx.content.stop().set(0);
+ },
+
+ onkeypress: function(e) {
+ switch (e.key) {
+ case 'esc':
+ case 'x':
+ this.close();
+ break;
+ }
+ },
+
+ reposition: function(sizes) {
+ sizes = sizes || window.getSize();
+ this.overlay.setStyles({
+ //'left': sizes.scroll.x, 'top': sizes.scroll.y,
+ width: sizes.size.x,
+ height: sizes.size.y
+ });
+ /*
+ this.window.setStyles({
+ left: (sizes.scroll.x + (sizes.size.x - this.window.offsetWidth) / 2).toInt(),
+ top: (sizes.scroll.y + (sizes.size.y - this.window.offsetHeight) / 2).toInt()
+ });
+ */
+ this.fireEvent('onMove', [this.overlay, this.window, sizes]);
+ },
+
+ removeEvents: function(type){
+ if (!this.$events) return this;
+ if (!type) this.$events = null;
+ else if (this.$events[type]) this.$events[type] = null;
+ return this;
+ },
+
+ parsers: {
+ 'image': function(preset) {
+ return (preset || this.url.test(/\.(jpg|jpeg|png|gif|bmp)$/i)) ? this.url : false;
+ },
+ 'adopt': function(preset) {
+ if ($(this.options.adopt)) return $(this.options.adopt);
+ if (preset || ($(this.element) && !this.element.parentNode)) return $(this.element);
+ var bits = this.url.match(/#([\w-]+)$/);
+ return bits ? $(bits[1]) : false;
+ },
+ 'url': function(preset) {
+ return (preset || (this.url && !this.url.test(/^javascript:/i))) ? this.url: false;
+ },
+ 'iframe': function(preset) {
+ return (preset || this.url) ? this.url: false;
+ },
+ 'string': function(preset) {
+ return true;
+ }
+ },
+
+ handlers: {
+ 'image': function(url) {
+ this.image = new Image();
+ var events = {
+ loaded: function() {
+ var win = {x: window.getWidth() - this.options.marginImage.x, y: window.getHeight() - this.options.marginImage.y};
+ var size = {x: this.image.width, y: this.image.height};
+ for (var i = 0; i < 2; i++)
+ if (size.x > win.x) {
+ size.y *= win.x / size.x;
+ size.x = win.x;
+ } else if (size.y > win.y) {
+ size.x *= win.y / size.y;
+ size.y = win.y;
+ }
+ size = {x: parseInt(size.x), y: parseInt(size.y)};
+ if (window.webkit419) this.image = new Element('img', {'src': this.image.src});
+ else $(this.image);
+ this.image.setProperties({
+ 'width': size.x,
+ 'height': size.y});
+ this.applyContent(this.image, size);
+ }.bind(this),
+ failed: this.onError.bind(this)
+ };
+ (function() {
+ this.src = url;
+ }).delay(10, this.image);
+ this.image.onload = events.loaded;
+ this.image.onerror = this.image.onabort = events.failed;
+ },
+ 'adopt': function(el) {
+ return el.clone();
+ },
+ 'url': function(url) {
+ this.ajax = new Ajax(url, this.options.ajaxOptions);
+ this.ajax.addEvent('onSuccess', function(resp) {
+ this.applyContent(resp);
+ this.ajax = null;
+ }.bind(this));
+ this.ajax.addEvent('onFailure', this.onError.bind(this));
+ this.ajax.request.delay(10, this.ajax);
+ },
+ 'iframe': function(url) {
+ return new Element('iframe', {
+ 'src': url,
+ 'frameBorder': 0,
+ 'width': this.options.size.x,
+ 'height': this.options.size.y
+ });
+ },
+ 'string': function(str) {
+ return str;
+ }
+ },
+
+ extend: $extend
+};
+
+SqueezeBox.extend(SqueezeBox, Events.prototype);
+SqueezeBox.extend(SqueezeBox, Options.prototype);
+SqueezeBox.extend(SqueezeBox, Chain.prototype);
\ No newline at end of file
diff --git a/oss/joomla/trunk/modules/mod_sections/mod_sections.xml b/oss/joomla/trunk/modules/mod_sections/mod_sections.xml
index a77935de..fe39e9b9 100644
--- a/oss/joomla/trunk/modules/mod_sections/mod_sections.xml
+++ b/oss/joomla/trunk/modules/mod_sections/mod_sections.xml
@@ -1,27 +1,27 @@
-
-
- Sections
- Joomla! Project
- July 2006
- Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
- http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
- admin@joomla.org
- www.joomla.org
- 1.5.0
- DESCSECTIONS
-
- mod_sections.php
-
-
-
-
+
+
+ Sections
+ Joomla! Project
+ July 2006
+ Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
+ http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
+ admin@joomla.org
+ www.joomla.org
+ 1.5.0
+ DESCSECTIONS
+
+ mod_sections.php
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/oss/joomla/trunk/plugins/authentication/openid.xml b/oss/joomla/trunk/plugins/authentication/openid.xml
index 6bbd7ed4..1a32a1f5 100644
--- a/oss/joomla/trunk/plugins/authentication/openid.xml
+++ b/oss/joomla/trunk/plugins/authentication/openid.xml
@@ -1,17 +1,17 @@
-
-
- Authentication - OpenID
- Joomla! Project
- February 2006
- Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
- http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
- admin@joomla.org
- www.joomla.org
- 1.5
- Handles user authentication with an OpenID (Requires PHP5)
-
- openid.php
-
+
+
+ Authentication - OpenID
+ Joomla! Project
+ February 2006
+ Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
+ http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
+ admin@joomla.org
+ www.joomla.org
+ 1.5
+ Handles user authentication with an OpenID (Requires PHP5)
+
+ openid.php
+
@@ -20,12 +20,12 @@
-
-
+
+
-
+
diff --git a/oss/joomla/trunk/plugins/system/mtupgrade.php b/oss/joomla/trunk/plugins/system/mtupgrade.php
new file mode 100644
index 00000000..9cd80fb1
--- /dev/null
+++ b/oss/joomla/trunk/plugins/system/mtupgrade.php
@@ -0,0 +1,50 @@
+
+
+ System - Mootools Upgrade
+ Joomla! Project
+ June 2010
+ Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
+ http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
+ admin@joomla.org
+ www.joomla.org
+ 1.5
+ Mootools 1.2.4
+
+ mtupgrade.php
+ mtupgrade
+
+
+
+
diff --git a/oss/joomla/trunk/plugins/system/mtupgrade/behavior.php b/oss/joomla/trunk/plugins/system/mtupgrade/behavior.php
new file mode 100644
index 00000000..622d599b
--- /dev/null
+++ b/oss/joomla/trunk/plugins/system/mtupgrade/behavior.php
@@ -0,0 +1,604 @@
+getValue('config.debug');
+ }
+
+ /*
+ * Note: Konqueror browser check.
+ * - If they fix thier issue with compressed javascript we can remove this.
+ */
+ $kcheck = isset($_SERVER['HTTP_USER_AGENT']) ? strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'konqueror') : null;
+
+ // If the debugging flag is set or the browser is Konqueror use the uncompressed file.
+ if ($debug || $kcheck) {
+ JHTML::script('mootools-uncompressed.js', 'plugins/system/mtupgrade/', false);
+ }
+ else {
+ JHTML::script('mootools.js', 'plugins/system/mtupgrade/', false);
+ }
+
+ // Set the MooTools version string in the application object.
+ JFactory::getApplication()->set('MooToolsVersion', '1.2.4 +Compat');
+
+ // Ensure the files aren't loaded more than once.
+ $loaded = true;
+ }
+
+ /**
+ * Method to load the system caption behavior.
+ *
+ * @return void
+ *
+ * @since 1.5.19
+ * @static
+ */
+ function caption()
+ {
+ JHTML::script('caption.js');
+ }
+
+ /**
+ * Method to load the system form validation behavior.
+ *
+ * @return void
+ *
+ * @since 1.5.19
+ * @static
+ */
+ function formvalidation()
+ {
+ JHTML::script('validate.js');
+ }
+
+ /**
+ * Method to load the system container switcher behavior.
+ *
+ * @return void
+ *
+ * @since 1.5.19
+ * @static
+ */
+ function switcher()
+ {
+ JHTML::script('switcher.js');
+ }
+
+ /**
+ * Method to load the system combobox behavior.
+ *
+ * @return void
+ *
+ * @since 1.5.19
+ * @static
+ */
+ function combobox()
+ {
+ JHTML::script('combobox.js');
+ }
+
+ /**
+ * Method to load the system tooltips behavior. Because the tooltips class and interface has
+ * changed between Mootools 1.2 and 1.1, we are including our 1.2 version and making it to work
+ * in the same way as the old one.
+ *
+ * @param string $selector The CSS selector for elements to apply the behavior.
+ * @param array $params The array of options to use for the behavior.
+ *
+ * @return void
+ *
+ * @since 1.5.19
+ * @static
+ */
+ function tooltip($selector='.hasTip', $params = array())
+ {
+ // Setup the static array of tooltip instance options.
+ static $instances;
+ if (!isset($instances)) {
+ $instances = array();
+ }
+
+ // Generate the behavior/option signature and check to see if it has already been loaded.
+ $sig = md5(serialize(array($selector,$params)));
+ if (!empty($instances[$sig])) {
+ return;
+ }
+
+ // Load the Mootools framework.
+ JHTMLBehavior::mootools();
+
+ // Setup the options object.
+ $opt['maxTitleChars'] = (isset($params['maxTitleChars']) && ($params['maxTitleChars'])) ? (int)$params['maxTitleChars'] : 50 ;
+ $opt['showDelay'] = (isset($params['showDelay'])) ? (int)$params['showDelay'] : null;
+ $opt['hideDelay'] = (isset($params['hideDelay'])) ? (int)$params['hideDelay'] : null;
+ $opt['className'] = (isset($params['className'])) ? $params['className'] : null;
+ $opt['fixed'] = (isset($params['fixed']) && ($params['fixed'])) ? '\\true' : '\\false';
+
+ // Optional event handler methods.
+ $opt['onShow'] = (isset($params['onShow'])) ? '\\'.$params['onShow'] : null;
+ $opt['onHide'] = (isset($params['onHide'])) ? '\\'.$params['onHide'] : null;
+
+ // Offsets needs an array in the format: array('x'=>20, 'y'=>30).
+ $opt['offsets'] = (isset($params['offsets']) && (is_array($params['offsets']))) ? $params['offsets'] : null;
+
+ // Build the script.
+ $script = array(
+ 'window.addEvent("domready", function() {',
+ ' var JTooltips = new Tips($$("'.$selector.'"), '.JHTMLBehavior::_getJSObject($opt).');',
+ '});'
+ );
+
+ // Load the script into the document head.
+ JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
+
+ // Ensure the same instance isn't loaded more than once.
+ $instances[$sig] = true;
+ }
+
+ /**
+ * Method to load the system modal behavior.
+ *
+ * @param string $selector The CSS selector for elements to apply the behavior.
+ * @param array $params The array of options to use for the behavior.
+ *
+ * @return void
+ *
+ * @since 1.5.19
+ * @static
+ */
+ function modal($selector='a.modal', $params = array())
+ {
+ // Setup the static array of modal instance options.
+ static $instances;
+ if (!isset($instances)) {
+ $instances = array();
+ }
+
+ // Generate the behavior/option signature and check to see if it has already been loaded.
+ $sig = md5(serialize(array($selector,$params)));
+ if (!empty($instances[$sig])) {
+ return;
+ }
+
+ // Load the behavior and stylesheet files into the document head.
+ JHTML::script('modal.js');
+ JHTML::stylesheet('modal.css');
+
+ // Setup the options object.
+ $opt['ajaxOptions'] = (isset($params['ajaxOptions']) && (is_array($params['ajaxOptions']))) ? $params['ajaxOptions'] : null;
+ $opt['size'] = (isset($params['size']) && (is_array($params['size']))) ? $params['size'] : null;
+
+ // Optional event handler methods.
+ $opt['onOpen'] = (isset($params['onOpen'])) ? $params['onOpen'] : null;
+ $opt['onClose'] = (isset($params['onClose'])) ? $params['onClose'] : null;
+ $opt['onUpdate'] = (isset($params['onUpdate'])) ? $params['onUpdate'] : null;
+ $opt['onResize'] = (isset($params['onResize'])) ? $params['onResize'] : null;
+ $opt['onMove'] = (isset($params['onMove'])) ? $params['onMove'] : null;
+ $opt['onShow'] = (isset($params['onShow'])) ? $params['onShow'] : null;
+ $opt['onHide'] = (isset($params['onHide'])) ? $params['onHide'] : null;
+
+ // Build the script.
+ $script = array(
+ 'window.addEvent("domready", function() {',
+ ' SqueezeBox.initialize('.JHTMLBehavior::_getJSObject($opt).');',
+ ' $$("'.$selector.'").each(function(el) {',
+ ' el.addEvent("click", function(e) {',
+ ' new Event(e).stop();',
+ ' SqueezeBox.fromElement(el);',
+ ' });',
+ ' });',
+ '});'
+ );
+
+ // Load the script into the document head.
+ JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
+
+ // Ensure the same instance isn't loaded more than once.
+ $instances[$sig] = true;
+ }
+
+ /**
+ * Method to load the system file uploader behavior.
+ *
+ * @param string $id The DOM node id for the element to apply the behavior.
+ * @param array $params The array of options to use for the behavior.
+ *
+ * @return void
+ *
+ * @since 1.5.19
+ * @static
+ */
+ function uploader($id='file-upload', $params = array())
+ {
+ // Setup the static array of behavior instances.
+ static $instances;
+ if (!isset($instances)) {
+ $instances = array();
+ }
+
+ // Check to see if it has already been loaded.
+ if (!empty($instances[$id])) {
+ return;
+ }
+
+ // Load the behavior files into the document head.
+ JHTML::script('swf.js');
+ JHTML::script('uploader.js');
+
+ // Setup the options object.
+ $opt['url'] = (isset($params['targetURL'])) ? $params['targetURL'] : null ;
+ $opt['swf'] = (isset($params['swf'])) ? $params['swf'] : JURI::root(true).'/media/system/swf/uploader.swf';
+ $opt['multiple'] = (isset($params['multiple']) && !($params['multiple'])) ? '\\false' : '\\true';
+ $opt['queued'] = (isset($params['queued']) && !($params['queued'])) ? '\\false' : '\\true';
+ $opt['queueList'] = (isset($params['queueList'])) ? $params['queueList'] : 'upload-queue';
+ $opt['instantStart'] = (isset($params['instantStart']) && ($params['instantStart'])) ? '\\true' : '\\false';
+ $opt['allowDuplicates'] = (isset($params['allowDuplicates']) && !($params['allowDuplicates'])) ? '\\false' : '\\true';
+ $opt['limitSize'] = (isset($params['limitSize']) && ($params['limitSize'])) ? (int)$params['limitSize'] : null;
+ $opt['limitFiles'] = (isset($params['limitFiles']) && ($params['limitFiles'])) ? (int)$params['limitFiles'] : null;
+ $opt['optionFxDuration'] = (isset($params['optionFxDuration'])) ? (int)$params['optionFxDuration'] : null;
+ $opt['container'] = (isset($params['container'])) ? '\\$('.$params['container'].')' : '\\$(\''.$id.'\').getParent()';
+
+ // JSON object with ('description': 'extension') pairs. eg. (default: Images (*.jpg; *.jpeg; *.gif; *.png));
+ $opt['types'] = (isset($params['types'])) ?'\\'.$params['types'] : '\\{\'All Files (*.*)\': \'*.*\'}';
+
+ // Optional functions.
+ $opt['createReplacement'] = (isset($params['createReplacement'])) ? '\\'.$params['createReplacement'] : null;
+ $opt['onComplete'] = (isset($params['onComplete'])) ? '\\'.$params['onComplete'] : null;
+ $opt['onAllComplete'] = (isset($params['onAllComplete'])) ? '\\'.$params['onAllComplete'] : null;
+
+ // Build the script.
+ $script = array(
+ 'sBrowseCaption="'.JText::_('Browse Files', true).'";',
+ 'sRemoveToolTip="'.JText::_('Remove from queue', true).'";',
+ '',
+ 'window.addEvent("load", function() {',
+ ' var Uploader = new FancyUpload($("'.$id.'"), '.JHTMLBehavior::_getJSObject($opt).');',
+ ' $("upload-clear").adopt(new Element("input", {type: "button", events: { click: Uploader.clearList.bind(Uploader, [false])}, value: "'.JText::_('Clear Completed').'" }));',
+ '});'
+ );
+
+ // Load the script into the document head.
+ JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
+
+ // Ensure the same instance isn't loaded more than once.
+ $instances[$id] = true;
+ }
+
+ /**
+ * Method to load the system tree behavior.
+ *
+ * @param string $id The DOM node id for the element to apply the behavior.
+ * @param array $params The array of options to use for the behavior.
+ * @param array $root The array of root node options.
+ *
+ * @return void
+ *
+ * @since 1.5.19
+ * @static
+ */
+ function tree($id, $params = array(), $root = array())
+ {
+ // Setup the static array of behavior instances.
+ static $instances;
+ if (!isset($instances)) {
+ $instances = array();
+ }
+
+ // Check to see if it has already been loaded.
+ if (!empty($instances[$id])) {
+ return;
+ }
+
+ // Load the behavior and stylesheet files into the document head.
+ JHTML::script('mootree.js');
+ JHTML::stylesheet('mootree.css');
+
+ // Setup the options object.
+ $opt['div'] = (isset($params['div'])) ? $params['div'] : $id.'_tree';
+ $opt['mode'] = (isset($params['mode'])) ? $params['mode'] : 'folders';
+ $opt['grid'] = (isset($params['grid'])) ? '\\'.$params['grid'] : '\\true';
+ $opt['theme'] = (isset($params['theme'])) ? $params['theme'] : JURI::root(true).'/media/system/images/mootree.gif';
+
+ // Optional event handler methods.
+ $opt['onExpand'] = (isset($params['onExpand'])) ? '\\'.$params['onExpand'] : null;
+ $opt['onSelect'] = (isset($params['onSelect'])) ? '\\'.$params['onSelect'] : null;
+ $opt['onClick'] = (isset($params['onClick'])) ? '\\'.$params['onClick'] : '\\function(node){ window.open(node.data.url, $chk(node.data.target) ? node.data.target : \'_self\'); }';
+
+ // Setup the root node options.
+ $rt['text'] = (isset($root['text'])) ? $root['text'] : 'Root';
+ $rt['id'] = (isset($root['id'])) ? $root['id'] : null;
+ $rt['color'] = (isset($root['color'])) ? $root['color'] : null;
+ $rt['open'] = (isset($root['open'])) ? '\\'.$root['open'] : '\\true';
+ $rt['icon'] = (isset($root['icon'])) ? $root['icon'] : null;
+ $rt['openicon'] = (isset($root['openicon'])) ? $root['openicon'] : null;
+ $rt['data'] = (isset($root['data'])) ? $root['data'] : null;
+
+ // Get the optional name of the tree.
+ $name = (isset($params['treeName'])) ? $params['treeName'] : '';
+
+ // Build the script.
+ $script = array(
+ 'window.addEvent(\'domready\', function(){',
+ ' tree'.$name.' = new MooTreeControl('.JHTMLBehavior::_getJSObject($opt).','.JHTMLBehavior::_getJSObject($rt).');',
+ ' tree'.$name.'.adopt(\''.$id.'\');',
+ '})'
+ );
+
+ // Load the script into the document head.
+ JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
+
+ // Ensure the same instance isn't loaded more than once.
+ $instances[$id] = true;
+ }
+
+ /**
+ * Method to load the system calendar behavior.
+ *
+ * @return void
+ *
+ * @since 1.5.19
+ * @static
+ */
+ function calendar()
+ {
+ // Load the behavior and stylesheet files into the document head.
+ JHTML::stylesheet('calendar-jos.css', 'media/system/css/', array(' title' => JText::_('green') ,' media' => 'all'));
+ JHTML::script('calendar.js');
+ JHTML::script('calendar-setup.js');
+
+ // Get and load the calendar translation string into the document head.
+ if ($translation = JHTMLBehavior::_calendartranslation()) {
+ JFactory::getDocument()->addScriptDeclaration($translation);
+ }
+ }
+
+ /**
+ * Method to load the system keepalive behavior. This will send an ascynchronous request to the
+ * server via AJAX on an interval just under the session expiration lifetime so that the session
+ * does not expire.
+ *
+ * @return void
+ *
+ * @since 1.5.19
+ * @static
+ */
+ function keepalive()
+ {
+ // Load the behavior framework into the document head.
+ JHTMLBehavior::mootools();
+
+ // Get the session lifetime in microseconds.
+ $lifetime = (JFactory::getConfig()->getValue('lifetime', 900) * 60000);
+
+ // Set the session refresh period to one minute less than the session lifetime.
+ $refreshTime = (int) ($lifetime <= 60000) ? 30000 : $lifetime - 60000;
+
+ // Build the keepalive script.
+ $script = array(
+ 'function keepAlive() { new Ajax("index.php", {method: "get"}).request(); }',
+ 'window.addEvent("domready", function() { keepAlive.periodical('.$refreshTime.'); });'
+ );
+
+ // Load the keepalive script into the document head.
+ JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
+ }
+
+ /**
+ * Method to get a simple JavaScript Object Notation (JSON) representation of an input
+ * associative array.
+ *
+ * @param array $array The array to convert to JavaScript Object Notation.
+ *
+ * @return string JavaScript Object Notation representation of the array.
+ *
+ * @access protected
+ * @since 1.5.19
+ * @static
+ */
+ function _getJSObject($array = array())
+ {
+ // Initialize variables
+ $json = '{';
+
+ // Iterate over array to build objects
+ foreach ((array)$array as $k => $v)
+ {
+ if (is_null($v)) {
+ continue;
+ }
+
+ if (!is_array($v) && !is_object($v)) {
+ $json .= ' '.$k.': ';
+ $json .= (is_numeric($v) || strpos($v, '\\') === 0) ? (is_numeric($v)) ? $v : substr($v, 1) : "'".$v."'";
+ $json .= ',';
+ }
+ else {
+ $json .= ' '.$k.': '.JHTMLBehavior::_getJSObject($v).',';
+ }
+ }
+
+ if (substr($json, -1) == ',') {
+ $json = substr($json, 0, -1);
+ }
+
+ $json .= '}';
+
+ return $json;
+ }
+
+ /**
+ * Method to get the internationalisation script/settings for the JavaScript Calendar behavior.
+ *
+ * @return mixed JavaScript calendar internationalisation settings script or null if already loaded.
+ *
+ * @access protected
+ * @since 1.5.19
+ * @static
+ */
+ function _calendartranslation()
+ {
+ // Check to see if it has already been loaded.
+ static $loaded;
+ if (!empty($loaded)) {
+ return;
+ }
+
+ // Build the day names array.
+ $dayNames = array(
+ '"'.JText::_('Sunday').'"',
+ '"'.JText::_('Monday').'"',
+ '"'.JText::_('Tuesday').'"',
+ '"'.JText::_('Wednesday').'"',
+ '"'.JText::_('Thursday').'"',
+ '"'.JText::_('Friday').'"',
+ '"'.JText::_('Saturday').'"',
+ '"'.JText::_('Sunday').'"'
+ );
+
+ // Build the short day names array.
+ $shortDayNames = array(
+ '"'.JText::_('Sun').'"',
+ '"'.JText::_('Mon').'"',
+ '"'.JText::_('Tue').'"',
+ '"'.JText::_('Wed').'"',
+ '"'.JText::_('Thu').'"',
+ '"'.JText::_('Fri').'"',
+ '"'.JText::_('Sat').'"',
+ '"'.JText::_('Sun').'"'
+ );
+
+ // Build the month names array.
+ $monthNames = array(
+ '"'.JText::_('January').'"',
+ '"'.JText::_('February').'"',
+ '"'.JText::_('March').'"',
+ '"'.JText::_('April').'"',
+ '"'.JText::_('May').'"',
+ '"'.JText::_('June').'"',
+ '"'.JText::_('July').'"',
+ '"'.JText::_('August').'"',
+ '"'.JText::_('September').'"',
+ '"'.JText::_('October').'"',
+ '"'.JText::_('November').'"',
+ '"'.JText::_('December').'"'
+ );
+
+ // Build the short month names array.
+ $shortMonthNames = array(
+ '"'.JText::_('January_short').'"',
+ '"'.JText::_('February_short').'"',
+ '"'.JText::_('March_short').'"',
+ '"'.JText::_('April_short').'"',
+ '"'.JText::_('May_short').'"',
+ '"'.JText::_('June_short').'"',
+ '"'.JText::_('July_short').'"',
+ '"'.JText::_('August_short').'"',
+ '"'.JText::_('September_short').'"',
+ '"'.JText::_('October_short').'"',
+ '"'.JText::_('November_short').'"',
+ '"'.JText::_('December_short').'"'
+ );
+
+ // Build the script.
+ $i18n = array(
+ '// Calendar i18n Setup.',
+ 'Calendar._FD = 0;',
+ 'Calendar._DN = new Array ('.implode(', ', $dayNames).');',
+ 'Calendar._SDN = new Array ('.implode(', ', $shortDayNames).');',
+ 'Calendar._MN = new Array ('.implode(', ', $monthNames).');',
+ 'Calendar._SMN = new Array ('.implode(', ', $shortMonthNames).');',
+ '',
+ 'Calendar._TT = {};',
+ 'Calendar._TT["INFO"] = "'.JText::_('About the calendar').'";',
+ 'Calendar._TT["PREV_YEAR"] = "'.JText::_('Prev. year (hold for menu)').'";',
+ 'Calendar._TT["PREV_MONTH"] = "'.JText::_('Prev. month (hold for menu)').'";',
+ 'Calendar._TT["GO_TODAY"] = "'.JText::_('Go Today').'";',
+ 'Calendar._TT["NEXT_MONTH"] = "'.JText::_('Next month (hold for menu)').'";',
+ 'Calendar._TT["NEXT_YEAR"] = "'.JText::_('Next year (hold for menu)').'";',
+ 'Calendar._TT["SEL_DATE"] = "'.JText::_('Select date').'";',
+ 'Calendar._TT["DRAG_TO_MOVE"] = "'.JText::_('Drag to move').'";',
+ 'Calendar._TT["PART_TODAY"] = "'.JText::_('(Today)').'";',
+ 'Calendar._TT["DAY_FIRST"] = "'.JText::_('Display %s first').'";',
+ 'Calendar._TT["WEEKEND"] = "0,6";',
+ 'Calendar._TT["CLOSE"] = "'.JText::_('Close').'";',
+ 'Calendar._TT["TODAY"] = "'.JText::_('Today').'";',
+ 'Calendar._TT["TIME_PART"] = "'.JText::_('(Shift-)Click or drag to change value').'";',
+ 'Calendar._TT["DEF_DATE_FORMAT"] = "'.JText::_('%Y-%m-%d').'";',
+ 'Calendar._TT["TT_DATE_FORMAT"] = "'.JText::_('%a, %b %e').'";',
+ 'Calendar._TT["WK"] = "'.JText::_('wk').'";',
+ 'Calendar._TT["TIME"] = "'.JText::_('Time:').'";',
+ '',
+ 'Calendar._TT["ABOUT"] =',
+ '"DHTML Date/Time Selector\n" +',
+ '"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" +',
+ '"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +',
+ '"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +',
+ '"\n\n" +',
+ '"Date selection:\n" +',
+ '"- Use the \xab, \xbb buttons to select year\n" +',
+ '"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +',
+ '"- Hold mouse button on any of the above buttons for faster selection.";',
+ '',
+ 'Calendar._TT["ABOUT_TIME"] = "\n\n" +',
+ '"Time selection:\n" +',
+ '"- Click on any of the time parts to increase it\n" +',
+ '"- or Shift-click to decrease it\n" +',
+ '"- or click and drag for faster selection.";',
+ ''
+ );
+
+ // Ensure the i18n data isn't loaded more than once.
+ $loaded = true;
+
+ return implode("\n", $i18n);
+ }
+}
+
diff --git a/oss/joomla/trunk/plugins/system/mtupgrade/index.html b/oss/joomla/trunk/plugins/system/mtupgrade/index.html
new file mode 100644
index 00000000..fa6d84e8
--- /dev/null
+++ b/oss/joomla/trunk/plugins/system/mtupgrade/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/oss/joomla/trunk/plugins/system/mtupgrade/mootools-uncompressed.js b/oss/joomla/trunk/plugins/system/mtupgrade/mootools-uncompressed.js
new file mode 100644
index 00000000..a55dba18
--- /dev/null
+++ b/oss/joomla/trunk/plugins/system/mtupgrade/mootools-uncompressed.js
@@ -0,0 +1,7137 @@
+//MooTools, , My Object Oriented (JavaScript) Tools. Copyright (c) 2006-2009 Valerio Proietti, , MIT Style License.
+//MooTools More, . Copyright (c) 2006-2009 Aaron Newton , Valerio Proietti & the MooTools team , MIT Style License.
+
+//Contents: Core, Browser, Array, Function, Number, String, Hash, Event, Class, Class.Extras, Element, Element.Event, Element.Style, Element.Dimensions, Selectors, DomReady, JSON, Cookie, Swiff, Fx, Fx.CSS, Fx.Tween, Fx.Morph, Fx.Transitions, Request, Request.HTML, Request.JSON, More, Fx.Elements, Fx.Accordion, Fx.Scroll, Fx.Slide, Fx.SmoothScroll, Drag, Drag.Move, Class.Binds, Element.Measure, Slider, Sortables, Color, Group, Hash.Cookie, Scroller, Tips
+
+/*
+---
+
+script: Core.js
+
+description: The core of MooTools, contains all the base functions and the Native and Hash implementations. Required by all the other scripts.
+
+license: MIT-style license.
+
+copyright: Copyright (c) 2006-2008 [Valerio Proietti](http://mad4milk.net/).
+
+authors: The MooTools production team (http://mootools.net/developers/)
+
+inspiration:
+- Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php)
+- Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php)
+
+provides: [Mootools, Native, Hash.base, Array.each, $util]
+
+...
+*/
+
+var MooTools = {
+ 'version': '1.2.4',
+ 'build': '0d9113241a90b9cd5643b926795852a2026710d4'
+};
+
+var Native = function(options){
+ options = options || {};
+ var name = options.name;
+ var legacy = options.legacy;
+ var protect = options.protect;
+ var methods = options.implement;
+ var generics = options.generics;
+ var initialize = options.initialize;
+ var afterImplement = options.afterImplement || function(){};
+ var object = initialize || legacy;
+ generics = generics !== false;
+
+ object.constructor = Native;
+ object.$family = {name: 'native'};
+ if (legacy && initialize) object.prototype = legacy.prototype;
+ object.prototype.constructor = object;
+
+ if (name){
+ var family = name.toLowerCase();
+ object.prototype.$family = {name: family};
+ Native.typize(object, family);
+ }
+
+ var add = function(obj, name, method, force){
+ if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method;
+ if (generics) Native.genericize(obj, name, protect);
+ afterImplement.call(obj, name, method);
+ return obj;
+ };
+
+ object.alias = function(a1, a2, a3){
+ if (typeof a1 == 'string'){
+ var pa1 = this.prototype[a1];
+ if ((a1 = pa1)) return add(this, a2, a1, a3);
+ }
+ for (var a in a1) this.alias(a, a1[a], a2);
+ return this;
+ };
+
+ object.implement = function(a1, a2, a3){
+ if (typeof a1 == 'string') return add(this, a1, a2, a3);
+ for (var p in a1) add(this, p, a1[p], a2);
+ return this;
+ };
+
+ if (methods) object.implement(methods);
+
+ return object;
+};
+
+Native.genericize = function(object, property, check){
+ if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){
+ var args = Array.prototype.slice.call(arguments);
+ return object.prototype[property].apply(args.shift(), args);
+ };
+};
+
+Native.implement = function(objects, properties){
+ for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties);
+};
+
+Native.typize = function(object, family){
+ if (!object.type) object.type = function(item){
+ return ($type(item) === family);
+ };
+};
+
+(function(){
+ var natives = {'Array': Array, 'Date': Date, 'Function': Function, 'Number': Number, 'RegExp': RegExp, 'String': String};
+ for (var n in natives) new Native({name: n, initialize: natives[n], protect: true});
+
+ var types = {'boolean': Boolean, 'native': Native, 'object': Object};
+ for (var t in types) Native.typize(types[t], t);
+
+ var generics = {
+ 'Array': ["concat", "indexOf", "join", "lastIndexOf", "pop", "push", "reverse", "shift", "slice", "sort", "splice", "toString", "unshift", "valueOf"],
+ 'String': ["charAt", "charCodeAt", "concat", "indexOf", "lastIndexOf", "match", "replace", "search", "slice", "split", "substr", "substring", "toLowerCase", "toUpperCase", "valueOf"]
+ };
+ for (var g in generics){
+ for (var i = generics[g].length; i--;) Native.genericize(natives[g], generics[g][i], true);
+ }
+})();
+
+var Hash = new Native({
+
+ name: 'Hash',
+
+ initialize: function(object){
+ if ($type(object) == 'hash') object = $unlink(object.getClean());
+ for (var key in object) this[key] = object[key];
+ return this;
+ }
+
+});
+
+Hash.implement({
+
+ forEach: function(fn, bind){
+ for (var key in this){
+ if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this);
+ }
+ },
+
+ getClean: function(){
+ var clean = {};
+ for (var key in this){
+ if (this.hasOwnProperty(key)) clean[key] = this[key];
+ }
+ return clean;
+ },
+
+ getLength: function(){
+ var length = 0;
+ for (var key in this){
+ if (this.hasOwnProperty(key)) length++;
+ }
+ return length;
+ }
+
+});
+
+Hash.alias('forEach', 'each');
+
+Array.implement({
+
+ forEach: function(fn, bind){
+ for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);
+ }
+
+});
+
+Array.alias('forEach', 'each');
+
+function $A(iterable){
+ if (iterable.item){
+ var l = iterable.length, array = new Array(l);
+ while (l--) array[l] = iterable[l];
+ return array;
+ }
+ return Array.prototype.slice.call(iterable);
+};
+
+function $arguments(i){
+ return function(){
+ return arguments[i];
+ };
+};
+
+function $chk(obj){
+ return !!(obj || obj === 0);
+};
+
+function $clear(timer){
+ clearTimeout(timer);
+ clearInterval(timer);
+ return null;
+};
+
+function $defined(obj){
+ return (obj != undefined);
+};
+
+function $each(iterable, fn, bind){
+ var type = $type(iterable);
+ ((type == 'arguments' || type == 'collection' || type == 'array') ? Array : Hash).each(iterable, fn, bind);
+};
+
+function $empty(){};
+
+function $extend(original, extended){
+ for (var key in (extended || {})) original[key] = extended[key];
+ return original;
+};
+
+function $H(object){
+ return new Hash(object);
+};
+
+function $lambda(value){
+ return ($type(value) == 'function') ? value : function(){
+ return value;
+ };
+};
+
+function $merge(){
+ var args = Array.slice(arguments);
+ args.unshift({});
+ return $mixin.apply(null, args);
+};
+
+function $mixin(mix){
+ for (var i = 1, l = arguments.length; i < l; i++){
+ var object = arguments[i];
+ if ($type(object) != 'object') continue;
+ for (var key in object){
+ var op = object[key], mp = mix[key];
+ mix[key] = (mp && $type(op) == 'object' && $type(mp) == 'object') ? $mixin(mp, op) : $unlink(op);
+ }
+ }
+ return mix;
+};
+
+function $pick(){
+ for (var i = 0, l = arguments.length; i < l; i++){
+ if (arguments[i] != undefined) return arguments[i];
+ }
+ return null;
+};
+
+function $random(min, max){
+ return Math.floor(Math.random() * (max - min + 1) + min);
+};
+
+function $splat(obj){
+ var type = $type(obj);
+ return (type) ? ((type != 'array' && type != 'arguments') ? [obj] : obj) : [];
+};
+
+var $time = Date.now || function(){
+ return +new Date;
+};
+
+function $try(){
+ for (var i = 0, l = arguments.length; i < l; i++){
+ try {
+ return arguments[i]();
+ } catch(e){}
+ }
+ return null;
+};
+
+function $type(obj){
+ if (obj == undefined) return false;
+ if (obj.$family) return (obj.$family.name == 'number' && !isFinite(obj)) ? false : obj.$family.name;
+ if (obj.nodeName){
+ switch (obj.nodeType){
+ case 1: return 'element';
+ case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';
+ }
+ } else if (typeof obj.length == 'number'){
+ if (obj.callee) return 'arguments';
+ else if (obj.item) return 'collection';
+ }
+ return typeof obj;
+};
+
+function $unlink(object){
+ var unlinked;
+ switch ($type(object)){
+ case 'object':
+ unlinked = {};
+ for (var p in object) unlinked[p] = $unlink(object[p]);
+ break;
+ case 'hash':
+ unlinked = new Hash(object);
+ break;
+ case 'array':
+ unlinked = [];
+ for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]);
+ break;
+ default: return object;
+ }
+ return unlinked;
+};
+/*
+---
+
+script: Browser.js
+
+description: The Browser Core. Contains Browser initialization, Window and Document, and the Browser Hash.
+
+license: MIT-style license.
+
+requires:
+- /Native
+- /$util
+
+provides: [Browser, Window, Document, $exec]
+
+...
+*/
+
+var Browser = $merge({
+
+ Engine: {name: 'unknown', version: 0},
+
+ Platform: {name: (window.orientation != undefined) ? 'ipod' : (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},
+
+ Features: {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)},
+
+ Plugins: {},
+
+ Engines: {
+
+ presto: function(){
+ return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925));
+ },
+
+ trident: function(){
+ return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? ((document.querySelectorAll) ? 6 : 5) : 4);
+ },
+
+ webkit: function(){
+ return (navigator.taintEnabled) ? false : ((Browser.Features.xpath) ? ((Browser.Features.query) ? 525 : 420) : 419);
+ },
+
+ gecko: function(){
+ return (!document.getBoxObjectFor && window.mozInnerScreenX == null) ? false : ((document.getElementsByClassName) ? 19 : 18);
+ }
+
+ }
+
+}, Browser || {});
+
+Browser.Platform[Browser.Platform.name] = true;
+
+Browser.detect = function(){
+
+ for (var engine in this.Engines){
+ var version = this.Engines[engine]();
+ if (version){
+ this.Engine = {name: engine, version: version};
+ this.Engine[engine] = this.Engine[engine + version] = true;
+ break;
+ }
+ }
+
+ return {name: engine, version: version};
+
+};
+
+Browser.detect();
+
+Browser.Request = function(){
+ return $try(function(){
+ return new XMLHttpRequest();
+ }, function(){
+ return new ActiveXObject('MSXML2.XMLHTTP');
+ }, function(){
+ return new ActiveXObject('Microsoft.XMLHTTP');
+ });
+};
+
+Browser.Features.xhr = !!(Browser.Request());
+
+Browser.Plugins.Flash = (function(){
+ var version = ($try(function(){
+ return navigator.plugins['Shockwave Flash'].description;
+ }, function(){
+ return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
+ }) || '0 r0').match(/\d+/g);
+ return {version: parseInt(version[0] || 0 + '.' + version[1], 10) || 0, build: parseInt(version[2], 10) || 0};
+})();
+
+function $exec(text){
+ if (!text) return text;
+ if (window.execScript){
+ window.execScript(text);
+ } else {
+ var script = document.createElement('script');
+ script.setAttribute('type', 'text/javascript');
+ script[(Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerText' : 'text'] = text;
+ document.head.appendChild(script);
+ document.head.removeChild(script);
+ }
+ return text;
+};
+
+Native.UID = 1;
+
+var $uid = (Browser.Engine.trident) ? function(item){
+ return (item.uid || (item.uid = [Native.UID++]))[0];
+} : function(item){
+ return item.uid || (item.uid = Native.UID++);
+};
+
+var Window = new Native({
+
+ name: 'Window',
+
+ legacy: (Browser.Engine.trident) ? null: window.Window,
+
+ initialize: function(win){
+ $uid(win);
+ if (!win.Element){
+ win.Element = $empty;
+ if (Browser.Engine.webkit) win.document.createElement("iframe"); //fixes safari 2
+ win.Element.prototype = (Browser.Engine.webkit) ? window["[[DOMElement.prototype]]"] : {};
+ }
+ win.document.window = win;
+ return $extend(win, Window.Prototype);
+ },
+
+ afterImplement: function(property, value){
+ window[property] = Window.Prototype[property] = value;
+ }
+
+});
+
+Window.Prototype = {$family: {name: 'window'}};
+
+new Window(window);
+
+var Document = new Native({
+
+ name: 'Document',
+
+ legacy: (Browser.Engine.trident) ? null: window.Document,
+
+ initialize: function(doc){
+ $uid(doc);
+ doc.head = doc.getElementsByTagName('head')[0];
+ doc.html = doc.getElementsByTagName('html')[0];
+ if (Browser.Engine.trident && Browser.Engine.version <= 4) $try(function(){
+ doc.execCommand("BackgroundImageCache", false, true);
+ });
+ if (Browser.Engine.trident) doc.window.attachEvent('onunload', function(){
+ doc.window.detachEvent('onunload', arguments.callee);
+ doc.head = doc.html = doc.window = null;
+ });
+ return $extend(doc, Document.Prototype);
+ },
+
+ afterImplement: function(property, value){
+ document[property] = Document.Prototype[property] = value;
+ }
+
+});
+
+Document.Prototype = {$family: {name: 'document'}};
+
+new Document(document);
+/*
+---
+
+script: Array.js
+
+description: Contains Array Prototypes like each, contains, and erase.
+
+license: MIT-style license.
+
+requires:
+- /$util
+- /Array.each
+
+provides: [Array]
+
+...
+*/
+
+Array.implement({
+
+ every: function(fn, bind){
+ for (var i = 0, l = this.length; i < l; i++){
+ if (!fn.call(bind, this[i], i, this)) return false;
+ }
+ return true;
+ },
+
+ filter: function(fn, bind){
+ var results = [];
+ for (var i = 0, l = this.length; i < l; i++){
+ if (fn.call(bind, this[i], i, this)) results.push(this[i]);
+ }
+ return results;
+ },
+
+ clean: function(){
+ return this.filter($defined);
+ },
+
+ indexOf: function(item, from){
+ var len = this.length;
+ for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){
+ if (this[i] === item) return i;
+ }
+ return -1;
+ },
+
+ map: function(fn, bind){
+ var results = [];
+ for (var i = 0, l = this.length; i < l; i++) results[i] = fn.call(bind, this[i], i, this);
+ return results;
+ },
+
+ some: function(fn, bind){
+ for (var i = 0, l = this.length; i < l; i++){
+ if (fn.call(bind, this[i], i, this)) return true;
+ }
+ return false;
+ },
+
+ associate: function(keys){
+ var obj = {}, length = Math.min(this.length, keys.length);
+ for (var i = 0; i < length; i++) obj[keys[i]] = this[i];
+ return obj;
+ },
+
+ link: function(object){
+ var result = {};
+ for (var i = 0, l = this.length; i < l; i++){
+ for (var key in object){
+ if (object[key](this[i])){
+ result[key] = this[i];
+ delete object[key];
+ break;
+ }
+ }
+ }
+ return result;
+ },
+
+ contains: function(item, from){
+ return this.indexOf(item, from) != -1;
+ },
+
+ extend: function(array){
+ for (var i = 0, j = array.length; i < j; i++) this.push(array[i]);
+ return this;
+ },
+
+ getLast: function(){
+ return (this.length) ? this[this.length - 1] : null;
+ },
+
+ getRandom: function(){
+ return (this.length) ? this[$random(0, this.length - 1)] : null;
+ },
+
+ include: function(item){
+ if (!this.contains(item)) this.push(item);
+ return this;
+ },
+
+ combine: function(array){
+ for (var i = 0, l = array.length; i < l; i++) this.include(array[i]);
+ return this;
+ },
+
+ erase: function(item){
+ for (var i = this.length; i--; i){
+ if (this[i] === item) this.splice(i, 1);
+ }
+ return this;
+ },
+
+ empty: function(){
+ this.length = 0;
+ return this;
+ },
+
+ flatten: function(){
+ var array = [];
+ for (var i = 0, l = this.length; i < l; i++){
+ var type = $type(this[i]);
+ if (!type) continue;
+ array = array.concat((type == 'array' || type == 'collection' || type == 'arguments') ? Array.flatten(this[i]) : this[i]);
+ }
+ return array;
+ },
+
+ hexToRgb: function(array){
+ if (this.length != 3) return null;
+ var rgb = this.map(function(value){
+ if (value.length == 1) value += value;
+ return value.toInt(16);
+ });
+ return (array) ? rgb : 'rgb(' + rgb + ')';
+ },
+
+ rgbToHex: function(array){
+ if (this.length < 3) return null;
+ if (this.length == 4 && this[3] == 0 && !array) return 'transparent';
+ var hex = [];
+ for (var i = 0; i < 3; i++){
+ var bit = (this[i] - 0).toString(16);
+ hex.push((bit.length == 1) ? '0' + bit : bit);
+ }
+ return (array) ? hex : '#' + hex.join('');
+ }
+
+});
+/*
+---
+
+script: Function.js
+
+description: Contains Function Prototypes like create, bind, pass, and delay.
+
+license: MIT-style license.
+
+requires:
+- /Native
+- /$util
+
+provides: [Function]
+
+...
+*/
+
+Function.implement({
+
+ extend: function(properties){
+ for (var property in properties) this[property] = properties[property];
+ return this;
+ },
+
+ create: function(options){
+ var self = this;
+ options = options || {};
+ return function(event){
+ var args = options.arguments;
+ args = (args != undefined) ? $splat(args) : Array.slice(arguments, (options.event) ? 1 : 0);
+ if (options.event) args = [event || window.event].extend(args);
+ var returns = function(){
+ return self.apply(options.bind || null, args);
+ };
+ if (options.delay) return setTimeout(returns, options.delay);
+ if (options.periodical) return setInterval(returns, options.periodical);
+ if (options.attempt) return $try(returns);
+ return returns();
+ };
+ },
+
+ run: function(args, bind){
+ return this.apply(bind, $splat(args));
+ },
+
+ pass: function(args, bind){
+ return this.create({bind: bind, arguments: args});
+ },
+
+ bind: function(bind, args){
+ return this.create({bind: bind, arguments: args});
+ },
+
+ bindWithEvent: function(bind, args){
+ return this.create({bind: bind, arguments: args, event: true});
+ },
+
+ attempt: function(args, bind){
+ return this.create({bind: bind, arguments: args, attempt: true})();
+ },
+
+ delay: function(delay, bind, args){
+ return this.create({bind: bind, arguments: args, delay: delay})();
+ },
+
+ periodical: function(periodical, bind, args){
+ return this.create({bind: bind, arguments: args, periodical: periodical})();
+ }
+
+});
+/*
+---
+
+script: Number.js
+
+description: Contains Number Prototypes like limit, round, times, and ceil.
+
+license: MIT-style license.
+
+requires:
+- /Native
+- /$util
+
+provides: [Number]
+
+...
+*/
+
+Number.implement({
+
+ limit: function(min, max){
+ return Math.min(max, Math.max(min, this));
+ },
+
+ round: function(precision){
+ precision = Math.pow(10, precision || 0);
+ return Math.round(this * precision) / precision;
+ },
+
+ times: function(fn, bind){
+ for (var i = 0; i < this; i++) fn.call(bind, i, this);
+ },
+
+ toFloat: function(){
+ return parseFloat(this);
+ },
+
+ toInt: function(base){
+ return parseInt(this, base || 10);
+ }
+
+});
+
+Number.alias('times', 'each');
+
+(function(math){
+ var methods = {};
+ math.each(function(name){
+ if (!Number[name]) methods[name] = function(){
+ return Math[name].apply(null, [this].concat($A(arguments)));
+ };
+ });
+ Number.implement(methods);
+})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);
+/*
+---
+
+script: String.js
+
+description: Contains String Prototypes like camelCase, capitalize, test, and toInt.
+
+license: MIT-style license.
+
+requires:
+- /Native
+
+provides: [String]
+
+...
+*/
+
+String.implement({
+
+ test: function(regex, params){
+ return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this);
+ },
+
+ contains: function(string, separator){
+ return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1;
+ },
+
+ trim: function(){
+ return this.replace(/^\s+|\s+$/g, '');
+ },
+
+ clean: function(){
+ return this.replace(/\s+/g, ' ').trim();
+ },
+
+ camelCase: function(){
+ return this.replace(/-\D/g, function(match){
+ return match.charAt(1).toUpperCase();
+ });
+ },
+
+ hyphenate: function(){
+ return this.replace(/[A-Z]/g, function(match){
+ return ('-' + match.charAt(0).toLowerCase());
+ });
+ },
+
+ capitalize: function(){
+ return this.replace(/\b[a-z]/g, function(match){
+ return match.toUpperCase();
+ });
+ },
+
+ escapeRegExp: function(){
+ return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');
+ },
+
+ toInt: function(base){
+ return parseInt(this, base || 10);
+ },
+
+ toFloat: function(){
+ return parseFloat(this);
+ },
+
+ hexToRgb: function(array){
+ var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
+ return (hex) ? hex.slice(1).hexToRgb(array) : null;
+ },
+
+ rgbToHex: function(array){
+ var rgb = this.match(/\d{1,3}/g);
+ return (rgb) ? rgb.rgbToHex(array) : null;
+ },
+
+ stripScripts: function(option){
+ var scripts = '';
+ var text = this.replace(/