Coder Social home page Coder Social logo

browsermedia / browsercms Goto Github PK

View Code? Open in Web Editor NEW
1.2K 60.0 262.0 13.99 MB

BrowserCMS: Humane Content Management for Rails

Home Page: http://browsercms.org

License: GNU Lesser General Public License v3.0

Ruby 70.21% JavaScript 4.65% CSS 8.90% HTML 11.33% Gherkin 4.91%

browsercms's Introduction

BrowserCMS: Humane Content Management for Rails

BrowserCMS is a general purpose, open source Web Content Management System (CMS) that supports Ruby on Rails v4.0. It can be used as a standalone CMS, added to existing Rails projects or extended using Rails Engines. It is designed to support three distinct groups of users:

  1. Non-technical web editors who want a humane system to manage their site, without needing to understand what HTML or even Rails is.
  2. Designers who want to create large and elegantly designed websites with no artificial constraints by the CMS.
  3. Developers who want to drop a CMS into their Rails projects, or create CMS driven websites for their clients.

Features

BrowserCMS is intended to offer features comparable to commercial CMS products, which can support larger teams of editors. This means having a robust set of features as part of its core, as well as the capability to customize it via modules.

Here's a quick overview of some of the more notable features:

  • Standalone CMS: BrowserCMS is designed to provide a robust CMS capabilities out of the box for content heavy web sites.
  • Mobile Friendly: Sites can be built to use mobile optimized designs that are optimized for small screens, with low bandwidth, with responsive design.
  • In Context Editing: Users can browse their site to locate content and make changes from the page itself.
  • Design friendly Templates: Pages aren't just a template and giant single chunk of HTML. Templates can be built to have multiple editable areas, to allow for rich designs that are still easy to manage by non-technical users.
  • Highly Extensible: Developer have access to the full Rails development stack, and can customize their project by adding their own controllers, views as well as CMS content types.
  • Sitemap: An explorer/finder style view of sections and pages in a site allowing users to add and organize pages.
  • Content Library: Provides a standardized 'CRUD' interface to allow users to manage both core and custom content types.
  • Content API: A set of behaviors added to ActiveRecord which allow for versioning, auditing, tagging and other content services provided by the CMS.
  • Section Based Security: Admins can control which users can access specific sections (public users), as well as who can edit which pages (cms users).
  • Workflow: Supports larger website teams where some users can contribute, but not publish. Users can assign work to other publishers to review.
  • Page Caching: Full page caching allows the web server (Apache) to serve HTML statically when they don't change.
  • CMSify your Rails App: BrowserCMS can be added to existing Rails applications to add content management capabilities.

Getting Started

See the Getting Started guide for instructions on how to install and start a project with BrowserCMS.

License

BrowserCMS is released under a LGPL license, and is copyright 1998-2014 BrowserMedia. The complete copyright can be found in COPYRIGHT.txt, and copy of the license can be found in LICENSE.txt.

Documentation / Support

The user documentation and guides for this version of the application can be found at:

  1. Guides and Wiki
  2. API Docs
  3. Report a Bug!
  4. Discuss the Project
  5. BrowserCMS Site

browsercms's People

Contributors

alce avatar brianlukoff avatar britneywright avatar cbonnet99 avatar daemianmack avatar djcp avatar filipechagas avatar gsxdsm avatar jackdempsey avatar jamesprior avatar jdettmann avatar jivey avatar jjbohn avatar jonleighton avatar joshuavial avatar jtwohiou avatar k1mmeh avatar ksung avatar kyleconrad avatar magpieuk avatar marnen avatar miskander avatar neilmiddleton avatar peakpg avatar philm avatar pjb3 avatar rlisowski avatar schoefmann avatar ssoper avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

browsercms's Issues

demo setup glitches

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/232. Created by Paul Sorey - 2009-12-07 00:01:52 UTC

Two minor frustrations in getting the demo to work (we want it to be EASY, right?):

in migration file:

20080815014337_browsercms_3_0_0.rb

I had to change the sql type for :content to 'text' (you have it as string).

create_versioned_table :html_blocks do |t|
  t.string :name
  t.string :content, :limit => 64.kilobytes + 1
end

Another minor annoyance in trying out the demo, you don't mention that you have to create the database named 'my_new_project_name_development' beforehand:

$ rails my_new_project_name -d mysql -m http://browsercms.org/templates/demo.rb $ cd my_new_project_name
$ script/server

using version 3.0.5

