Help Anywhere

This plugin for rails provides a powerful help system for every websites built with ruby on rails.

Users can read the help, and administrator can update help pages.

You can select on or more elements in your website, add help box on it, save it, create “step by step” help page.

Usage

Add in your Gemfile:

gem 'help-anywhere'

Then

bundle install
rake help-anywhere:install:migrations
rake help-anywhere:setup
rake db:migrate

Finish by setup css and javascript files in your application.js/css:

//= require help_anywhere

That’s all!

Finally, update the file ‘config/help-anywhere.rb` to change the permission strategy and the help routes! See help-anywhere-example project for more information!

Log-in has edit mode, and create new help page with our editor. Enjoy!

Require authorization for edit mode.

If you just follow the steps before, there is no authorization needed to edit the pages and components of your help. But you can add it easily:

in ‘yourapp/config/initializers/help_anywhere.rb` just set:

HelpAnywhere.configure do |config|
  # Set here the method which is called to allow or disallow edition mode
  # You can create this method in your ApplicationController class.
  # By default, this will always return always true: every one can edit help.
  config.edition_role = :can_user_edit_help?
end

Routing the content

You can route dynamically for your help resource. A route will match an url with a specific help resource name.

Example:

config.routes do |routes|
  routes.match '/articles/*/show...', 'articles#show'
end

This will allow every resource located at mywebsite/articles/xxxx/show(/xxx/yyy/zzz…) to share the same help (here articles#show page).

You can use ‘*` to wilcard a path level, and `…` to wilcard everything after. Samely, you can use `?` and `??` to use it in output:

Example:

config.routes do |routes|
  routes.match '/?/*/?', '$1#$2' # ex: url /resource/1/edit <=> resource#edit help page
end

By default, every url create a new help resource. Keep in mind the hash part of the url is not used. For plugins for ajax which use hash part (like jquery-bbq), you need to refine manually the route like this:

$(window).bind( 'hashchange', function(e) {
  //Force help-anywhere to get resource manually
  HelpAnywhere.retrieveResource(HelpAnywhere.selectRoute($.param.fragment()));
});

Version

0.1.4

  • Now you can bind a bubble to an element without typing the selector manually. A button provide an interface to select an object into the page. You can select anything, but take care about dynamic content (over routes), otherwise your block can be missplaced!

0.1.1

  • This is the first stable release!

  • HelpAnywhere is provided with Bubble component, but you can also build your own. Check ‘app/javascript/bubble.coffee.js` for more informations. You can ignore this component. Just `require help_anywhere_core_only` in both application.js and .css