Commit Graph

136 Commits

Author SHA1 Message Date
Christophe Vilayphiou ccbde122df Fix bugs in design.
The static js were loaded after the page js.
parser_back_end.rb wasn't changed for the new routes.
The themes weren't parsed and saved correctly.
2012-01-31 16:38:25 +08:00
Christophe Vilayphiou 762c2f5e8a Add key in module_app.rb to use instead of title for authorization 2012-01-30 18:12:18 +08:00
Christophe Vilayphiou 46db173e0b Modifications in the Design code: the uploader works but the edit is broken 2012-01-26 12:05:25 +08:00
Christophe Vilayphiou 6a196c5d3d Embedded to referenced for users 2012-01-24 15:12:06 +08:00
Christophe Vilayphiou 83827f82ec Fix custom image class 2012-01-24 15:11:42 +08:00
Matthew Fu 4ed8a2164c First complete with manager and submanager 2012-01-24 12:28:32 +08:00
Matthew Fu 18a82d7f47 Manger and SubManager 2012-01-24 12:28:32 +08:00
Christophe Vilayphiou 9fcf8280fa Change "_filename" to "_identifier" for carrierwave 2012-01-24 11:57:27 +08:00
Christophe Vilayphiou bfd55277d7 Embed attribute_fields and sub_roles 2012-01-24 11:57:27 +08:00
chris2tof 4be97f6ea6 Merge branch 'fix_it'
Conflicts:
	app/assets/javascripts/page_edit.js
	app/assets/javascripts/rss.js
	app/assets/stylesheets/admin.css.erb
	app/assets/stylesheets/admin_back_end.css.erb
	app/controllers/admin/app_auths_controller.rb
	app/controllers/admin/module_apps_controller.rb
	app/controllers/admin/users_controller.rb
	app/controllers/application_controller.rb
	app/models/app_auth.rb
	app/models/user/user.rb
	app/views/admin/app_auths/index.html.erb
	app/views/admin/attributes/_attribute_field.html.erb
	app/views/admin/designs/_new.html.erb
	app/views/admin/designs/new.html.erb
	app/views/admin/infos/_form.html.erb
	app/views/admin/module_apps/_app_selector.html.erb
	app/views/admin/module_apps/index.html.erb
	app/views/admin/pages/_form.html.erb
	app/views/admin/roles/_form.html.erb
	app/views/admin/roles/_sub_role.html.erb
	app/views/admin/users/_form.html.erb
	app/views/admin/users/_show_sub_role.html.erb
	app/views/admin/users/_sub_role.html.erb
	app/views/admin/users/edit.html.erb
	app/views/admin/users/index.html.erb
	app/views/admin/users/new.html.erb
	app/views/admin/users/show.html.erb
	app/views/layouts/admin.html.erb
	lib/fraisier/layout.html
	lib/parsers/parser_back_end.rb
	lib/parsers/parser_layout.rb
	lib/tasks/dev.rake
	spec/models/app_auth_basic.rb
	vendor/built_in_modules/NewBlog/.gitignore
	vendor/built_in_modules/NewBlog/Gemfile
	vendor/built_in_modules/NewBlog/Gemfile.lock
	vendor/built_in_modules/NewBlog/MIT-LICENSE
	vendor/built_in_modules/NewBlog/NewBlog.gemspec
	vendor/built_in_modules/NewBlog/README.rdoc
	vendor/built_in_modules/NewBlog/Rakefile
	vendor/built_in_modules/NewBlog/app/assets/images/NewBlog/.gitkeep
	vendor/built_in_modules/NewBlog/app/assets/javascripts/NewBlog/.gitkeep
	vendor/built_in_modules/NewBlog/app/assets/stylesheets/NewBlog/.gitkeep
	vendor/built_in_modules/NewBlog/app/assets/stylesheets/NewBlog/application.css
	vendor/built_in_modules/NewBlog/app/assets/stylesheets/NewBlog/production.css
	vendor/built_in_modules/NewBlog/app/controllers/.gitkeep
	vendor/built_in_modules/NewBlog/app/controllers/application_controller.rb
	vendor/built_in_modules/NewBlog/app/controllers/panel/blog/back_end/posts_controller.rb
	vendor/built_in_modules/NewBlog/app/helpers/.gitkeep
	vendor/built_in_modules/NewBlog/app/helpers/application_helper.rb
	vendor/built_in_modules/NewBlog/app/mailers/.gitkeep
	vendor/built_in_modules/NewBlog/app/models/.gitkeep
	vendor/built_in_modules/NewBlog/app/models/comment.rb
	vendor/built_in_modules/NewBlog/app/models/post.rb
	vendor/built_in_modules/NewBlog/app/views/.gitkeep
	vendor/built_in_modules/NewBlog/app/views/layouts/application.html.erb
	vendor/built_in_modules/NewBlog/app/views/layouts/edit_view.html.erb
	vendor/built_in_modules/NewBlog/app/views/layouts/production.html.erb
	vendor/built_in_modules/NewBlog/app/views/panel/blog/back_end/posts/_form.html.erb
	vendor/built_in_modules/NewBlog/app/views/panel/blog/back_end/posts/index.html.erb
	vendor/built_in_modules/NewBlog/app/views/panel/blog/back_end/posts/latest_post.html.erb
	vendor/built_in_modules/NewBlog/app/views/panel/blog/back_end/posts/new.html.erb
	vendor/built_in_modules/NewBlog/app/views/panel/blog/back_end/posts/show.html.erb
	vendor/built_in_modules/NewBlog/app/views/panel/blog/front_end/posts/show.html.erb
	vendor/built_in_modules/NewBlog/app/views/panel/blog/widget/posts/index.html.erb
	vendor/built_in_modules/NewBlog/app/views/panel/blog/widget/posts/latest_post.html.erb
	vendor/built_in_modules/NewBlog/config/locales/en.yml
	vendor/built_in_modules/NewBlog/lib/NewBlog.rb
	vendor/built_in_modules/NewBlog/lib/NewBlog/engine.rb
	vendor/built_in_modules/NewBlog/lib/NewBlog/version.rb
	vendor/built_in_modules/NewBlog/lib/tasks/NewBlog_tasks.rake
	vendor/built_in_modules/NewBlog/script/rails
	vendor/built_in_modules/NewBlog/test/NewBlog_test.rb
	vendor/built_in_modules/NewBlog/test/dummy/Rakefile
	vendor/built_in_modules/NewBlog/test/dummy/app/assets/javascripts/application.js
	vendor/built_in_modules/NewBlog/test/dummy/app/assets/stylesheets/application.css
	vendor/built_in_modules/NewBlog/test/dummy/app/controllers/application_controller.rb
	vendor/built_in_modules/NewBlog/test/dummy/app/helpers/application_helper.rb
	vendor/built_in_modules/NewBlog/test/dummy/app/mailers/.gitkeep
	vendor/built_in_modules/NewBlog/test/dummy/app/models/.gitkeep
	vendor/built_in_modules/NewBlog/test/dummy/app/views/layouts/application.html.erb
	vendor/built_in_modules/NewBlog/test/dummy/config.ru
	vendor/built_in_modules/NewBlog/test/dummy/config/application.rb
	vendor/built_in_modules/NewBlog/test/dummy/config/boot.rb
	vendor/built_in_modules/NewBlog/test/dummy/config/database.yml
	vendor/built_in_modules/NewBlog/test/dummy/config/environment.rb
	vendor/built_in_modules/NewBlog/test/dummy/config/environments/development.rb
	vendor/built_in_modules/NewBlog/test/dummy/config/environments/production.rb
	vendor/built_in_modules/NewBlog/test/dummy/config/environments/test.rb
	vendor/built_in_modules/NewBlog/test/dummy/config/initializers/backtrace_silencers.rb
	vendor/built_in_modules/NewBlog/test/dummy/config/initializers/inflections.rb
	vendor/built_in_modules/NewBlog/test/dummy/config/initializers/mime_types.rb
	vendor/built_in_modules/NewBlog/test/dummy/config/initializers/secret_token.rb
	vendor/built_in_modules/NewBlog/test/dummy/config/initializers/session_store.rb
	vendor/built_in_modules/NewBlog/test/dummy/config/initializers/wrap_parameters.rb
	vendor/built_in_modules/NewBlog/test/dummy/config/locales/en.yml
	vendor/built_in_modules/NewBlog/test/dummy/config/mongoid.yml
	vendor/built_in_modules/NewBlog/test/dummy/config/routes.rb
	vendor/built_in_modules/NewBlog/test/dummy/lib/assets/.gitkeep
	vendor/built_in_modules/NewBlog/test/dummy/log/.gitkeep
	vendor/built_in_modules/NewBlog/test/dummy/public/404.html
	vendor/built_in_modules/NewBlog/test/dummy/public/422.html
	vendor/built_in_modules/NewBlog/test/dummy/public/500.html
	vendor/built_in_modules/NewBlog/test/dummy/public/favicon.ico
	vendor/built_in_modules/NewBlog/test/dummy/script/rails
	vendor/built_in_modules/NewBlog/test/integration/navigation_test.rb
	vendor/built_in_modules/NewBlog/test/test_helper.rb
	vendor/built_in_modules/blog/app/controllers/application_controller.rb
	vendor/built_in_modules/blog/app/controllers/panel/blog/posts_controller.rb
	vendor/built_in_modules/blog/app/helpers/application_helper.rb
	vendor/built_in_modules/blog/app/models/comment.rb
	vendor/built_in_modules/blog/app/models/post.rb
	vendor/built_in_modules/blog/app/views/layouts/application.html.erb
	vendor/built_in_modules/blog/app/views/panel/blog/posts/_form.html.erb
	vendor/built_in_modules/blog/app/views/panel/blog/posts/index.html.erb
	vendor/built_in_modules/blog/app/views/panel/blog/posts/show.html.erb
	vendor/built_in_modules/blog/config/initializers/backtrace_silencers.rb
	vendor/built_in_modules/blog/config/initializers/inflections.rb
	vendor/built_in_modules/blog/config/initializers/mime_types.rb
	vendor/built_in_modules/blog/public/404.html
	vendor/built_in_modules/blog/public/422.html
	vendor/built_in_modules/blog/public/500.html
	vendor/built_in_modules/blog/public/favicon.ico
	vendor/built_in_modules/blog/public/stylesheets/.gitkeep
	vendor/built_in_modules/blog/script/rails
	vendor/built_in_modules/blog/vendor/plugins/.gitkeep
	vendor/built_in_modules/new_blog/.gitignore
	vendor/built_in_modules/new_blog/Gemfile
	vendor/built_in_modules/new_blog/Gemfile.lock
	vendor/built_in_modules/new_blog/MIT-LICENSE
	vendor/built_in_modules/new_blog/README.rdoc
	vendor/built_in_modules/new_blog/Rakefile
	vendor/built_in_modules/new_blog/app/assets/images/NewBlog/.gitkeep
	vendor/built_in_modules/new_blog/app/assets/javascripts/NewBlog/.gitkeep
	vendor/built_in_modules/new_blog/app/assets/stylesheets/NewBlog/.gitkeep
	vendor/built_in_modules/new_blog/app/assets/stylesheets/NewBlog/application.css
	vendor/built_in_modules/new_blog/app/assets/stylesheets/NewBlog/production.css
	vendor/built_in_modules/new_blog/app/controllers/.gitkeep
	vendor/built_in_modules/new_blog/app/controllers/application_controller.rb
	vendor/built_in_modules/new_blog/app/controllers/panel/new_blog/back_end/posts_controller.rb
	vendor/built_in_modules/new_blog/app/helpers/.gitkeep
	vendor/built_in_modules/new_blog/app/mailers/.gitkeep
	vendor/built_in_modules/new_blog/app/models/.gitkeep
	vendor/built_in_modules/new_blog/app/models/comment.rb
	vendor/built_in_modules/new_blog/app/models/post.rb
	vendor/built_in_modules/new_blog/app/views/.gitkeep
	vendor/built_in_modules/new_blog/app/views/layouts/application.html.erb
	vendor/built_in_modules/new_blog/app/views/layouts/edit_view.html.erb
	vendor/built_in_modules/new_blog/app/views/layouts/production.html.erb
	vendor/built_in_modules/new_blog/app/views/panel/new_blog/back_end/posts/_form.html.erb
	vendor/built_in_modules/new_blog/app/views/panel/new_blog/back_end/posts/index.html.erb
	vendor/built_in_modules/new_blog/app/views/panel/new_blog/back_end/posts/latest_post.html.erb
	vendor/built_in_modules/new_blog/app/views/panel/new_blog/back_end/posts/new.html.erb
	vendor/built_in_modules/new_blog/app/views/panel/new_blog/back_end/posts/show.html.erb
	vendor/built_in_modules/new_blog/app/views/panel/new_blog/front_end/posts/show.html.erb
	vendor/built_in_modules/new_blog/app/views/panel/new_blog/widget/posts/index.html.erb
	vendor/built_in_modules/new_blog/app/views/panel/new_blog/widget/posts/latest_post.html.erb
	vendor/built_in_modules/new_blog/config/locales/en.yml
	vendor/built_in_modules/new_blog/lib/new_blog/version.rb
	vendor/built_in_modules/new_blog/lib/tasks/NewBlog_tasks.rake
	vendor/built_in_modules/new_blog/new_blog.gemspec
	vendor/built_in_modules/new_blog/script/rails
	vendor/built_in_modules/new_blog/test/NewBlog_test.rb
	vendor/built_in_modules/new_blog/test/dummy/Rakefile
	vendor/built_in_modules/new_blog/test/dummy/app/assets/javascripts/application.js
	vendor/built_in_modules/new_blog/test/dummy/app/assets/stylesheets/application.css
	vendor/built_in_modules/new_blog/test/dummy/app/controllers/application_controller.rb
	vendor/built_in_modules/new_blog/test/dummy/app/helpers/application_helper.rb
	vendor/built_in_modules/new_blog/test/dummy/app/mailers/.gitkeep
	vendor/built_in_modules/new_blog/test/dummy/app/models/.gitkeep
	vendor/built_in_modules/new_blog/test/dummy/app/views/layouts/application.html.erb
	vendor/built_in_modules/new_blog/test/dummy/config.ru
	vendor/built_in_modules/new_blog/test/dummy/config/application.rb
	vendor/built_in_modules/new_blog/test/dummy/config/boot.rb
	vendor/built_in_modules/new_blog/test/dummy/config/database.yml
	vendor/built_in_modules/new_blog/test/dummy/config/environment.rb
	vendor/built_in_modules/new_blog/test/dummy/config/environments/development.rb
	vendor/built_in_modules/new_blog/test/dummy/config/environments/production.rb
	vendor/built_in_modules/new_blog/test/dummy/config/environments/test.rb
	vendor/built_in_modules/new_blog/test/dummy/config/initializers/backtrace_silencers.rb
	vendor/built_in_modules/new_blog/test/dummy/config/initializers/inflections.rb
	vendor/built_in_modules/new_blog/test/dummy/config/initializers/mime_types.rb
	vendor/built_in_modules/new_blog/test/dummy/config/initializers/secret_token.rb
	vendor/built_in_modules/new_blog/test/dummy/config/initializers/session_store.rb
	vendor/built_in_modules/new_blog/test/dummy/config/initializers/wrap_parameters.rb
	vendor/built_in_modules/new_blog/test/dummy/config/locales/en.yml
	vendor/built_in_modules/new_blog/test/dummy/config/mongoid.yml
	vendor/built_in_modules/new_blog/test/dummy/config/routes.rb
	vendor/built_in_modules/new_blog/test/dummy/lib/assets/.gitkeep
	vendor/built_in_modules/new_blog/test/dummy/log/.gitkeep
	vendor/built_in_modules/new_blog/test/dummy/public/404.html
	vendor/built_in_modules/new_blog/test/dummy/public/422.html
	vendor/built_in_modules/new_blog/test/dummy/public/500.html
	vendor/built_in_modules/new_blog/test/dummy/public/favicon.ico
	vendor/built_in_modules/new_blog/test/dummy/script/rails
	vendor/built_in_modules/new_blog/test/integration/navigation_test.rb
	vendor/built_in_modules/new_blog/test/test_helper.rb
	vendor/plugins/NewBlog/.gitignore
	vendor/plugins/NewBlog/Gemfile
	vendor/plugins/NewBlog/Gemfile.lock
	vendor/plugins/NewBlog/MIT-LICENSE
	vendor/plugins/NewBlog/NewBlog.gemspec
	vendor/plugins/NewBlog/README.rdoc
	vendor/plugins/NewBlog/Rakefile
	vendor/plugins/NewBlog/app/assets/images/NewBlog/.gitkeep
	vendor/plugins/NewBlog/app/assets/javascripts/NewBlog/.gitkeep
	vendor/plugins/NewBlog/app/assets/stylesheets/NewBlog/.gitkeep
	vendor/plugins/NewBlog/app/assets/stylesheets/NewBlog/application.css
	vendor/plugins/NewBlog/app/assets/stylesheets/NewBlog/production.css
	vendor/plugins/NewBlog/app/controllers/.gitkeep
	vendor/plugins/NewBlog/app/helpers/.gitkeep
	vendor/plugins/NewBlog/app/mailers/.gitkeep
	vendor/plugins/NewBlog/app/models/.gitkeep
	vendor/plugins/NewBlog/app/views/.gitkeep
	vendor/plugins/NewBlog/app/views/layouts/edit_view.html.erb
	vendor/plugins/NewBlog/app/views/layouts/production.html.erb
	vendor/plugins/NewBlog/app/views/panel/blog/posts/index.html.erb
	vendor/plugins/NewBlog/app/views/panel/blog/posts/latest_post.html.erb
	vendor/plugins/NewBlog/app/views/panel/blog/posts/new.html.erb
	vendor/plugins/NewBlog/app/views/panel/blog/posts/show.html.erb
	vendor/plugins/NewBlog/app/views/panel/blog/posts/widget_index.html.erb
	vendor/plugins/NewBlog/app/views/panel/blog/posts/widget_latest_post.html.erb
	vendor/plugins/NewBlog/config/locales/en.yml
	vendor/plugins/NewBlog/lib/NewBlog/version.rb
	vendor/plugins/NewBlog/lib/tasks/NewBlog_tasks.rake
	vendor/plugins/NewBlog/script/rails
	vendor/plugins/NewBlog/test/NewBlog_test.rb
	vendor/plugins/NewBlog/test/dummy/Rakefile
	vendor/plugins/NewBlog/test/dummy/app/assets/javascripts/application.js
	vendor/plugins/NewBlog/test/dummy/app/assets/stylesheets/application.css
	vendor/plugins/NewBlog/test/dummy/app/controllers/application_controller.rb
	vendor/plugins/NewBlog/test/dummy/app/mailers/.gitkeep
	vendor/plugins/NewBlog/test/dummy/app/models/.gitkeep
	vendor/plugins/NewBlog/test/dummy/app/views/layouts/application.html.erb
	vendor/plugins/NewBlog/test/dummy/config.ru
	vendor/plugins/NewBlog/test/dummy/config/application.rb
	vendor/plugins/NewBlog/test/dummy/config/boot.rb
	vendor/plugins/NewBlog/test/dummy/config/database.yml
	vendor/plugins/NewBlog/test/dummy/config/environment.rb
	vendor/plugins/NewBlog/test/dummy/config/environments/development.rb
	vendor/plugins/NewBlog/test/dummy/config/environments/production.rb
	vendor/plugins/NewBlog/test/dummy/config/environments/test.rb
	vendor/plugins/NewBlog/test/dummy/config/initializers/secret_token.rb
	vendor/plugins/NewBlog/test/dummy/config/initializers/session_store.rb
	vendor/plugins/NewBlog/test/dummy/config/initializers/wrap_parameters.rb
	vendor/plugins/NewBlog/test/dummy/config/locales/en.yml
	vendor/plugins/NewBlog/test/dummy/config/mongoid.yml
	vendor/plugins/NewBlog/test/dummy/config/routes.rb
	vendor/plugins/NewBlog/test/integration/navigation_test.rb
	vendor/plugins/NewBlog/test/test_helper.rb