Assets should be served from BrowserCMS gem

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/382. Created by Patrick Peak - 2011-03-17 18:46:43 UTC

All CMS static assets (js, images, html, etc) are now served directly from the BrowserCMS gem, as well as Modules. They are no longer copied into projects, and should make it much easier to keep track of whether a file has been altered/overridden. Any unaltered copied file can be safely deleted from any projects that upgrade to 3.3.

Page::Version arel_table relation returns wrong name

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/377. Created by Pete P. - 2010-12-27 06:29:11 UTC

Examine the following behavior.

In a straight ruby console, I see this following (expected) behavior
@@@ ruby

ruby-1.9.2-p0 > Page.arel_table.name
=> "pages"
ruby-1.9.2-p0 > Page.arel_table["published"].relation.name
=> "pages"
ruby-1.9.2-p0 > Page::Version.arel_table.name
=> "page_versions"
ruby-1.9.2-p0 > Page::Version.arel_table["published"].relation.name
=> "page_versions"

@@@

However, I put a debugger in the seed data code after

@@@ ruby

pages(:access_denied).create_connector(html_blocks(:access_denied), "main")

@@@

and then:

@@@ ruby
pages(:access_denied).publish!
(rdb:1) eval Page.arel_table.name
"pages"
(rdb:1) eval Page.arel_table["published"].relation.name
"pages"
(rdb:1) eval Page::Version.arel_table.name
"page_versions"
(rdb:1) eval Page::Version.arel_table["published"].relation.name
"pages"
@@@

Running on ruby 1.9.2-p0, rails 3.0.3, osX 10.6.5

Add better helper text for title tag for pages.

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/394. Created by Patrick Peak - 2011-04-25 13:01:43 UTC

Currently, the page title field is used in several places:

  1. Any where that <%= page_title %> is used in templates (typically title and often h1)
  2. Breadcrumbs
  3. Menus?

The Title field should be have better instructions, and we may want to group it with other 'SEO' fields (keyword, description) since that's its primary purpose.

Improve Yard API docs.

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/388. Created by Patrick Peak - 2011-03-23 13:53:29 UTC

I would like to use RubyGems' YARD based docs as the primary source for API documentation since it keeps multiple versions, and would be one less thing to maintain. However, when reviewing http://rubydoc.info/gems/browsercms/3.1.2/frames it appears that it doesn't any code in the app/ directory (only lib) which makes it not as useful.

Might need to change the gemspec?

Simple question about Paths

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/372. Created by april b. - 2010-09-21 17:12:47 UTC

I apologize about such a simple newbie question:

I tried to upload a file and am have a hard time understanding the "Path" feature.

For example, I am uploading two CSS files and if I give them both the same path then I get an error message:
"Attachment file path has already been taken"

What is the path and what should I be entering in this box for each file?

Thanks!!

Content Library/List Portlets- sort by feature and views

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/371. Created by Jon Doranz - 2010-09-10 16:40:16 UTC

This possibly applies to other sections as well within the Content Library and a non critical issue, more of a convenience factor.
Two issues that I came across when doing some house cleaning of unused content in the CMS.

  1. After sorting by date, it reverts back to the default view after each portlet is deleted which was a bit frustrating. I had a bunch I was just experimenting with, but didn't realize that it reverted to default view each time you make a change or delete, and started deleting current portlets by accident. It could be helpful if it stayed within the chosen sort view (whatever that may be) for that session until it is purposely changed.
  2. Also it could be helpful to have a column to say if the portlet is being used in the list view in addition to having to click each portlet to see if it is currently associated with a page. And you could also sort by portlets that are used/unused. Maybe there is limited space to be able to put exactly the page/path that the portlet is associated with in this view. Possibly a flag just to say if it is associated with a page or not.

Thanks.
Jon

news module migration is broken

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/230. Created by Zach Dennis - 2009-12-03 20:06:44 UTC

The migration from the bcms_news module, db/migrate/20090410193313_create_news_articles.rb , appears to be broken. It has Group.all(&:id) which I believe wants to be Group.all.map(&:id). Attempting to migrate generated a "undefined method 'to_i'" error Group.

See this forked commit for more information:

http://github.com/zdennis/bcms_news/commit/165625f4db077b77cfed022918164d8fbb753c42

Guides

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/368. Created by svalloisdavies - 2010-08-06 09:01:17 UTC

