Provided by: libjifty-perl_1.10518+dfsg-3ubuntu1_all bug

NAME

       Jifty::View::Declare::CRUD - Provides typical CRUD views to a model

SYNOPSIS

         package App::View::User;
         use Jifty::View::Declare -base;
         use base qw/ Jifty::View::Declare::CRUD /;

         template 'view' => sub {
             # customize the view
         };

         1;

         package App::View::Tag;
         use Jifty::View::Declare -base;
         use base qw/ Jifty::View::Declare::CRUD /;

         template 'view' => sub {
             # customize the view
         };

         1;

         package App::View;
         use Jifty::View::Declare -base;

         use Jifty::View::Declare::CRUD;

         # If you have customizations, this is a good way...
         Jifty::View::Declare::CRUD->mount_view('User');
         Jifty::View::Declare::CRUD->mount_view('Category', 'App::View::Tag', '/tag');

         # Another way to do the above, good for quick and dirty
         alias Jifty::View::Declare::CRUD under '/admin/blog', {
             object_type => 'BlogPost',
         };

DESCRIPTION

       This class provides a set of views that may be used by a model to display Create/Read/Update/Delete views
       using the Template::Declare templating language.

       Basically, you can use this class to do most (and maybe all) of the work you need to manipulate and view
       your records.

METHODS

   mount_view MODELCLASS VIEWCLASS /path
       Call this method in your application's view class to add the CRUD views you're looking for. Only the
       first argument is required.

       Arguments:

       MODELCLASS
           This is the name of the model that you want to generate the CRUD views for. This is the only required
           parameter.  Leave  off  the  parts  of the class name prior to and including the "Model" part. (I.e.,
           "App::Model::User" should be passed as just "User").

       VIEWCLASS
           This is the name of the class that will be generated to hold the CRUD views of  your  model.  If  not
           given,  it  will be set to: "App::View::MODELCLASS". If given, it should be the full name of the view
           class.

       /path
           This is the path where you can reach the CRUD views for this model in your  browser.  If  not  given,
           this  will  be  set  to  the  model  class name in lowercase letters. (I.e., "User" would be found at
           "/user" if not passed explicitly).

   object_type
       This method returns the type of object this CRUD view has been generated for. This is normally the  model
       class parameter that was passed to "mount_view".

   record_class
       This is the full name of the model class these CRUD views are for. The default implementation returns:

         Jifty->app_class('Model', $self->object_type);

       You  will  want  to  override  this (in addition to "object_type") if you want to provide CRUD views in a
       plugin, or from an external model class, or for one of the Jifty built-in models.

   fragment_for
       This is a helper that returns the path to a given  fragment.  The  only  argument  is  the  name  of  the
       fragment. It returns a absolute base path to the fragment page.

       This  will  attempt  to  lookup  a  method  named "fragment_for_FRAGMENT", where FRAGMENT is the argument
       passed. If that method exists, it's result is used as the returned path.

       Otherwise, the "fragment_base_path" is joined to the passed fragment name to create the return value.

       If you really want to mess with this, you may need to read the source code of this class.

   fragment_base_path
       This is a helper for "fragment_for". It  looks  up  the  current  template  using  "current_template"  in
       Template::Declare::Tags, finds it's parent path and then returns that.

       If you really want to mess with this, you may need to read the source code of this class.

   _get_record $id
       Given an $id, returns a record object for the CRUD view's model class.

   display_columns [ACTION]
       Returns  a  list  of  all  the column names that this REST view should display.  Defaults to all argument
       names for the  provided  "ACTION".   If  there  is  no  action  provided,  returns  the  "record_class"'s
       "readable_attributes".

   edit_columns ACTION
       Returns  a  list  of  all  the  columns  that  this REST view should display for update.  Defaults to the
       "display_columns", without "id".

   create_columns ACTION
       Returns a list of all of the columns that  this  REST  view  should  display  for  create.   Defaults  to
       "edit_columns".

   render_field mode => $mode, field => $field, action => $action
       Renders  a particular field in a given mode (read, create, edit). This attempts to dispatch directly to a
       method with the given field name. For example, if the subclass has,  say,  an  "edit_field_post"  method,
       then it will be preferred over the generic "edit_field" method.

   view_field action => $action_object, field => $field_name
       Displays the column as read-only.

   create_field action => $action_object, field => $field_name
       Displays the column for a create form.

   edit_field action => $action_object, field => $field_name
       Displays the column for an edit form.

   page_title
       The title for the CRUD page

TEMPLATES

   index.html
       Contains  the  master form and page region containing the list of items. This is mainly a wrapper for the
       "list" fragment.

   search
       The search fragment displays a search screen connected to the search  action  of  the  module.   If  your
       subclass  can  "search_fields",  then  that method will be called and the return value (which should be a
       list) will be used as a list of fields to render.  Otherwise, all the fields of  the  Search  action  are
       displayed.

       See Jifty::Action::Record::Search.

   view
       This fragment displays the data held by a single model record.

   private template view_item_controls
       Used by the view fragment to show the edit link for each record.

   update
       The update fragment displays a form for editing the data held within a single model record.

       See Jifty::Action::Record::Update.

   edit_item_controls $record $action
       The controls we should be rendering in the 'edit' region for a given fragment

   list
       The  list  template  provides an interactive list for showing a list of records in the record collection,
       adding new records, deleting records, and updating records.

   per_page
       This routine returns how many items should be shown on each page of a listing.  The default is 25.

   sort_header
       Sort by field toolbar

   predefined_search
       The private template makes use of the "predefined_search" constant, which contains  a  list  of  hashref,
       each defines a collection in the format:

         { name => 'my_list',
           label => "My List",
           collection => defer {
             # ... construct and return the collection
           }
         },
         { name => 'my_list2',
           label => "My List2",
           condition => [
              { column => 'foo' value => 'bar' },
              # ... and your other Jifty::DBI::Collection limit args
           ]
         }

   search_region
       This private template renders a region to show an expandable region for a search widget.

   new_item_region
       This private template renders a region to show a the "new_item" template.

   no_items_found
       Prints "No items found."

   list_items $collection $item_path
       Renders a div of class list with a region per item.

   paging_top $collection $page_number
       Paging for your list, rendered at the top of the list

   paging_bottom $collection $page_number
       Paging for your list, rendered at the bottom of the list

   create_item $action
       Renders the action $Action, handing it the array ref returned by "display_columns".

   edit_item $action
       Renders the action $Action, handing it the array ref returned by "display_columns".

new_item

       The new_item template provides a form for creating new model records. See Jifty::Action::Record::Create.

SEE ALSO

       Jifty::Action::Record::Create,        Jifty::Action::Record::Search,       Jifty::Action::Record::Update,
       Jifty::Action::Record::Delete, Template::Declare, Jifty::View::Declare::Helpers, Jifty::View::Declare

LICENSE

       Jifty is Copyright 2005-2010 Best Practical Solutions, LLC.  Jifty is distributed under the same terms as
       Perl itself.

perl v5.14.2                                       2011-03-01                    Jifty::View::Declare::CRUD(3pm)