Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Initial commit of Radiant generated blog

  • Loading branch information...
commit 6481c81028fae8d55a34151c1afd3712e61ec2e3 0 parents
@rwdaigle authored
Showing with 22,868 additions and 0 deletions.
  1. +5 −0 .gems
  2. +3 −0  .gitignore
  3. +528 −0 CHANGELOG
  4. +212 −0 CONTRIBUTORS
  5. +35 −0 INSTALL
  6. +21 −0 LICENSE
  7. +85 −0 README
  8. +3 −0  Rakefile
  9. +161 −0 config/boot.rb
  10. +16 −0 config/database.yml
  11. +85 −0 config/environment.rb
  12. +29 −0 config/environments/cucumber.rb
  13. +17 −0 config/environments/development.rb
  14. +24 −0 config/environments/production.rb
  15. +38 −0 config/environments/test.rb
  16. +2 −0  config/initializers/haml.rb
  17. +1 −0  config/routes.rb
  18. BIN  db/development.sqlite3.db
  19. BIN  db/production.sqlite3.db
  20. +113 −0 db/schema.rb
  21. +40 −0 public/.htaccess
  22. +8 −0 public/404.html
  23. +8 −0 public/500.html
  24. +10 −0 public/dispatch.cgi
  25. +24 −0 public/dispatch.fcgi
  26. +10 −0 public/dispatch.rb
  27. 0  public/favicon.ico
  28. BIN  public/images/admin/add_tab.png
  29. BIN  public/images/admin/avatar_32x32.png
  30. BIN  public/images/admin/avatar_96x96.png
  31. BIN  public/images/admin/brown_bottom_line.gif
  32. BIN  public/images/admin/buttons_background.png
  33. BIN  public/images/admin/calendar_down.gif
  34. BIN  public/images/admin/collapse.png
  35. BIN  public/images/admin/draft_page.png
  36. BIN  public/images/admin/expand.png
  37. BIN  public/images/admin/layout.png
  38. BIN  public/images/admin/login_shadow.png
  39. BIN  public/images/admin/metadata_toggle.png
  40. BIN  public/images/admin/minus.png
  41. BIN  public/images/admin/minus_disabled.png
  42. BIN  public/images/admin/minus_grey.png
  43. BIN  public/images/admin/navigation_background.gif
  44. BIN  public/images/admin/navigation_secondary_background.png
  45. BIN  public/images/admin/navigation_secondary_separator.gif
  46. BIN  public/images/admin/navigation_shadow.png
  47. BIN  public/images/admin/navigation_tabs.png
  48. BIN  public/images/admin/new_homepage.png
  49. BIN  public/images/admin/new_layout.png
  50. BIN  public/images/admin/new_snippet.png
  51. BIN  public/images/admin/new_user.png
  52. BIN  public/images/admin/page.png
  53. BIN  public/images/admin/plus.png
  54. BIN  public/images/admin/plus_grey.png
  55. BIN  public/images/admin/popup_border_background.png
  56. BIN  public/images/admin/popup_border_bottom_left.png
  57. BIN  public/images/admin/popup_border_bottom_right.png
  58. BIN  public/images/admin/popup_border_top_left.png
  59. BIN  public/images/admin/popup_border_top_right.png
  60. BIN  public/images/admin/shadow.png
  61. BIN  public/images/admin/shadow_grey.png
  62. BIN  public/images/admin/single_form_shadow.png
  63. BIN  public/images/admin/snippet.png
  64. BIN  public/images/admin/spacer.gif
  65. BIN  public/images/admin/spinner.gif
  66. BIN  public/images/admin/status_background.png
  67. BIN  public/images/admin/status_bottom_left.png
  68. BIN  public/images/admin/status_bottom_right.png
  69. BIN  public/images/admin/status_spinner.gif
  70. BIN  public/images/admin/status_top_left.png
  71. BIN  public/images/admin/status_top_right.png
  72. BIN  public/images/admin/tab_close.png
  73. BIN  public/images/admin/vertical_tan_gradient.png
  74. BIN  public/images/admin/view_site.png
  75. BIN  public/images/admin/virtual_page.png
  76. BIN  public/images/radiant-badge-color.png
  77. +8,364 −0 public/javascripts/admin/all.js
  78. +85 −0 public/javascripts/admin/application.js
  79. +165 −0 public/javascripts/admin/codearea.js
  80. +965 −0 public/javascripts/admin/controls.js
  81. +80 −0 public/javascripts/admin/cookie.js
  82. +402 −0 public/javascripts/admin/dateinput.js
  83. +974 −0 public/javascripts/admin/dragdrop.js
  84. +1,122 −0 public/javascripts/admin/effects.js
  85. +340 −0 public/javascripts/admin/lowpro.js
  86. +1 −0  public/javascripts/admin/overrides.js
  87. +17 −0 public/javascripts/admin/pagestatus.js
  88. +216 −0 public/javascripts/admin/popup.js
  89. +4,874 −0 public/javascripts/admin/prototype.js
  90. +13 −0 public/javascripts/admin/ruledtable.js
  91. +27 −0 public/javascripts/admin/shortcuts.js
  92. +149 −0 public/javascripts/admin/sitemap.js
  93. +233 −0 public/javascripts/admin/status.js
  94. +121 −0 public/javascripts/admin/tabcontrol.js
  95. +430 −0 public/javascripts/admin/toggle.js
  96. +52 −0 public/javascripts/admin/utility.js
  97. +18 −0 public/javascripts/admin/validationerror.js
  98. +1 −0  public/robots.txt
  99. +1,213 −0 public/stylesheets/admin/main.css
  100. +1 −0  public/stylesheets/admin/overrides.css
  101. +27 −0 public/stylesheets/sass/admin/main.sass
  102. +56 −0 public/stylesheets/sass/admin/modules/_grid.sass
  103. +15 −0 public/stylesheets/sass/admin/modules/_links.sass
  104. +7 −0 public/stylesheets/sass/admin/modules/_opacity.sass
  105. +41 −0 public/stylesheets/sass/admin/modules/_rounded.sass
  106. +9 −0 public/stylesheets/sass/admin/modules/_shadow.sass
  107. +2 −0  public/stylesheets/sass/admin/overrides.sass
  108. +83 −0 public/stylesheets/sass/admin/partials/_actions.sass
  109. +10 −0 public/stylesheets/sass/admin/partials/_avatars.sass
  110. +59 −0 public/stylesheets/sass/admin/partials/_base.sass
  111. +199 −0 public/stylesheets/sass/admin/partials/_content.sass
  112. +62 −0 public/stylesheets/sass/admin/partials/_dateinput.sass
  113. +26 −0 public/stylesheets/sass/admin/partials/_deprecated.sass
  114. +12 −0 public/stylesheets/sass/admin/partials/_footer.sass
  115. +309 −0 public/stylesheets/sass/admin/partials/_forms.sass
  116. +112 −0 public/stylesheets/sass/admin/partials/_header.sass
  117. +10 −0 public/stylesheets/sass/admin/partials/_layout.sass
  118. +10 −0 public/stylesheets/sass/admin/partials/_messages.sass
  119. +117 −0 public/stylesheets/sass/admin/partials/_popup.sass
  120. +36 −0 public/stylesheets/sass/admin/partials/_reset.sass
  121. +70 −0 public/stylesheets/sass/admin/partials/_tabcontrol.sass
  122. +31 −0 public/stylesheets/sass/admin/partials/_toolbar.sass
  123. +21 −0 public/stylesheets/sass/admin/partials/_validations.sass
  124. +3 −0  script/about
  125. +5 −0 script/autospec
  126. +3 −0  script/breakpointer
  127. +3 −0  script/console
  128. +10 −0 script/cucumber
  129. +3 −0  script/dbconsole
  130. +5 −0 script/extension
  131. +18 −0 script/generate
  132. +3 −0  script/performance/benchmarker
  133. +3 −0  script/performance/profiler
  134. +3 −0  script/performance/request
  135. +3 −0  script/process/inspector
  136. +3 −0  script/process/reaper
  137. +3 −0  script/process/spawner
  138. +3 −0  script/process/spinner
  139. +3 −0  script/runner
  140. +3 −0  script/server
  141. +5 −0 script/spec
  142. +116 −0 script/spec_server
  143. +5 −0 script/version
