App-Office-CMS

 view release on metacpan or  search on metacpan

lib/App/Office/CMS.pm  view on Meta::CPAN


=item o Logger.pm

This simplifies logging by allowing me to say:

	$self -> log(debug => 'A message');
	$self -> log(info  => 'Another message');

=item o Validator.pm

This is used to validate CGI form data.

=back

=item o What's the database schema?

See docs/cms.schema.png.

The file was created with scripts/schema.sh, which uses dbi.schema.pl.

That program is a version of dbigraph.pl, which ships with L<GraphViz::DBI>.

lib/App/Office/CMS.pm  view on Meta::CPAN

=item o build_page_hash()

=item o build_success_result()

=item o check_page_name()

=item o update()

=back

=item o App::Office::CMS::Util::Validator.validate_page()

=item o App::Office::CMS::Database::Page.save_page_record()

=item o App::Office::CMS::View::Page.build_update_page_html()

=back

For site data, start with App::Office::CMS::Controller.build_site_hash().

=item o How to I replace the fundamental editing functionality?

lib/App/Office/CMS.pm  view on Meta::CPAN

=item o CustomPage.pm

You write *::Controller::CustomPage.pm, based (obviously) on *::Controller::Page.pm.

You can still let *::View::Page process your updated page.tx and page.js
templates. See below for details.

=item o Validator.pm

This is C<App::Office::CMS::Util::Validator>. You'll have to edit the
validate_design() method.

=item o The declaration of update_page_callback() (2 of 2)

This is in page.js. This is the Javascript function which receives the output
of CustomPage.pm.

Replace the code in this function as needed.

=item o *::View::Page

lib/App/Office/CMS/Controller.pm  view on Meta::CPAN

{
	my($self, $action) = @_;

	$self -> log(debug => "process_page_form($action)");

	my($data) = App::Office::CMS::Util::Validator -> new
	(
	 config => $self -> param('config'),
	 db     => $self -> param('db'),
	 query  => $self -> query,
	) -> validate_page;

	my($asset);
	my($message);
	my($page);

	if ($$data{_rejects})
	{
		$self -> log(debug => 'Page data is not valid');

		$message => $self -> param('view') -> format_errors($$data{_rejects});

lib/App/Office/CMS/Controller.pm  view on Meta::CPAN

{
	my($self, $action) = @_;

	$self -> log(debug => "process_site_and_design_form($action)");

	my($data) = App::Office::CMS::Util::Validator -> new
	(
	 config => $self -> param('config'),
	 db     => $self -> param('db'),
	 query  => $self -> query,
	) -> validate_site_and_design;

	my($design);
	my($message);
	my($site);

	if ($$data{_rejects})
	{
		$self -> log(debug => 'Site and design data is not valid');

		$message = $self -> param('view') -> format_errors($$data{_rejects});

lib/App/Office/CMS/Controller/Content.pm  view on Meta::CPAN

{
	my($self, $action) = @_;

	$self -> log(debug => "process_content_form($action)");

	my($data) = App::Office::CMS::Util::Validator -> new
	(
	 config => $self -> param('config'),
	 db     => $self -> param('db'),
	 query  => $self -> query,
	) -> validate_content;

	my($content);
	my($message);
	my($page);

	if ($$data{_rejects})
	{
		$self -> log(debug => 'Content data is not valid');

		$message => $self -> param('view') -> format_errors($$data{_rejects});

lib/App/Office/CMS/Database.pm  view on Meta::CPAN

sub set_session
{
	my($self, $session) = @_;

	$self -> session($session);

} # End of set_session.

# --------------------------------------------------

sub validate_asset_type
{
	my($self, $value) = @_;

	$self -> log(debug => 'validate_asset_type()');

	my($id) = $self -> dbh -> selectrow_hashref('select id from asset_types where id = ?', {}, $value);

	return $id ? $$id{id} : 0;

} # End of validate_asset_type.

# --------------------------------------------------

sub validate_id
{
	my($self, $class_name, $id) = @_;

	$self -> log(debug => "validate_id($class_name, $id)");

	my(@row) = $self -> simple -> map({id => $id});

	return $#row < 0 ? 0 : 1;

} # End of validate_id.

# --------------------------------------------------

1;

lib/App/Office/CMS/Util/Validator.pm  view on Meta::CPAN

{
	my($value, $min_length, $max_length) = @_;
	my($length) = length $value;

	return ( ($length >= $min_length) && ($length <= $max_length) ) ? 1 : 0;

} # End of check_length.

# --------------------------------------------------

sub validate_content
{
	my($self) = @_;

	$self -> log(debug => 'validate_content()');

 	my($handler) = CGI::Untaint -> new(map{$_ => $self -> query -> param($_)} $self -> query -> param);
	my($data)    = {};

	my($key);

	for $key (qw/sid/)
	{
		$$data{$key} = $handler -> extract(-as_hex => $key);
	}

	for $key (qw/body_text head_text submit_update_content/)
	{
		$$data{$key} = $handler -> extract(-as_printable => $key);
	}

	my($max_content_length) = ${$self -> config}{max_content_length};
	my($validator)          = Brannigan -> new
	({
	 name   => 'validate_content',
	 params =>
	 {
		body_text =>
		{
			default        => '',
			length_between => [0, $max_content_length],
			required       => 0,
		},
		head_text =>
		{

lib/App/Office/CMS/Util/Validator.pm  view on Meta::CPAN

			required     => 1,
		},
		submit_update_content => # 'Save'.
		{
			exact_length => 4,
			required     => 0,
		},
	 },
	});

	return $validator -> process('validate_content', $data);

} # End of validate_content.

# --------------------------------------------------

sub validate_page
{
	my($self) = @_;

	$self -> log(debug => 'validate_page()');

 	my($handler) = CGI::Untaint -> new(map{$_ => $self -> query -> param($_)} $self -> query -> param);
	my($data)    = {};

	my($key);

	for $key (qw/action asset_type_id/)
	{
		$$data{$key} = $handler -> extract(-as_integer => $key);
	}

lib/App/Office/CMS/Util/Validator.pm  view on Meta::CPAN

		$$data{$key} = $handler -> extract(-as_hex => $key);
	}

	for $key (qw/homepage name new_name submit_add_menu submit_delete_page submit_extend_menu_left submit_extend_menu_right submit_extend_submenu_down submit_extend_submenu_up submit_update_page/)
	{
		$$data{$key} = $handler -> extract(-as_printable => $key);
	}

	my($validator) = Brannigan -> new
	({
	 name   => 'validate_page',
	 params =>
	 {
		action =>
		{
			required      => 1,
			value_between => [1, 7],
		},
		asset_type_id => # Template type.
		{
			required      => 1,

lib/App/Office/CMS/Util/Validator.pm  view on Meta::CPAN

			required     => 0,
		},
		submit_update_page => # 'Save'.
		{
			exact_length => 4,
			required     => 0,
		},
	 },
	});

	return $validator -> process('validate_page', $data);

} # End of validate_page.

# --------------------------------------------------

sub validate_site_and_design
{
	my($self) = @_;

	$self -> log(debug => 'validate_site_and_design()');

	my($handler) = CGI::Untaint -> new($self -> query -> Vars);
	my($data)    = {};

	my($key);

	for $key (qw/sid/)
	{
		$$data{$key} = $handler -> extract(-as_hex => $key);
	}

lib/App/Office/CMS/Util/Validator.pm  view on Meta::CPAN

		$$data{$key} = $handler -> extract(-as_integer => $key);
	}

	for $key (qw/design_name name new_name output_directory output_doc_root submit_delete_design submit_delete_site submit_edit_page submit_new_site submit_update_site/)
	{
		$$data{$key} = $handler -> extract(-as_printable => $key);
	}

	my($validator) = Brannigan -> new
	({
	 name   => 'validate_site_and_design',
	 params =>
	 {
		action =>
		{
			required      => 1,
			value_between => [1, 6],
		},
		design_name =>
		{
			length_between => [1, 255],

lib/App/Office/CMS/Util/Validator.pm  view on Meta::CPAN

			required     => 0,
		},
		submit_update_site => # 'Save'.
		{
			exact_length => 4,
			required     => 0,
		},
	 },
	});

	return $validator -> process('validate_site_and_design', $data);

} # End of validate_site_and_design.

# --------------------------------------------------

1;



( run in 0.252 second using v1.01-cache-2.11-cpan-4d50c553e7e )