Commit c9216004 authored by Liang Ding's avatar Liang Ding

c

parent a6d5486c
<!DOCTYPE html>
<html>
<head>
<title>B3log Solo Change Logs</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h2>Release 0.4.5 - Jun 1, 2012</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=302">302 文章加密</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=392">392 支持应用路径部署</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=393">393 支持多编辑器</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=394">394 支持 Markdown</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=395">395 发布包中加入项目说明</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=396">396 新皮肤——ease</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=399">399 i-nove 皮肤问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=400">400 GAE 版 sitemap.xml 问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=401">401 升级 GAE SDK 1.6.5</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=402">402 本地版用户退出问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=404">404 TinyMCE 升级到 3.5</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=405">405 添加 KindEditor </a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=406">406 Fancybox 鼠标滚轮事件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=407">407 表情修改</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=408">408 在线人数计数问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=409">409 允许用户添加 ftl 模版</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=410">410 模版缓存问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=411">411 错误页面改造</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=412">412 评论默认头像变更</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=413">413 链接上添加 rel</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=416">416 项目迁到 GitHub</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=417">417 移除 sleepycat 版本</a></li>
</ul>
<h2>Release 0.4.1 - Apr 25, 2012</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=303">303 开启/关闭允许评论</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=333">333 优化签名档存储</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=338">338 具体化版本号</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=351">351 导航可以选择为内容页面或链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=365">365 Admin Action 改造</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=367">367 移除文件管理功能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=370">370 禁用异步 Sessions 持久化</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=373">373 Feed 可设置成全文输出/摘要输出</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=374">374 升级 GAE SDK 1.6.4.1</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=378">378 本地版(MySQL)发布</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=381">381 数据备份</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=383">383 topbar 展现方式调整</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=387">387 上一篇,下一篇的问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=388">388 jQuery Fancybox 插件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=389">389 编辑器加入“字体”、“字号”配置</a></li>
</ul>
<h2>Release 0.4.0 - Feb 19, 2012</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=281">281 写文章标签处支持鼠标点击选择</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=282">282 评论回复邮件提醒模版</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=287">287 去除 Jabsorb</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=293">293 Not Found 问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=296">296 标签-文章 Atom 异常</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=297">297 文件管理分页问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=298">298 自定义页面/链接排序问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=299">299 增加友情链接描述</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=301">301 移除同步腾讯微博</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=304">304 删除自定义页面,博客总评论数未减</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=306">306 MetaWeblog API 支持</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=307">307 移动设备前台皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=308">308 优化配额使用</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=309">309 加入超配额时的默认页面</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=313">313 升级 GAE SDK 1.6.2.1</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=314">314 评论跨站安全问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=315">315 jQuery upgrade</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=316">316 改进代码高亮 JS 加载</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=317">317 JS、CSS 版本号</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=319">319 Atom/RSS 请求方法加入 HEAD 方法</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=320">320 RSS 输出问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=322">322 从本地加载 jQuery</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=323">323 移除文件上传功能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=325">325 使用本地缓存替换 Memcache</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=330">330 0.4.0 beta1 统计丢失问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=332">332 HTML 编辑器支持 style 标签</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=334">334 文章操作防重复提交</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=339">339 /upgrade/checker.do 返回渲染</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=340">340 更改文章/页面链接后,评论的链接不更新</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=341">341 WLW 配置出错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=342">342 在线访客计数</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=343">343 皮肤乱码问题【Tree house】</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=344">344 移除皮肤 Zoltan</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=347">347 优化初始化</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=348">348 修改数据索引</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=349">349 后台文章列表分页问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=350">350 增加对自定义链接的空格替换</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=353">353 编辑器支持样式</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=354">354 支持 SyntaxHighlighter 和 google-code-prettify</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=355">355 不统计爬虫带来的访问量</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=356">356 取消摘要必填</a></li>
</ul>
<h2>Release 0.3.5 - Oct 22, 2011</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=231">231 社区同步过来的评论没有转义</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=270">270 文章列表显示方式</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=272">272 标签墙改造</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=273">273 登录状态检查</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=275">275 登录 Cookie 失效过快</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=277">277 目录不能被访问</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=278">278 存档页面报错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=279">279 优化实例启动速度</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=284">284 升级 GAE SDK 1.5.5</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=285">285 签名档默认第一个</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=286">286 站内相关文章优化</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=288">288 调整数据索引</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=289">289 修复移除无用标签报错</a></li>
</ul>
<h2>Release 0.3.1 - Oct 1, 2011</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=226">226 皮肤语言配置</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=237">237 改进 admin-cache 插件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=243">243 验证码不能刷新</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=246">246 后台 js 合并压缩</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=250">250 友情链接改进</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=251">251 已压缩的 CSS、JS 文件编码问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=253">253 点击任何一个菜单都会弹出一错误提示窗口</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=254">254 CSS编码错误</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=255">255 改进评论数据结构</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=257">257 部署后自动升级</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=258">258 新皮肤——NeoEase</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=259">259 支持 RSS 2.0</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=260">260 升级到 GAE 1.5.4</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=261">261 重构 Web 请求分发,使用 Latke 新的分发器</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=262">262 编辑器插入 html 代码不可进行高亮</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=264">264 文章中的代码总是出现竖向滚动条</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=266">266 编辑器自动替换 &lt;a&gt; 问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=267">267 sitemap 输出</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=268">268 用户验证改造</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=269">269 About 页面</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=271">271 标签分隔符提示</a></li>
</ul>
<h2>Release 0.3.0 - Aug 20, 2011</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=9">9 更换标签墙</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=42">42 对标签提示进一步完善</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=73">73 B3log 新闻获取插件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=111">111 插件机制</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=120">120 优化链接 URL</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=134">134 缓存页面管理</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=149">149 表情图片合并</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=187">187 “主题”->“皮肤”</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=188">188 Elegant-Box-C友情链接BUG</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=189">189 ErrorAction(/error.do)加入模版数据</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=190">190 改进“博客地址”配置</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=194">194 初始化失败</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=197">197 b3log.org 域名发放</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=198">198 TinyMCE HTML Editor不能插入 iframe</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=199">199 标题使用 HTML 代码问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=201">201 Community 皮肤正文中链接和内容区别不明显</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=203">203 升级到 FreeMarker for GAE 2.3.18</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=204">204 升级到 GAE 1.5.2</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=205">205 皮肤文件结构的重新设计</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=206">206 单独的评论管理功能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=207">207 后台改版</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=208">208 页面缓存启用/禁用</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=209">209 升级版本后找不到皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=211">211 初始化页面(/init.do)判断 IE6</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=216">216 新皮肤 for 0.3.0</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=219">219 优化前台性能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=220">220 存档时区问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=221">221 0.2.6-0.3.0 升级程序</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=222">222 项目加入 Change log</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=223">223 修复不能在 maven3.0+ 下使用的 bug</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=224">224 改进错误页面</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=225">225 移除博客同步功能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=227">227 升级 TinyMCE 到 3.4.3.2</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=228">228 评论/回复折行</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=229">229 移除情侣皮肤(valentine,向左走向右走)</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=230">230 最新评论转义问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=232">232 通过链接(Permalink)访问草稿</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=234">234 代码渲染</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=236">236 标签-文章计数修复程序</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=240">240 Kill IE功能异常</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=247">247 新一篇问题</a></li>
</ul>
<h2>Release 0.2.5 - Apr 30, 2011</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=153">153 增加“发布到社区”选项</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=154">154 TinyMCE 使用绝对地址</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=155">155 添加一个页面后,就开始404了。连主页都404</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=157">157 Andrea 皮肤图片压缩</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=158">158 评论提交过程中禁用提交按钮</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=160">160 删除已发表文章的非管理员用户后浏览报错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=163">163 移除不必要的过滤器,优化性能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=165">165 加入 Symphony 到 Solo 的评论同步</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=166">166 从中文切换英文后后台 Preference 报错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=167">167 文章随机值生成报错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=168">168 恢复签名档为默认值</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=170">170 屏蔽载入站外相关文章错误弹出</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=171">171 更新文章事务问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=179">179 robots.txt 问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=180">180 新皮肤——Elegant-Box-C</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=181">181 升级到 GAE SDK 1.4.3</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=183">183 先存草稿再发布不能同步微博、社区</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=184">184 删除文章存档数反而增加</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=185">185 “博客同步”管理界面微调</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=186">186 新皮肤——owmx-3.0</a></li>
</ul>
<h2>Release 0.2.5 - Feb 13, 2011</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=33">33 加入文章发布/取消发布/保存功能(草稿夹)</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=43">43 修改评论中的 URL 填写方式</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=60">60 评论时信息的自动填充</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=89">89 新皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=90">90 新皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=91">91 页面管理中的顺序</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=92">92 皮肤 favourite 对 IE 7,8 的支持 </a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=93">93 文章访问次数统计失效</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=94">94 加入多人写作</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=95">95 Atom 不使用第三方库</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=96">96 移除“偏好设定”中管理员邮件的配置</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=97">97 删除通过 Google Profiles 获取用户信息</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=98">98 改进 403 错误页面</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=99">99 上传空文件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=100">100 链接、页面排序</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=101">101 改进初始化</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=103">103 整理界面中已定义的元素 ID</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=105">105 加入对“有更新”提示的配置</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=107">107 新皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=108">108 IE 8 下 Feed 不能显示</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=110">110 Feed Entry 中加入文章分类、作者</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=112">112 评论提交改为 jQuery AJAX</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=113">113 判断是否登录使用 jQuery AJAX</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=114">114 更友好的评论评论邮件提醒</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=116">116 初始化时发布一篇默认文章</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=118">118 优化缓存</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=119">119 评论输入框</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=121">121 占无评论</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=122">122 签名档</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=126">126 调整“经典淡蓝”皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=128">128 对后台的皮肤选择添加验证,避免出现异常和空白页</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=129">129 取消默认链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=131">131 存档边界时间的判断</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=132">132 加入时区配置</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=133">133 访问统计问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=135">135 改进获取随机文章性能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=137">137 发布/更新文章时 Ping Google Blog Search Engine</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=138">138 移除 Guice、Guice Servlet</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=139">139 后台报错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=141">141 将文章浏览计数修改为异步方式</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=142">142 博客地址配置更新检查</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=144">144 删除所有数据</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=145">145 文章发布同步到腾讯微博</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=146">146 TinyMCE 使用相对地址</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=147">147 换肤问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=148">148 移除 AddThis</a></li>
</ul>
<h2>Release 0.2.1 - Dec 1, 2010</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=46">46 偏好设定与统计丢失</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=47">47 升级 0.2.0 后皮肤首次显示错乱</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=48">48 完善初始化界面</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=49">49 按标签查看文章时排序有错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=50">50 前台统计显示使用模板</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=51">51 前台最新评论使用模板</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=52">52 向 Rhythm 发送发文数据时加入版本</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=53">53 评论加入表情</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=54">54 TinyMCE 加入中文</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=56">56 加入文章自定义链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=57">57 加入页面自定义链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=58">58 评论偶尔出现重复提交</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=61">61 修改“上一篇”、“下一篇”链接为结构化链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=62">62 后台查看评论应该附带邮件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=63">63 标签链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=64">64 查看存档文章列表时排序有错 </a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=65">65 优化更新数据性能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=66">66 整理无用的 jar,减小 Solo 体积</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=67">67 切换皮肤后按标签访问文章页面错乱</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=68">68 移除所有页面缓存时异常</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=72">72 文章同步更新失败</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=74">74 后台查看页面评论应该附带邮件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=75">75 初始化功能需要加入“确定”对话框</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=76">76 上传文件不应刷新整个页面</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=77">77 IE 7 下:前台头部登录与 logo 对不齐</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=78">78 FF 下 多媒体无法显示</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=79">79 新皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=80">80 侧边栏文字内容太长则数字统计看不到</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=81">81 侧边栏“访问最多的文章”在“偏好设定”中不能进行自定义</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=82">82 修改“标签墙”链接为 /tags.html</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=83">83 meta 修改</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=84">84 修改自定义页面默认链接为 /pages/${oId}.html</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=86">86 提交评论/回复后只刷新局部</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=87">87 IE 7 下后台展现 bug</a></li>
</ul>
<h2>Release 0.2.0 - Nov 12, 2010</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=4">4 标签管理</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=5">5 缓存状态查看</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=6">6 自定义页面关键字、描述</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=7">7 皮肤 iNove</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=10">10 文章内容样式问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=11">11 TinyMCE 代码高亮</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=12">12 前台添加“回到顶部”</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=13">13 500 Server Error</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=14">14 站外相关阅读</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=15">15 取消从 0.1.0 到 0.1.1 自动升级后台任务</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=16">16 有时博客配置会被重新初始化</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=17">17 自定义页面评论</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=18">18 分页加载顺序</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=19">19 文章页面缓存重复问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=20">20 不能清除本页缓存</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=21">21 文章页面看不到“回到顶部箭头”</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=22">22 文章列表标签列字体太大</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=23">23 页面管理添加链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=24">24 同步 Buzz 失败时文章发布失败</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=25">25 自定义页面内容样式有问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=26">26 刷新文章页面,浏览数加2</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=28">28 链接管理 URL 列应该可以点击</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=29">29 弹出查看评论 div 后下面的界面应该不可操作</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=30">30 每次弹出评论 div 时数据应该重新获取</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=31">31 文件管理</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=32">32 评论预览只能显示一次?</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=34">34 NPE</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=35">35 IE 8 下 侧边栏长度过长会向下溢出</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=36">36 博客同步操作异常反馈应该更具体</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=37">37 加强博客地址配置的容错性</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=38">38 考虑关闭 Google Buzz 同步功能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=39">39 后台查看评论显示问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=40">40 回复预览</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=41">41 “经典淡蓝”皮肤公告栏内容自动换行</a></li>
</ul>
<h2>Release 0.1.1 - Oct 26, 2010</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=1">1 前台文章列表中的文章统计数据与文章细节页面统计数据不一致</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=2">2 Tree-House 皮肤评论预览有问题</a></li>
</ul>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>B3log Solo Change Logs</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h2>Release 0.4.5 - Jun 1, 2012</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=302">302 文章加密</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=392">392 支持应用路径部署</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=393">393 支持多编辑器</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=394">394 支持 Markdown</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=395">395 发布包中加入项目说明</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=396">396 新皮肤——ease</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=399">399 i-nove 皮肤问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=400">400 GAE 版 sitemap.xml 问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=401">401 升级 GAE SDK 1.6.5</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=402">402 本地版用户退出问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=404">404 TinyMCE 升级到 3.5</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=405">405 添加 KindEditor </a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=406">406 Fancybox 鼠标滚轮事件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=407">407 表情修改</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=408">408 在线人数计数问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=409">409 允许用户添加 ftl 模版</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=410">410 模版缓存问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=411">411 错误页面改造</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=412">412 评论默认头像变更</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=413">413 链接上添加 rel</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=416">416 项目迁到 GitHub</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=417">417 移除 sleepycat 版本</a></li>
</ul>
<h2>Release 0.4.1 - Apr 25, 2012</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=303">303 开启/关闭允许评论</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=333">333 优化签名档存储</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=338">338 具体化版本号</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=351">351 导航可以选择为内容页面或链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=365">365 Admin Action 改造</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=367">367 移除文件管理功能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=370">370 禁用异步 Sessions 持久化</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=373">373 Feed 可设置成全文输出/摘要输出</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=374">374 升级 GAE SDK 1.6.4.1</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=378">378 本地版(MySQL)发布</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=381">381 数据备份</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=383">383 topbar 展现方式调整</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=387">387 上一篇,下一篇的问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=388">388 jQuery Fancybox 插件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=389">389 编辑器加入“字体”、“字号”配置</a></li>
</ul>
<h2>Release 0.4.0 - Feb 19, 2012</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=281">281 写文章标签处支持鼠标点击选择</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=282">282 评论回复邮件提醒模版</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=287">287 去除 Jabsorb</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=293">293 Not Found 问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=296">296 标签-文章 Atom 异常</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=297">297 文件管理分页问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=298">298 自定义页面/链接排序问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=299">299 增加友情链接描述</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=301">301 移除同步腾讯微博</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=304">304 删除自定义页面,博客总评论数未减</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=306">306 MetaWeblog API 支持</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=307">307 移动设备前台皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=308">308 优化配额使用</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=309">309 加入超配额时的默认页面</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=313">313 升级 GAE SDK 1.6.2.1</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=314">314 评论跨站安全问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=315">315 jQuery upgrade</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=316">316 改进代码高亮 JS 加载</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=317">317 JS、CSS 版本号</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=319">319 Atom/RSS 请求方法加入 HEAD 方法</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=320">320 RSS 输出问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=322">322 从本地加载 jQuery</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=323">323 移除文件上传功能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=325">325 使用本地缓存替换 Memcache</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=330">330 0.4.0 beta1 统计丢失问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=332">332 HTML 编辑器支持 style 标签</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=334">334 文章操作防重复提交</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=339">339 /upgrade/checker.do 返回渲染</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=340">340 更改文章/页面链接后,评论的链接不更新</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=341">341 WLW 配置出错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=342">342 在线访客计数</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=343">343 皮肤乱码问题【Tree house】</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=344">344 移除皮肤 Zoltan</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=347">347 优化初始化</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=348">348 修改数据索引</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=349">349 后台文章列表分页问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=350">350 增加对自定义链接的空格替换</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=353">353 编辑器支持样式</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=354">354 支持 SyntaxHighlighter 和 google-code-prettify</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=355">355 不统计爬虫带来的访问量</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=356">356 取消摘要必填</a></li>
</ul>
<h2>Release 0.3.5 - Oct 22, 2011</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=231">231 社区同步过来的评论没有转义</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=270">270 文章列表显示方式</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=272">272 标签墙改造</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=273">273 登录状态检查</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=275">275 登录 Cookie 失效过快</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=277">277 目录不能被访问</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=278">278 存档页面报错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=279">279 优化实例启动速度</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=284">284 升级 GAE SDK 1.5.5</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=285">285 签名档默认第一个</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=286">286 站内相关文章优化</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=288">288 调整数据索引</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=289">289 修复移除无用标签报错</a></li>
</ul>
<h2>Release 0.3.1 - Oct 1, 2011</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=226">226 皮肤语言配置</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=237">237 改进 admin-cache 插件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=243">243 验证码不能刷新</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=246">246 后台 js 合并压缩</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=250">250 友情链接改进</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=251">251 已压缩的 CSS、JS 文件编码问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=253">253 点击任何一个菜单都会弹出一错误提示窗口</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=254">254 CSS编码错误</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=255">255 改进评论数据结构</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=257">257 部署后自动升级</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=258">258 新皮肤——NeoEase</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=259">259 支持 RSS 2.0</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=260">260 升级到 GAE 1.5.4</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=261">261 重构 Web 请求分发,使用 Latke 新的分发器</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=262">262 编辑器插入 html 代码不可进行高亮</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=264">264 文章中的代码总是出现竖向滚动条</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=266">266 编辑器自动替换 &lt;a&gt; 问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=267">267 sitemap 输出</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=268">268 用户验证改造</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=269">269 About 页面</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=271">271 标签分隔符提示</a></li>
</ul>
<h2>Release 0.3.0 - Aug 20, 2011</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=9">9 更换标签墙</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=42">42 对标签提示进一步完善</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=73">73 B3log 新闻获取插件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=111">111 插件机制</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=120">120 优化链接 URL</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=134">134 缓存页面管理</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=149">149 表情图片合并</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=187">187 “主题”->“皮肤”</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=188">188 Elegant-Box-C友情链接BUG</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=189">189 ErrorAction(/error.do)加入模版数据</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=190">190 改进“博客地址”配置</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=194">194 初始化失败</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=197">197 b3log.org 域名发放</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=198">198 TinyMCE HTML Editor不能插入 iframe</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=199">199 标题使用 HTML 代码问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=201">201 Community 皮肤正文中链接和内容区别不明显</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=203">203 升级到 FreeMarker for GAE 2.3.18</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=204">204 升级到 GAE 1.5.2</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=205">205 皮肤文件结构的重新设计</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=206">206 单独的评论管理功能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=207">207 后台改版</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=208">208 页面缓存启用/禁用</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=209">209 升级版本后找不到皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=211">211 初始化页面(/init.do)判断 IE6</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=216">216 新皮肤 for 0.3.0</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=219">219 优化前台性能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=220">220 存档时区问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=221">221 0.2.6-0.3.0 升级程序</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=222">222 项目加入 Change log</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=223">223 修复不能在 maven3.0+ 下使用的 bug</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=224">224 改进错误页面</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=225">225 移除博客同步功能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=227">227 升级 TinyMCE 到 3.4.3.2</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=228">228 评论/回复折行</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=229">229 移除情侣皮肤(valentine,向左走向右走)</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=230">230 最新评论转义问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=232">232 通过链接(Permalink)访问草稿</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=234">234 代码渲染</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=236">236 标签-文章计数修复程序</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=240">240 Kill IE功能异常</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=247">247 新一篇问题</a></li>
</ul>
<h2>Release 0.2.5 - Apr 30, 2011</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=153">153 增加“发布到社区”选项</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=154">154 TinyMCE 使用绝对地址</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=155">155 添加一个页面后,就开始404了。连主页都404</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=157">157 Andrea 皮肤图片压缩</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=158">158 评论提交过程中禁用提交按钮</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=160">160 删除已发表文章的非管理员用户后浏览报错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=163">163 移除不必要的过滤器,优化性能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=165">165 加入 Symphony 到 Solo 的评论同步</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=166">166 从中文切换英文后后台 Preference 报错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=167">167 文章随机值生成报错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=168">168 恢复签名档为默认值</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=170">170 屏蔽载入站外相关文章错误弹出</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=171">171 更新文章事务问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=179">179 robots.txt 问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=180">180 新皮肤——Elegant-Box-C</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=181">181 升级到 GAE SDK 1.4.3</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=183">183 先存草稿再发布不能同步微博、社区</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=184">184 删除文章存档数反而增加</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=185">185 “博客同步”管理界面微调</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=186">186 新皮肤——owmx-3.0</a></li>
</ul>
<h2>Release 0.2.5 - Feb 13, 2011</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=33">33 加入文章发布/取消发布/保存功能(草稿夹)</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=43">43 修改评论中的 URL 填写方式</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=60">60 评论时信息的自动填充</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=89">89 新皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=90">90 新皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=91">91 页面管理中的顺序</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=92">92 皮肤 favourite 对 IE 7,8 的支持 </a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=93">93 文章访问次数统计失效</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=94">94 加入多人写作</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=95">95 Atom 不使用第三方库</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=96">96 移除“偏好设定”中管理员邮件的配置</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=97">97 删除通过 Google Profiles 获取用户信息</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=98">98 改进 403 错误页面</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=99">99 上传空文件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=100">100 链接、页面排序</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=101">101 改进初始化</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=103">103 整理界面中已定义的元素 ID</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=105">105 加入对“有更新”提示的配置</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=107">107 新皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=108">108 IE 8 下 Feed 不能显示</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=110">110 Feed Entry 中加入文章分类、作者</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=112">112 评论提交改为 jQuery AJAX</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=113">113 判断是否登录使用 jQuery AJAX</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=114">114 更友好的评论评论邮件提醒</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=116">116 初始化时发布一篇默认文章</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=118">118 优化缓存</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=119">119 评论输入框</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=121">121 占无评论</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=122">122 签名档</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=126">126 调整“经典淡蓝”皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=128">128 对后台的皮肤选择添加验证,避免出现异常和空白页</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=129">129 取消默认链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=131">131 存档边界时间的判断</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=132">132 加入时区配置</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=133">133 访问统计问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=135">135 改进获取随机文章性能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=137">137 发布/更新文章时 Ping Google Blog Search Engine</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=138">138 移除 Guice、Guice Servlet</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=139">139 后台报错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=141">141 将文章浏览计数修改为异步方式</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=142">142 博客地址配置更新检查</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=144">144 删除所有数据</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=145">145 文章发布同步到腾讯微博</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=146">146 TinyMCE 使用相对地址</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=147">147 换肤问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=148">148 移除 AddThis</a></li>
</ul>
<h2>Release 0.2.1 - Dec 1, 2010</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=46">46 偏好设定与统计丢失</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=47">47 升级 0.2.0 后皮肤首次显示错乱</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=48">48 完善初始化界面</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=49">49 按标签查看文章时排序有错</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=50">50 前台统计显示使用模板</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=51">51 前台最新评论使用模板</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=52">52 向 Rhythm 发送发文数据时加入版本</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=53">53 评论加入表情</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=54">54 TinyMCE 加入中文</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=56">56 加入文章自定义链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=57">57 加入页面自定义链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=58">58 评论偶尔出现重复提交</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=61">61 修改“上一篇”、“下一篇”链接为结构化链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=62">62 后台查看评论应该附带邮件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=63">63 标签链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=64">64 查看存档文章列表时排序有错 </a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=65">65 优化更新数据性能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=66">66 整理无用的 jar,减小 Solo 体积</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=67">67 切换皮肤后按标签访问文章页面错乱</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=68">68 移除所有页面缓存时异常</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=72">72 文章同步更新失败</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=74">74 后台查看页面评论应该附带邮件</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=75">75 初始化功能需要加入“确定”对话框</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=76">76 上传文件不应刷新整个页面</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=77">77 IE 7 下:前台头部登录与 logo 对不齐</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=78">78 FF 下 多媒体无法显示</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=79">79 新皮肤</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=80">80 侧边栏文字内容太长则数字统计看不到</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=81">81 侧边栏“访问最多的文章”在“偏好设定”中不能进行自定义</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=82">82 修改“标签墙”链接为 /tags.html</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=83">83 meta 修改</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=84">84 修改自定义页面默认链接为 /pages/${oId}.html</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=86">86 提交评论/回复后只刷新局部</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=87">87 IE 7 下后台展现 bug</a></li>
</ul>
<h2>Release 0.2.0 - Nov 12, 2010</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=4">4 标签管理</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=5">5 缓存状态查看</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=6">6 自定义页面关键字、描述</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=7">7 皮肤 iNove</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=10">10 文章内容样式问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=11">11 TinyMCE 代码高亮</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=12">12 前台添加“回到顶部”</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=13">13 500 Server Error</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=14">14 站外相关阅读</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=15">15 取消从 0.1.0 到 0.1.1 自动升级后台任务</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=16">16 有时博客配置会被重新初始化</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=17">17 自定义页面评论</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=18">18 分页加载顺序</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=19">19 文章页面缓存重复问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=20">20 不能清除本页缓存</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=21">21 文章页面看不到“回到顶部箭头”</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=22">22 文章列表标签列字体太大</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=23">23 页面管理添加链接</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=24">24 同步 Buzz 失败时文章发布失败</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=25">25 自定义页面内容样式有问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=26">26 刷新文章页面,浏览数加2</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=28">28 链接管理 URL 列应该可以点击</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=29">29 弹出查看评论 div 后下面的界面应该不可操作</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=30">30 每次弹出评论 div 时数据应该重新获取</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=31">31 文件管理</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=32">32 评论预览只能显示一次?</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=34">34 NPE</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=35">35 IE 8 下 侧边栏长度过长会向下溢出</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=36">36 博客同步操作异常反馈应该更具体</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=37">37 加强博客地址配置的容错性</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=38">38 考虑关闭 Google Buzz 同步功能</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=39">39 后台查看评论显示问题</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=40">40 回复预览</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=41">41 “经典淡蓝”皮肤公告栏内容自动换行</a></li>
</ul>
<h2>Release 0.1.1 - Oct 26, 2010</h2>
<ul>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=1">1 前台文章列表中的文章统计数据与文章细节页面统计数据不一致</a></li>
<li><a href="http://code.google.com/p/b3log-solo/issues/detail?id=2">2 Tree-House 皮肤评论预览有问题</a></li>
</ul>
</body>
</html>
/*
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* index for admin
*
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @version 1.0.1.8, May 4, 2012
*/
var Admin = function () {
this.register = {};
// 工具栏下的工具
this.tools = ['#page-list', '#file-list', '#link-list', '#preference',
'#user-list', '#plugin-list', '#others'];
// 多用户时,一般用户不能使用的功能
this.adTools = ['link-list', 'preference', 'file-list', 'page-list',
'user-list', 'plugin-list'];
};
$.extend(Admin.prototype, {
/*
* 登出
*/
logout: function () {
window.location.href = latkeConfig.servePath + "/logout?goto=" + latkeConfig.servePath;
},
/*
* 根据当前页数设置 hash
* @currentPage {string} 当前页
*/
setHashByPage: function (currentPage) {
var hash = window.location.hash,
hashList = hash.split("/");
if (/^\d*$/.test(hashList[hashList.length - 1])) {
hashList[hashList.length - 1] = currentPage;
} else {
hashList.push(currentPage);
}
window.location.hash = hashList.join("/");
},
/*
* 设置某个 tab 被选择
* @id tab id
*/
selectTab: function (id) {
window.location.hash = "#" + id;
},
/*
* 根据当前 hash 解析出当前页数及 hash 数组。
*/
analyseHash: function () {
var hash = window.location.hash;
var tag = hash.substr(1, hash.length - 1);
var tagList = tag.split("/");
var tags = {};
tags.page = 1,
tags.hashList = [];
for (var i = 0; i < tagList.length; i++) {
if (i === tagList.length - 1 && (/^\d+$/.test(tagList[i]))) {
tags.page = tagList[i];
} else {
tags.hashList.push(tagList[i]);
}
}
return tags;
},
/*
* 根据当前 hash 设置当前 tab
*/
setCurByHash: function () {
var tags = this.analyseHash();
var tab = tags.hashList[1],
subTab = tags.hashList[2];
if (tags.hashList.length === 1) {
tab = tags.hashList[0];
}
if (tab === "") {
return;
}
// 离开编辑器时进行提示
try {
// 除更新、发布、取消发布文章,编辑器中无内容外,离开编辑器需进行提示。
if (tab !== "article" && admin.article.isConfirm &&
admin.editorArticle.getContent().replace(/\s/g, '') !== "") {
if (!confirm(Label.editorLeaveLabel)) {
window.location.hash = "#article/article";
return;
}
}
// 不离开编辑器,hash 需变为 "#article/article",此时不需要做任何处理。
if (tab === "article" && admin.article.isConfirm &&
admin.editorArticle.getContent().replace(/\s/g, '') !== "") {
return;
}
} catch (e) {
var $articleContent = $('#articleContent');
if ($articleContent.length > 0) {
if (tab !== "article" && admin.article.isConfirm &&
$articleContent.val().replace(/\s/g, '') !== "") {
if (!confirm(Label.editorLeaveLabel)) {
window.location.hash = "#article/article";
return;
}
}
// 不离开编辑器,hash 需变为 "#article/article",此时不需要做任何处理。
if (tab === "article" && admin.article.isConfirm &&
$articleContent.val().replace(/\s/g, '') !== "") {
return;
}
}
}
// clear article
if (tab !== "article" && admin.editorArticle.setContent) {
admin.article.clear();
}
admin.article.isConfirm = true;
$("#tabs").tabs("setCurrent", tab);
$("#loadMsg").text(Label.loadingLabel);
if ($("#tabsPanel_" + tab).length === 1) {
if ($("#tabsPanel_" + tab).html().replace(/\s/g, "") === "") {
// 还未加载 HTML
$("#tabsPanel_" + tab).load("admin-" + tab + ".do", function () {
// 页面加载完后,回调初始函数
if (tab === "article" && admin.article.status.id) {
// 当文章页面编辑器未初始化时,调用更新文章需先初始化编辑器
admin.register[tab].init.call(admin.register[tab].obj, admin.article.getAndSet);
} else {
admin.register[tab].init.call(admin.register[tab].obj, tags.page);
}
// 页面包含子 tab,需根据 hash 定位到相应的 tab
if (subTab) {
$("#tab" + tab.substring(0, 1).toUpperCase() + tab.substring(1)).
tabs("setCurrent", subTab);
}
// 根据 hash 调用现有的插件函数
admin.plugin.setCurByHash(tags);
});
} else {
if (tab === "article" && admin.article.status.id) {
admin.article.getAndSet();
}
// 已加载过 HTML,只需调用刷新函数
if (admin.register[tab] && admin.register[tab].refresh) {
admin.register[tab].refresh.call(admin.register[tab].obj, tags.page);
}
// 页面包含子 tab,需根据 hash 定位到相应的 tab
if (subTab) {
$("#tab" + tab.substring(0, 1).toUpperCase() + tab.substring(1)).
tabs("setCurrent", subTab);
}
// 根据 hash 调用现有的插件函数
admin.plugin.setCurByHash(tags);
}
} else {
$("#tipMsg").text("Error: No tab! " + Label.reportIssueLabel);
$("#loadMsg").text("");
}
},
/*
* 初始化整个后台
*/
init: function () {
//window.onerror = Util.error;
Util.killIE();
$("#loadMsg").text(Label.loadingLabel);
// 构建 tabs
$("#tabs").tabs();
// tipMsg
setInterval(function () {
if($("#tipMsg").text() !== "") {
setTimeout(function () {
$("#tipMsg").text("");
}, 7000);
}
}, 6000);
$("#loadMsg").text("");
},
/*
* @description tools and article collapse
* @param {bom} it 触发事件对象
*/
collapseNav: function (it) {
var subNav = $(it).next();
subNav.slideToggle("normal", function () {
if (this.style.display !== "none") {
$(it).find(".ico-arrow-down")[0].className = "ico-arrow-up";
} else {
$(it).find(".ico-arrow-up")[0].className = "ico-arrow-down";
}
});
/*if (subNav.className === "none") {
$(it).find(".ico-arrow-down")[0].className = "ico-arrow-up";
subNav.className = "collapsed";
} else {
$(it).find(".ico-arrow-up")[0].className = "ico-arrow-down";
subNav.className = "none";
}*/
},
/*
* 后台及当前页面所需插件初始化完后,对权限进行控制及当前页面属于 tools 时,tools 选项需展开。
*/
inited: function () {
// Removes functions with the current user role
if (Label.userRole !== "adminRole") {
for (var i = 0; i < this.adTools.length; i++) {
$("#tabs").tabs("remove", this.adTools[i]);
}
$("#tabs>ul>li").last().remove();
} else {
// 当前 tab 属于 Tools 时,设其展开
for (var j = 0; j < this.tools.length; j++) {
if ("#" + window.location.hash.split("/")[1] === this.tools[j]) {
$("#tabToolsTitle").click();
break;
}
}
}
this.setCurByHash();
}
});
/*
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* index for admin
*
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @version 1.0.1.8, May 4, 2012
*/
var Admin = function () {
this.register = {};
// 工具栏下的工具
this.tools = ['#page-list', '#file-list', '#link-list', '#preference',
'#user-list', '#plugin-list', '#others'];
// 多用户时,一般用户不能使用的功能
this.adTools = ['link-list', 'preference', 'file-list', 'page-list',
'user-list', 'plugin-list'];
};
$.extend(Admin.prototype, {
/*
* 登出
*/
logout: function () {
window.location.href = latkeConfig.servePath + "/logout?goto=" + latkeConfig.servePath;
},
/*
* 根据当前页数设置 hash
* @currentPage {string} 当前页
*/
setHashByPage: function (currentPage) {
var hash = window.location.hash,
hashList = hash.split("/");
if (/^\d*$/.test(hashList[hashList.length - 1])) {
hashList[hashList.length - 1] = currentPage;
} else {
hashList.push(currentPage);
}
window.location.hash = hashList.join("/");
},
/*
* 设置某个 tab 被选择
* @id tab id
*/
selectTab: function (id) {
window.location.hash = "#" + id;
},
/*
* 根据当前 hash 解析出当前页数及 hash 数组。
*/
analyseHash: function () {
var hash = window.location.hash;
var tag = hash.substr(1, hash.length - 1);
var tagList = tag.split("/");
var tags = {};
tags.page = 1,
tags.hashList = [];
for (var i = 0; i < tagList.length; i++) {
if (i === tagList.length - 1 && (/^\d+$/.test(tagList[i]))) {
tags.page = tagList[i];
} else {
tags.hashList.push(tagList[i]);
}
}
return tags;
},
/*
* 根据当前 hash 设置当前 tab
*/
setCurByHash: function () {
var tags = this.analyseHash();
var tab = tags.hashList[1],
subTab = tags.hashList[2];
if (tags.hashList.length === 1) {
tab = tags.hashList[0];
}
if (tab === "") {
return;
}
// 离开编辑器时进行提示
try {
// 除更新、发布、取消发布文章,编辑器中无内容外,离开编辑器需进行提示。
if (tab !== "article" && admin.article.isConfirm &&
admin.editorArticle.getContent().replace(/\s/g, '') !== "") {
if (!confirm(Label.editorLeaveLabel)) {
window.location.hash = "#article/article";
return;
}
}
// 不离开编辑器,hash 需变为 "#article/article",此时不需要做任何处理。
if (tab === "article" && admin.article.isConfirm &&
admin.editorArticle.getContent().replace(/\s/g, '') !== "") {
return;
}
} catch (e) {
var $articleContent = $('#articleContent');
if ($articleContent.length > 0) {
if (tab !== "article" && admin.article.isConfirm &&
$articleContent.val().replace(/\s/g, '') !== "") {
if (!confirm(Label.editorLeaveLabel)) {
window.location.hash = "#article/article";
return;
}
}
// 不离开编辑器,hash 需变为 "#article/article",此时不需要做任何处理。
if (tab === "article" && admin.article.isConfirm &&
$articleContent.val().replace(/\s/g, '') !== "") {
return;
}
}
}
// clear article
if (tab !== "article" && admin.editorArticle.setContent) {
admin.article.clear();
}
admin.article.isConfirm = true;
$("#tabs").tabs("setCurrent", tab);
$("#loadMsg").text(Label.loadingLabel);
if ($("#tabsPanel_" + tab).length === 1) {
if ($("#tabsPanel_" + tab).html().replace(/\s/g, "") === "") {
// 还未加载 HTML
$("#tabsPanel_" + tab).load("admin-" + tab + ".do", function () {
// 页面加载完后,回调初始函数
if (tab === "article" && admin.article.status.id) {
// 当文章页面编辑器未初始化时,调用更新文章需先初始化编辑器
admin.register[tab].init.call(admin.register[tab].obj, admin.article.getAndSet);
} else {
admin.register[tab].init.call(admin.register[tab].obj, tags.page);
}
// 页面包含子 tab,需根据 hash 定位到相应的 tab
if (subTab) {
$("#tab" + tab.substring(0, 1).toUpperCase() + tab.substring(1)).
tabs("setCurrent", subTab);
}
// 根据 hash 调用现有的插件函数
admin.plugin.setCurByHash(tags);
});
} else {
if (tab === "article" && admin.article.status.id) {
admin.article.getAndSet();
}
// 已加载过 HTML,只需调用刷新函数
if (admin.register[tab] && admin.register[tab].refresh) {
admin.register[tab].refresh.call(admin.register[tab].obj, tags.page);
}
// 页面包含子 tab,需根据 hash 定位到相应的 tab
if (subTab) {
$("#tab" + tab.substring(0, 1).toUpperCase() + tab.substring(1)).
tabs("setCurrent", subTab);
}
// 根据 hash 调用现有的插件函数
admin.plugin.setCurByHash(tags);
}
} else {
$("#tipMsg").text("Error: No tab! " + Label.reportIssueLabel);
$("#loadMsg").text("");
}
},
/*
* 初始化整个后台
*/
init: function () {
//window.onerror = Util.error;
Util.killIE();
$("#loadMsg").text(Label.loadingLabel);
// 构建 tabs
$("#tabs").tabs();
// tipMsg
setInterval(function () {
if($("#tipMsg").text() !== "") {
setTimeout(function () {
$("#tipMsg").text("");
}, 7000);
}
}, 6000);
$("#loadMsg").text("");
},
/*
* @description tools and article collapse
* @param {bom} it 触发事件对象
*/
collapseNav: function (it) {
var subNav = $(it).next();
subNav.slideToggle("normal", function () {
if (this.style.display !== "none") {
$(it).find(".ico-arrow-down")[0].className = "ico-arrow-up";
} else {
$(it).find(".ico-arrow-up")[0].className = "ico-arrow-down";
}
});
/*if (subNav.className === "none") {
$(it).find(".ico-arrow-down")[0].className = "ico-arrow-up";
subNav.className = "collapsed";
} else {
$(it).find(".ico-arrow-up")[0].className = "ico-arrow-down";
subNav.className = "none";
}*/
},
/*
* 后台及当前页面所需插件初始化完后,对权限进行控制及当前页面属于 tools 时,tools 选项需展开。
*/
inited: function () {
// Removes functions with the current user role
if (Label.userRole !== "adminRole") {
for (var i = 0; i < this.adTools.length; i++) {
$("#tabs").tabs("remove", this.adTools[i]);
}
$("#tabs>ul>li").last().remove();
} else {
// 当前 tab 属于 Tools 时,设其展开
for (var j = 0; j < this.tools.length; j++) {
if ("#" + window.location.hash.split("/")[1] === this.tools[j]) {
$("#tabToolsTitle").click();
break;
}
}
}
this.setCurByHash();
}
});
var admin = new Admin();
\ No newline at end of file
/*
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview KindEditor
*
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @version 1.0.0.1, May 2, 2012
*/
admin.editors.KindEditor = {
/*
* @description 初始化编辑器
* @param conf 编辑器初始化参数
* @param conf.kind 编辑器类型
* @param conf.id 编辑器渲染元素 id
* @param conf.fun 编辑器首次加载完成后回调函数
*/
init: function (conf) {
var language = "zh_CN";
if ("en_US" === Label.localeString) {
language = "en"
}
if (conf.kind && conf.kind === "simple") {
try {
this[conf.id] = KindEditor.create('#' + conf.id, {
langType : language,
resizeType: 0,
items: ["bold", "italic", "underline", "strikethrough", "|", "undo", "redo", "|",
"insertunorderedlist", "insertorderedlist",
]
});
} catch (e) {
$("#tipMsg").text("KindEditor load fail");
}
} else {
try {
this[conf.id] = KindEditor.create('#' + conf.id, {
langType : language,
items: ["formatblock", "fontname", "fontsize", "|", "bold", "italic", "underline", "strikethrough", "forecolor", "|",
"link", "unlink", "image", "media", "|", "pagebreak", "emoticons", "code", "/",
"undo", "redo", "|", "insertunorderedlist", "insertorderedlist", "indent", "outdent", "|",
"justifyleft", "justifycenter", "justifyright", "justifyfull", "|", "plainpaste", "wordpaste", "|",
"clearhtml", "source", "preview"
],
afterCreate: function () {
if (typeof(conf.fun) === "function") {
conf.fun();
}
}
});
} catch (e) {
$("#tipMsg").text("KindEditor load fail");
}
}
},
/*
* @description 获取编辑器值
* @param {string} id 编辑器id
* @returns {string} 编辑器值
*/
getContent: function (id) {
var content = "";
try {
content = this[id].html();
} catch (e) {
content = $("#" + id).val();
}
return content;
},
/*
* @description 设置编辑器值
* @param {string} id 编辑器 id
* @param {string} content 设置编辑器值
*/
setContent: function (id, content) {
try {
this[id].html(content);
} catch (e) {
$("#" + id).val(content);
}
}
/*
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview KindEditor
*
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @version 1.0.0.1, May 2, 2012
*/
admin.editors.KindEditor = {
/*
* @description 初始化编辑器
* @param conf 编辑器初始化参数
* @param conf.kind 编辑器类型
* @param conf.id 编辑器渲染元素 id
* @param conf.fun 编辑器首次加载完成后回调函数
*/
init: function (conf) {
var language = "zh_CN";
if ("en_US" === Label.localeString) {
language = "en"
}
if (conf.kind && conf.kind === "simple") {
try {
this[conf.id] = KindEditor.create('#' + conf.id, {
langType : language,
resizeType: 0,
items: ["bold", "italic", "underline", "strikethrough", "|", "undo", "redo", "|",
"insertunorderedlist", "insertorderedlist",
]
});
} catch (e) {
$("#tipMsg").text("KindEditor load fail");
}
} else {
try {
this[conf.id] = KindEditor.create('#' + conf.id, {
langType : language,
items: ["formatblock", "fontname", "fontsize", "|", "bold", "italic", "underline", "strikethrough", "forecolor", "|",
"link", "unlink", "image", "media", "|", "pagebreak", "emoticons", "code", "/",
"undo", "redo", "|", "insertunorderedlist", "insertorderedlist", "indent", "outdent", "|",
"justifyleft", "justifycenter", "justifyright", "justifyfull", "|", "plainpaste", "wordpaste", "|",
"clearhtml", "source", "preview"
],
afterCreate: function () {
if (typeof(conf.fun) === "function") {
conf.fun();
}
}
});
} catch (e) {
$("#tipMsg").text("KindEditor load fail");
}
}
},
/*
* @description 获取编辑器值
* @param {string} id 编辑器id
* @returns {string} 编辑器值
*/
getContent: function (id) {
var content = "";
try {
content = this[id].html();
} catch (e) {
content = $("#" + id).val();
}
return content;
},
/*
* @description 设置编辑器值
* @param {string} id 编辑器 id
* @param {string} content 设置编辑器值
*/
setContent: function (id, content) {
try {
this[id].html(content);
} catch (e) {
$("#" + id).val(content);
}
}
};
\ No newline at end of file
/*
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview tinyMCE editor
*
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @version 1.0.0.4, May 9, 2012
*/
admin.editors.tinyMCE = {
/*
* @description 初始化编辑器
* @param conf 编辑器初始化参数
* @param conf.kind 编辑器类型
* @param conf.id 编辑器渲染元素 id
* @param conf.fun 编辑器首次加载完成后回调函数
*/
init: function (conf) {
var language = Label.localeString.substring(0, 2);
if (language === "zh") {
language = "zh-cn";
}
if (conf.kind && conf.kind === "simple") {
try {
tinyMCE.init({
// General options
language: language,
mode : "exact",
elements : conf.id,
theme : "advanced",
// Theme options
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,undo,redo,|,bullist,numlist",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
valid_children : "+body[style]"
});
} catch (e) {
$("#tipMsg").text("TinyMCE load fail");
}
} else {
try {
tinyMCE.init({
// General options
language: language,
mode : "exact",
elements : conf.id,
theme : "advanced",
plugins : "autosave,style,advhr,advimage,advlink,preview,inlinepopups,media,paste,syntaxhl,wordcount",
// Theme options
theme_advanced_buttons1 : "formatselect,fontselect,fontsizeselect,|,bold,italic,underline,strikethrough,forecolor,|,advhr,blockquote,syntaxhl,",
theme_advanced_buttons2 : "undo,redo,|,bullist,numlist,outdent,indent,|,justifyleft,justifycenter,justifyright,justifyfull,|,pastetext,pasteword,|,link,unlink,image,iespell,media,|,cleanup,code,preview,",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_resizing : true,
theme_advanced_statusbar_location : "bottom",
extended_valid_elements: "link[type|rel|href|charset],pre[name|class],iframe[src|width|height|name|align],+a[*]",
valid_children : "+body[style]",
relative_urls: false,
remove_script_host: false,
oninit : function () {
if (typeof(conf.fun) === "function") {
conf.fun();
}
}
});
} catch (e) {
$("#tipMsg").text("TinyMCE load fail");
}
}
},
/*
* @description 获取编辑器值
* @param {string} id 编辑器id
* @returns {string} 编辑器值
*/
getContent: function (id) {
var content = "";
try {
content = tinyMCE.get(id).getContent();
} catch (e) {
content = $("#" + id).val();
}
return content;
},
/*
* @description 设置编辑器值
* @param {string} id 编辑器 id
* @param {string} content 设置编辑器值
*/
setContent: function (id, content) {
try {
if (tinyMCE.get(id)) {
tinyMCE.get(id).setContent(content);
} else {
$("#" + id).val(content);
}
} catch (e) {
$("#" + id).val(content);
}
}
/*
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview tinyMCE editor
*
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @version 1.0.0.4, May 9, 2012
*/
admin.editors.tinyMCE = {
/*
* @description 初始化编辑器
* @param conf 编辑器初始化参数
* @param conf.kind 编辑器类型
* @param conf.id 编辑器渲染元素 id
* @param conf.fun 编辑器首次加载完成后回调函数
*/
init: function (conf) {
var language = Label.localeString.substring(0, 2);
if (language === "zh") {
language = "zh-cn";
}
if (conf.kind && conf.kind === "simple") {
try {
tinyMCE.init({
// General options
language: language,
mode : "exact",
elements : conf.id,
theme : "advanced",
// Theme options
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,undo,redo,|,bullist,numlist",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
valid_children : "+body[style]"
});
} catch (e) {
$("#tipMsg").text("TinyMCE load fail");
}
} else {
try {
tinyMCE.init({
// General options
language: language,
mode : "exact",
elements : conf.id,
theme : "advanced",
plugins : "autosave,style,advhr,advimage,advlink,preview,inlinepopups,media,paste,syntaxhl,wordcount",
// Theme options
theme_advanced_buttons1 : "formatselect,fontselect,fontsizeselect,|,bold,italic,underline,strikethrough,forecolor,|,advhr,blockquote,syntaxhl,",
theme_advanced_buttons2 : "undo,redo,|,bullist,numlist,outdent,indent,|,justifyleft,justifycenter,justifyright,justifyfull,|,pastetext,pasteword,|,link,unlink,image,iespell,media,|,cleanup,code,preview,",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_resizing : true,
theme_advanced_statusbar_location : "bottom",
extended_valid_elements: "link[type|rel|href|charset],pre[name|class],iframe[src|width|height|name|align],+a[*]",
valid_children : "+body[style]",
relative_urls: false,
remove_script_host: false,
oninit : function () {
if (typeof(conf.fun) === "function") {
conf.fun();
}
}
});
} catch (e) {
$("#tipMsg").text("TinyMCE load fail");
}
}
},
/*
* @description 获取编辑器值
* @param {string} id 编辑器id
* @returns {string} 编辑器值
*/
getContent: function (id) {
var content = "";
try {
content = tinyMCE.get(id).getContent();
} catch (e) {
content = $("#" + id).val();
}
return content;
},
/*
* @description 设置编辑器值
* @param {string} id 编辑器 id
* @param {string} content 设置编辑器值
*/
setContent: function (id, content) {
try {
if (tinyMCE.get(id)) {
tinyMCE.get(id).setContent(content);
} else {
$("#" + id).val(content);
}
} catch (e) {
$("#" + id).val(content);
}
}
};
\ No newline at end of file
/*
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* page list for admin
*
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.1.9, May 4, 2012
*/
/* page-list 相关操作 */
admin.pageList = {
tablePagination: new TablePaginate("page"),
pageInfo: {
currentCount: 1,
pageCount: 1,
currentPage: 1
},
id: "",
type: "link",
/*
* 初始化 table, pagination, comments dialog
*/
init: function (page) {
this.tablePagination.buildTable([{
text: "",
index: "pageOrder",
width: 60,
style: "padding-left: 12px;font-size:14px;"
}, {
style: "padding-left: 12px;",
text: Label.titleLabel,
index: "pageTitle",
width: 300
}, {
style: "padding-left: 12px;",
text: Label.permalinkLabel,
index: "pagePermalink",
minWidth: 300
}, {
style: "padding-left: 12px;",
text: Label.openMethodLabel,
index: "pageTarget",
width: 120
}, {
style: "padding-left: 12px;",
text: Label.typeLabel,
index: "pageType",
width: 80
}, {
text: Label.commentLabel,
index: "comments",
width: 80,
style: "padding-left: 12px;"
}]);
this.tablePagination.initPagination();
this.tablePagination.initCommentsDialog();
this.getList(page);
var language = Label.localeString.substring(0, 2);
if (language === "zh") {
language = "zh-cn";
}
admin.editorPage = new Editor({
language: language,
kind: "all",
id: "pageContent"
});
// select type
$(".fn-type").click(function () {
var $it = $(this);
if ($it.hasClass("selected")) {
return;
}
$(".fn-type").removeClass("selected");
$it.addClass("selected");
admin.pageList.type = $it.data("type");
if (admin.pageList.type === "page") {
$("#pagePagePanel").slideDown();
// 使用 CodeMirror 编辑器时,当编辑器初识之前,元素为 display:none 时,行号显示不正常
if (Label.editorType === "CodeMirror-Markdown" && admin.editorPage.getContent() === "") {
admin.editorPage.setContent("");
}
} else {
$("#pagePagePanel").slideUp();
}
});
},
/*
* 根据当前页码获取列表
* @pagNum 当前页码
*/
getList: function (pageNum) {
$("#loadMsg").text(Label.loadingLabel);
var that = this;
$.ajax({
url: latkeConfig.servePath + "/console/pages/" + pageNum + "/" + Label.PAGE_SIZE + "/" + Label.WINDOW_SIZE,
type: "GET",
cache: false,
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
var pages = result.pages;
var pageData = [];
admin.pageList.pageInfo.currentCount = pages.length;
admin.pageList.pageInfo.pageCount = result.pagination.paginationPageCount === 0 ? 1 : result.pagination.paginationPageCount;
for (var i = 0; i < pages.length; i++) {
pageData[i] = {};
if (i === 0) {
if (pages.length === 1) {
pageData[i].pageOrder = "";
} else {
pageData[i].pageOrder = '<div class="table-center" style="width:14px">\
<span onclick="admin.pageList.changeOrder(' + pages[i].oId + ', ' + i + ', \'down\');" \
class="table-downIcon"></span></div>';
}
} else if (i === pages.length - 1) {
pageData[i].pageOrder = '<div class="table-center" style="width:14px">\
<span onclick="admin.pageList.changeOrder(' + pages[i].oId + ', ' + i + ', \'up\');" class="table-upIcon"></span>\
</div>';
} else {
pageData[i].pageOrder = '<div class="table-center" style="width:38px">\
<span onclick="admin.pageList.changeOrder(' + pages[i].oId + ', ' + i + ', \'up\');" class="table-upIcon"></span>\
<span onclick="admin.pageList.changeOrder(' + pages[i].oId + ', ' + i + ', \'down\');" class="table-downIcon"></span>\
</div>';
}
pageData[i].pageTitle = "<a class='no-underline' href='" + latkeConfig.servePath + pages[i].pagePermalink + "' target='_blank'>" +
pages[i].pageTitle + "</a>";
pageData[i].pagePermalink = "<a class='no-underline' href='" + latkeConfig.servePath + pages[i].pagePermalink + "' target='_blank'>"
+ pages[i].pagePermalink + "</a>";
pageData[i].pageTarget = pages[i].pageOpenTarget;
pageData[i].pageType = pages[i].pageType ;
pageData[i].comments = pages[i].pageCommentCount;
pageData[i].expendRow = "<span><a href='" + latkeConfig.servePath + pages[i].pagePermalink + "' target='_blank'>" + Label.viewLabel + "</a> \
<a href='javascript:void(0)' onclick=\"admin.pageList.get('" + pages[i].oId + "')\">" + Label.updateLabel + "</a>\
<a href='javascript:void(0)' onclick=\"admin.pageList.del('" + pages[i].oId + "')\">" + Label.removeLabel + "</a>\
<a href='javascript:void(0)' onclick=\"admin.comment.open('" + pages[i].oId + "', 'page')\">" + Label.commentLabel + "</a></span>";
}
that.tablePagination.updateTablePagination(pageData, pageNum, result.pagination);
$("#loadMsg").text("");
}
});
},
/*
* 获取自定义页面
* @id 自定义页面 id
*/
get: function (id) {
$("#loadMsg").text(Label.loadingLabel);
$("#tipMsg").text("");
$.ajax({
url: latkeConfig.servePath + "/console/page/" + id,
type: "GET",
cache: false,
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
admin.pageList.id = id;
$("#pageTitle").val(result.page.pageTitle);
$("#pagePermalink").val(result.page.pagePermalink);
$("#pageTarget").val(result.page.pageOpenTarget);
if (result.page.pageType === "page") {
$($(".fn-type").get(1)).click();
} else {
$($(".fn-type").get(0)).click();
}
$("#pageCommentable").prop("checked", result.page.pageCommentable);
admin.editorPage.setContent(result.page.pageContent);
$("#loadMsg").text("");
}
});
},
/*
* 删除自定义页面
* @id 自定义页面 id
*/
del: function (id) {
var isDelete = confirm(Label.confirmRemoveLabel);
if (isDelete) {
$("#loadMsg").text(Label.loadingLabel);
$("#tipMsg").text("");
$.ajax({
url: latkeConfig.servePath + "/console/page/" + id,
type: "DELETE",
cache: false,
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
var pageNum = admin.pageList.pageInfo.currentPage;
if (admin.pageList.pageInfo.currentCount === 1 && admin.pageList.pageInfo.pageCount !== 1 &&
admin.pageList.pageInfo.currentPage === admin.pageList.pageInfo.pageCount) {
admin.pageList.pageInfo.pageCount--;
pageNum = admin.pageList.pageInfo.pageCount;
}
var hashList = window.location.hash.split("/");
if (pageNum == hashList[hashList.length - 1]) {
admin.pageList.getList(pageNum);
} else {
admin.setHashByPage(pageNum);
}
$("#loadMsg").text("");
}
});
}
},
/*
* 添加自定义页面
*/
add: function () {
if (this.validate()) {
$("#loadMsg").text(Label.loadingLabel);
$("#tipMsg").text("");
var pageContent = admin.editorPage.getContent();
var pagePermalink = $("#pagePermalink").val().replace(/(^\s*)|(\s*$)/g, "");
if (admin.pageList.type === "link") {
pagePermalink = Util.proessURL(pagePermalink);
}
var requestJSONObject = {
"page": {
"pageTitle": $("#pageTitle").val(),
"pageContent": pageContent,
"pagePermalink": pagePermalink,
"pageCommentable": $("#pageCommentable").prop("checked"),
"pageType": admin.pageList.type,
"pageOpenTarget": $("#pageTarget").val()
}
};
$.ajax({
url: latkeConfig.servePath + "/console/page/",
type: "POST",
cache: false,
data: JSON.stringify(requestJSONObject),
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
admin.pageList.id = "";
$("#pagePermalink").val("");
$("#pageTitle").val("");
$("#pageCommentable").prop("cheked", false);
$("#pageTarget").val("_self");
$($(".fn-type").get(0)).click();
admin.editorPage.setContent("");
if (admin.pageList.pageInfo.currentCount === Label.PAGE_SIZE &&
admin.pageList.pageInfo.currentPage === admin.pageList.pageInfo.pageCount) {
admin.pageList.pageInfo.pageCount++;
}
var hashList = window.location.hash.split("/");
if (admin.pageList.pageInfo.pageCount == hashList[hashList.length - 1]) {
admin.pageList.getList(admin.pageList.pageInfo.pageCount);
} else {
admin.setHashByPage(admin.pageList.pageInfo.pageCount);
}
$("#loadMsg").text("");
}
});
}
},
/*
* 更新自定义页面
*/
update: function () {
if (this.validate()) {
$("#loadMsg").text(Label.loadingLabel);
$("#tipMsg").text("");
var pageContent = admin.editorPage.getContent();
var pagePermalink = $("#pagePermalink").val().replace(/(^\s*)|(\s*$)/g, "");
if (admin.pageList.type === "link") {
pagePermalink = Util.proessURL(pagePermalink);
}
var requestJSONObject = {
"page": {
"pageTitle": $("#pageTitle").val(),
"oId": this.id,
"pageContent": pageContent,
"pagePermalink": pagePermalink,
"pageCommentable": $("#pageCommentable").prop("checked"),
"pageType": admin.pageList.type,
"pageOpenTarget": $("#pageTarget").val()
}
};
$.ajax({
url: latkeConfig.servePath + "/console/page/",
type: "PUT",
cache: false,
data: JSON.stringify(requestJSONObject),
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
admin.pageList.id = "";
admin.pageList.getList(admin.pageList.pageInfo.currentPage);
$("#pageTitle").val("");
$("#pagePermalink").val("");
$("#pageCommentable").prop("cheked", false);
$("#pageTarget").val("_self");
$($(".fn-type").get(0)).click();
admin.editorPage.setContent("");
$("#loadMsg").text("");
}
});
}
},
/*
* 验证字段
*/
validate: function () {
if ($("#pageTitle").val().replace(/\s/g, "") === "") {
$("#tipMsg").text(Label.titleEmptyLabel);
$("#pageTitle").focus();
} else if (admin.pageList.type === "link" &&
$("#pagePermalink").val().replace(/\s/g, "") === "") {
$("#tipMsg").text(Label.linkEmptyLabel);
} else {
return true;
}
return false;
},
/*
* 提交自定义页面
*/
submit: function () {
if (this.id !== "") {
this.update();
} else {
this.add();
}
},
/*
* 调换顺序
*/
changeOrder: function (id, order, status) {
$("#loadMsg").text(Label.loadingLabel);
$("#tipMsg").text("");
var requestJSONObject = {
"oId": id.toString(),
"direction": status
};
$.ajax({
url: latkeConfig.servePath + "/console/page/order/",
type: "PUT",
cache: false,
data: JSON.stringify(requestJSONObject),
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
// Refershes the page list
admin.pageList.getList(admin.pageList.pageInfo.currentPage);
$("#loadMsg").text("");
}
});
}
};
/*
* 注册到 admin 进行管理
*/
admin.register["page-list"] = {
"obj": admin.pageList,
"init": admin.pageList.init,
"refresh": admin.pageList.getList
/*
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* page list for admin
*
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.1.9, May 4, 2012
*/
/* page-list 相关操作 */
admin.pageList = {
tablePagination: new TablePaginate("page"),
pageInfo: {
currentCount: 1,
pageCount: 1,
currentPage: 1
},
id: "",
type: "link",
/*
* 初始化 table, pagination, comments dialog
*/
init: function (page) {
this.tablePagination.buildTable([{
text: "",
index: "pageOrder",
width: 60,
style: "padding-left: 12px;font-size:14px;"
}, {
style: "padding-left: 12px;",
text: Label.titleLabel,
index: "pageTitle",
width: 300
}, {
style: "padding-left: 12px;",
text: Label.permalinkLabel,
index: "pagePermalink",
minWidth: 300
}, {
style: "padding-left: 12px;",
text: Label.openMethodLabel,
index: "pageTarget",
width: 120
}, {
style: "padding-left: 12px;",
text: Label.typeLabel,
index: "pageType",
width: 80
}, {
text: Label.commentLabel,
index: "comments",
width: 80,
style: "padding-left: 12px;"
}]);
this.tablePagination.initPagination();
this.tablePagination.initCommentsDialog();
this.getList(page);
var language = Label.localeString.substring(0, 2);
if (language === "zh") {
language = "zh-cn";
}
admin.editorPage = new Editor({
language: language,
kind: "all",
id: "pageContent"
});
// select type
$(".fn-type").click(function () {
var $it = $(this);
if ($it.hasClass("selected")) {
return;
}
$(".fn-type").removeClass("selected");
$it.addClass("selected");
admin.pageList.type = $it.data("type");
if (admin.pageList.type === "page") {
$("#pagePagePanel").slideDown();
// 使用 CodeMirror 编辑器时,当编辑器初识之前,元素为 display:none 时,行号显示不正常
if (Label.editorType === "CodeMirror-Markdown" && admin.editorPage.getContent() === "") {
admin.editorPage.setContent("");
}
} else {
$("#pagePagePanel").slideUp();
}
});
},
/*
* 根据当前页码获取列表
* @pagNum 当前页码
*/
getList: function (pageNum) {
$("#loadMsg").text(Label.loadingLabel);
var that = this;
$.ajax({
url: latkeConfig.servePath + "/console/pages/" + pageNum + "/" + Label.PAGE_SIZE + "/" + Label.WINDOW_SIZE,
type: "GET",
cache: false,
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
var pages = result.pages;
var pageData = [];
admin.pageList.pageInfo.currentCount = pages.length;
admin.pageList.pageInfo.pageCount = result.pagination.paginationPageCount === 0 ? 1 : result.pagination.paginationPageCount;
for (var i = 0; i < pages.length; i++) {
pageData[i] = {};
if (i === 0) {
if (pages.length === 1) {
pageData[i].pageOrder = "";
} else {
pageData[i].pageOrder = '<div class="table-center" style="width:14px">\
<span onclick="admin.pageList.changeOrder(' + pages[i].oId + ', ' + i + ', \'down\');" \
class="table-downIcon"></span></div>';
}
} else if (i === pages.length - 1) {
pageData[i].pageOrder = '<div class="table-center" style="width:14px">\
<span onclick="admin.pageList.changeOrder(' + pages[i].oId + ', ' + i + ', \'up\');" class="table-upIcon"></span>\
</div>';
} else {
pageData[i].pageOrder = '<div class="table-center" style="width:38px">\
<span onclick="admin.pageList.changeOrder(' + pages[i].oId + ', ' + i + ', \'up\');" class="table-upIcon"></span>\
<span onclick="admin.pageList.changeOrder(' + pages[i].oId + ', ' + i + ', \'down\');" class="table-downIcon"></span>\
</div>';
}
pageData[i].pageTitle = "<a class='no-underline' href='" + latkeConfig.servePath + pages[i].pagePermalink + "' target='_blank'>" +
pages[i].pageTitle + "</a>";
pageData[i].pagePermalink = "<a class='no-underline' href='" + latkeConfig.servePath + pages[i].pagePermalink + "' target='_blank'>"
+ pages[i].pagePermalink + "</a>";
pageData[i].pageTarget = pages[i].pageOpenTarget;
pageData[i].pageType = pages[i].pageType ;
pageData[i].comments = pages[i].pageCommentCount;
pageData[i].expendRow = "<span><a href='" + latkeConfig.servePath + pages[i].pagePermalink + "' target='_blank'>" + Label.viewLabel + "</a> \
<a href='javascript:void(0)' onclick=\"admin.pageList.get('" + pages[i].oId + "')\">" + Label.updateLabel + "</a>\
<a href='javascript:void(0)' onclick=\"admin.pageList.del('" + pages[i].oId + "')\">" + Label.removeLabel + "</a>\
<a href='javascript:void(0)' onclick=\"admin.comment.open('" + pages[i].oId + "', 'page')\">" + Label.commentLabel + "</a></span>";
}
that.tablePagination.updateTablePagination(pageData, pageNum, result.pagination);
$("#loadMsg").text("");
}
});
},
/*
* 获取自定义页面
* @id 自定义页面 id
*/
get: function (id) {
$("#loadMsg").text(Label.loadingLabel);
$("#tipMsg").text("");
$.ajax({
url: latkeConfig.servePath + "/console/page/" + id,
type: "GET",
cache: false,
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
admin.pageList.id = id;
$("#pageTitle").val(result.page.pageTitle);
$("#pagePermalink").val(result.page.pagePermalink);
$("#pageTarget").val(result.page.pageOpenTarget);
if (result.page.pageType === "page") {
$($(".fn-type").get(1)).click();
} else {
$($(".fn-type").get(0)).click();
}
$("#pageCommentable").prop("checked", result.page.pageCommentable);
admin.editorPage.setContent(result.page.pageContent);
$("#loadMsg").text("");
}
});
},
/*
* 删除自定义页面
* @id 自定义页面 id
*/
del: function (id) {
var isDelete = confirm(Label.confirmRemoveLabel);
if (isDelete) {
$("#loadMsg").text(Label.loadingLabel);
$("#tipMsg").text("");
$.ajax({
url: latkeConfig.servePath + "/console/page/" + id,
type: "DELETE",
cache: false,
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
var pageNum = admin.pageList.pageInfo.currentPage;
if (admin.pageList.pageInfo.currentCount === 1 && admin.pageList.pageInfo.pageCount !== 1 &&
admin.pageList.pageInfo.currentPage === admin.pageList.pageInfo.pageCount) {
admin.pageList.pageInfo.pageCount--;
pageNum = admin.pageList.pageInfo.pageCount;
}
var hashList = window.location.hash.split("/");
if (pageNum == hashList[hashList.length - 1]) {
admin.pageList.getList(pageNum);
} else {
admin.setHashByPage(pageNum);
}
$("#loadMsg").text("");
}
});
}
},
/*
* 添加自定义页面
*/
add: function () {
if (this.validate()) {
$("#loadMsg").text(Label.loadingLabel);
$("#tipMsg").text("");
var pageContent = admin.editorPage.getContent();
var pagePermalink = $("#pagePermalink").val().replace(/(^\s*)|(\s*$)/g, "");
if (admin.pageList.type === "link") {
pagePermalink = Util.proessURL(pagePermalink);
}
var requestJSONObject = {
"page": {
"pageTitle": $("#pageTitle").val(),
"pageContent": pageContent,
"pagePermalink": pagePermalink,
"pageCommentable": $("#pageCommentable").prop("checked"),
"pageType": admin.pageList.type,
"pageOpenTarget": $("#pageTarget").val()
}
};
$.ajax({
url: latkeConfig.servePath + "/console/page/",
type: "POST",
cache: false,
data: JSON.stringify(requestJSONObject),
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
admin.pageList.id = "";
$("#pagePermalink").val("");
$("#pageTitle").val("");
$("#pageCommentable").prop("cheked", false);
$("#pageTarget").val("_self");
$($(".fn-type").get(0)).click();
admin.editorPage.setContent("");
if (admin.pageList.pageInfo.currentCount === Label.PAGE_SIZE &&
admin.pageList.pageInfo.currentPage === admin.pageList.pageInfo.pageCount) {
admin.pageList.pageInfo.pageCount++;
}
var hashList = window.location.hash.split("/");
if (admin.pageList.pageInfo.pageCount == hashList[hashList.length - 1]) {
admin.pageList.getList(admin.pageList.pageInfo.pageCount);
} else {
admin.setHashByPage(admin.pageList.pageInfo.pageCount);
}
$("#loadMsg").text("");
}
});
}
},
/*
* 更新自定义页面
*/
update: function () {
if (this.validate()) {
$("#loadMsg").text(Label.loadingLabel);
$("#tipMsg").text("");
var pageContent = admin.editorPage.getContent();
var pagePermalink = $("#pagePermalink").val().replace(/(^\s*)|(\s*$)/g, "");
if (admin.pageList.type === "link") {
pagePermalink = Util.proessURL(pagePermalink);
}
var requestJSONObject = {
"page": {
"pageTitle": $("#pageTitle").val(),
"oId": this.id,
"pageContent": pageContent,
"pagePermalink": pagePermalink,
"pageCommentable": $("#pageCommentable").prop("checked"),
"pageType": admin.pageList.type,
"pageOpenTarget": $("#pageTarget").val()
}
};
$.ajax({
url: latkeConfig.servePath + "/console/page/",
type: "PUT",
cache: false,
data: JSON.stringify(requestJSONObject),
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
admin.pageList.id = "";
admin.pageList.getList(admin.pageList.pageInfo.currentPage);
$("#pageTitle").val("");
$("#pagePermalink").val("");
$("#pageCommentable").prop("cheked", false);
$("#pageTarget").val("_self");
$($(".fn-type").get(0)).click();
admin.editorPage.setContent("");
$("#loadMsg").text("");
}
});
}
},
/*
* 验证字段
*/
validate: function () {
if ($("#pageTitle").val().replace(/\s/g, "") === "") {
$("#tipMsg").text(Label.titleEmptyLabel);
$("#pageTitle").focus();
} else if (admin.pageList.type === "link" &&
$("#pagePermalink").val().replace(/\s/g, "") === "") {
$("#tipMsg").text(Label.linkEmptyLabel);
} else {
return true;
}
return false;
},
/*
* 提交自定义页面
*/
submit: function () {
if (this.id !== "") {
this.update();
} else {
this.add();
}
},
/*
* 调换顺序
*/
changeOrder: function (id, order, status) {
$("#loadMsg").text(Label.loadingLabel);
$("#tipMsg").text("");
var requestJSONObject = {
"oId": id.toString(),
"direction": status
};
$.ajax({
url: latkeConfig.servePath + "/console/page/order/",
type: "PUT",
cache: false,
data: JSON.stringify(requestJSONObject),
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
// Refershes the page list
admin.pageList.getList(admin.pageList.pageInfo.currentPage);
$("#loadMsg").text("");
}
});
}
};
/*
* 注册到 admin 进行管理
*/
admin.register["page-list"] = {
"obj": admin.pageList,
"init": admin.pageList.init,
"refresh": admin.pageList.getList
}
\ No newline at end of file
/*
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* preference for admin.
*
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.1.4, May 3, 2012
*/
/* preference 相关操作 */
admin.preference = {
locale: "",
editorType: "",
/*
* 初始化
*/
init: function () {
$("#tabPreference").tabs();
$.ajax({
url: latkeConfig.servePath + "/console/preference/",
type: "GET",
cache: false,
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
var preference = result.preference;
// 线上环境严禁使用 localhost, 默认将其设为 host
if (preference.blogHost.indexOf("localhost") > -1 && Label.miniPostfix === ".min") {
preference.blogHost = window.location.host;
$("#tipMsg").text(Label.resetBlogHostLabel);
}
$("#metaKeywords").val(preference.metaKeywords),
$("#metaDescription").val(preference.metaDescription),
$("#blogTitle").val(preference.blogTitle),
$("#blogSubtitle").val(preference.blogSubtitle),
$("#mostCommentArticleDisplayCount").val(preference.mostCommentArticleDisplayCount);
$("#mostViewArticleDisplayCount").val(preference.mostViewArticleDisplayCount),
$("#recentCommentDisplayCount").val(preference.recentCommentDisplayCount);
$("#mostUsedTagDisplayCount").val(preference.mostUsedTagDisplayCount);
$("#articleListDisplayCount").val(preference.articleListDisplayCount);
$("#articleListPaginationWindowSize").val(preference.articleListPaginationWindowSize);
$("#blogHost").val(preference.blogHost);
$("#localeString").val(preference.localeString);
$("#timeZoneId").val(preference.timeZoneId);
$("#noticeBoard").val(preference.noticeBoard);
$("#htmlHead").val(preference.htmlHead);
$("#externalRelevantArticlesDisplayCount").val(preference.externalRelevantArticlesDisplayCount);
$("#relevantArticlesDisplayCount").val(preference.relevantArticlesDisplayCount);
$("#randomArticlesDisplayCount").val(preference.randomArticlesDisplayCount);
$("#keyOfSolo").val(preference.keyOfSolo);
preference.enableArticleUpdateHint ? $("#enableArticleUpdateHint").attr("checked", "checked") : $("#enableArticleUpdateHint").removeAttr("checked");
preference.allowVisitDraftViaPermalink ? $("#allowVisitDraftViaPermalink").attr("checked", "checked") : $("allowVisitDraftViaPermalink").removeAttr("checked");
admin.preference.locale = preference.localeString;
admin.preference.editorType = preference.editorType;
// skin
$("#skinMain").data("skinDirName", preference.skinDirName);
var skins = eval('(' + preference.skins + ')');
var skinsHTML = "";
for (var i = 0; i < skins.length; i++) {
if (skins[i].skinName === preference.skinName
&& skins[i].skinDirName === preference.skinDirName ) {
skinsHTML += "<div title='" + skins[i].skinDirName
+ "' class='left skinItem selected'><img class='skinPreview' src='skins/"
+ skins[i].skinDirName + "/preview.png'/><div>" + skins[i].skinName + "</div></div>"
} else {
skinsHTML += "<div title='" + skins[i].skinDirName
+ "' class='left skinItem'><img class='skinPreview' src='skins/"
+ skins[i].skinDirName + "/preview.png'/><div>" + skins[i].skinName + "</div></div>"
}
}
$("#skinMain").append(skinsHTML + "<div class='clear'></div>");
$(".skinItem").click(function () {
$(".skinItem").removeClass("selected");
$(this).addClass("selected");
$("#skinMain").data("skinDirName", this.title);
});
// sign
var signs = eval('(' + preference.signs + ')');
for (var j = 1; j < signs.length; j++) {
$("#preferenceSign" + j).val(signs[j].signHTML);
$("#preferenceSignButton" + j).tip({
content: signs[j].signHTML === "" ? Label.signIsNullLabel : signs[j].signHTML.replace(/\n/g, "").replace(/<script.*<\/script>/ig, ""),
position: "bottom"
});
}
// Article list style
$("#articleListDisplay").val(preference.articleListStyle);
// Editor Type
$("#editorType").val(preference.editorType);
// Feed output mode
$("#feedOutputMode").val(preference.feedOutputMode);
// Commentable
preference.commentable ? $("#commentable").attr("checked", "checked") : $("commentable").removeAttr("checked");
$("#loadMsg").text("");
}
});
},
/*
* 更新
*/
update: function () {
$("#loadMsg").text(Label.loadingLabel);
$("#tipMsg").text("");
var signs = [{
"oId": 0,
"signHTML": ""
}, {
"oId": 1,
"signHTML": $("#preferenceSign1").val()
}, {
"oId": 2,
"signHTML": $("#preferenceSign2").val()
}, {
"oId": 3,
"signHTML": $("#preferenceSign3").val()
}];
var requestJSONObject = {
"preference": {
"metaKeywords": $("#metaKeywords").val(),
"metaDescription": $("#metaDescription").val(),
"blogTitle": $("#blogTitle").val(),
"blogSubtitle": $("#blogSubtitle").val(),
"mostCommentArticleDisplayCount": $("#mostCommentArticleDisplayCount").val(),
"mostViewArticleDisplayCount": $("#mostViewArticleDisplayCount").val(),
"recentCommentDisplayCount": $("#recentCommentDisplayCount").val(),
"mostUsedTagDisplayCount": $("#mostUsedTagDisplayCount").val(),
"articleListDisplayCount": $("#articleListDisplayCount").val(),
"articleListPaginationWindowSize": $("#articleListPaginationWindowSize").val(),
"skinDirName": $("#skinMain").data("skinDirName"),
"blogHost": $("#blogHost").val(),
"localeString": $("#localeString").val(),
"timeZoneId": $("#timeZoneId").val(),
"noticeBoard": $("#noticeBoard").val(),
"htmlHead": $("#htmlHead").val(),
"externalRelevantArticlesDisplayCount": $("#externalRelevantArticlesDisplayCount").val(),
"relevantArticlesDisplayCount": $("#relevantArticlesDisplayCount").val(),
"randomArticlesDisplayCount": $("#randomArticlesDisplayCount").val(),
"enableArticleUpdateHint": $("#enableArticleUpdateHint").prop("checked"),
"signs": signs,
"keyOfSolo": $("#keyOfSolo").val(),
"allowVisitDraftViaPermalink": $("#allowVisitDraftViaPermalink").prop("checked"),
"articleListStyle": $("#articleListDisplay").val(),
"editorType": $("#editorType").val(),
"feedOutputMode": $("#feedOutputMode").val(),
"commentable": $("#commentable").prop("checked")
}
};
$.ajax({
url: latkeConfig.servePath + "/console/preference/",
type: "PUT",
cache: false,
data: JSON.stringify(requestJSONObject),
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
if ($("#localeString").val() !== admin.preference.locale ||
$("#editorType").val() !== admin.preference.editorType) {
window.location.reload();
}
// update article and preferences signs
for (var i = 1; i < signs.length; i++) {
if ($("#articleSign" + signs[i].oId).length === 1) {
$("#articleSign" + signs[i].oId).tip("option", "content",
signs[i].signHTML === "" ? Label.signIsNullLabel : signs[i].signHTML.replace(/\n/g, "").replace(/<script.*<\/script>/ig, ""));
}
$("#preferenceSignButton" + signs[i].oId).tip("option", "content",
signs[i].signHTML === "" ? Label.signIsNullLabel : signs[i].signHTML.replace(/\n/g, "").replace(/<script.*<\/script>/ig, ""));
}
$("#loadMsg").text("");
}
});
}
};
/*
* 注册到 admin 进行管理
*/
admin.register["preference"] = {
"obj": admin.preference,
"init": admin.preference.init,
"refresh": function () {
$("#loadMsg").text("");
}
/*
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* preference for admin.
*
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.1.4, May 3, 2012
*/
/* preference 相关操作 */
admin.preference = {
locale: "",
editorType: "",
/*
* 初始化
*/
init: function () {
$("#tabPreference").tabs();
$.ajax({
url: latkeConfig.servePath + "/console/preference/",
type: "GET",
cache: false,
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
var preference = result.preference;
// 线上环境严禁使用 localhost, 默认将其设为 host
if (preference.blogHost.indexOf("localhost") > -1 && Label.miniPostfix === ".min") {
preference.blogHost = window.location.host;
$("#tipMsg").text(Label.resetBlogHostLabel);
}
$("#metaKeywords").val(preference.metaKeywords),
$("#metaDescription").val(preference.metaDescription),
$("#blogTitle").val(preference.blogTitle),
$("#blogSubtitle").val(preference.blogSubtitle),
$("#mostCommentArticleDisplayCount").val(preference.mostCommentArticleDisplayCount);
$("#mostViewArticleDisplayCount").val(preference.mostViewArticleDisplayCount),
$("#recentCommentDisplayCount").val(preference.recentCommentDisplayCount);
$("#mostUsedTagDisplayCount").val(preference.mostUsedTagDisplayCount);
$("#articleListDisplayCount").val(preference.articleListDisplayCount);
$("#articleListPaginationWindowSize").val(preference.articleListPaginationWindowSize);
$("#blogHost").val(preference.blogHost);
$("#localeString").val(preference.localeString);
$("#timeZoneId").val(preference.timeZoneId);
$("#noticeBoard").val(preference.noticeBoard);
$("#htmlHead").val(preference.htmlHead);
$("#externalRelevantArticlesDisplayCount").val(preference.externalRelevantArticlesDisplayCount);
$("#relevantArticlesDisplayCount").val(preference.relevantArticlesDisplayCount);
$("#randomArticlesDisplayCount").val(preference.randomArticlesDisplayCount);
$("#keyOfSolo").val(preference.keyOfSolo);
preference.enableArticleUpdateHint ? $("#enableArticleUpdateHint").attr("checked", "checked") : $("#enableArticleUpdateHint").removeAttr("checked");
preference.allowVisitDraftViaPermalink ? $("#allowVisitDraftViaPermalink").attr("checked", "checked") : $("allowVisitDraftViaPermalink").removeAttr("checked");
admin.preference.locale = preference.localeString;
admin.preference.editorType = preference.editorType;
// skin
$("#skinMain").data("skinDirName", preference.skinDirName);
var skins = eval('(' + preference.skins + ')');
var skinsHTML = "";
for (var i = 0; i < skins.length; i++) {
if (skins[i].skinName === preference.skinName
&& skins[i].skinDirName === preference.skinDirName ) {
skinsHTML += "<div title='" + skins[i].skinDirName
+ "' class='left skinItem selected'><img class='skinPreview' src='skins/"
+ skins[i].skinDirName + "/preview.png'/><div>" + skins[i].skinName + "</div></div>"
} else {
skinsHTML += "<div title='" + skins[i].skinDirName
+ "' class='left skinItem'><img class='skinPreview' src='skins/"
+ skins[i].skinDirName + "/preview.png'/><div>" + skins[i].skinName + "</div></div>"
}
}
$("#skinMain").append(skinsHTML + "<div class='clear'></div>");
$(".skinItem").click(function () {
$(".skinItem").removeClass("selected");
$(this).addClass("selected");
$("#skinMain").data("skinDirName", this.title);
});
// sign
var signs = eval('(' + preference.signs + ')');
for (var j = 1; j < signs.length; j++) {
$("#preferenceSign" + j).val(signs[j].signHTML);
$("#preferenceSignButton" + j).tip({
content: signs[j].signHTML === "" ? Label.signIsNullLabel : signs[j].signHTML.replace(/\n/g, "").replace(/<script.*<\/script>/ig, ""),
position: "bottom"
});
}
// Article list style
$("#articleListDisplay").val(preference.articleListStyle);
// Editor Type
$("#editorType").val(preference.editorType);
// Feed output mode
$("#feedOutputMode").val(preference.feedOutputMode);
// Commentable
preference.commentable ? $("#commentable").attr("checked", "checked") : $("commentable").removeAttr("checked");
$("#loadMsg").text("");
}
});
},
/*
* 更新
*/
update: function () {
$("#loadMsg").text(Label.loadingLabel);
$("#tipMsg").text("");
var signs = [{
"oId": 0,
"signHTML": ""
}, {
"oId": 1,
"signHTML": $("#preferenceSign1").val()
}, {
"oId": 2,
"signHTML": $("#preferenceSign2").val()
}, {
"oId": 3,
"signHTML": $("#preferenceSign3").val()
}];
var requestJSONObject = {
"preference": {
"metaKeywords": $("#metaKeywords").val(),
"metaDescription": $("#metaDescription").val(),
"blogTitle": $("#blogTitle").val(),
"blogSubtitle": $("#blogSubtitle").val(),
"mostCommentArticleDisplayCount": $("#mostCommentArticleDisplayCount").val(),
"mostViewArticleDisplayCount": $("#mostViewArticleDisplayCount").val(),
"recentCommentDisplayCount": $("#recentCommentDisplayCount").val(),
"mostUsedTagDisplayCount": $("#mostUsedTagDisplayCount").val(),
"articleListDisplayCount": $("#articleListDisplayCount").val(),
"articleListPaginationWindowSize": $("#articleListPaginationWindowSize").val(),
"skinDirName": $("#skinMain").data("skinDirName"),
"blogHost": $("#blogHost").val(),
"localeString": $("#localeString").val(),
"timeZoneId": $("#timeZoneId").val(),
"noticeBoard": $("#noticeBoard").val(),
"htmlHead": $("#htmlHead").val(),
"externalRelevantArticlesDisplayCount": $("#externalRelevantArticlesDisplayCount").val(),
"relevantArticlesDisplayCount": $("#relevantArticlesDisplayCount").val(),
"randomArticlesDisplayCount": $("#randomArticlesDisplayCount").val(),
"enableArticleUpdateHint": $("#enableArticleUpdateHint").prop("checked"),
"signs": signs,
"keyOfSolo": $("#keyOfSolo").val(),
"allowVisitDraftViaPermalink": $("#allowVisitDraftViaPermalink").prop("checked"),
"articleListStyle": $("#articleListDisplay").val(),
"editorType": $("#editorType").val(),
"feedOutputMode": $("#feedOutputMode").val(),
"commentable": $("#commentable").prop("checked")
}
};
$.ajax({
url: latkeConfig.servePath + "/console/preference/",
type: "PUT",
cache: false,
data: JSON.stringify(requestJSONObject),
success: function(result, textStatus){
$("#tipMsg").text(result.msg);
if (!result.sc) {
$("#loadMsg").text("");
return;
}
if ($("#localeString").val() !== admin.preference.locale ||
$("#editorType").val() !== admin.preference.editorType) {
window.location.reload();
}
// update article and preferences signs
for (var i = 1; i < signs.length; i++) {
if ($("#articleSign" + signs[i].oId).length === 1) {
$("#articleSign" + signs[i].oId).tip("option", "content",
signs[i].signHTML === "" ? Label.signIsNullLabel : signs[i].signHTML.replace(/\n/g, "").replace(/<script.*<\/script>/ig, ""));
}
$("#preferenceSignButton" + signs[i].oId).tip("option", "content",
signs[i].signHTML === "" ? Label.signIsNullLabel : signs[i].signHTML.replace(/\n/g, "").replace(/<script.*<\/script>/ig, ""));
}
$("#loadMsg").text("");
}
});
}
};
/*
* 注册到 admin 进行管理
*/
admin.register["preference"] = {
"obj": admin.preference,
"init": admin.preference.init,
"refresh": function () {
$("#loadMsg").text("");
}
}
\ No newline at end of file
/*
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* table and paginate util
*
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @version 1.0.0.7, Nov 8, 2011
*/
var TablePaginate = function (id) {
this.id = id;
this.currentPage = 1;
};
$.extend(TablePaginate.prototype, {
/*
* 构建 table 框架
* @colModel table 列宽,标题等数据
*/
buildTable: function (colModel, noExpend) {
var tableData = {
colModel: colModel,
noDataTip: Label.noDataLabel
}
if (!noExpend) {
tableData.expendRow = {
index: "expendRow"
}
}
$("#" + this.id + "Table").table(tableData);
},
/*
* 初始化分页
*/
initPagination: function () {
var id = this.id;
$("#" + id + "Pagination").paginate({
"bind": function(currentPage) {
admin.setHashByPage(currentPage);
return true;
},
"currentPage": 1,
"errorMessage": Label.inputErrorLabel,
"nextPageText": Label.nextPagePabel,
"previousPageText": Label.previousPageLabel,
"goText": Label.gotoLabel,
"type": "custom",
"custom": [1],
"pageCount": 1
});
},
/*
* 初始化评论对话框
*/
initCommentsDialog: function () {
var that = this;
$("#" + this.id + "Comments").dialog({
width: 700,
height:500,
"modal": true,
"hideFooter": true,
"close": function () {
admin[that.id + "List"].getList(that.currentPage);
return true;
}
});
},
/*
* 更新 table & paginateion
*/
updateTablePagination: function (data, currentPage, pageInfo) {
currentPage = parseInt(currentPage);
if (currentPage > pageInfo.paginationPageCount && currentPage > 1) {
$("#tipMsg").text(Label.pageLabel + ":" + currentPage + " " + Label.noDataLable);
$("#loadMsg").text("");
return;
}
$("#" + this.id + "Table").table("update", {
data: [{
groupName: "all",
groupData: data
}]
});
if (pageInfo.paginationPageCount === 0) {
pageInfo.paginationPageCount = 1;
}
$("#" + this.id + "Pagination").paginate("update", {
pageCount: pageInfo.paginationPageCount,
currentPage: currentPage,
custom: pageInfo.paginationPageNums
});
this.currentPage = currentPage;
}
/*
* Copyright (c) 2009, 2010, 2011, 2012, B3log Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* table and paginate util
*
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @version 1.0.0.7, Nov 8, 2011
*/
var TablePaginate = function (id) {
this.id = id;
this.currentPage = 1;
};
$.extend(TablePaginate.prototype, {
/*
* 构建 table 框架
* @colModel table 列宽,标题等数据
*/
buildTable: function (colModel, noExpend) {
var tableData = {
colModel: colModel,
noDataTip: Label.noDataLabel
}
if (!noExpend) {
tableData.expendRow = {
index: "expendRow"
}
}
$("#" + this.id + "Table").table(tableData);
},
/*
* 初始化分页
*/
initPagination: function () {
var id = this.id;
$("#" + id + "Pagination").paginate({
"bind": function(currentPage) {
admin.setHashByPage(currentPage);
return true;
},
"currentPage": 1,
"errorMessage": Label.inputErrorLabel,
"nextPageText": Label.nextPagePabel,
"previousPageText": Label.previousPageLabel,
"goText": Label.gotoLabel,
"type": "custom",
"custom": [1],
"pageCount": 1
});
},
/*
* 初始化评论对话框
*/
initCommentsDialog: function () {
var that = this;
$("#" + this.id + "Comments").dialog({
width: 700,
height:500,
"modal": true,
"hideFooter": true,
"close": function () {
admin[that.id + "List"].getList(that.currentPage);
return true;
}
});
},
/*
* 更新 table & paginateion
*/
updateTablePagination: function (data, currentPage, pageInfo) {
currentPage = parseInt(currentPage);
if (currentPage > pageInfo.paginationPageCount && currentPage > 1) {
$("#tipMsg").text(Label.pageLabel + ":" + currentPage + " " + Label.noDataLable);
$("#loadMsg").text("");
return;
}
$("#" + this.id + "Table").table("update", {
data: [{
groupName: "all",
groupData: data
}]
});
if (pageInfo.paginationPageCount === 0) {
pageInfo.paginationPageCount = 1;
}
$("#" + this.id + "Pagination").paginate("update", {
pageCount: pageInfo.paginationPageCount,
currentPage: currentPage,
custom: pageInfo.paginationPageNums
});
this.currentPage = currentPage;
}
});
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment