Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Gantry::Utils::CRUDHelUser Contributed Perl DocumentGantry::Utils::CRUDHelp(3)

NAME
       Gantry::Utils::CRUDHelp - helper	routines for CRUD plugins

SYNOPSIS
	   use Gantry::Utils::CRUDHelp;

DESCRIPTION
       Exports helper functions	useful when writing CRUD plugins.

FUNCTIONS
       clean_params
	   Pass	a hash of form parameters and the fields list from a
	   "Gantry::Plugins::AutoCRUD "	style form method.  Any	field with key
	   is whose value is not boolean is examined in	the params hash.  If
	   its value is	false, that value is changed to	undef.	This keeps the
	   ORM from trying to insert a blank string into a date	and integer
	   fields which	is fatal, at least for DBIx::Class inserting into
	   Postgres.

       clean_dates
	   Pass	a hash of form parameters and the fields list from a
	   "Gantry::Plugins::AutoCRUD "	style form method.  Any	field with key
	   is whose value is date is examined in the params hash.  If its
	   value is false, that	value is changed to undef.  This keeps the ORM
	   from	trying to insert a blank string	into a date field which	is
	   fatal, at least for Class::DBI inserting into Postgres.

       form_profile
	   Pass	in the fields list from	a "Gantry::Plugins::AutoCRUD " style
	   _form method.  Returns a hash reference suitable for	passing	to the
	   check method	of Data::FormValidator.

       verify_permission
	   Use this method if you want to enforce crudcrudcrud style table
	   permissions.

	   Returns: undef if the permissions allow the requested action

	   Dies: when user is barred by	permissions from performing the
	   requested action

	   Parameters:

	   Pass	the parameters in a hashref with these keys:

	   site
	       Your gantry site	object.

	   row [Optional] For use with edit and	delete actions.	 This must be
	       an ORM object which responds to the "user_id" method.  Usually,
	       that happens when your table has	a column of that name.

	   params
	       [Optional] The hash of form parameters.	If you like, this
	       method can enforce rules	for "user_id"'s.  These	are the	rules
	       it enforces:

	       during add
		   If there is a logged	in user, their id becomes the user_id
		   in params.  Otherwise, the user_id in params	becomes	0.

	       during edit (and	delete)
		   The user_id key of the params hash is deleted to avoid form
		   spoofing changes to row ownership.

	       AutoCRUD	uses this approach.  In	your CRUD controller, you
	       could choose to do something different.	Like, you could	allow
	       admin users to alter the	user_id	of an existing row.  To	do
	       something like that, simply do not pass your params hash	to
	       this method.

	   action
	       [optional] What the user	is trying to do.  Pick from: add,
	       edit, or	delete.	 Yes, these should have	had names from the
	       CRUD acronym.

	       By default the action comes from	calling	"action" on <$site>
	       and stripping the leading "do_".	 So, if	your method is called
	       "do_delete", the	action default will be "delete".

	   permissions
	       [optional, see Default below]

	       This must be a hash like	this:

		   {
		       'group' => 'admin',
		       'bits' => 'crud-rudcr--'
		   };

	       The group is optional.  If present, logged in users who are
	       members of the named group will have group rights to the	table.

	       The bits	are actually 12	characters, each of which is flag.  If
	       all the letters are there, everyone can do everything and you
	       might as	well not use this method.  To turn off a permission,
	       replace the letter with a dash (although	anything other than
	       the expected letter would actually work).  This is common:
	       crudcrud-r--.  It allows	row owners and members of the table's
	       group to	do anything, but only allows read access for others.

	       The example above allows	row owners and admin group members to
	       do anything (the	missing	c for group members is more than
	       covered by the c	for owner and others).	All users (whether
	       logged in or not) can create rows and retrieve all rows.

	       The letters in the string must be lower case.

	       Default:

	       If you don't supply this	parameter, it will be the
	       "permissions" key returned by a call "controller_config"	on
	       your "site" object.

   write_file( <form field name>, <file	archive> );
       write_file provides the code to collect a file from the form and	write
       it to disk. This	is to be called	in the edit_post_action	or
       add_post_action callback.

       usage

	sub edit_post_action {
	   my( $self, $row ) = @_;

	   my %params =	$self->get_param_hash;

	   if (	defined	%params{'myfile'} ) {

	       my $u = $self->write_file( 'myfile', '/home/html/images'	);
	       $row->update( $u	);
	   }
	}

       recommend database fields

	<file field>   varchar	-- /path to file>/11677952634.59186549016706.jpg
	<file field>_ident  varchar -- 11677952634.59186549016706.jpg (	unique )
	<file field>_suffix varchar -- .txt
	<file field>_mime   varchar -- text/html
	<file field>_name   varchar -- originalfilename.txt
	<file field>_size   int	    -- 2323

       returns

       will produce a hash ref

	{
	   '<file field>'  => '/home/archive/11677952634.59186549016706.jpg',
	   '<file field>_ident'	 => '11677952634.59186549016706.jpg',
	   '<file field>_suffix' => '.txt',
	   '<file field>_mime'	 => 'text/html',
	   '<file field>_name'	 => 'originalfilename.txt',
	   '<file field>_size'	 => '2323',
	}

SEE ALSO
	Gantry::Plugins::AutoCRUD (for simpler situations)
	Gantry::Plugins::CRUD (for slightly more complex situations)

AUTHOR
       Phil Crow <philcrow2000@yahoo.com>

COPYRIGHT
       Copyright (c) 2005, Phil	Crow.

       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself, either Perl	version	5.8.6 or, at
       your option, any	later version of Perl 5	you may	have available.

perl v5.32.1			  2021-02-28	    Gantry::Utils::CRUDHelp(3)

NAME | SYNOPSIS | DESCRIPTION | FUNCTIONS | SEE ALSO | AUTHOR | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Gantry::Utils::CRUDHelp&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help