5 .gems
@@ -0,0 +1,5 @@
+rails --version 2.3.8
+RedCloth
+will_paginate --version '~> 2.3.11'
+radiant --version 0.9.1
+
3  .gitignore
@@ -0,0 +1,3 @@
+tmp
+log
+db/*sqlite*
528 CHANGELOG
@@ -0,0 +1,528 @@
+== Change Log
+
+=== Refraction 0.9.1 (June 27, 2010)
+
+* Added missing i18n translations for aggregate tages [Jim Gay]
+* Fixed a bug with status_id PostgreSQL [Jim Gay]
+
+=== Refraction 0.9.0 (June 25, 2010)
+
+* Pull in aggregate tags from the aggregation extension [John Muhl, Sean Cribbs, Jim Gay]
+* Fixed a bug which could cause the preferences submenu to dissapear [Mario Visic, Jim Gay]
+* Fixed a bug PostgreSQL for creating pages with nested attributes [Andrew Cates]
+* Updated to Rails 2.3.8 [Jim Gay]
+* Added admin and Radius tag pagination [William Ross]
+* Added will_paginate dependency [William Ross, Jim Gay]
+* Added <r:gravatar/> radius tag [John Muhl]
+* Exposed important view locals for partials that hook into the admin UI [Mislav Marohnić]
+* Update to cucumber-rails 0.3.0 [Jim Gay]
+* Update to Haml 2.2.24 [Jim Gay]
+* Allow loading extension routes from the extension's config/routes.rb [Jim Gay]
+* Cache admin.js in update task [Janne Asmala]
+* Finally rename User.protected_attributes to unprotected_attributes [Jim Gay]
+* Support i18n [Keith Bingman, many others]
+* Only run migrate and update tasks with script/extension if they exist [John Muhl, Jim Gay]
+* Dropped BlueCloth for kramdown [John Muhl]
+* Updated sample images for Textile and Markdown [Jim Gay]
+* Refactored Sass to separate out common styles [Jim Gay]
+* Upgraded to HAML 2.2.19 [Jim Gay]
+* Add future publishing feature [Anna Billstrom, Benny Degezelle, Jim Gay]
+* Fixed support for newer Cucumber version [M. Scott Ford, William Ross]
+* Fixed a bug in if/unless_content tags [Benny Degezelle]
+* Support packaging extensions as gems [Josh French]
+* Add tag reference to Layouts and Snippets [Jim Gay]
+* Handle deploying to a sub-directory [Jim Gay]
+* Ensure that generator specs actually test properly [Travis D. Warlick]
+* Properly display errors on user password changes [Jim Gay]
+* Prevent admin from removing her own admin privilege [Jim Gay]
+* Move to Rails 2.3.5 [Jim Gay]
+* Simplify admin tab API [Jim Gay, John Long, Sean Cribbs]
+* Turned on HAML's "ugly" whitespace mode in production [John Muhl]
+* Use HTML 5 doctype. [John Muhl]
+* Miscellaneous HTML standards improvements [John Muhl]
+* Fixed bug where pages were being cached in dev mode. This has been a problem since switching to Rack::Cache. [Jason Garber]
+* Snippets are now only accessible to people with the "Designer" role. [John Long]
+* Renamed "Developer" role to "Designer". [John Long]
+* Verify that the cache directory exists before trying to store a response. [Sean Cribbs]
+* Fix page-part deletion in JS. [Sean Cribbs]
+* Don't cache extension-defined javascripts, but do cache the defaults. [Sean Cribbs]
+* Fix dev-site behavior when 'dev.host' is configured. [Chris Ricca]
+* Concatenate admin javascript files. [John Muhl]
+* Use more descriptive page titles. [John Muhl]
+* Allow non-standard controller methods for render_region. [Jim Gay]
+* Updated to use Radius 0.6.1. [John Long]
+* Correct type on content-type and move to more/hide language. [John Long]
+* Add some helpful shortcut keys. [Sean Cribbs]
+* Implemented "Blade" user-interface. [John Long, Chris Parrish, Daniel Beach, Brandon Mathis, Sean Cribbs, Ben Morrow, John Muhl]
+
+=== 0.8.2 Lustery (April 27, 2010)
+
+* Allow rake tasks to run if a higher version of Cucumber is installed [Jim Gay]
+
+=== 0.8.1 Luster (September 5, 2009)
+
+* Move default cache location to tmp. [Sean Cribbs]
+* Upgrade Rails and dataset. [Sean Cribbs]
+* Updated README and INSTALL. [John Long]
+* Don't use Symbol#to_proc in initializer because ActiveSupport hasn't loaded yet.
+* Fix links to Textile reference in the wake of _why's disappearance. [Jason Garber]
+* Correct bug when submitting a POST to a cached page. [Sean Cribbs]
+* Fix typo in generator for features task. [Jim Gay]
+* Page parts may already be marked for destruction, don't explicitly set false. [Kunal Shah]
+* Merge latest version of Radius [Kunal Shah]
+* Helpers for extension_enabled? [Kunal Shah]
+* Respond to show methods with xml rendering [Jeremy Stephens]
+* Support DB2 [Antonio Cangiano]
+* Properly check for existing page parts when creating a new part. [alexmek]
+* Use the correct variable name so the extension name is part of the output. [John Muhl]
+* Generate Cucumber support for extensions [Jim Gay]
+* Require Cucumber version 0.3.9 or greater in cucumber.rake [Jim Gay]
+* Set generated extensions to require 'application_controller' [Jim Gay]
+* Add import/export tasks for Radiant::Config [Jim Gay]
+* Set Radiant::Config to cache info in the Rails.cache [Jim Gay]
+* Markup fixes [Justin Blecher, Alex Wallace]
+* Use Rails for time zone handling [Kunal Shah, Josh French]
+* Allow extensions to declare dependencies [Josh French]
+* Expose Rails configuration to extensions. [Josh French]
+* Set template_name for all resourceful action types [Josh French]
+* Load Metal from Extensions [Jim Gay]
+
+=== 0.8.0 Asterism (June 14, 2009)
+
+* Warn about using the RedCloth 3 fallback. [Sean Cribbs, Jason Garber]
+* Prevent stty errors on JRuby while running bootstrap. [Sean Cribbs]
+* Moved template_name to ApplicationController [Jim Gay, Michael Kessler]
+* Remove vizres plugin. [Sean Cribbs]
+* Update instance config/environments to remove ResponseCache [Jim Gay]
+* Remove :order option from <r:children:count />, which causes errors on postgresql. [Sean Cribbs]
+* Prevent recursion via the <r:content /> tag. [Sean Cribbs]
+* Update Highline. [Sean Cribbs]
+* Update Cucumber and RSpec, clean up some features and fix specs. [Sean Cribbs]
+* Set the protected attributes for users in User.protected_attributes [Jim Gay]
+* Don't allow a nil ETag in SiteController. [David Cato]
+* Prevent failed login message from sticking around. [Kunal Shah]
+* Fix failing test regarding extension order. [Brett McHargue]
+* Catch ActiveRecord::RecordNotFound in Admin::ResourceController [Jim Gay]
+* Catch missing template errors for show routes [Jim Gay]
+* Fix with_error in render_matcher not causing the spec to fail when no exception raised. [Jason Garber]
+* Make features task run in instance mode. [Sean Cribbs]
+* Remove Admin::AbstractModelController. [Sean Cribbs]
+* Cleanup deprecated Gem::manage_gems. [Sean Cribbs]
+* Add begin...rescue blocks to rspec.rake [Sean Cribbs]
+* Add begin...rescue blocks for requiring cucumber. [Matt Henry]
+* Deprecate ResponseCache, add Radiant::Cache based on Rack::Cache. [Sean Cribbs]
+* Use app name for session cookie. [Josh French]
+* Upgrade to Rails 2.3.2. [Sean Cribbs, Rick DeNatale, Josh French, Kunal Shah]
+* Populate config.extensions so extensions can be disabled easily. [Jason Garber]
+* Convert integration specs to Cucumber stories and update RSpec. [Sean Cribbs]
+* Use ActionView::PathSet instead of normal arrays for view paths. [Pat Allan]
+* Don't raise exception on unauthenticated request to /admin/logout. [Josh French]
+* Reverse view paths order in extension loader. [Sean Cribbs, Brent Kroeker]
+* Remove obviated Ruby 1.8.7 compatibility patch. [Sean Cribbs]
+* Adjust StandardTags#relative_url_for for case when relative_url_root is nil. [Sean Cribbs]
+* Correct rendering error in extensions controller. [Sean Cribbs]
+* Correct typo in config/boot.rb. [Sean Cribbs]
+* Major refactoring and simplification of LoginSystem. [Sean Cribbs]
+* Update Haml to 2.0.7. [Sean Cribbs]
+* Upgrade to Rails 2.2.2. [Sean Cribbs]
+* Cleanup the config class a little, add some more documentation. [Sean Cribbs]
+* Avoid bootstrap errors related to Radiant::Config by checking for table existence. [Sean Cribbs]
+* Correct status code typo in Admin::ResourceController. [Sean Cribbs]
+
+=== 0.7.1 Engraving (February 15, 2009)
+
+* Properly escape page part contents in the UI. [John Muhl, Sean Cribbs]
+* Fix tag reference popup and spec out helper better. [Sean Cribbs]
+
+=== 0.7.0 Intaglio (February 7, 2009)
+
+* Add Roasters template. [Paul du Coudray]
+* Make ResponseCache spec insensitive to key order. [Sean Cribbs]
+* Adjust <r:children:count /> to use same options as <r:children:each />. [Sean Cribbs]
+* Allowing for custom labels and other options in save_model_button. [Pat Allan]
+* Ignoring TextMate project files. [Pat Allan]
+* Present a more helpful error message when missing a mailer template. [Nikolay Karev]
+* Use ActiveRecord:Base#[] and ActiveRecord:Base#[]= instead of undocumented read_attribute and write_attribute. [August Lilleas]
+* Make extension installer use git submodules when appropriate. [Sean Cribbs]
+* Ease extension updates by proxying deprecated named routes. [Sean Cribbs]
+* Add support and specs for conditional GETs with ETags. [Sean Cribbs]
+* Initialize and update submodules when freezing edge. [John Muhl]
+* Add Nginx support to ResponseCache. [Sean Cribbs]
+* Changed (some) permissions examples not to use login_system_matcher. [Brandan Lennox]
+* Remove expensive grep of Rails log in spec. [Rick DeNatale]
+* Make markdown filter specs be tolerant of RDiscount. [Sean Cribbs]
+* Be more explicit about vendor libraries, move Textile requirement into core. [Sean Cribbs]
+* Add <r:children:each:if/unless_first/last> tags. [Rick DeNatale]
+* Use RDiscount's smart quotes instead of SmartyPants. [John Muhl]
+* Update extension generator to use new admin REST routing. [Jeroen Janssen]
+* Update Admin::ResourceController to overcome respond_to weaknesses by choosing HTML format by default. [Sean Cribbs]
+* Add an IE-specific integration spec. [Jeroen Janssen]
+* Update dataset, spec_integration, and vizres plugins. [Sean Cribbs]
+* Make specs and bootstrap work in instance mode. [Sean Cribbs]
+* Override spec:integration task and rescope some spec task options to RADIANT_ROOT. [Sean Cribbs]
+* Improve rspec-1.1.12 compatibility. [Sean Cribbs]
+* Add Ruby 1.8.7 compatibility patch. [Sean Cribbs]
+* Fix upgrade issue from 0.5.x where class_name is expected to be present. [Sean Cribbs]
+* Remove unneeded patch. [Sean Cribbs]
+* Add some inline documentation to resource controller. [Sean Cribbs]
+* Fix some form problems on pages. [Sean Cribbs]
+* Fix form on snippets/remove. [Sean Cribbs]
+* Make sure resourceful responses deeply clone on inheritance. [Sean Cribbs]
+* Fix broken Ajax children callback. [Sean Cribbs]
+* Fix broken URL in snippets/remove. [Sean Cribbs]
+* Correct assume_migrated_upto_version behavior in instance mode. [Sean Cribbs]
+* Correct missing @@configuration variable in initializer. [John Muhl]
+* Handle SQL special characters in extension names in migrations. [Erik Ostrom]
+* Converted extension migrations to use schema_migrations table instead of extension_meta. [Nathaniel Talbott, Sean Cribbs, Rick DeNatale]
+* Replaced scenarios with dataset. [Nathaniel Talbott, Adam Williams, Rick DeNatale]
+* Fix RSpec git submodules. [Nathaniel Talbott, Clinton Nixon]
+* Generate and fix gemspec for GitHub. [Sean Cribbs]
+* Add support for newer Textile and Markdown libraries, with fallbacks on packaged libraries. [Sean Cribbs, Jason Garber]
+* Make request parameters available to tags. [Brian Landau]
+* Add URL method helpers to tags. [Brian Landau]
+* Add some database indexes. [Yevgeny Smirnoff]
+* Added notice to install RSpec if a certain database error occurs. [Sytse Sijbrandij]
+* Refactor LoginSystem to use filter-skipping instead of controller tracking. [Sean Cribbs]
+* Add generator specs and more generators. [Brian Landau]
+* Add initial integration specs. [Adam Williams, Mark Imbriaco]
+* Refactor admin controllers and views toward RESTful principles. [Sean Cribbs, Clinton Nixon, Rick DeNatale]
+* Remove RSpec from packaged libraries. [Sean Cribbs]
+* Correct CSS validation errors. [John Muhl]
+* Add String#to_slug. [Andrew O'Brien]
+* New page parts should have the default filter_id. [Joe Van Dyk]
+* Show draft children by default on dev host. [Sean Cribbs]
+* Correct db:schema:dump error when in instance mode. [Pat Allan, Sean Cribbs]
+* Simplify set_javascripts_and_stylesheets. [Sean Cribbs]
+* Cleanup boot.rb and allow generators from user-installed plugins. [Sean Cribbs]
+* Added regions to user-preferences screen. [Jim Gay]
+* Apply Rails redirect sanitization patch. [Sean Cribbs]
+* Updated to Rspec and Rspec-Rails 1.1.8 [Jim Gay]
+* Added development dependency to INSTALL [Matt Henry]
+* Added reference to sample database configuration files to INSTALL. [Keith Bennett]
+* Added ZenTest development dependency to README. [Thomas Ingram]
+* Remove REXML expansion fix, included in Rails 2.1.1 [Sean Cribbs]
+* Upgrade to 2.1.1 [Sean Cribbs]
+* Fixed migrations for Rails 2.1 [Josh French]
+* Fixed final specs [Jim Gay]
+* Fixed up some specs for new Rails/RSpec [Josh French]
+* Updated timezone management [Josh French]
+* Update to Rails 2.1 [Jim Gay]
+* Update to RSpec 1.1.4 [Jim Gay]
+* Make Git extension install method recognize submodules. [Sean Cribbs]
+* Fix malformed Textile in standard tag descriptions. [Jason Garber]
+* Update script/extension help output. [Jim Gay]
+* Allow load_subclasses to work when multiple apps are on the same database. [Jim Gay]
+* Add REXML expansion fix. [Sean Cribbs]
+* Fix filter_reference admin helper for filter names that have spaces in them. [Mislav Marohnić]
+* Make script/extension more friendly, adding help and info commands. [Sean Cribbs]
+* Added more render regions to layout, snippet, user, and extension views. [Sean Cribbs]
+* Fixed the radiant:update:scripts to find the proper directory [Jim Gay]
+* Factor out dev? functionality in StandardTags, allowing other tags to access it. [Sean Cribbs]
+
+=== 0.6.9 Etch (August 1, 2008)
+
+* Make <r:random> accept dynamically generated options. [Jim Gay, Sean Cribbs]
+* Correctly set default 'inherit' to false on <r:unless_content> [Mark A. Yoon]
+* Correct authenticity token errors when using cookie session store [Sean Cribbs]
+* Make script/extension executable. [Sean Cribbs]
+* Correct bugs in radiant:freeze:edge task. [Sean Cribbs]
+* Fix strange Page subclass loading errors in development mode. [Sean Cribbs]
+* Fix typo in if_content description. [Jim Gay]
+* Correct error in radiant:update:configs task. [Sean Cribbs]
+
+=== 0.6.8 Incise (July 27, 2008)
+
+* Hide page publish date selector unless page.edit.published_date? config is set. [Sean Cribbs]
+* Add <r:yield /> tag to support snippets that accept blocks. [Andrew Neil]
+* Fix bug with FileNotFoundPage subclasses and draft status. [Glenn Murray]
+* Update radiant:freeze:edge task to support BRANCH, TAG, and REVISION. [John Muhl]
+* Update to Haml 2.0.1. [Jim Gay]
+* Fix radiant:update:configs task to properly evaluate environment.rb [Sean Cribbs]
+* Fix page subclass loading issues. [Sean Cribbs]
+* Add <r:unless_ancestor_or_self> and <r:unless_self> tags. [Tim Gossett]
+* Add specific installation modes for gzip and bzip2 compression. [Sean Cribbs]
+* Added extension installation scripts. [Sean Cribbs]
+* Added find attr to r:if_content and r:unless_content to expand based on finding 'any' or 'all' specified parts [Jim Gay]
+* Added inherit attr to r:if_content and r:unless_content to search for parts independently in the page tree. [Jim Gay]
+* Update radiant:freeze:edge task to use git and GitHub. [John Muhl]
+* Update login page layout from prototype. [Sean Cribbs]
+* Change order of extension paths to prefer project extensions over Radiant's. [John Muhl]
+* Switch default session store to cookies [Josh French]
+* Add remember-me function to login [Josh French]
+* Allow an inclusive list of parts in r:if_content and r:unless_content [Jim Gay]
+* Added a defaults.page.filter config setting for setting a default page filter. [Alex Wayne]
+* Fix Users fixtures for extensions that still use test/unit. [Nick Plante]
+* Don't search for missing Page subclasses before bootstrap. [Sean Cribbs]
+* Added tolerance for missing Page class definitions. [Loren Johnson]
+* Don't require an authenticity token check on the login action. [Sean Cribbs]
+* Make sure region sets are reloaded when activating extensions in development mode. [Sean Cribbs]
+* Fix Haml rendering errors. [Thomas Watson Steen]
+
+=== 0.6.7 Mordant (May 16, 2008)
+
+* Integrate shards extension into core. [Sean Cribbs]
+* Convert all views to Haml. [Sean Cribbs, John Long]
+* Avoid authenticity check when listing page children. [Sean Cribbs]
+* Add radiant:extensions:update_all task. [Josh French]
+* Tweak LoginSystem to allow attempted URL redirection after login and auto-redirect from login URL if logged in. [Josh French]
+* Add per-user salting to password encryption. [Sean Cribbs]
+* Address CSRF vulnerabilities in forms. [Sean Cribbs]
+* Remove clear cache action, always clear cache after saving a page. [Sean Cribbs]
+
+=== 0.6.6 Chiseled (April 20, 2008)
+
+* Make sure extension view paths override Radiant view paths. [Josh French]
+* Fix problem in framework.rake when public/javascripts/admin doesn't exist. [Sean Cribbs]
+
+=== 0.6.5 Chisel (April 19, 2008)
+
+* Convert StandardTags specs to nested describe blocks. [Sean Cribbs]
+* Remove test/unit tests - all RSpec now. [Sean Cribbs]
+* Fix radiant:update:javascripts task. [Sean Cribbs]
+* Fix problem in test fixtures. [Adam Keyes]
+* Add <r:meta /> tag and appropriate fields to pages table. [Sean Cribbs]
+* Move admin-related javascripts to admin/. [Bjørn Arild Mæland]
+* Add if_self and if_ancestor_or_self tags. [Marty Haught, Sean Cribbs]
+* Rename created_by and updated_by columns on standard models. [Sean Cribbs]
+* Fix Dir glob for extension rake tasks. [Sean Cribbs]
+* Respect view_paths set by plugins in extensions. [xtoddx]
+* Move extra initialization into after_initialize block. [Sean Cribbs]
+* Notice area now fades away after 3 seconds. [Andrew O'Brien]
+* <r:find /> now accepts paths relative to the current page. [Andrew O'Brien]
+* Update RSpec and RSpec on Rails to r3333. [Josh French]
+* Add autotest support for Radiant and extensions. [Josh French]
+* Add pkg/ ignore to git, correct CSS problems with fieldset tables. [Sean Cribbs]
+* Ignore git files when building gem. [Sean Cribbs]
+* Fix generated test and spec harnesses, convert core extensions to specs. [Sean Cribbs]
+* Cover edge case in Page spec. [Sean Cribbs]
+* Increase coverage of helper, controller, and model specs. [Sean Cribbs]
+* Correct some view and spec bugs. [Sean Cribbs]
+* Added specs for view helpers. [Sean Cribbs]
+* Use TH for fieldset tables and correct error in CSS. [skrat]
+* Adjust admin links and r:breadcrumbs tag to deal with Rails site prefix. [Sean Cribbs]
+* Adjust tags to deal with Rails site prefix (relative_url_root). [Sean Cribbs]
+* Resolve issue with undefined method :view_paths in ActionMailer. [Sean Cribbs]
+* Fixed incompatibility with RubyGems >= 0.9.5 that broke radiant:freeze:gems rake task. [Michael Klett]
+* Fixed problem with the list of templates containing duplicates in the db:bootstrap rake task when not running in instance mode. [John Long]
+* Update Subversion URL so rake radiant:freeze:edge works. [John Long]
+* Add AVLUX to list of links in Styled Blog template. [John Long]
+* Fix Ruby 1.8.5 compatibility issue with Dir[]. [Sean Cribbs]
+* Backup old environment.rb when copying new version. [Sean Cribbs]
+* Fill out more controller specs. [Sean Cribbs]
+* Fix Admin::PageController specs. [Sean Cribbs]
+* Make autotest work. [Matthew Elder]
+* Clean up cache files before running site_controller spec. [Matthew Elder]
+* Add r:status tag. [Andrew O'Brien]
+* Add ability to set publication date manually. [Nick Plante, Sean Cribbs]
+* Remove blank nodes in r:navigation tag. [ben]
+* Bubble up parsing exceptions in development mode. [jonleighton]
+* Fix authorization system for controller inheritance [Josh French]
+* Add 'nolinks' attribute to breadcrumbs tag. [abstractioneer]
+* Fix fixtures for RSpec enabled extensions. [andreas]
+* Generate extensions with RSpec support by default, fix rake and script/spec in instance mode. [Andrew O'Brien]
+* Support database templates in a Radiant instance. [Benny Degezelle]
+* Make rake test:extensions work in instance mode. [Daniel Sheppard]
+* Fix tests failing in instance mode with config.extensions set. [Daniel Sheppard]
+* Finished converting page_controller_test.rb to page_controller_spec.rb [John Long]
+* Completed converting user_controller_test.rb to user_controller_spec.rb [John Long]
+* Fix failing extension loading tests, remove irrelevant ones. [Sean Cribbs]
+* Fix test:extensions Rake task. [Sean Cribbs]
+* Prevent following the link that toggles visibility of meta items on page edit. [Mislav Marohnić]
+* Fix extension loader and previously failing unit tests; update specs. [Mislav Marohnić]
+* Fixed problem with response_cached? returning true when perform caching was off; fixed failing spec. [John Long]
+* Fixed issues with whitespace in page.rb. [John Long]
+* Fix filtering in tag reference popup. [Mislav Marohnić]
+* Updated rspec and rspec_on_rails. [John Long]
+* Add more controller specs and a matcher for LoginSystem features. [Sean Cribbs]
+* Make all extensions loaded by default. [Sean Cribbs]
+* Update extension loader spec. [Sean Cribbs]
+* Work around a nasty issue with extensions + Dependencies unloading in development mode. [Mislav Marohnić]
+* Fix the tree expansion issue in admin interface (cookie-related). minor cleanup server-side [Mislav Marohnić]
+* Cleanup up the underscore layout hack by using method chain. [Mislav Marohnić]
+* Refactored initialization, extension loading, updated plugins. [Sean Cribbs]
+* Fix SiteController#show_page for Rails 2.0. [Mislav Marohnić]
+* Minor optimization for Page; remove the unneccessary 'virtual' accessor. [Mislav Marohnić]
+* Fix tests for PostgreSQL: comment out a test that breaks most of the specs somehow. [Mislav Marohnić]
+* Failures in initializer_spec.rb fixed [John Long]
+* Failure in site_controller_spec.rb fixed. [John Long]
+* The last test/unit failure is now fixed. [John Long]
+* Failing tests in page_controller_test.rb fixed. [John Long]
+* Error in response cache spec fixed. [Keeran Hawoldar]
+* ActionController::Base.view_paths is now set correctly for extensions. [John Long]
+* Changed view extensions to ".html.erb" [John Long]
+* Fixed content type test failures. [John Long]
+* Fix page_test. [John Long]
+* Updated environments. [John Long]
+* Modify ApplicationController spec. [Loren Johnson]
+* Modify SiteController spec. [Loren Johnson]
+* Fix failing unit test for old type of logger. [Daniel Sheppard]
+* Fix problems preventing script/console from running: acts_as_tree is now a plugin, view_paths is now a core feature. [Daniel Sheppard]
+* Upgrade to Rails 2.0.2 [Daniel Sheppard]
+* Escape angle brackets to avoid assertion warnings in StandardTags. [Sean Cribbs]
+* Remove unused ConsoleUtils module and fix failing specs. [Sean Cribbs]
+* Added standard_tags_spec.rb [John Long]
+* Make sure all scenario pages have at least a body part. [Sean Cribbs]
+* Added render matcher. [John Long]
+* Modify pages scenario. [Loren Johnson]
+* A beginning on the Application and Site controller specs. [Loren Johnson]
+* Fix failing specs - use of before(:all) when before(:each) was needed [Daniel Sheppard]
+* Fix failing extension_load_order_test.rb [Daniel Sheppard]
+* Don't load scenarios stuff unless using specs. [Sean Cribbs]
+* Add initializer spec. [Sean Cribbs]
+* Add extension loader spec and refactorings. [Sean Cribbs]
+* Added user_spec.rb [John Long]
+* Upgrade Rails to 1.2.6. [Sean Cribbs]
+* Added user_action_observer_spec.rb [John Long]
+* Removed duplicate load paths from environments/test.rb [John Long]
+* Added text_filter_spec.rb [John Long]
+* Added status_spec.rb [John Long]
+* Added spec/models/snippet_spec.rb [John Long]
+* Added response_cache_spec.rb [John Long]
+* Small improvements to page_part_spec.rb [John Long]
+* Remove duplicate specs and move Radiant::ExtensionMigrator? spec to proper location. [Sean Cribbs]
+* Fix admin.js to initialize TabControl even if there are no tabs. [Benny Degezelle]
+* Correct RenderTestHelper to better resemble expectations from Rails. [Sean Cribbs]
+* Add model specs and scenarios. [John Long]
+* Modify script/spec to work in instance mode. [Andrew O'Brien]
+* Add RSpec to load path in test environment. [Andrew O'Brien]
+* Add specs for Radiant::Extension and Radiant::Taggable. [Sean Cribbs]
+* Fixed admin CSS for IE6 - ugly borders begone! [Bjørn Arild Mæland]
+* Fixed that homepage is no longer cached outside of cache dir, but to "_site-root.data". [Bjørn Arild Mæland]
+* Fix typo in pngfix.js. [Mislav Marohnić]
+* Turn off auto-loading RSpec stuff, even in test environment. [Mislav Marohnić]
+* Add specs for Annotatable, InheritableClassAttributes, LocalTime, MethodObserver, and Simpleton. [Sean Cribbs]
+* Add spec for Radiant::AdminUI and Users scenario. [Sean Cribbs]
+* Import and create boilerplate for RSpec and Scenarios. [Sean Cribbs]
+* Honor config.extensions when running rake test:extensions and also include core extensions. [Daniel Sheppard]
+* Propagate global page when using <r:content /> with inherit attribute. [Sean Cribbs]
+
+=== 0.6.4 Gem Shaper (November 10, 2007)
+
+* Extract Archive pages into a core extension. Add automatic testing of core extensions from default test task. [Sean Cribbs]
+* Add <r:if_children /> and <r:unless_children /> tags. [Andrew Neil]
+* Add HTML labels to role checkboxes in user edit template. [zilkey]
+* Cleanup whitespace and line-endings in environment.rb. [Bjørn Arild Mæland]
+* Fix various SQL Server issues via Rails ticket #8886. [Mark Gallop]
+* Refactor locals from _node.rhtml into Admin::NodeHelper. [Sean Cribbs]
+* Fix XHTML validation errors in view templates. [Bjørn Arild Mæland]
+* Update Prototype and script.aculo.us to 1.6 and 1.8 releases. [Sean Cribbs]
+* Fix edge case in tabcontrol.js where tab label is incorrect. [Sean Cribbs]
+* Remove duplication in admin.js. [Sean Cribbs]
+* Factor TimeZone stuff out of Radiant::Config into a module, fix failing tests. [Sean Cribbs]
+* Add has_part?, inherits_part?, and has_or_inherits_part? methods to Page. [ana]
+* Allow setting of local timezone via Radiant::Config and auto-adjustment of times in admin UI and <r:date /> tag. [Bodhi Philpot]
+* Update to latest Prototype and script.aculo.us and refactor and extract inline Javascript into external files. [Mislav Marohnić]
+* Narrow scope of exception to only throw on missing fixture files, allowing invalid yaml errors through. [Daniel Sheppard]
+* Added tests to ensure that response_cache stays within the cache dir. [Daniel Sheppard]
+* Add assert_requires_login to LoginTestHelper. [Sean Cribbs]
+* Make sure tag binding stack is popped when an exception occurs. [jay@jay.fm]
+* Clean up some apparent cruft in page.rb [Daniel Sheppard]
+* Add logout method to LoginTestHelper. [Sean Cribbs]
+* Run single extension tests with rake test:extensions EXT=<extension_name> [Brian Skahan]
+* Update Javascript libraries to Prototype 1.6.0_rc1 and script.aculo.us 1.8.0_pre1. [Mislav Marohnić]
+* Fixed <r:attempted_url /> tag to escape the uri [Daniel Sheppard]
+* Allow parts to be accessed by name from Page#part before they are saved. [Sean Cribbs]
+* Disambiguate namespace of ActionMailer::Part. [Sean Cribbs]
+* Fix namespacing problem with ActionController::RoutingError. [Sean Cribbs]
+* Update Rails to 1.2.5. [John Long]
+* Ensured that the request and response are passed along to other pages that are rendered within the same context. [John Long]
+* Added <r:if_dev /> and <r:unless_dev /> tags. [Peter Berkenbosch]
+* Removed session stringification patch in test helper. [Sean Cribbs]
+* Update Rails to 1.2.4. [Sean Cribbs]
+* Add extensions paths to the standard $LOAD_PATH so requires work properly. [Sean Cribbs]
+* Fixed some loading issues for plugins that are included in extensions. [Sean Cribbs]
+
+=== 0.6.3 Rock Grinder (October 6, 2007)
+
+* Add generic public/ copy task to generated extensions. [Sean Cribbs]
+* Fix typo in StandardTags. [oli]
+* Added db:remigrate:extensions task. [Sean Cribbs]
+* Show all child pages on remove confirmation, regardless of sitemap expansion. [Sean Cribbs]
+* Make LoginSystem store user ids in session rather than whole user objects. [Sean Cribbs]
+* Plugins included in an extension's vendor/plugins directory will automatically be loaded before the extension is activated. Plugins
+included in more than one extension will be loaded only once according to the extension load order. [Sean Cribbs]
+* Allow subclassing of FileNotFoundPage. [Daniel Sheppard]
+* <r:find/> should not return FileNotFoundPage. [Daniel Sheppard]
+* Change test for tabs to just check dupes and for the requested tab rather than a specific list (test was breaking if a real extension added a tab). [Daniel Sheppard]
+* Ensure test extensions are loaded in the test environment. [Daniel Sheppard]
+* Prevent ExtensionInitializationTest from unloading real extensions. [Daniel Sheppard]
+* Expire the old URL from the cache when the page slug changes. [Daniel Sheppard]
+* Fix failing tests in instance mode. [Daniel Sheppard]
+* Move difference assertions upstream from forms extension into a test helper. [Sean Cribbs]
+* Update Prototype to 1.5.0 final release. [Sean Cribbs]
+* Allow specification of extension loading order in environment.rb [Daniel Sheppard]
+* Fix bugs in assert_global_tag_defined and assert_tag_defined of ExtensionTagTestHelper. [Sean Cribbs]
+* Make sure included stylesheets and javascripts are only linked to once in <head>. [Sean Cribbs]
+* Fix navigation tag tests. [vitali]
+* Suppress errors about missing default helper by providing a blank helper. [Sean Cribbs]
+* Fix mis-alignment of "Clear cache" button when homepage not present. [Sean Cribbs]
+* Fix issues with misnesting of modules in fixture loading extension and test suites running randomly from dispatchers. [Sean Cribbs]
+* Remove invalid image alignment. [tolbrino]
+* Display not_found.rhtml on standard 'not found'-like exceptions. [Sean Cribbs]
+* Make sitemap.js use relative URLs. [Earl Chew]
+* Preliminary support for active_record sessions. [John Long]
+
+=== 0.6.2 Jewel Carver (June 23, 2007)
+
+* Removed some of the database specific code from the ArchiveFinder [Daniel Sheppard]
+* Fixed typo in extension model generator documentation. [John Long]
+* Reworked the way the generator extension is loaded (closing #500) [Keita]
+* Fixed failing unit tests in instance mode [Daniel Sheppard]
+* Modified the page edit form to use multipart/form-data (useful for an upload extension) [Sean Cribbs]
+
+=== 0.6.1 Stone Cutter (May 5, 2007)
+
+* Fixed a security vulnerability which caused passwords to appear in the logs [John Long]
+* Fixed a bug in the site map code which caused it to forget which rows were expanded [John Long]
+* The find_by_url method has been optimized to improve performance [Daniel Sheppard]
+* GET requests are now the only requests that are cached [Daniel Sheppard]
+* Added rudimentary support for extension dependency specification through directory prefixing [Daniel Sheppard]
+* Fixed syntax error in fixture loading extension [Sean Cribbs]
+* Minor documentation fix for date tag [Sean Cribbs]
+* Fixed a bug in the migrations that prevented 0.5.x users from upgrading properly [Sean Cribbs]
+
+=== 0.6.0 Lapidary (April 24, 2007)
+
+* Added support for extensions--an extremely flexible way to extend radiant [John Long]
+* Merged Behaviors into the Page class; subclass page now instead [John Long]
+* Improved database support for Postgres and Sqlite [John Long]
+* Limited support for SQL Server [John Long]
+* Exceptions from tags now bubble up during testing [John Long]
+* Page parts are now sorted by ID so the order that you create them in is preserved [Josh Ferguson]
+* Implemented tag documentation DSL and UI [Sean Cribbs]
+* Reworked the setup code [John Long]
+* Renamed script/setup_database to rake db:bootstrap [John Long]
+* Reworked the upgrade code to work around rake tasks [John Long]
+* Added rake tasks for freezing and unfreezing radiant to the edge [John Long]
+* r:children:each, r:children:first, and r:children:last now all accept the same ordering and limit attributes and have the same defaults [John Long]
+* Snippets are now responsive to global context via the r:page tag. This means that any tags inside r:page will refer to the page currently being rendered, i.e. the page requested, not the local contextual page via tags like r:children:each, etc. This is most relevant to recursive snippets like the sitemapper example [Sean Cribbs]
+* r:navigation now uses the pipe character ("|") to delimit URLs in the urls attribute rather than the semi-colon [John Long]
+* r:date now accepts a "for" attribute that specifies which attribute of the page to render. Valid values of the attribute are published_at, updated_at, created_at, and now. [John Long]
+* Created the r:cycle tag to make alternating tables and lists possible [John Long]
+* Added popups for filter and tag documentation inside the page editing interface [John Long]
+* Added support for optimistic locking for all models [Daniel Sheppard]
+* Added support to Radiant::Config for boolean values [Sean Cribbs]
+* Caching no longer stores the headers and body in the same file [Daniel Sheppard]
+* Added support for the X-Sendfile header that works in conjunction with caching to speed it up (by default X-Sendfile support is off) [Daniel Sheppard]
+* Moved the images and stylesheets into images/admin and stylesheets/admin respectively to make it easier for Radiant's assets to coexist easily with the site's assets [John Long]
+* Improved the Javascript that automatically updates the slug and breadcrumb based off of the title so that it now response to all change events [John Long]
+* For the full scoop on what's changed see Sean Cribbs' detailed blog post: http://seancribbs.com/tech/2007/04/18/whats-new-in-radiant-0-6
+
+=== 0.5.2 Raildust (August 10, 2006)
+
+* Upgraded Rails to 1.1.6 because of a security vulnerability in 1.1.5 [John Long]
+
+=== 0.5.1 Gemdust (August 10, 2006)
+
+* Upgraded Rails to 1.1.5 because of a security vulnerability in 1.1.4 [John Long]
+* Added basic support for upgrades to the `radiant` command [John Long]
+* Gem now includes the .htaccess file (this should make Apache users happier) [John Long]
+* Updated icons for layouts [John Long]
+* Migrations are now repaired so that you can run `rake migrate` to create the initial database. (`script/setup_database` is still the recommended method.) (closes ticket #46) [Daniel Sheppard]
+* When you collapse a branch in the admin page tree view and move to another tab the collapsed status is now saved so that when you return, the collapsed status is preserved. Also the status of collapsed branches is preserved when collapsing and expanding parent nodes. (closes ticket #29) [Daniel Sheppard]
+* Fixed documentation problem in response_cache.rb (closes ticket #142) [Paul Smith]
+* Fixed problem with timezones on fixtures causing tests to fail in Japan (closes ticket #154) [Bodhi Philpot]
+* Fixed a problem with an error being thrown when the <r:context /> tag was rendered with the inherit attribute set to true and the page part did not exist (closes ticket #155) [Bodhi Philpot]
+
+=== 0.5.0 Grindstone (June 28, 2006)
+* First release. [John Long]
212 CONTRIBUTORS
@@ -0,0 +1,212 @@
+== Contributors
+
+The following people have submitted changes which have been applied to the
+core:
+
+=== 0.9.1 Refraction
+
+* Jim Gay
+
+=== 0.9.0 Refraction
+
+* Mario Visic
+* Andrew Cates
+* Janne Asmala
+* Keith Bingman
+* Dirk Kelly
+* Anna billstrom
+* Williams Ross
+* M. Scott Ford
+* Josh French
+* Travis D. Warlick, Jr.
+* Jason Garber
+* Chris Ricca
+* Jim Gay
+* John Muhl
+* Ben Morrow
+* Sean Cribbs
+* Brandon Mathis
+* Daniel Beach
+* Chris Parrish
+* John Long
+
+=== 0.8.2 Lustery
+
+* Jim Gay
+
+=== 0.8.1 Luster
+
+* John Long
+* Sean Cribbs
+* Antonio Cangiano
+* alexmek
+* Jeremy Stephens
+* John Muhl
+* Alex Wallace
+* Justin Blecher
+* Kunal Shah
+* Jim Gay
+* Josh French
+
+=== 0.8.0 Asterism
+
+* Michael Kessler
+* David Cato
+* Kunal Shah
+* Brett McHargue
+* Jim Gay
+* Kunal Shah
+* Matt Henry
+* Rick DeNatale
+* Jason Garber
+* Pat Allan
+* Josh French
+* Brent Kroeker
+* Sean Cribbs
+
+=== 0.7.1 Engraving
+
+* John Muhl
+* Sean Cribbs
+
+=== 0.7.0 Intaglio
+
+* Paul du Coudray
+* Nikolay Karev
+* August Lilleas
+* Brandan Lennox
+* Jeroen Janssen
+* Erik Ostrom
+* Nathaniel Talbott
+* Yevgeny Smirnoff
+* Sytse Sijbrandij
+* Brian Landau
+* Adam Williams
+* Mark Imbriaco
+* Rick DeNatale
+* Clinton Nixon
+* John Muhl
+* Andrew O'Brien
+* Joe Van Dyk
+* Pat Allan
+* Matt Henry
+* Keith Bennett
+* Thomas Ingram
+* Josh French
+* Jason Garber
+* Mislav Marohnić
+* Jim Gay
+* Sean Cribbs
+
+=== 0.6.9 Etch
+* Mark A. Yoon
+* Jim Gay
+* Sean Cribbs
+
+=== 0.6.8 Incise
+* Andrew Neil
+* Glenn Murray
+* Tim Gossett
+* John Muhl
+* Josh French
+* Jim Gay
+* Alex Wayne
+* Nick Plante
+* Loren Johnson
+* Sean Cribbs
+* Thomas Watson Steen
+
+=== 0.6.7 Mordant
+* John Long
+* Josh French
+* Sean Cribbs
+
+=== 0.6.6 Chiseled
+* Josh French
+* Sean Cribbs
+
+=== 0.6.5 Chisel
+* Adam Keyes
+* Marty Haught
+* xtoddx
+* skrat
+* Michael Klett
+* Matthew Elder
+* Nick Plante
+* ben
+* jonleighton
+* Josh French
+* abstractioneer
+* andreas
+* Keeran Hawoldar
+* Loren Johnson
+* Benny Degezelle
+* John Long
+* Andrew O'Brien
+* Bjørn Arild Mæland
+* Mislav Marohnić
+* Daniel Sheppard
+* Sean Cribbs
+
+=== 0.6.4 Gem Shaper
+* Andrew Neil
+* zilkey
+* Mark Gallop
+* Bjørn Arild Mæland
+* ana
+* Bodhi Philpot
+* jay@jay.fm
+* Brian Skahan
+* Mislav Marohnić
+* Daniel Sheppard
+* John Long
+* Peter Berkenbosch
+* Sean Cribbs
+
+=== 0.6.3 Rock Grinder
+* oli
+* Daniel Sheppard
+* vitali
+* tolbrino
+* Sean Cribbs
+* Earl Chew
+* John Long
+
+=== 0.6.2 Jewel Carver
+* Sean Cribbs
+* Daniel Sheppard
+* Keita
+
+=== 0.6.1 Stone Cutter
+* Sean Cribbs
+* Daniel Sheppard
+
+=== 0.6.0 Lapidary
+* Alexander Horn
+* Adam Williams
+* Sean Santry
+* Sean Cribbs
+* Brian Gernhardt
+* Bodhi Philpot
+* Andrew Barnett
+* Jesse Newland
+* Josh Ferguson
+* Daniel Sheppard
+* Matte Edens
+* Jacob Burkhart
+* Chris Parrish
+
+=== 0.5.1 Gemdust
+* Daniel Sheppard
+* Paul Smith
+* Bodhi Philpot
+
+=== 0.5.0 Grindstone
+* Matt McCray
+* Paul Smith
+* Scott Walter
+* Sven Lauer
+* Tristan Boniver
+* Chris Corriveau
+* Ryan Platte
+* Luis Lavena
35 INSTALL
@@ -0,0 +1,35 @@
+
+== Installation and Setup
+
+Once you have extracted the files into the directory where you would like to
+install Radiant:
+
+1. Create the MySQL/PostgreSQL/SQLite/SQL Server/DB2 databases for your Web
+ site. You only need to create the "production" database, but you may also
+ want to create the "development" and "test" databases if you are developing
+ extensions or running tests.
+
+2. Edit config/database.yml to taste. There are example files available for
+ various databases in the config directory.
+
+3. Run the database bootstrap rake task:
+
+ % rake production db:bootstrap
+
+ (If you would like bootstrap your development database run `rake
+ development db:bootstrap`.)
+
+ If you get the error "no such file to load -- spec/rake/spectask" please
+ install Rspec (gem install rspec).
+
+4. Start it like a normal Rails application. To test execute:
+
+ % script/server -e production
+
+ And open your Web browser on port 3000 (http://localhost:3000). The
+ administrative interface is available at /admin/. By default the bootstrap
+ rake task creates a user called "admin" with a password of "radiant".
+
+When using Radiant on a production system you may also need to set permissions
+on the public and cache directories so that your Web server can access those
+directories with the user that it runs under.
21 LICENSE
@@ -0,0 +1,21 @@
+== MIT License
+
+Copyright (c) 2006-2009, John W. Long and Sean D. Cribbs.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
85 README
@@ -0,0 +1,85 @@
+== Welcome to Radiant
+
+Radiant is a no-fluff, open source content management system designed for
+small teams. It is similar to Textpattern or MovableType, but is a general
+purpose content management system (not just a blogging engine).
+
+Radiant features:
+
+* An elegant user interface
+* The ability to arrange pages in a hierarchy
+* Flexible templating with layouts, snippets, page parts, and a custom tagging
+ language (Radius: http://radius.rubyforge.org)
+* A simple user management/permissions system
+* Support for Markdown and Textile as well as traditional HTML (it's easy to
+ create other filters)
+* An advanced plugin system
+* Operates in two modes: dev and production depending on the URL
+* A caching system which expires pages every 5 minutes
+* Built using Ruby on Rails
+* And much more...
+
+
+== License
+
+Radiant is released under the MIT license and is copyright (c) 2006-2009
+John W. Long and Sean Cribbs. A copy of the MIT license can be found in the
+LICENSE file.
+
+
+== Installation and Setup
+
+Radiant is a traditional Ruby on Rails application, meaning that you can
+configure and run it the way you would a normal Rails application.
+
+See the INSTALL file for more details.
+
+== Installation of a Prerelease
+
+As Radiant nears newer releases, you can experiment with any prerelease version.
+
+Install the prerelease gem with the following command:
+
+ $ gem install radiant --prerelease
+
+This will install the gem with the prerelease name, for example: ‘radiant-0.9.0.rc2’.
+
+== Upgrading an Existing Project to a newer version
+
+1. Update the Radiant assets from in your project:
+
+ $ rake radiant:update
+
+2. Migrate the database:
+
+ $ rake production db:migrate
+
+3. Restart the web server
+
+== Development Requirements
+
+To run tests you will need to have the following gems installed:
+
+ gem install ZenTest rspec rspec-rails cucumber webrat nokogiri
+
+
+== Support
+
+The best place to get support is on the mailing list:
+
+http://radiantcms.org/mailing-list/
+
+Most of the development for Radiant happens on Github:
+
+http://github.com/radiant/radiant/
+
+The project wiki is here:
+
+http://wiki.github.com/radiant/radiant/
+
+
+Enjoy!
+
+--
+The Radiant Dev Team
+http://radiantcms.org
3  Rakefile
@@ -0,0 +1,3 @@
+require File.join(File.dirname(__FILE__), 'config', 'boot')
+
+import File.join(RADIANT_ROOT, 'Rakefile')
161 config/boot.rb
@@ -0,0 +1,161 @@
+# Don't change this file!
+# Configure your app in config/environment.rb and config/environments/*.rb
+
+RAILS_ROOT = File.expand_path("#{File.dirname(__FILE__)}/..") unless defined?(RAILS_ROOT)
+
+module Rails
+ class << self
+ def vendor_rails?
+ File.exist?("#{RAILS_ROOT}/vendor/rails")
+ end
+ end
+end
+
+module Radiant
+ class << self
+ def boot!
+ unless booted?
+ preinitialize
+ pick_boot.run
+ end
+ end
+
+ def booted?
+ defined? Radiant::Initializer
+ end
+
+ def pick_boot
+ case
+ when app?
+ AppBoot.new
+ when vendor?
+ VendorBoot.new
+ else
+ GemBoot.new
+ end
+ end
+
+ def vendor?
+ File.exist?("#{RAILS_ROOT}/vendor/radiant")
+ end
+
+ def app?
+ File.exist?("#{RAILS_ROOT}/lib/radiant.rb")
+ end
+
+ def preinitialize
+ load(preinitializer_path) if File.exist?(preinitializer_path)
+ end
+
+ def loaded_via_gem?
+ pick_boot.is_a? GemBoot
+ end
+
+ def preinitializer_path
+ "#{RAILS_ROOT}/config/preinitializer.rb"
+ end
+ end
+
+ class Boot
+ def run
+ load_initializer
+ end
+
+ def load_initializer
+ begin
+ require 'radiant'
+ require 'radiant/initializer'
+ rescue LoadError => e
+ $stderr.puts %(Radiant could not be initialized. #{load_error_message})
+ exit 1
+ end
+ Radiant::Initializer.run(:set_load_path)
+ end
+ end
+
+ class VendorBoot < Boot
+ def load_initializer
+ $LOAD_PATH.unshift "#{RAILS_ROOT}/vendor/radiant/lib"
+ super
+ end
+
+ def load_error_message
+ "Please verify that vendor/radiant contains a complete copy of the Radiant sources."
+ end
+ end
+
+ class AppBoot < Boot
+ def load_initializer
+ $LOAD_PATH.unshift "#{RAILS_ROOT}/lib"
+ super
+ end
+
+ def load_error_message
+ "Please verify that you have a complete copy of the Radiant sources."
+ end
+ end
+
+ class GemBoot < Boot
+ def load_initializer
+ self.class.load_rubygems
+ load_radiant_gem
+ super
+ end
+
+ def load_error_message
+ "Please reinstall the Radiant gem with the command 'gem install radiant'."
+ end
+
+ def load_radiant_gem
+ if version = self.class.gem_version
+ gem 'radiant', version
+ else
+ gem 'radiant'
+ end
+ rescue Gem::LoadError => load_error
+ $stderr.puts %(Missing the Radiant #{version} gem. Please `gem install -v=#{version} radiant`, update your RADIANT_GEM_VERSION setting in config/environment.rb for the Radiant version you do have installed, or comment out RADIANT_GEM_VERSION to use the latest version installed.)
+ exit 1
+ end
+
+ class << self
+ def rubygems_version
+ Gem::RubyGemsVersion rescue nil
+ end
+
+ def gem_version
+ if defined? RADIANT_GEM_VERSION
+ RADIANT_GEM_VERSION
+ elsif ENV.include?('RADIANT_GEM_VERSION')
+ ENV['RADIANT_GEM_VERSION']
+ else
+ parse_gem_version(read_environment_rb)
+ end
+ end
+
+ def load_rubygems
+ require 'rubygems'
+
+ unless rubygems_version >= '0.9.4'
+ $stderr.puts %(Radiant requires RubyGems >= 0.9.4 (you have #{rubygems_version}). Please `gem update --system` and try again.)
+ exit 1
+ end
+
+ rescue LoadError
+ $stderr.puts %(Radiant requires RubyGems >= 0.9.4. Please install RubyGems and try again: http://rubygems.rubyforge.org)
+ exit 1
+ end
+
+ def parse_gem_version(text)
+ $1 if text =~ /^[^#]*RADIANT_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
+ end
+
+ private
+ def read_environment_rb
+ File.read("#{RAILS_ROOT}/config/environment.rb")
+ end
+ end
+ end
+end
+
+# All that for this:
+Radiant.boot!
16 config/database.yml
@@ -0,0 +1,16 @@
+# SQLite version 3.x
+# gem install sqlite3-ruby
+development:
+ adapter: sqlite3
+ database: db/development.sqlite3.db
+
+# Warning: The database defined as 'test' will be erased and
+# re-generated from your development database when you run 'rake'.
+# Do not set this db to the same as development or production.
+test:
+ adapter: sqlite3
+ database: db/test.sqlite3.db
+
+production:
+ adapter: sqlite3
+ database: db/production.sqlite3.db
85 config/environment.rb
@@ -0,0 +1,85 @@
+# Be sure to restart your server when you modify this file
+
+# Uncomment below to force Rails into production mode when
+# you don't control web/app server and can't set it the proper way
+# ENV['RAILS_ENV'] ||= 'production'
+
+# Specifies gem version of Rails to use when vendor/rails is not present
+require File.join(File.dirname(__FILE__), 'boot')
+
+require 'radius'
+
+Radiant::Initializer.run do |config|
+ # Skip frameworks you're not going to use (only works if using vendor/rails).
+ # To use Rails without a database, you must remove the Active Record framework
+ config.frameworks -= [ :action_mailer ]
+
+ # Only load the extensions named here, in the order given. By default all
+ # extensions in vendor/extensions are loaded, in alphabetical order. :all
+ # can be used as a placeholder for all extensions not explicitly named.
+ # config.extensions = [ :all ]
+
+ # By default, only English translations are loaded. Remove any of these from
+ # the list below if you'd like to provide any of the supported languages
+ config.extensions -= [:dutch_language_pack, :french_language_pack, :german_language_pack,
+ :italian_language_pack, :japanese_language_pack, :russian_language_pack]
+
+ # Your secret key for verifying cookie session data integrity.
+ # If you change this key, all old sessions will become invalid!
+ # Make sure the secret is at least 30 characters and all random,
+ # no regular words or you'll be exposed to dictionary attacks.
+ config.action_controller.session = {
+ :key => '_radiant_session',
+ :secret => '5b6f385e77f05cf88de4e1ad47d256e49f529a2e'
+ }
+
+ # Comment out this line if you want to turn off all caching, or
+ # add options to modify the behavior. In the majority of deployment
+ # scenarios it is desirable to leave Radiant's cache enabled and in
+ # the default configuration.
+ #
+ # Additional options:
+ # :use_x_sendfile => true
+ # Turns on X-Sendfile support for Apache with mod_xsendfile or lighttpd.
+ # :use_x_accel_redirect => '/some/virtual/path'
+ # Turns on X-Accel-Redirect support for nginx. You have to provide
+ # a path that corresponds to a virtual location in your webserver
+ # configuration.
+ # :entitystore => "radiant:tmp/cache/entity"
+ # Sets the entity store type (preceding the colon) and storage
+ # location (following the colon, relative to Rails.root).
+ # We recommend you use radiant: since this will enable manual expiration.
+ # :metastore => "radiant:tmp/cache/meta"
+ # Sets the meta store type and storage location. We recommend you use
+ # radiant: since this will enable manual expiration and acceleration headers.
+ config.middleware.use ::Radiant::Cache
+
+ # Use the database for sessions instead of the cookie-based default,
+ # which shouldn't be used to store highly confidential information
+ # (create the session table with 'rake db:sessions:create')
+ config.action_controller.session_store = :cookie_store
+
+ # Activate observers that should always be running
+ config.active_record.observers = :user_action_observer
+
+ # Make Active Record use UTC-base instead of local time
+ config.time_zone = 'UTC'
+
+ # Set the default field error proc
+ config.action_view.field_error_proc = Proc.new do |html, instance|
+ if html !~ /label/
+ %{<span class="error-with-field">#{html} <span class="error">#{[instance.error_message].flatten.first}</span></span>}
+ else
+ html
+ end
+ end
+
+ config.gem 'will_paginate', :version => '~> 2.3.11', :source => 'http://gemcutter.org'
+
+ config.after_initialize do
+ # Add new inflection rules using the following format:
+ ActiveSupport::Inflector.inflections do |inflect|
+ inflect.uncountable 'config'
+ end
+ end
+end
29 config/environments/cucumber.rb
@@ -0,0 +1,29 @@
+# Edit at your own peril - it's recommended to regenerate this file
+# in the future when you upgrade to a newer version of Cucumber.
+
+# IMPORTANT: Setting config.cache_classes to false is known to
+# break Cucumber's use_transactional_fixtures method.
+# For more information see https://rspec.lighthouseapp.com/projects/16211/tickets/165
+config.cache_classes = true
+
+# Log error messages when you accidentally call methods on nil.
+config.whiny_nils = true
+
+# Show full error reports and disable caching
+config.action_controller.consider_all_requests_local = true
+config.action_controller.perform_caching = false
+
+# Disable request forgery protection in test environment
+config.action_controller.allow_forgery_protection = false
+
+# Tell Action Mailer not to deliver emails to the real world.
+# The :test delivery method accumulates sent emails in the
+# ActionMailer::Base.deliveries array.
+config.action_mailer.delivery_method = :test
+
+config.gem 'cucumber-rails', :lib => false, :version => '>=0.3.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/cucumber-rails'))
+config.gem 'database_cleaner', :lib => false, :version => '>=0.5.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/database_cleaner'))
+config.gem 'webrat', :lib => false, :version => '>=0.7.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/webrat'))
+config.gem 'rspec', :lib => false, :version => '>=1.3.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec'))
+config.gem 'rspec-rails', :lib => false, :version => '>=1.3.2' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec-rails'))
+
17 config/environments/development.rb
@@ -0,0 +1,17 @@
+# Settings specified here will take precedence over those in config/environment.rb
+
+# In the development environment your application's code is reloaded on
+# every request. This slows down response time but is perfect for development
+# since you don't have to restart the webserver when you make code changes.
+config.cache_classes = false
+
+# Log error messages when you accidentally call methods on nil.
+config.whiny_nils = true
+
+# Show full error reports and caching is turned off
+config.action_controller.consider_all_requests_local = true
+config.action_view.debug_rjs = true
+config.action_controller.perform_caching = false
+
+# Don't care if the mailer can't send
+config.action_mailer.raise_delivery_errors = false
24 config/environments/production.rb
@@ -0,0 +1,24 @@
+# Settings specified here will take precedence over those in config/environment.rb
+
+# The production environment is meant for finished, "live" apps.
+# Code is not reloaded between requests
+config.cache_classes = true
+
+# Use a different logger for distributed setups
+# config.logger = SyslogLogger.new
+
+
+# Full error reports are disabled and caching is on
+config.action_controller.consider_all_requests_local = false
+config.action_controller.perform_caching = true
+
+# Enable serving of images, stylesheets, and javascripts from an asset server
+# config.action_controller.asset_host = "http://assets.example.com"
+
+# Disable delivery errors if you bad email addresses should just be ignored
+# config.action_mailer.raise_delivery_errors = false
+
+# Cache your content for a longer time, the default is 5.minutes
+# config.after_initialize do
+# SiteController.cache_timeout = 12.hours
+# end
38 config/environments/test.rb
@@ -0,0 +1,38 @@
+# Settings specified here will take precedence over those in config/environment.rb
+
+# The test environment is used exclusively to run your application's
+# test suite. You never need to work with it otherwise. Remember that
+# your test database is "scratch space" for the test suite and is wiped
+# and recreated between test runs. Don't rely on the data there!
+config.cache_classes = true
+
+# ensure test extensions are loaded
+# test_extension_dir = File.join(File.expand_path(RADIANT_ROOT), 'test', 'fixtures', 'extensions')
+# config.extension_paths.unshift test_extension_dir
+# config.extension_paths.uniq!
+# if !config.extensions.include?(:all)
+# config.extensions.concat(Dir["#{test_extension_dir}/*"].sort.map {|x| File.basename(x).sub(/^\d+_/,'')})
+# config.extensions.uniq!
+# end
+
+# Log error messages when you accidentally call methods on nil.
+config.whiny_nils = true
+
+# Show full error reports and disable caching
+config.action_controller.consider_all_requests_local = true
+config.action_controller.perform_caching = false
+
+# Disable request forgery protection in test environment
+config.action_controller.allow_forgery_protection = false
+
+# Tell ActionMailer not to deliver emails to the real world.
+# The :test delivery method accumulates sent emails in the
+# ActionMailer::Base.deliveries array.
+config.action_mailer.delivery_method = :test
+
+config.gem 'cucumber-rails', :lib => false, :version => '>=0.2.4' unless File.directory?(File.join(Rails.root, 'vendor/plugins/cucumber-rails'))
+config.gem 'database_cleaner', :lib => false, :version => '>=0.4.3' unless File.directory?(File.join(Rails.root, 'vendor/plugins/database_cleaner'))
+config.gem 'webrat', :lib => false, :version => '>=0.6.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/webrat'))
+config.gem 'rspec', :lib => false, :version => '>=1.3.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec'))
+config.gem 'rspec-rails', :lib => false, :version => '>=1.3.2' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec-rails'))
+
2  config/initializers/haml.rb
@@ -0,0 +1,2 @@
+Haml::Template.options[:format] = :html5
+Haml::Template.options[:ugly] = RAILS_ENV == 'production'
1  config/routes.rb
@@ -0,0 +1 @@
+load File.join(RADIANT_ROOT, "config", "routes.rb")
BIN  db/development.sqlite3.db
Binary file not shown
BIN  db/production.sqlite3.db
Binary file not shown
113 db/schema.rb
@@ -0,0 +1,113 @@
+# This file is auto-generated from the current state of the database. Instead of editing this file,
+# please use the migrations feature of Active Record to incrementally modify your database, and
+# then regenerate this schema definition.
+#
+# Note that this schema.rb definition is the authoritative source for your database schema. If you need
+# to create the application database on another system, you should be using db:schema:load, not running
+# all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations
+# you'll amass, the slower it'll run and the greater likelihood for issues).
+#
+# It's strongly recommended to check this file into your version control system.
+
+ActiveRecord::Schema.define(:version => 20091003095744) do
+
+ create_table "config", :force => true do |t|
+ t.string "key", :limit => 40, :default => "", :null => false
+ t.string "value", :default => ""
+ end
+
+ add_index "config", ["key"], :name => "key", :unique => true
+
+ create_table "extension_meta", :force => true do |t|
+ t.string "name"
+ t.integer "schema_version", :default => 0
+ t.boolean "enabled", :default => true
+ end
+
+ create_table "layouts", :force => true do |t|
+ t.string "name", :limit => 100
+ t.text "content"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.integer "created_by_id"
+ t.integer "updated_by_id"
+ t.string "content_type", :limit => 40
+ t.integer "lock_version", :default => 0
+ end
+
+ create_table "page_parts", :force => true do |t|
+ t.string "name", :limit => 100
+ t.string "filter_id", :limit => 25
+ t.text "content"
+ t.integer "page_id"
+ end
+
+ add_index "page_parts", ["page_id", "name"], :name => "parts_by_page"
+
+ create_table "pages", :force => true do |t|
+ t.string "title"
+ t.string "slug", :limit => 100
+ t.string "breadcrumb", :limit => 160
+ t.string "class_name", :limit => 25
+ t.integer "status_id", :default => 1, :null => false
+ t.integer "parent_id"
+ t.integer "layout_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.datetime "published_at"
+ t.integer "created_by_id"
+ t.integer "updated_by_id"
+ t.boolean "virtual", :default => false, :null => false
+ t.integer "lock_version", :default => 0
+ t.string "description"
+ t.string "keywords"
+ end
+
+ add_index "pages", ["class_name"], :name => "pages_class_name"
+ add_index "pages", ["parent_id"], :name => "pages_parent_id"
+ add_index "pages", ["slug", "parent_id"], :name => "pages_child_slug"
+ add_index "pages", ["virtual", "status_id"], :name => "pages_published"
+
+ create_table "sessions", :force => true do |t|
+ t.string "session_id"
+ t.text "data"
+ t.datetime "updated_at"
+ end
+
+ add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
+ add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"
+
+ create_table "snippets", :force => true do |t|
+ t.string "name", :limit => 100, :default => "", :null => false
+ t.string "filter_id", :limit => 25
+ t.text "content"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.integer "created_by_id"
+ t.integer "updated_by_id"
+ t.integer "lock_version", :default => 0
+ end
+
+ add_index "snippets", ["name"], :name => "name", :unique => true
+
+ create_table "users", :force => true do |t|
+ t.string "name", :limit => 100
+ t.string "email"
+ t.string "login", :limit => 40, :default => "", :null => false
+ t.string "password", :limit => 40
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.integer "created_by_id"
+ t.integer "updated_by_id"
+ t.boolean "admin", :default => false, :null => false
+ t.boolean "designer", :default => false, :null => false
+ t.text "notes"
+ t.integer "lock_version", :default => 0
+ t.string "salt"
+ t.string "session_token"
+ t.string "locale"
+ end
+
+ add_index "users", ["login"], :name => "login", :unique => true
+
+end
40 public/.htaccess
@@ -0,0 +1,40 @@
+# General Apache options
+AddHandler fastcgi-script .fcgi
+#AddHandler cgi-script .cgi
+Options +FollowSymLinks +ExecCGI
+
+# If you don't want Rails to look in certain directories,
+# use the following rewrite rules so that Apache won't rewrite certain requests
+#
+# Example:
+# RewriteCond %{REQUEST_URI} ^/notrails.*
+# RewriteRule .* - [L]
+
+# Redirect all requests not available on the filesystem to Rails
+# By default the cgi dispatcher is used which is very slow
+#
+# For better performance replace the dispatcher with the fastcgi one
+#
+# Example:
+# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
+RewriteEngine On
+
+# If your Rails application is accessed via an Alias directive,
+# then you MUST also set the RewriteBase in this htaccess file.
+#
+# Example:
+# Alias /myrailsapp /path/to/myrailsapp/public
+# RewriteBase /myrailsapp
+
+RewriteRule ^$ index.html [QSA]
+RewriteRule ^([^.]+)$ $1.html [QSA]
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
+
+# In case Rails experiences terminal errors
+# Instead of displaying this message you can supply a file here which will be rendered instead
+#
+# Example:
+# ErrorDocument 500 /500.html
+
+ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
8 public/404.html
@@ -0,0 +1,8 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<body>
+ <h1>File not found</h1>
+ <p>Change this error message for pages not found in public/404.html</p>
+</body>
+</html>
8 public/500.html
@@ -0,0 +1,8 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<body>
+ <h1>Application error</h1>
+ <p>Change this error message for exceptions thrown outside of an action (like in Dispatcher setups or broken Ruby code) in public/500.html</p>
+</body>
+</html>
10 public/dispatch.cgi
@@ -0,0 +1,10 @@
+#!/Users/rdaigle/.rvm/rubies/ruby-1.8.7-p334/bin/ruby
+
+require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
+
+# If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like:
+# "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired
+require "dispatcher"
+
+ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun)
+Dispatcher.dispatch
24 public/dispatch.fcgi
@@ -0,0 +1,24 @@
+#!/Users/rdaigle/.rvm/rubies/ruby-1.8.7-p334/bin/ruby
+#
+# You may specify the path to the FastCGI crash log (a log of unhandled
+# exceptions which forced the FastCGI instance to exit, great for debugging)
+# and the number of requests to process before running garbage collection.
+#
+# By default, the FastCGI crash log is RAILS_ROOT/log/fastcgi.crash.log
+# and the GC period is nil (turned off). A reasonable number of requests
+# could range from 10-100 depending on the memory footprint of your app.
+#
+# Example:
+# # Default log path, normal GC behavior.
+# RailsFCGIHandler.process!
+#
+# # Default log path, 50 requests between GC.
+# RailsFCGIHandler.process! nil, 50
+#
+# # Custom log path, normal GC behavior.
+# RailsFCGIHandler.process! '/var/log/myapp_fcgi_crash.log'
+#
+require File.dirname(__FILE__) + "/../config/environment"
+require 'fcgi_handler'
+
+RailsFCGIHandler.process!
10 public/dispatch.rb
@@ -0,0 +1,10 @@
+#!/Users/rdaigle/.rvm/rubies/ruby-1.8.7-p334/bin/ruby
+
+require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
+
+# If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like:
+# "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired
+require "dispatcher"
+
+ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun)
+Dispatcher.dispatch
0  public/favicon.ico
No changes.
BIN  public/images/admin/add_tab.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/avatar_32x32.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/avatar_96x96.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/brown_bottom_line.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/buttons_background.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/calendar_down.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/collapse.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/draft_page.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/expand.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/layout.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/login_shadow.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/metadata_toggle.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/minus.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/minus_disabled.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/minus_grey.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/navigation_background.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/navigation_secondary_background.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/navigation_secondary_separator.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/navigation_shadow.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/navigation_tabs.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/new_homepage.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/new_layout.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/new_snippet.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/new_user.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/page.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  public/images/admin/plus.png
Diff not rendered
BIN  public/images/admin/plus_grey.png
Diff not rendered
BIN  public/images/admin/popup_border_background.png
Diff not rendered
BIN  public/images/admin/popup_border_bottom_left.png
Diff not rendered
BIN  public/images/admin/popup_border_bottom_right.png
Diff not rendered
BIN  public/images/admin/popup_border_top_left.png
Diff not rendered
BIN  public/images/admin/popup_border_top_right.png
Diff not rendered
BIN  public/images/admin/shadow.png
Diff not rendered
BIN  public/images/admin/shadow_grey.png
Diff not rendered
BIN  public/images/admin/single_form_shadow.png
Diff not rendered
BIN  public/images/admin/snippet.png
Diff not rendered
BIN  public/images/admin/spacer.gif
Diff not rendered
BIN  public/images/admin/spinner.gif
Diff not rendered
BIN  public/images/admin/status_background.png
Diff not rendered
BIN  public/images/admin/status_bottom_left.png
Diff not rendered
BIN  public/images/admin/status_bottom_right.png
Diff not rendered
BIN  public/images/admin/status_spinner.gif
Diff not rendered
BIN  public/images/admin/status_top_left.png
Diff not rendered
BIN  public/images/admin/status_top_right.png
Diff not rendered
BIN  public/images/admin/tab_close.png
Diff not rendered
BIN  public/images/admin/vertical_tan_gradient.png
Diff not rendered
BIN  public/images/admin/view_site.png
Diff not rendered
BIN  public/images/admin/virtual_page.png
Diff not rendered
BIN  public/images/radiant-badge-color.png
Diff not rendered
8,364 public/javascripts/admin/all.js
8,364 additions, 0 deletions not shown
85 public/javascripts/admin/application.js
@@ -0,0 +1,85 @@
+// Ensure that relative_url_root is defined
+if(typeof(relative_url_root) === 'undefined'){ relative_url_root = ''}
+
+// Popup Images
+Popup.BorderImage = relative_url_root + '/images/admin/popup_border_background.png';
+Popup.BorderTopLeftImage = relative_url_root + '/images/admin/popup_border_top_left.png';
+Popup.BorderTopRightImage = relative_url_root + '/images/admin/popup_border_top_right.png';
+Popup.BorderBottomLeftImage = relative_url_root + '/images/admin/popup_border_bottom_left.png';
+Popup.BorderBottomRightImage = relative_url_root + '/images/admin/popup_border_bottom_right.png';
+
+// Status Images
+Status.SpinnerImage = relative_url_root + '/images/admin/status_spinner.gif';
+Status.BackgroundImage = relative_url_root + '/images/admin/status_background.png';
+Status.TopLeftImage = relative_url_root + '/images/admin/status_top_left.png';
+Status.TopRightImage = relative_url_root + '/images/admin/status_top_right.png';
+Status.BottomLeftImage = relative_url_root + '/images/admin/status_bottom_left.png';
+Status.BottomRightImage = relative_url_root + '/images/admin/status_bottom_right.png';
+
+// Status Message Styles
+Status.MessageColor = '#e5e5e5';
+Status.MessageFontFamily = '"Lucida Grande", "Bitstream Vera Sans", Helvetica, Verdana, Arial, sans-serif';
+Status.MessageFontSize = '90%';
+
+// Use Modal Status Windows
+Status.Modal = true;
+Status.ModalOverlayColor = 'black';
+Status.ModalOverlayOpacity = 0.2;
+
+// Reload behaviors for Ajax Requests
+Event.addBehavior.reassignAfterAjax = true;
+
+// Wire in Behaviors
+Event.addBehavior({
+ 'body': ShortcutKeysBehavior(),
+
+ 'a.popup': Popup.TriggerBehavior(),
+
+ 'table#site_map': SiteMapBehavior(),
+
+ 'input#page_title': function() {
+ var title = this;
+ var slug = $('page_slug');
+ var breadcrumb = $('page_breadcrumb');
+ var oldTitle = title.value;
+
+ if (!slug || !breadcrumb) return;
+
+ new Form.Element.Observer(title, 0.15, function() {
+ if (oldTitle.toSlug() == slug.value) slug.value = title.value.toSlug();
+ if (oldTitle == breadcrumb.value) breadcrumb.value = title.value;
+ oldTitle = title.value;
+ });
+ },
+
+ 'a.toggle': Toggle.LinkBehavior({
+ onLoad: function(link) {
+ if (/less/i.match(link.innerHTML)) Toggle.toggle(this.toggleWrappers, this.effect);
+ },
+ afterToggle: function(link) {
+ link.toggleClassName('more');
+ link.toggleClassName('less');
+ if (/more/i.match(link.innerHTML)) { link.innerHTML = 'Less'; return; }
+ if (/less/i.match(link.innerHTML)) { link.innerHTML = 'More'; return; }
+ }
+ }),
+
+ 'div#tab_control': TabControlBehavior(),
+
+ 'table.index': RuledTableBehavior(),
+
+ 'form': Status.FormBehavior(),
+
+ 'form input.activate': function() {
+ this.activate();
+ },
+
+ 'form textarea': CodeAreaBehavior(),
+
+ 'input.date': DateInputBehavior(),
+
+ 'select#page_status_id': PageStatusBehavior(),
+
+ 'span.error': ValidationErrorBehavior()
+
+});
165 public/javascripts/admin/codearea.js
@@ -0,0 +1,165 @@
+// Originally based on code from:
+// http://ajaxian.com/archives/handling-tabs-in-textareas
+
+var CodeAreaBehavior = Behavior.create({
+ initialize: function() {
+ new CodeArea(this.element);
+ }
+});
+
+var CodeArea = Class.create({
+ initialize: function(element) {
+ this.element = $(element);
+ this.element.observe('keydown', this.onkeydown.bind(this));
+ },
+
+ onkeydown: function(event) {
+ // Set desired tab - defaults to two space softtab
+ var tab = " ";
+ var tabStop = tab.length;
+
+ var t = this.element;
+
+ if (Prototype.Browser.IE) {
+ // Very limited support for IE
+
+ if (event.keyCode == Event.KEY_TAB && !event.shiftKey) {
+ event.preventDefault();
+ document.selection.createRange().text = tab;
+ }
+
+ } else {
+ // Safari and Firefox
+
+ // If this is the tab key, make the selection start at the begining and end of lines for
+ // multi-line selections
+ if (event.keyCode == Event.KEY_TAB) this.normalizeSelection(t);
+
+ var ss = t.selectionStart;
+ var se = t.selectionEnd;
+
+ if (event.keyCode == Event.KEY_TAB) {
+ // Tab key
+
+ event.preventDefault();
+
+ if (event.shiftKey) {
+ // Shift + Tab
+
+ if (t.value.slice(ss,se).indexOf("\n") != -1) {
+ // Special case of multi line selection
+
+ var pre = t.value.slice(0, ss)
+ var sel = t.value.slice(ss, se)
+ var post = t.value.slice(se, t.value.length);
+
+ // Back off one tab
+ sel = sel.replace(new RegExp("^" + tab, "gm"), '')
+
+ // Put everything back together
+ t.value = pre.concat(sel).concat(post);
+
+ // Readjust the selection
+ t.selectionStart = pre.length;
+ t.selectionEnd = pre.length + sel.length;
+
+ } else {
+ // "Normal" case (no selection or selection on one line only)
+
+ if (t.value.slice(ss - tabStop, ss) == tab) {
+ // Only unindent if there is a tab before the cursor
+
+ t.value = t.value.slice(0, ss - tabStop).concat(t.value.slice(ss, t.value.length));
+ t.selectionStart = ss - tabStop;
+ t.selectionEnd = se - tabStop;
+ }
+ }
+ } else {
+ // Tab
+
+ if (ss != se && t.value.slice(ss, se).indexOf("\n") != -1) {
+ // Special case of multi line selection
+
+ // In case selection was not of entire lines (e.g. selection begins in the middle of a line)
+ // we ought to tab at the beginning as well as at the start of every following line.
+ var pre = t.value.slice(0, ss);
+ var sel = t.value.slice(ss, se);
+ var post = t.value.slice(se, t.value.length);
+
+ // Indent one tab
+ sel = sel.replace(/^/gm, tab)
+
+ // Put everything back together
+ t.value = pre.concat(sel).concat(post);
+
+ // Readjust the selection
+ t.selectionStart = pre.length;
+ t.selectionEnd = pre.length + sel.length;
+
+ } else {
+ // "Normal" case (no selection or selection on one line only)
+
+ t.value = t.value.slice(0, ss).concat(tab).concat(t.value.slice(ss, t.value.length));
+ if (ss == se) {
+ t.selectionStart = t.selectionEnd = ss + tabStop;
+ } else {
+ t.selectionStart = ss + tabStop;
+ t.selectionEnd = se + tabStop;
+ }
+ }
+ }
+
+ } else if (event.keyCode == Event.KEY_BACKSPACE && ss == se && t.value.slice(ss - tabStop, ss) == tab) {
+ // Backspace - delete preceding tab expansion, if it exists and nothing is selected
+
+ event.preventDefault();
+ t.value = t.value.slice(0, ss - tabStop).concat(t.value.slice(ss, t.value.length));
+ t.selectionStart = ss - tabStop;
+ t.selectionEnd = se - tabStop;
+
+ } else if (event.keyCode == Event.KEY_DELETE && t.value.slice(se, se + tabStop) == tab) {
+ // Delete key - delete following tab expansion, if exists
+
+ event.preventDefault();
+ t.value = t.value.slice(0, ss).concat(t.value.slice(ss + tabStop ,t.value.length));
+ t.selectionStart = t.selectionEnd = ss;
+
+ } else if (event.keyCode == Event.KEY_LEFT && t.value.slice(ss - tabStop, ss) == tab) {
+ // Left arrow - move across the tab in one go
+
+ event.preventDefault();
+ t.selectionStart = t.selectionEnd = ss - tabStop;
+ } else if (event.keyCode == Event.KEY_RIGHT && t.value.slice(ss, ss + tabStop) == tab) {
+ // Left/right arrow - move across the tab in one go
+
+ event.preventDefault();
+ t.selectionStart = t.selectionEnd = ss + tabStop;
+
+ }
+ }
+ },
+
+ normalizeSelection: function(textarea) {
+ var b = 0;
+ var value = textarea.value;
+ var e = textarea.length;
+ var ss = textarea.selectionStart;
+ var se = textarea.selectionEnd;
+
+ if (ss != se && textarea.value.slice(ss, se).indexOf("\n") != -1) {
+ // If multi-line adjust the selection
+
+ // If the end of the line is selected back off one character
+ if (textarea.value.slice(se - 1, se) == "\n") se = se - 1;
+
+ // If the selection does not end with a new line or the end of the document increment until it does
+ while ((se < e) && (textarea.value.slice(se, se + 1) != "\n")) se += 1;
+
+ // If the selection does not begin at a new line or the begining of the document back off until it does
+ while ((ss > b) && (textarea.value.slice(ss - 1, ss) != "\n")) ss -= 1;
+
+ textarea.selectionStart = ss;
+ textarea.selectionEnd = se;
+ }
+ }
+});
965 public/javascripts/admin/controls.js
@@ -0,0 +1,965 @@
+// script.aculo.us controls.js v1.8.0, Tue Nov 06 15:01:40 +0300 2007
+
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+// (c) 2005-2007 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
+// (c) 2005-2007 Jon Tirsen (http://www.tirsen.com)
+// Contributors:
+// Richard Livsey
+// Rahul Bhargava
+// Rob Wills
+//
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+// Autocompleter.Base handles all the autocompletion functionality
+// that's independent of the data source for autocompletion. This
+// includes drawing the autocompletion menu, observing keyboard
+// and mouse events, and similar.
+//
+// Specific autocompleters need to provide, at the very least,
+// a getUpdatedChoices function that will be invoked every time
+// the text inside the monitored textbox changes. This method
+// should get the text for which to provide autocompletion by
+// invoking this.getToken(), NOT by directly accessing
+// this.element.value. This is to allow incremental tokenized
+// autocompletion. Specific auto-completion logic (AJAX, etc)
+// belongs in getUpdatedChoices.
+//
+// Tokenized incremental autocompletion is enabled automatically
+// when an autocompleter is instantiated with the 'tokens' option
+// in the options parameter, e.g.:
+// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' });
+// will incrementally autocomplete with a comma as the token.
+// Additionally, ',' in the above example can be replaced with
+// a token array, e.g. { tokens: [',', '\n'] } which
+// enables autocompletion on multiple tokens. This is most
+// useful when one of the tokens is \n (a newline), as it
+// allows smart autocompletion after linebreaks.
+
+if(typeof Effect == 'undefined')
+ throw("controls.js requires including script.aculo.us' effects.js library");
+
+var Autocompleter = { }
+Autocompleter.Base = Class.create({
+ baseInitialize: function(element, update, options) {
+ element = $(element)
+ this.element = element;
+ this.update = $(update);
+ this.hasFocus = false;
+ this.changed = false;
+ this.active = false;
+ this.index = 0;
+ this.entryCount = 0;
+ this.oldElementValue = this.element.value;
+
+ if(this.setOptions)
+ this.setOptions(options);
+ else
+ this.options = options || { };
+
+ this.options.paramName = this.options.paramName || this.element.name;
+ this.options.tokens = this.options.tokens || [];
+ this.options.frequency = this.options.frequency || 0.4;
+ this.options.minChars = this.options.minChars || 1;
+ this.options.onShow = this.options.onShow ||
+ function(element, update){
+ if(!update.style.position || update.style.position=='absolute') {
+ update.style.position = 'absolute';
+ Position.clone(element, update, {
+ setHeight: false,
+ offsetTop: element.offsetHeight
+ });
+ }
+ Effect.Appear(update,{duration:0.15});
+ };
+ this.options.onHide = this.options.onHide ||
+ function(element, update){ new Effect.Fade(update,{duration:0.15}) };
+
+ if(typeof(this.options.tokens) == 'string')
+ this.options.tokens = new Array(this.options.tokens);
+ // Force carriage returns as token delimiters anyway
+ if (!this.options.tokens.include('\n'))
+ this.options.tokens.push('\n');
+
+ this.observer = null;
+
+ this.element.setAttribute('autocomplete','off');
+
+ Element.hide(this.update);
+
+ Event.observe(this.element, 'blur', this.onBlur.bindAsEventListener(this));
+ Event.observe(this.element, 'keypress', this.onKeyPress.bindAsEventListener(this));
+ },
+
+ show: function() {
+ if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update);
+ if(!this.iefix &&
+ (Prototype.Browser.IE) &&
+ (Element.getStyle(this.update, 'position')=='absolute')) {
+ new Insertion.After(this.update,
+ '<iframe id="' + this.update.id + '_iefix" '+
+ 'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +
+ 'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
+ this.iefix = $(this.update.id+'_iefix');
+ }
+ if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);
+ },
+
+ fixIEOverlapping: function() {
+ Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)});
+ this.iefix.style.zIndex = 1;
+ this.update.style.zIndex = 2;
+ Element.show(this.iefix);
+ },
+
+ hide: function() {
+ this.stopIndicator();
+ if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update);
+ if(this.iefix) Element.hide(this.iefix);
+ },
+
+ startIndicator: function() {
+ if(this.options.indicator) Element.show(this.options.indicator);
+ },
+
+ stopIndicator: function() {
+ if(this.options.indicator) Element.hide(this.options.indicator);
+ },
+
+ onKeyPress: function(event) {
+ if(this.active)
+ switch(event.keyCode) {
+ case Event.KEY_TAB:
+ case Event.KEY_RETURN:
+ this.selectEntry();
+ Event.stop(event);
+ case Event.KEY_ESC:
+ this.hide();
+ this.active = false;
+ Event.stop(event);
+ return;
+ case Event.KEY_LEFT:
+ case Event.KEY_RIGHT:
+ return;
+ case Event.KEY_UP:
+ this.markPrevious();
+ this.render();
+ if(Prototype.Browser.WebKit) Event.stop(event);
+ return;
+ case Event.KEY_DOWN:
+ this.markNext();
+ this.render();
+ if(Prototype.Browser.WebKit) Event.stop(event);
+ return;
+ }
+ else
+ if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN ||
+ (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return;
+
+ this.changed = true;
+ this.hasFocus = true;
+
+ if(this.observer) clearTimeout(this.observer);
+ this.observer =
+ setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
+ },
+
+ activate: function() {
+ this.changed = false;
+ this.hasFocus = true;
+ this.getUpdatedChoices();
+ },
+
+ onHover: function(event) {
+ var element = Event.findElement(event, 'LI');
+ if(this.index != element.autocompleteIndex)
+ {
+ this.index = element.autocompleteIndex;
+ this.render();
+ }
+ Event.stop(event);
+ },
+
+ onClick: function(event) {
+ var element = Event.findElement(event, 'LI');
+ this.index = element.autocompleteIndex;
+ this.selectEntry();
+ this.hide();
+ },
+
+ onBlur: function(event) {
+ // needed to make click events working
+ setTimeout(this.hide.bind(this), 250);
+ this.hasFocus = false;
+ this.active = false;
+ },
+
+ render: function() {
+ if(this.entryCount > 0) {
+ for (var i = 0; i < this.entryCount; i++)
+ this.index==i ?
+ Element.addClassName(this.getEntry(i),"selected") :
+ Element.removeClassName(this.getEntry(i),"selected");
+ if(this.hasFocus) {
+ this.show();
+ this.active = true;
+ }
+ } else {
+ this.active = false;
+ this.hide();
+ }
+ },
+
+ markPrevious: function() {
+ if(this.index > 0) this.index--
+ else this.index = this.entryCount-1;
+ this.getEntry(this.index).scrollIntoView(true);
+ },
+
+ markNext: function() {
+ if(this.index < this.entryCount-1) this.index++
+ else this.index = 0;