Difference between revisions of "Developer help"

From mx Help Wiki
Jump to: navigation, search
m (New page: <i> in progress... </i> == File layout == <p> The application follows the traditional Rails layout. </p> == Public accessibility == There are two different approaches to making your d...)
 
m
Line 11: Line 11:
 
* just use the shared public controllers
 
* just use the shared public controllers
 
* create a "home" controller
 
* create a "home" controller
 +
 +
At present there are 3 locations where a project-specific set of public accessible files may reside:
 +
 +
/app/controllers/public/site/foo
 +
/app/views/public/site/foo
 +
/public/site/foo
 +
 +
Well try and mock up and include a basic site named 'foo' and include it in the source shortly.
  
 
=== Shared controllers ===
 
=== Shared controllers ===
Line 16: Line 24:
 
Controllers that sit at the base of   
 
Controllers that sit at the base of   
  
  /controllers/public
+
  app/controllers/public
  
are shared by all projects.  
+
are shared by all projects. Controllers in
 +
 
 +
/app/controllers/public/site/foo
 +
 
 +
are specific to a project.  In the above example 'foo' is the same as the unix-name that you give your project when you click 'settings' while logged in mx.  Using a public controller is straightforward- all you need to do is point your link in your layout to that controller, for instance you could add something like this to your layout:
 +
 
 +
<tr>
 +
  <td class="menu" valign="top">
 +
    <a href="http://your_url.blah/public/ref/list_by_author">references</a>
 +
    <a href="http://your_url.blah/public/ref">bibliography</a>
 +
    <a href="http://your_url.blah/public/taxon_name/browse?family=">taxa</a>
 +
    <a href="http://your_url.blah/public/repository">repositories</a>
 +
    <a href="http://your_url.blah/public/taxon_name">search</a>
 +
    <a href="http://your_url.blah/public/clave">keys</a>
 +
    <a href="http://your_url.blah/site/evaniid/about_authors.html">about</a>
 +
    <a href="http://your_url.blah">home</a>
 +
  </td>
 +
</tr>
 +
 
 +
 
 +
In the above example the controllers that you are accessing are prefixed with public.  For instance
 +
 
 +
  /public/ref
 +
  /public/taxon_name
 +
  /public/repository
 +
 
 +
are all shared controllers.
 +
 
 +
You'll also notice that some links have
 +
 
 +
/site
 +
 
 +
following the URL.  These are links static html files that are found in
 +
 
 +
/public/site/foo
  
 
=== The 'home' controller ===
 
=== The 'home' controller ===
 +
 +
If you want a little more control or customization you can create a home_controller.rb file in
 +
 +
/app/controllers/public/site/foo
 +
 +
With this approach you can essentially ignore the
 +
 +
/public/site/foo
 +
 +
folder, instead placing all layout files, static or otherwise in
 +
 +
/app/views/public/site/foo
 +
 +
A home_controller.rb file for a project with unix name 'foo' and might look something like this:
 +
 +
  class Public::Site::Foo::HomeController < ApplicationController
 +
    layout 'public/site/Foo/layout'
 +
 
 +
    def index
 +
      # grab some random images to display on our hompage
 +
      @ids = ImageDescription.random_set(1, 3, 1)
 +
    end
 +
 
 +
    def about
 +
    # these actions simply render the file in the given layout with the same name, for example:
 +
    # /app/views/public/site/foo/about.rhtml
 +
    # would be rendered calling this link
 +
    end
 +
 +
    def links
 +
    # see above
 +
    end
 +
 +
    def keys
 +
      # here we grab information from project 1
 +
      redirect_to "/projects/1/public/clave/list"
 +
    end
 +
 +
    def images
 +
      redirect_to "/projects/1/public/image/list"
 +
    end
 +
 +
    def taxon_pages
 +
      redirect_to "/projects/1/public/public_content/list"
 +
    end
 +
 +
    def association
 +
      # and here we grab information from project 4
 +
      redirect_to "/projects/4/public/association"
 +
    end
 +
  end

Revision as of 13:24, 6 March 2007

in progress...

Contents

File layout

The application follows the traditional Rails layout.

Public accessibility

There are two different approaches to making your data public. Both approaches require a layout.rhtml.

  • just use the shared public controllers
  • create a "home" controller

At present there are 3 locations where a project-specific set of public accessible files may reside:

/app/controllers/public/site/foo
/app/views/public/site/foo
/public/site/foo

Well try and mock up and include a basic site named 'foo' and include it in the source shortly.

Shared controllers

Controllers that sit at the base of

app/controllers/public

are shared by all projects. Controllers in

/app/controllers/public/site/foo

are specific to a project. In the above example 'foo' is the same as the unix-name that you give your project when you click 'settings' while logged in mx. Using a public controller is straightforward- all you need to do is point your link in your layout to that controller, for instance you could add something like this to your layout:

<tr>
 <td class="menu" valign="top">
   <a href="http://your_url.blah/public/ref/list_by_author">references</a>
   <a href="http://your_url.blah/public/ref">bibliography</a>
   <a href="http://your_url.blah/public/taxon_name/browse?family=">taxa</a>
   <a href="http://your_url.blah/public/repository">repositories</a>
   <a href="http://your_url.blah/public/taxon_name">search</a>
   <a href="http://your_url.blah/public/clave">keys</a>
   <a href="http://your_url.blah/site/evaniid/about_authors.html">about</a>
   <a href="http://your_url.blah">home</a>
 </td>
</tr>


In the above example the controllers that you are accessing are prefixed with public. For instance

 /public/ref
 /public/taxon_name
 /public/repository

are all shared controllers.

You'll also notice that some links have

/site

following the URL. These are links static html files that are found in

/public/site/foo

The 'home' controller

If you want a little more control or customization you can create a home_controller.rb file in

/app/controllers/public/site/foo

With this approach you can essentially ignore the

/public/site/foo

folder, instead placing all layout files, static or otherwise in

/app/views/public/site/foo

A home_controller.rb file for a project with unix name 'foo' and might look something like this:

 class Public::Site::Foo::HomeController < ApplicationController
   layout 'public/site/Foo/layout'
 
   def index
     # grab some random images to display on our hompage
     @ids = ImageDescription.random_set(1, 3, 1)
   end
 
   def about
    # these actions simply render the file in the given layout with the same name, for example:
    # /app/views/public/site/foo/about.rhtml
    # would be rendered calling this link
   end
   def links
    # see above
   end
   def keys
     # here we grab information from project 1
     redirect_to "/projects/1/public/clave/list"
   end
   def images
     redirect_to "/projects/1/public/image/list"
   end
   def taxon_pages
     redirect_to "/projects/1/public/public_content/list"
   end
   def association
     # and here we grab information from project 4
     redirect_to "/projects/4/public/association"
   end
 end
Personal tools