Hi, just getting started looking at browsercms very impressed so far! The guides are excellent but one thing that caught me out is that the 3.01 and 3.1 guides were tricky to spot the difference. It took me while to spot they had different URLs. http://guides.browsercms.org/index.html and http://www.browsercms.org/doc/guides/html/getting_started.html it's fine if you follow links in from the front page, but tricky if you come in via google.

Also your tags quick reference Section 3 formatting is a bit awry - (http://guides.browsercms.org/building_templates.html)

Cheers, Steve.

Use the Asset Pipeline

Refactor how BrowserCMS uses javascript/images/css to take advantage of the Asset Pipeline. This includes:

  1. Removing jquery and jquery-ui from bcms and adding a depenency on the jquery-rails gem
  2. Moving browsercms specific images, javascripts, css into /assets directory
  3. Moving any jquery plugins (like jquery.cookie) that don't have separate distributable rails gems into vendor/assets.

BrowserCMS projects will need to enable the asset pipeline or this won't work.

Error messages don't appear correctly for basic content editing

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/379. Created by buzzware - 2011-01-26 20:37:15 UTC

I am using browsercms 3.1.2. I have created a standard demo site, and when I try to create a text block without a name I get the following in Firefox (see attachment). This is only a basic example as I hve the same problem with a much more complex custom block.
It seems that errors are not being inserted correctly into the ActiveRecord errors object. I'm looking into it and will report here anything I find.

bin/browsercms: getopt: invalid option -- 'm'

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/328. Created by Robert Grรธnning - 2010-03-24 18:52:33 UTC

The Information:

root@eyr:/www# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 9.10
Release: 9.10
Codename: karmic
root@eyr:/www# uname -a
Linux eyr 2.6.31-14-server #48-Ubuntu SMP Fri Oct 16 15:07:34 UTC 2009 x86_64 GNU/Linux
root@eyr:/www# ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux]
root@eyr:/www# aptitude show rails | grep Version
Version: 2.2.3-1

The Error:

root@eyr:/www# wget -q http://github.com/browsermedia/browsercms/tarball/v3.1.0
root@eyr:/www# tar -xvaf browsermedia-browsercms-63b175b.tar.gz > /dev/null
root@eyr:/www# cd browsermedia-browsercms-63b175b
root@eyr:/www/browsermedia-browsercms-63b175b# chmod +x bin/*
root@eyr:/www/browsermedia-browsercms-63b175b# ./bin/browsercms /www/hms
getopt: invalid option -- 'm'
Terminating...

Unable to create BrowserCMS project '/www/hms'.
root@eyr:/www/browsermedia-browsercms-63b175b# ./bin/bcms /www/hms
getopt: invalid option -- 'm'
Terminating...

Unable to create BrowserCMS project '/www/hms'.

Global CMS Configuration Parameters

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/375. Created by Craig Hoover - 2010-11-25 03:50:55 UTC

I was able to extend a copy of the CMS to allow for a "General Preferences" style page that visually displayed next to the Dashboard tab. Global configuration items would be something like:

  • Facebook URL
  • Twitter URL
  • Company Address
  • Company Phone
  • Company E-mail
  • Company etc...

I implemented my solution as a model called "Site". So, anywhere in my views, I can access:

current_site.address or current_site.email

Having something of this manner built into the CMS would be great.

Thoughts/suggestions for future implementation welcome.

Install problem on Windows 7

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/362. Created by Valerie Thompson - 2010-06-13 02:09:33 UTC

Win 7, Sqlite3, Rails 2.3.8

Using the guide here: http://guides.browsercms.org/getting_started.html
I also looked here: http://patrickpeak.com/wordpress/category/wcm/browsercms/

I get this result:
@@@
C:\Ruby191\projects>browsercms test -m demo
@@@
@@@
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create config/locales
create db
create doc
create lib
create lib/tasks
create log
create public/images
create public/javascripts
create public/stylesheets
create script/performance
create test/fixtures
create test/functional
create test/integration
create test/performance
create test/unit
create vendor
create vendor/plugins
create tmp/sessions
create tmp/sockets
create tmp/cache
create tmp/pids
create Rakefile
create README
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create config/database.yml
create config/routes.rb
create config/locales/en.yml
create db/seeds.rb
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/new_rails_defaults.rb
create config/initializers/session_store.rb
create config/initializers/cookie_verification_secret.rb
create config/environment.rb
create config/boot.rb
create config/environments/production.rb
create config/environments/development.rb
create config/environments/test.rb
create script/about
create script/console
create script/dbconsole
create script/destroy
create script/generate
create script/runner
create script/server
create script/plugin
create script/performance/benchmarker
create script/performance/profiler
create test/test_helper.rb
create test/performance/browsing_test.rb
create public/404.html
create public/422.html
create public/500.html
create public/index.html
create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
applying template: c:/Ruby191/lib/ruby/gems/1.9.1/gems/browsercms-3.1.0/lib
/../templates/demo.rb
executing del public\index.html from C:/Ruby191/projects/test
gem browsercms
rake db:create
c:/Ruby191/bin/rails: No such file or directory - rake.cmd db:create
route map.routes_for_browser_cms
generating browser_cms
c:/Ruby191/bin/rails: No such file or directory - script/generate browser_cms
generating browser_cms_demo_site
c:/Ruby191/bin/rails: No such file or directory - script/generate browser_cms_de
mo_site
file app/views/layouts/templates/default.html.erb
rake db:migrate
c:/Ruby191/bin/rails: No such file or directory - rake.cmd db:migrate
applied c:/Ruby191/lib/ruby/gems/1.9.1/gems/browsercms-3.1.0/lib/../templa
tes/demo.rb

Created new BrowserCMS project 'test'.
To get started, type 'cd test'
then 'ruby script/server' and open your browser to 'http://localhost:3000'.
@@@

So then I tried specifying the demo template path directly from github's latest version:
@@@

C:\Ruby191\projects>browsercms test3 -m demo --template=http://github.com/browse
rmedia/browsercms/raw/master/templates/demo.rb
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create config/locales
create db
create doc
create lib
create lib/tasks
create log
create public/images
create public/javascripts
create public/stylesheets
create script/performance
create test/fixtures
create test/functional
create test/integration
create test/performance
create test/unit
create vendor
create vendor/plugins
create tmp/sessions
create tmp/sockets
create tmp/cache
create tmp/pids
create Rakefile
create README
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create config/database.yml
create config/routes.rb
create config/locales/en.yml
create db/seeds.rb
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/new_rails_defaults.rb
create config/initializers/session_store.rb
create config/initializers/cookie_verification_secret.rb
create config/environment.rb
create config/boot.rb
create config/environments/production.rb
create config/environments/development.rb
create config/environments/test.rb
create script/about
create script/console
create script/dbconsole
create script/destroy
create script/generate
create script/runner
create script/server
create script/plugin
create script/performance/benchmarker
create script/performance/profiler
create test/test_helper.rb
create test/performance/browsing_test.rb
create public/404.html
create public/422.html
create public/500.html
create public/index.html
create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
applying template: http://github.com/browsermedia/browsercms/raw/master/tem
plates/demo.rb
executing del public\index.html from C:/Ruby191/projects/test3
The template [http://github.com/browsermedia/browsercms/raw/master/templates/dem
o.rb] could not be loaded. Error: no such file to load -- C:/Ruby191/projects/te
st3/http:/github.com/browsermedia/browsercms/raw/master/templates/../lib/cms/ver
sion.rb

Created new BrowserCMS project 'test3'.
To get started, type 'cd test3'
then 'ruby script/server' and open your browser to 'http://localhost:3000'.
@@@

Dashboard errors when clicking complete tasks without selecting any tasks

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/298. Created by Adam Ainsworth - 2010-01-28 17:28:19 UTC

We are running version 3.0.4, and when you click Complete Tasks in the dashboard, without selecting any tasks, we get the following error:

Error: ActiveRecord::RecordNotFound

Message
Couldn't find Task without an ID
Stacktrace
/home/app/.gem/ruby/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:1567:in find_from_ids' /home/app/.gem/ruby/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:616:infind'
/home/app/.gem/ruby/1.8/gems/browsercms-3.0.4/app/controllers/cms/tasks_controller.rb:31:in complete' /home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:1331:insend'
/home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:1331:in perform_action_without_filters' /home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/filters.rb:617:incall_filters'
/home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/filters.rb:610:in perform_action_without_benchmark' /home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/benchmarking.rb:68:inperform_action_without_rescue'
/home/app/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/core_ext/benchmark.rb:17:in ms' /usr/lib/ruby/1.8/benchmark.rb:308:inrealtime'
/home/app/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/core_ext/benchmark.rb:17:in ms' /home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/benchmarking.rb:68:inperform_action_without_rescue'
/home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/rescue.rb:160:in perform_action_without_flash' /home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/flash.rb:146:inperform_action'
/home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:532:in send' /home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:532:inprocess_without_filters'
/home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/filters.rb:606:in process' /home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:391:inprocess'
/home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:386:in call' /home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/routing/route_set.rb:437:incall'
/home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:87:in dispatch' /home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:121:in_call'
/home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:130:in build_middleware_stack' /home/app/.gem/ruby/1.8/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:29:incall'
/home/app/.gem/ruby/1.8/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:29:in call' /home/app/.gem/ruby/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/query_cache.rb:34:incache'
/home/app/.gem/ruby/1.8/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:9:in cache' /home/app/.gem/ruby/1.8/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:28:incall'
/home/app/.gem/ruby/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in call' /home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/string_coercion.rb:25:incall'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/head.rb:9:in call' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/methodoverride.rb:24:incall'
/home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/params_parser.rb:15:in call' /home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/session/cookie_store.rb:93:incall'
/home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/failsafe.rb:26:in call' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/lock.rb:11:incall'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/lock.rb:11:in synchronize' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/rack/lock.rb:11:incall'
/home/app/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:106:in call' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/rack/request_handler.rb:95:inprocess_request'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_request_handler.rb:207:in main_loop' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:378:instart_request_handler'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:336:in handle_spawn_application' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/utils.rb:183:insafe_fork'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:334:in handle_spawn_application' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:352:insend'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:352:in main_loop' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:196:instart_synchronously'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:163:in start' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:213:instart'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:262:in spawn_rails_application' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server_collection.rb:126:inlookup_or_add'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:256:in spawn_rails_application' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server_collection.rb:80:insynchronize'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server_collection.rb:79:in synchronize' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:255:inspawn_rails_application'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:154:in spawn_application' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:287:inhandle_spawn_application'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:352:in __send__' /home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:352:inmain_loop'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
/home/app/.gem/ruby/1.8/gems/passenger-2.2.5/bin/passenger-spawn-server:61

Install process is broken

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/361. Created by Trevor Hartman - 2010-06-08 20:33:27 UTC

Following the instructions from, 3 Starting a 'Real' Project:
http://www.browsercms.org/doc/guides/html/getting_started.html

After installing, if I start a server and go to localhost:3000 I get:

Error: ActionView::MissingTemplate:

Missing layout layouts/templates/default.erb in view path app/views:tmp/views:/Users/thartman/.rvm/gems/ruby-1.8.7-p249/gems/browsercms-3.1.0/app/views

Ruby 1.8.7
Rails 2.3.8

Connected pages returning historic results

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/346. Created by kimmy - 2010-04-27 10:01:38 UTC

The connecting module implements a method #connected_pages which utilises the core Page model's #connected_to scope to retrieve results. However, the #connected_to scope disregards version number in its conditions, which causes pages that have historically been connected to this object to be returned as part of #connected_pages, even if the connection has since been broken.

There has been discussion regarding this issue on the mailing list so I wont repeat all the details here. See http://groups.google.com/group/browsercms/browse_thread/thread/507f39d725a49f3f

But I will post any more findings that I have and hopefully discussions re a solution.

This affects BCMS version 3.1.0 and I suspect all previous 3.0 releases.

New Project broken migration because of routes loading

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/376. Created by Pete P. - 2010-12-26 23:15:07 UTC

Pardon, I'm a bit new to gem stuff...

I cloned gem and switched to r3 branch.

Created my database.yml for mysql and ran rake db:create, and rake db:migrate

Migrations failed because: "Table 'browsercms_development.file_blocks' doesn't exist"

I traced this from the loading of "routes_for_browser_cms" through to the routes for file_blocks which tries to constantize the model. It fails during constantizing of the model when it acts_as_content_block and tries to add in soft delete functionality.

File: soft_deleting.rb
Line: 26
"default_scope where(:deleted => false)"

This tries to get the column hash for the table which obviously hasn't been created cuz where migrating.

Saving an unchanged block shouldn't create a new version.

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/384. Created by Patrick Peak - 2011-03-17 18:55:51 UTC

Saving a block with unchanged value shouldn't create additional versions. Currently saving an HtmlBlock results in 'changed_tags'.

  1. Edit an Html Block
  2. Make no changes
  3. Save
  4. Review 'Revisions'

Expected: No new version
Actual: New version with 'changed_tags' is there.

Reported In: 3.3

pluses in image path get translated to dashes

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/373. Created by buzzware - 2010-10-23 16:14:28 UTC

With @@@
image = ImageBlock.create!(
:name => p.permalink+'.jpg',
:attachment_section => artist.try(:section) || Section.root,
:attachment_file => image_file,
:attachment_file_path => '/images/products/'+p.permalink+'.jpg',
:product_id => p.id,
:sort_position => 1,
:publish_on_save => true
)
@@@

you get an ImageBlock with the name containing + characters eg. "john+sunset-clouds.jpg" but the path is /images/products/john-sunset-clouds.jpg

  • characters are useful in that they are treated as a space by Google for SEO, yet are different from dash so can be used as a higher level seperator. In the above example, the plus separates the artist ("john") from the painting "sunset-clouds"

Please retain + characters when cleaning the url.

Rails 3 not autloading lib/ stuff anymore, rake reset breaks

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/391. Created by antond - 2011-03-30 02:58:43 UTC

So, just doing this on the master:

@@@ shell
$ rake reset --trace
(in /Users/anton/Code/browsercms)
** Invoke reset (first_time)
** Invoke db:reload_demo_data (first_time)
** Invoke db:migrate:reset (first_time)
** Invoke db:drop (first_time)
** Invoke db:load_config (first_time)
** Invoke rails_env (first_time)
** Execute rails_env
** Execute db:load_config
** Execute db:drop
** Invoke db:create (first_time)
** Invoke db:load_config
** Execute db:create
browsercms_test already exists
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment

<Mysql::Error: Table 'browsercms_development.file_blocks' doesn't exist>

<Mysql::Error: Table 'browsercms_development.file_blocks' doesn't exist>

** Execute db:migrate
== Browsercms300: migrating ==================================================
-- create_table("users", {:force=>true})
-> 0.0909s
-- add_index(:users, :login, {:unique=>true})
-> 0.1135s
-- create_versioned_table(:dynamic_views)
-> 0.1989s
-- create_versioned_table(:pages)
-> 0.1787s
-- create_table(:content_type_groups)
-> 0.0895s
-- create_table(:content_types)
-> 0.0766s
-- create_table(:category_types)
-> 0.0986s
-- create_table(:categories)
-> 0.0756s
-- create_table(:connectors)
-> 0.0973s
-- create_versioned_table(:html_blocks)
-> 0.1791s
-- create_table(:sections)
-> 0.1081s
-- create_table(:portlets)
-> 0.0787s
-- create_table(:portlet_attributes)
-> 0.0895s
-- create_table(:redirects)
-> 0.1079s
-- create_versioned_table(:attachments)
-> 0.1804s
-- create_versioned_table(:file_blocks)
-> 0.2123s
-- create_table(:group_types)
-> 0.0862s
-- create_table(:groups)
-> 0.1004s
-- create_table(:user_group_memberships)
-> 0.1008s
-- create_table(:permissions)
-> 0.0888s
-- create_table(:group_permissions)
-> 0.0902s
-- create_table(:group_type_permissions)
-> 0.1005s
-- create_table(:group_sections)
-> 0.1003s
-- create_table(:sites)
-> 0.1123s
-- create_table(:section_nodes)
-> 0.1120s
-- create_versioned_table(:links)
-> 0.2126s
-- create_table(:tags)
-> 0.1228s
-- create_table(:taggings)
-> 0.0968s
-- create_table(:email_messages)
-> 0.0907s
-- create_table(:tasks)
-> 0.1000s
-- create_table(:page_routes)
-> 0.0972s
-- create_table(:page_route_options)
-> 0.1009s
== Browsercms300: migrated (3.7739s) =========================================

== Browsercms305: migrating ==================================================
-- add_column(:users, :reset_token, :string)
-> 0.0853s
== Browsercms305: migrated (0.0854s) =========================================

== Browsercms330: migrating ==================================================
== Browsercms330: migrated (0.0783s) =========================================

** Invoke db:schema:dump (first_time)
** Invoke environment
** Execute db:schema:dump
** Execute db:migrate:reset
** Invoke db:load_demo_data (first_time)
** Invoke environment
** Execute db:load_demo_data
== Demo Data: creating =====================================================
rake aborted!
uninitialized constant InitialData
/Users/anton/Code/browsercms/lib/tasks/dev.rake:13:in block (2 levels) in <top (required)>' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:636:incall'
/Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:636:in block in execute' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:631:ineach'
/Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:631:in execute' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:597:inblock in invoke_with_call_chain'
/Users/anton/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:in mon_synchronize' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:590:ininvoke_with_call_chain'
/Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:607:in block in invoke_prerequisites' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:604:ineach'
/Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:604:in invoke_prerequisites' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:596:inblock in invoke_with_call_chain'
/Users/anton/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:in mon_synchronize' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:590:ininvoke_with_call_chain'
/Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:607:in block in invoke_prerequisites' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:604:ineach'
/Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:604:in invoke_prerequisites' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:596:inblock in invoke_with_call_chain'
/Users/anton/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:in mon_synchronize' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:590:ininvoke_with_call_chain'
/Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:583:in invoke' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:2051:ininvoke_task'
/Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:2029:in block (2 levels) in top_level' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:2029:ineach'
/Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:2029:in block in top_level' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:2068:instandard_exception_handling'
/Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:2023:in top_level' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:2001:inblock in run'
/Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:2068:in standard_exception_handling' /Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/lib/rake.rb:1998:inrun'
/Users/anton/.rvm/gems/ruby-1.9.2-p180@bcmsdemo/gems/rake-0.8.7/bin/rake:31:in <top (required)>' /Users/anton/.rvm/gems/ruby-1.9.2-p180@global/bin/rake:19:inload'
/Users/anton/.rvm/gems/ruby-1.9.2-p180@global/bin/rake:19:in `

'
@@@

As mentioned in the title, Rails 3 is not autoloading stuff under lib/ anymore, hence the 'uninitialized constant InitialData'. Tests are passing though.

Reverting pages with shared blocks causes errors

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/380. Created by Patrick Peak - 2011-03-11 19:12:12 UTC

Needs confirmation and definitive steps to reproduce. However, it has been observed in situations where a block (like a footer or sidebar) is shared across many pages (like 200+), that reverting on page may cause errors. The observed issue is that page.version will be incremented one higher than the number of revisions or the highest version # in the connectors table. This may be happening because connectors aren't being correctly copied after the pages are getting verisoned.

Observable Issues:

  • The sitemap and the toolbar for individual pages may throw an error.

Here are some SQL scripts for checking finding the ids for pages that may have been up in this state:

SELECT pages.version as pages_version,  max_conns.max_page_version, pages.id, max_conns.page_id, pages.deleted, pages.path 
FROM (select id, connectable_id, connectable_version, page_id, max(page_version) as max_page_version from connectors 
      where connectable_id = 314 group by page_id) as max_conns 
LEFT JOIN pages on pages.id = max_conns.page_id where pages.version = (max_conns.max_page_version + 1) and pages.deleted = 0;

Corrective Action:
From here, you can update the versions of page using the following script:

update pages set version = (version - 1) where id in (ID1, ID2, ID3);

Add Support For Multiple and Many Attachments

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/28. Created by Gordon Anderson - 2009-10-23 13:41:07 UTC

Steps to recreate are as follows:

  • checkout browsercms from git and reset head to 4a12375
  • sudo rake cms:install
  • in a separate directory execute ' rails browsercmstest -d postgresql -m /path/to/browsercms/templates/blank.rb'
  • Now create a custom content type using './script/generate content_block client name:string description:html image:attachment'
  • Upon starting the server, and logging in, when I try to create a new content type of 'client' I get this error:

Message
undefined method `cms__url' for #Cms::ClientsController:0x2f0bc3c
Stacktrace
On line #8 of /opt/local/lib/ruby/gems/1.8/gems/browser_cms-3.0.0.203/app/views/cms/blocks/new.html.erb

5: <% @page_title = "Content Library / Add New #{content_type.display_name}" %>
6: <% @toolbar_title = "Add New #{content_type.display_name}" %>
7: <% content_for :functions,  render(:partial => 'cms/blocks/toolbar') %>
8: <% form_for(@block, :url => blocks_path, :html => {:multipart => true}) do |f| %>
9:   <%= f.error_messages %>
10:   <%= render :partial => 'cms/shared/exception', :object => @exception if @exception %>
11:   <%= render :partial => 'cms/blocks/hidden_fields', :locals => {:f => f} %>

/opt/local/lib/ruby/gems/1.8/gems/browser_cms-3.0.0.203/app/helpers/cms/path_helper.rb:8:in `send'
/opt/local/lib/ruby/gems/1.8/gems/browser_cms-3.0.0.203/app/helpers/cms/path_helper.rb:8:in `cms_index_url_for'
/opt/local/lib/ruby/gems/1.8/gems/browser_cms-3.0.0.203/app/controllers/cms/content_block_controller.rb:148:in `blocks_path'
(eval):2:in `send'
(eval):2:in `blocks_path'
/opt/local/lib/ruby/gems/1.8/gems/browser_cms-3.0.0.203/app/views/cms/blocks/new.html.erb:8
/opt/local/lib/ruby/gems/1.8/gems/browser_cms-3.0.0.203/app/controllers/cms/content_block_controller.rb:185:in `after_create_on_failure'
/opt/local/lib/ruby/gems/1.8/gems/browser_cms-3.0.0.203/app/controllers/cms/content_block_controller.rb:190:in `after_create_on_error'
/opt/local/lib/ruby/gems/1.8/gems/browser_cms-3.0.0.203/app/controllers/cms/content_block_controller.rb:36:in `create'

At first glance it looks like this method (in path_helper.rb) is failing:

def cms_index_url_for(resource, options={})
send("cms_#{resource_collection_name(resource).pluralize}_url", options)
end

It is returning cms__url, ie the middle section is blank

Thanks

Gordon

Reverting pages with editted content blocks does not work properly.

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/381. Created by Craig Hoover - 2011-03-15 19:56:00 UTC

To replicate:

A page is created within the CMS.

An "Text" block is created and added to the page.

The page is published.

User edits the HTML block with several revision and saves but user does NOT publish the page.

User then decides page is no-good and reverts back to last "good" version.

User clicks to edit the HTML block

Result:

The content shown to be edited is not the same version that is viewable through the browser.

Desired result:

The HTML block version is mapped correctly to the specified current page revision

Update browsercms CLI to remove the reliant on application templates.

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/393. Created by Patrick Peak - 2011-04-22 21:47:04 UTC

Here is the desired usage:

bcms new name_of_project
bcms module name_of_project 
bcms demo name_of_project
bcms upgrade (maybe, as it might not be a completely 'safe' operation)

Tasks:

  1. Rework to use Thor.
  2. Ensure it still works on Windows
  3. Make sure -v returns BrowserCMS's version not Rails.
  4. Make sure templates, database and other Rails flags get passed
  5. Figure out a way to unittest the CLI

Attributes not permitted for models with the same name

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/366. Created by Mezza - 2010-07-16 11:32:36 UTC

I tried to create a content_block for a custom model called 'Year' with an attribute 'year' of type integer.

When using the content_block generator created forms, and actually trying to create a Year record I get an unexpected error:

ActiveRecord::AssociationTypeMismatch: Year(#2195820060) expected, got Fixnum(#2148235880)

Bizarrely, if I drop the attribute from the content_block model and
add one called 'year_value' then all is well.

Write better instructions for working with BrowserCMS core

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/400. Created by Patrick Peak - 2011-05-04 19:46:43 UTC

Goal: Make it easier for developers to keep up to date with core. Include a reference to this: http://robots.thoughtbot.com/post/5133345960/keeping-a-git-fork-updated which details how to use Git to easily merge changes from upstream.

Expand on this currently very basic article: https://github.com/browsermedia/browsercms/wiki/Building-BrowserCMS-from-Edge

Rails Caching in Development Timezone error

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/378. Created by Craig Hoover - 2010-12-30 18:22:45 UTC

There is a bug in Rails when it comes to the Rails.cache model in development with ActiveRecord.
(https://rails.lighthouseapp.com/projects/8994/tickets/1290-activerecord-raises-randomly-apparently-a-timezone-issue)

You can replicate this by enabling caching:

@@@
config.cache_store = :memory_store
@@@

And then use (example):

@@@
Rails.cache.fetch('some_key') do
SomeModel.find(:all)
end
@@@

On the first page load, things work correctly in development but on second page load, an error occurs.

It can be fixed in the environment.rb file by replacing:

@@@
config.time_zone = 'UTC'
@@@

with:

@@@
config.active_record.default_timezone = :utc
@@@

It may be worthwhile to update the documentation and timezone information within the environment.rb in the BCMS project to reflect this update as of Rails 2.2.

Pages with trailing slashs can cause issues.

Imported from lighthouse. Original ticket at: http://browsermedia.lighthouseapp.com/projects/28481/tickets/345. Created by Patrick Peak - 2010-04-26 18:15:13 UTC

The CMS will allow two pages which differ only by a trailing slash. For example,

/community
/community/

This causes problems, as when you attempt to edit the 2nd page from the sitemap, the router will send you to the first one. Menus will also be generated incorrectly. For the sake of sanity, its probably worth eliminating the ability to add pages with trailing slashes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.