diff --git a/lib/WebGUI/AssetHelper/ExportHtml.pm b/lib/WebGUI/AssetHelper/ExportHtml.pm new file mode 100644 index 000000000..c2a55cb3d --- /dev/null +++ b/lib/WebGUI/AssetHelper/ExportHtml.pm @@ -0,0 +1,154 @@ +package WebGUI::AssetHelper::ExportHtml; + +use strict; +use Class::C3; +use base qw/WebGUI::AssetHelper/; +use WebGUI::User; +use WebGUI::HTML; + +=head1 LEGAL + + ------------------------------------------------------------------- + WebGUI is Copyright 2001-2009 Plain Black Corporation. + ------------------------------------------------------------------- + Please read the legal notices (docs/legal.txt) and the license + (docs/license.txt) that came with this distribution before using + this software. + ------------------------------------------------------------------- + http://www.plainblack.com info@plainblack.com + ------------------------------------------------------------------- + +=head1 NAME + +Package WebGUI::AssetHelper::ExportHtml + +=head1 DESCRIPTION + +Export this assets, and all children as HTML. + +=head1 METHODS + +These methods are available from this class: + +=cut + +#------------------------------------------------------------------- + +=head2 process ( $class, $asset ) + +Opens a new tab for displaying the form and the output for exporting a branch. + +=cut + +sub process { + my ($class, $asset) = @_; + my $session = $asset->session; + my $i18n = WebGUI::International->new($session, "Asset"); + if (! $asset->canEdit) { + return { + error => $i18n->get('38', 'WebGUI'), + } + } + + return { + open_tab => $asset->getUrl('op=assetHelper;className=WebGUI::AssetHelper::Export;func=editBranch'), + }; +} + +#------------------------------------------------------------------- + +=head2 www_export + +Displays the export page administrative interface + +=cut + +sub www_export { + my ($class, $asset) = @_; + my $session = $asset->session; + return $session->privilege->insufficient() unless ($session->user->isInGroup(13)); + my $i18n = WebGUI::International->new($session, "Asset"); + my $f = WebGUI::HTMLForm->new($session, -action => $asset->getUrl); + $f->hidden( + name => "func", + value => "exportStatus" + ); + $f->integer( + label => $i18n->get('Depth'), + hoverHelp => $i18n->get('Depth description'), + name => "depth", + value => 99, + ); + $f->selectBox( + label => $i18n->get('Export as user'), + hoverHelp => $i18n->get('Export as user description'), + name => "userId", + options => $session->db->buildHashRef("select userId, username from users"), + value => [1], + ); + $f->text( + label => $i18n->get("directory index"), + hoverHelp => $i18n->get("directory index description"), + name => "index", + value => "index.html" + ); + + $f->text( + label => $i18n->get("Export site root URL"), + name => 'exportUrl', + value => '', + hoverHelp => $i18n->get("Export site root URL description"), + ); + + # TODO: maybe add copy options to these boxes alongside symlink + $f->selectBox( + label => $i18n->get('extrasUploads form label'), + hoverHelp => $i18n->get('extrasUploads form hoverHelp'), + name => "extrasUploadsAction", + options => { + 'symlink' => $i18n->get('extrasUploads form option symlink'), + 'none' => $i18n->get('extrasUploads form option none') }, + value => ['none'], + ); + $f->selectBox( + label => $i18n->get('rootUrl form label'), + hoverHelp => $i18n->get('rootUrl form hoverHelp'), + name => "rootUrlAction", + options => { + 'symlink' => $i18n->get('rootUrl form option symlinkDefault'), + 'none' => $i18n->get('rootUrl form option none') }, + value => ['none'], + ); + $f->submit; + my $message; + eval { $asset->exportCheckPath }; + if($@) { + $message = $@; + } + return $message . $f->print; +} + + +#------------------------------------------------------------------- + +=head2 www_exportStatus + +Displays the export status page + +=cut + +sub www_exportStatus { + my ($class, $asset) = @_; + my $session = $asset->session; + return $session->privilege->insufficient() unless ($session->user->isInGroup(13)); + my $i18n = WebGUI::International->new($session, "Asset"); + my $iframeUrl = $self->getUrl('func=exportGenerate'); + foreach my $formVar (qw/index depth userId extrasUploadsAction rootUrlAction exportUrl/) { + $iframeUrl = $session->url->append($iframeUrl, $formVar . '=' . $session->form->process($formVar)); + } + + my $output = ''; + return $output; +} + +1;