2012-01-12 18:15:43 +08:00
Matthew Fu 7b40706aed fixing for app_auth 2012-01-05 16:20:51 +08:00
chris2tof 62aaf79491 Merge with sub_roles 2011-12-23 18:34:21 +08:00
chris2tof a9f06b9517 Divide parser into sub-parsers 2011-12-22 16:23:48 +08:00
chris2tof d465febca7 merge with november_presentation 2011-12-22 15:43:38 +08:00
chris2tof a09f8e4551 merge with november_presentation 2011-12-20 16:47:17 +08:00
chris2tof afbffe37d5 Users can now be saved with sub_roles 2011-12-20 14:35:28 +08:00
chris2tof 4108ebf06d Fix mongoid deeply nested polimorphic
Got the commit from github. The roles and sub_roles save.
2011-12-19 21:22:26 +08:00
chris2tof d27d7a623c Changes for sub_roles
Issues: update doesn't create new i18n_variables, role form has bugs
2011-12-18 10:07:42 +08:00
chris2tof b7ac5478b4 Change role structure
Still needs to: change the views and create sub_roles in the dev.rake
2011-12-10 18:12:39 +08:00
chris2tof 962bf03af2 Remove snippet 2011-12-05 10:27:22 +08:00
chris2tof 66bc0ce560 Modified dev.rake 2011-11-20 03:16:35 +08:00
chris2tof ad9f9bbf5c Final Ray's modifications 2011-11-19 21:47:18 +08:00
chris2tof dac6348402 Integration of module_app workflow 2011-11-19 14:33:26 +08:00
chris2tof 65349796d0 Ray's modifications 2011-11-18 16:43:14 +08:00
chris2tof 861237d65b Integration of Ray' modifications 2011-11-17 20:02:58 +08:00
Matthew Fu 84ebc8306b APP zip package placed in lib now can be unzip into vendor
APP zip package placed in lib now can be unzip into vendor,however
server can not restart
2011-11-16 15:21:31 +08:00
chris2tof c1d77fa6d6 Changes for purchases - handle different type of purchases 2011-11-14 10:22:31 +08:00
chris2tof d9d7099da6 Fix bug: users can now be saved 2011-11-12 17:54:45 +08:00
chris2tof 2e86d8081f Modifications for images in html code 2011-10-18 11:21:24 +08:00
chris2tof 0ca354cfd0 Clean code and new image uploader 2011-09-14 15:11:50 +08:00
chris2tof f2e3cb00db Fix bug when editing a page, the theme wasn't including blank 2011-09-13 14:03:03 +08:00
chris2tof 4db88282a1 Modification in Design structure_css -> default_css 2011-09-13 11:57:20 +08:00
chris2tof 07ccacb7d7 Modifications of the JS in Design 2011-09-09 15:40:13 +08:00
chris2tof 77b8fcdd1d Fix previous workaround for the uploaded Design 2011-09-09 13:44:43 +08:00
chris2tof a571d1dcff Clean code and workaround mongoid embedded with carrierwave 2011-09-08 18:12:04 +08:00
chris2tof 22c9ca4c74 Handle "reset.css" and add link in the generated menu 2011-09-05 16:06:17 +08:00
chris2tof 151f005815 structure.css -> default.css
Themes are optional, a theme overrides style in default.css
2011-09-05 15:18:36 +08:00
chris2tof f4b1d1e182 Modifications in Layout
In the layout file we can have "contents" (for editable content) and
"layout_parts" (for when the layout is created from scratch)
2011-09-05 01:14:49 +08:00
chris2tof b2c0047d0f Modification in parse_urls in both layout.rb and theme.rb 2011-09-02 19:19:34 +08:00
chris2tof 25355e9c7f Force encoding and stip filename in Theme::parse_urls 2011-09-01 19:14:34 +08:00
chris2tof 9101a2921e Modifications for image urls
Find and replace the urls by the file urls in DB, in the theme files and
layout.html file. Save a copy of those files under "file_orig".
2011-09-01 19:08:45 +08:00
chris2tof 492f691469 Modifications for menu in Design 2011-09-01 09:12:49 +08:00
chris2tof 8b576cac48 Fix bug when selecting theme 2011-08-25 15:44:52 +08:00
chris2tof 2afe961416 Modify check if site is up-to-date 2011-08-25 08:30:18 +08:00
chris2tof c427e2af14 Page form with drop down. Modifications for Designs 2011-08-25 08:13:38 +08:00
chris2tof 27d47215e9 Modify edit page. Still need to handle "form" with drop down lists 2011-08-24 02:34:24 +08:00
chris2tof 1d214bedec Revert "Revert "Clean code and add 'name' in theme.rb""
This reverts commit 00813c9060.
2011-08-24 02:06:27 +08:00
chris2tof 00813c9060 Revert "Clean code and add 'name' in theme.rb"
This reverts commit 608180646b.
2011-08-24 02:04:54 +08:00
chris2tof 608180646b Clean code and add 'name' in theme.rb 2011-08-24 01:39:28 +08:00
chris2tof 118455aa81 Check if site is up-to-date 2011-08-23 19:40:49 +08:00