2004-05-30 13:43:42 +00:00
< ? php
2016-12-26 09:26:26 +00:00
namespace LAM\TOOLS\PDF_EDITOR ;
use \htmlTitle ;
use \htmlStatusMessage ;
use \LAMCfgMain ;
use \htmlSubTitle ;
use \htmlSelect ;
use \htmlImage ;
use \htmlSpacer ;
use \htmlButton ;
use \htmlLink ;
use \htmlOutputText ;
use \htmlInputFileUpload ;
use \htmlHelpLink ;
use \htmlInputField ;
use \htmlHiddenInput ;
2018-05-02 18:26:10 +00:00
use \htmlResponsiveRow ;
use \htmlGroup ;
2017-09-17 08:17:13 +00:00
use \LAM\TYPES\TypeManager ;
2004-05-30 13:43:42 +00:00
/*
$Id $
2009-10-27 18:47:12 +00:00
This code is part of LDAP Account Manager ( http :// www . ldap - account - manager . org / )
2010-01-01 17:21:46 +00:00
Copyright ( C ) 2003 - 2006 Michael Duergner
2018-05-02 18:26:10 +00:00
2005 - 2018 Roland Gruber
2004-05-30 13:43:42 +00:00
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
2005-07-27 17:43:57 +00:00
*/
2004-05-30 13:43:42 +00:00
2005-07-27 17:43:57 +00:00
/**
2017-01-06 09:11:47 +00:00
* This is the main window of the PDF structure editor .
2005-07-27 17:43:57 +00:00
*
2010-01-01 17:21:46 +00:00
* @ author Michael Duergner
* @ author Roland Gruber
2005-07-27 17:43:57 +00:00
* @ package PDF
2004-05-30 13:43:42 +00:00
*/
2006-03-26 17:51:25 +00:00
/** security functions */
include_once ( " ../../lib/security.inc " );
2005-07-27 17:43:57 +00:00
/** access to PDF configuration files */
2004-05-30 13:43:42 +00:00
include_once ( " ../../lib/pdfstruct.inc " );
2005-07-27 17:43:57 +00:00
/** LDAP object */
2004-05-30 13:43:42 +00:00
include_once ( " ../../lib/ldap.inc " );
2005-07-27 17:43:57 +00:00
/** for language settings */
2004-05-30 13:43:42 +00:00
include_once ( " ../../lib/config.inc " );
2005-07-27 17:43:57 +00:00
/** module functions */
2004-07-16 06:33:37 +00:00
include_once ( " ../../lib/modules.inc " );
2004-05-30 13:43:42 +00:00
// start session
2006-03-26 17:51:25 +00:00
startSecureSession ();
2017-02-11 16:11:37 +00:00
enforceUserIsLoggedIn ();
2004-05-30 13:43:42 +00:00
2007-12-30 13:15:39 +00:00
// die if no write access
if ( ! checkIfWriteAccessIsAllowed ()) die ();
2012-07-22 10:37:01 +00:00
checkIfToolIsActive ( 'toolPDFEditor' );
2015-05-15 19:16:46 +00:00
if ( ! empty ( $_POST )) {
validateSecurityToken ();
}
2004-05-30 13:43:42 +00:00
setlanguage ();
2017-01-06 09:11:47 +00:00
// Unset PDF structure definitions in session if set
2004-06-03 14:26:48 +00:00
if ( isset ( $_SESSION [ 'currentPDFStructure' ])) {
2004-09-08 14:40:25 +00:00
unset ( $_SESSION [ 'currentPDFStructure' ]);
2004-06-03 14:26:48 +00:00
}
2004-05-30 13:43:42 +00:00
// check if user is logged in, if not go to login
if ( ! $_SESSION [ 'ldap' ] || ! $_SESSION [ 'ldap' ] -> server ()) {
metaRefresh ( " ../login.php " );
exit ;
}
2008-12-28 19:08:57 +00:00
// check if new template should be created
if ( isset ( $_POST [ 'createNewTemplate' ])) {
2016-12-26 09:26:26 +00:00
metaRefresh ( 'pdfpage.php?type=' . htmlspecialchars ( $_POST [ 'typeId' ]));
2008-12-28 19:08:57 +00:00
exit ();
2004-05-30 13:43:42 +00:00
}
2017-09-17 08:17:13 +00:00
$typeManager = new TypeManager ();
2016-12-26 09:26:26 +00:00
$types = $typeManager -> getConfiguredTypes ();
$sortedTypes = array ();
foreach ( $types as $type ) {
if ( $type -> isHidden () || ! checkIfWriteAccessIsAllowed ( $type -> getId ())) {
2013-01-01 20:46:28 +00:00
continue ;
}
2016-12-26 09:26:26 +00:00
$sortedTypes [ $type -> getId ()] = $type -> getAlias ();
2010-04-04 15:00:06 +00:00
}
2016-12-26 09:26:26 +00:00
natcasesort ( $sortedTypes );
2004-05-30 13:43:42 +00:00
2018-05-08 18:11:53 +00:00
$container = new htmlResponsiveRow ();
$container -> add ( new htmlTitle ( _ ( 'PDF editor' )), 12 );
2011-04-25 18:00:47 +00:00
if ( isset ( $_POST [ 'deleteProfile' ]) && ( $_POST [ 'deleteProfile' ] == 'true' )) {
2017-04-25 18:03:38 +00:00
$typeToDelete = $typeManager -> getConfiguredType ( $_POST [ 'profileDeleteType' ]);
2011-04-25 18:00:47 +00:00
// delete structure
2017-01-05 20:05:17 +00:00
if ( \LAM\PDF\deletePDFStructure ( $_POST [ 'profileDeleteType' ], $_POST [ 'profileDeleteName' ])) {
2017-04-25 18:03:38 +00:00
$message = new htmlStatusMessage ( 'INFO' , _ ( 'Deleted PDF structure.' ), $typeToDelete -> getAlias () . ': ' . htmlspecialchars ( $_POST [ 'profileDeleteName' ]));
2018-05-08 18:11:53 +00:00
$container -> add ( $message , 12 );
2011-04-25 18:00:47 +00:00
}
else {
2017-04-25 18:03:38 +00:00
$message = new htmlStatusMessage ( 'ERROR' , _ ( 'Unable to delete PDF structure!' ), $typeToDelete -> getAlias () . ': ' . htmlspecialchars ( $_POST [ 'profileDeleteName' ]));
2018-05-08 18:11:53 +00:00
$container -> add ( $message , 12 );
2011-04-25 18:00:47 +00:00
}
}
2017-01-05 20:40:48 +00:00
$configProfiles = getConfigProfiles ();
$serverProfiles = array ();
foreach ( $configProfiles as $profileName ) {
$serverProfiles [ $profileName ] = new \LAMConfig ( $profileName );
}
2017-01-06 09:11:47 +00:00
// import structures
2017-01-05 20:40:48 +00:00
if ( ! empty ( $_POST [ 'import' ])) {
2012-10-28 14:37:54 +00:00
$cfg = new LAMCfgMain ();
2017-01-05 20:40:48 +00:00
$typeId = $_POST [ 'typeId' ];
// check master password
$errMessage = null ;
if ( ! $cfg -> checkPassword ( $_POST [ 'passwd_i_' . $_POST [ 'typeId' ]])) {
$errMessage = new htmlStatusMessage ( 'ERROR' , _ ( 'Master password is wrong!' ));
}
elseif ( ! empty ( $_POST [ 'importProfiles_' . $typeId ])) {
$options = array ();
foreach ( $_POST [ 'importProfiles_' . $typeId ] as $importProfiles ) {
$parts = explode ( '##' , $importProfiles );
$options [] = array ( 'conf' => $parts [ 0 ], 'typeId' => $parts [ 1 ], 'name' => $parts [ 2 ]);
2012-10-28 14:37:54 +00:00
}
2017-01-05 20:40:48 +00:00
$errMessage = importStructures ( $_POST [ 'typeId' ], $options , $serverProfiles , $typeManager );
2012-10-28 14:37:54 +00:00
}
2017-09-18 17:39:08 +00:00
if ( $errMessage !== null ) {
2017-01-05 20:40:48 +00:00
$errMessage -> colspan = 10 ;
2018-05-08 18:11:53 +00:00
$container -> add ( $errMessage , 12 );
2012-10-28 14:37:54 +00:00
}
}
2017-01-06 09:11:47 +00:00
// export structures
if ( ! empty ( $_POST [ 'export' ])) {
$cfg = new LAMCfgMain ();
$typeId = $_POST [ 'typeId' ];
// check master password
$errMessage = null ;
if ( ! $cfg -> checkPassword ( $_POST [ 'passwd_e_' . $_POST [ 'typeId' ]])) {
$errMessage = new htmlStatusMessage ( 'ERROR' , _ ( 'Master password is wrong!' ));
}
elseif ( ! empty ( $_POST [ 'exportProfiles_' . $typeId ])) {
$options = array ();
foreach ( $_POST [ 'exportProfiles_' . $typeId ] as $importProfiles ) {
$parts = explode ( '##' , $importProfiles );
$options [] = array ( 'conf' => $parts [ 0 ], 'typeId' => $parts [ 1 ]);
}
$typeId = $_POST [ 'typeId' ];
$name = $_POST [ 'name_' . $typeId ];
$errMessage = exportStructures ( $typeId , $name , $options , $serverProfiles , $typeManager );
}
2017-09-18 17:39:08 +00:00
if ( $errMessage !== null ) {
2017-01-06 09:11:47 +00:00
$errMessage -> colspan = 10 ;
2018-05-08 18:11:53 +00:00
$container -> add ( $errMessage , 12 );
2017-01-06 09:11:47 +00:00
}
}
2017-01-05 20:40:48 +00:00
2013-10-08 19:11:01 +00:00
// upload logo file
if ( isset ( $_POST [ 'uploadLogo' ]) && ! empty ( $_FILES [ 'logoUpload' ]) && ! empty ( $_FILES [ 'logoUpload' ][ 'size' ])) {
$file = $_FILES [ 'logoUpload' ][ 'tmp_name' ];
$filename = $_FILES [ 'logoUpload' ][ 'name' ];
2018-05-08 18:11:53 +00:00
$container -> add ( \LAM\PDF\uploadPDFLogo ( $file , $filename ), 12 );
2013-10-08 19:11:01 +00:00
}
// delete logo file
if ( isset ( $_POST [ 'delLogo' ])) {
$toDel = $_POST [ 'logo' ];
2018-05-08 18:11:53 +00:00
$container -> add ( \LAM\PDF\deletePDFLogo ( $toDel ), 12 );
2013-10-08 19:11:01 +00:00
}
2008-12-28 19:08:57 +00:00
// get list of account types
2016-12-26 09:26:26 +00:00
$availableTypes = array ();
2008-12-28 19:08:57 +00:00
$templateClasses = array ();
2016-12-26 09:26:26 +00:00
foreach ( $sortedTypes as $typeId => $title ) {
$type = $typeManager -> getConfiguredType ( $typeId );
2008-12-28 19:08:57 +00:00
$templateClasses [] = array (
2016-12-26 09:26:26 +00:00
'typeId' => $type -> getId (),
'scope' => $type -> getScope (),
2010-04-04 15:00:06 +00:00
'title' => $title ,
2017-07-05 15:44:18 +00:00
'icon' => $type -> getIcon (),
2017-09-17 09:25:11 +00:00
'templates' => \LAM\PDF\getPDFStructures ( $type -> getId ()));
2016-12-26 09:26:26 +00:00
$availableTypes [ $title ] = $type -> getId ();
2008-12-28 19:08:57 +00:00
}
// check if a template should be edited
2017-09-17 09:25:11 +00:00
foreach ( $templateClasses as $templateClass ) {
if ( isset ( $_POST [ 'editTemplate_' . $templateClass [ 'typeId' ]]) || isset ( $_POST [ 'editTemplate_' . $templateClass [ 'typeId' ] . '_x' ])) {
metaRefresh ( 'pdfpage.php?type=' . htmlspecialchars ( $templateClass [ 'typeId' ]) . '&edit=' . htmlspecialchars ( $_POST [ 'template_' . $templateClass [ 'typeId' ]]));
2008-12-28 19:08:57 +00:00
exit ;
}
}
2018-05-02 18:26:10 +00:00
include '../../lib/adminHeader.inc' ;
2017-09-17 09:25:11 +00:00
2004-05-30 13:43:42 +00:00
?>
2013-01-19 13:18:52 +00:00
< div class = " user-bright smallPaddingContent " >
2013-10-08 19:11:01 +00:00
< form enctype = " multipart/form-data " action = " pdfmain.php " method = " post " name = " pdfmainForm " >
2015-05-15 19:16:46 +00:00
< input type = " hidden " name = " <?php echo getSecurityTokenName(); ?> " value = " <?php echo getSecurityTokenValue(); ?> " >
2010-05-26 17:54:00 +00:00
< ? php
if ( isset ( $_GET [ 'savedSuccessfully' ])) {
2010-10-18 19:47:07 +00:00
$message = new htmlStatusMessage ( " INFO " , _ ( " PDF structure was successfully saved. " ), htmlspecialchars ( $_GET [ 'savedSuccessfully' ]));
2018-05-08 18:11:53 +00:00
$container -> add ( $message , 12 );
2010-05-26 17:54:00 +00:00
}
2012-10-28 14:37:54 +00:00
2017-07-02 07:00:14 +00:00
if ( isset ( $_GET [ 'loadFailed' ])) {
$message = new htmlStatusMessage ( " ERROR " , _ ( " Unable to read PDF structure. " ), htmlspecialchars ( $_GET [ 'name' ]));
2018-05-08 18:11:53 +00:00
$container -> add ( $message , 12 );
2017-07-02 07:00:14 +00:00
}
2010-10-18 19:47:07 +00:00
// new template
2016-12-26 09:26:26 +00:00
if ( ! empty ( $availableTypes )) {
2018-05-08 18:11:53 +00:00
$container -> add ( new htmlSubTitle ( _ ( 'Create a new PDF structure' )), 12 );
2016-12-26 09:26:26 +00:00
$newProfileSelect = new htmlSelect ( 'typeId' , $availableTypes );
$newProfileSelect -> setHasDescriptiveElements ( true );
$newProfileSelect -> setWidth ( '15em' );
2018-05-08 18:11:53 +00:00
$container -> addLabel ( $newProfileSelect );
$container -> addField ( new htmlButton ( 'createNewTemplate' , _ ( 'Create' )));
$container -> addVerticalSpacer ( '2rem' );
2014-01-15 20:48:52 +00:00
}
2012-10-28 14:37:54 +00:00
2010-10-18 19:47:07 +00:00
// existing templates
2018-05-08 18:11:53 +00:00
$container -> add ( new htmlSubTitle ( _ ( " Manage existing PDF structures " )), 12 );
2017-09-17 09:25:11 +00:00
foreach ( $templateClasses as $templateClass ) {
2018-05-08 18:11:53 +00:00
$labelGroup = new htmlGroup ();
$labelGroup -> addElement ( new htmlImage ( '../../graphics/' . $templateClass [ 'icon' ]));
$labelGroup -> addElement ( new htmlSpacer ( '3px' , null ));
$labelGroup -> addElement ( new htmlOutputText ( $templateClass [ 'title' ]));
$container -> add ( $labelGroup , 12 , 4 );
2017-09-17 09:25:11 +00:00
$select = new htmlSelect ( 'template_' . $templateClass [ 'typeId' ], $templateClass [ 'templates' ]);
2010-10-18 19:47:07 +00:00
$select -> setWidth ( '15em' );
2018-05-08 18:11:53 +00:00
$container -> add ( $select , 12 , 4 );
$buttonGroup = new htmlGroup ();
2017-09-17 09:25:11 +00:00
$exEditButton = new htmlButton ( 'editTemplate_' . $templateClass [ 'typeId' ], 'edit.png' , true );
2010-10-18 19:47:07 +00:00
$exEditButton -> setTitle ( _ ( 'Edit' ));
2018-05-08 18:11:53 +00:00
$buttonGroup -> addElement ( $exEditButton );
2011-04-25 18:00:47 +00:00
$deleteLink = new htmlLink ( null , '#' , '../../graphics/delete.png' );
$deleteLink -> setTitle ( _ ( 'Delete' ));
2017-09-17 09:25:11 +00:00
$deleteLink -> setOnClick ( " profileShowDeleteDialog(' " . _ ( 'Delete' ) . " ', ' " . _ ( 'Ok' ) . " ', ' " . _ ( 'Cancel' ) . " ', ' " . $templateClass [ 'typeId' ] . " ', ' " . 'template_' . $templateClass [ 'typeId' ] . " '); " );
2018-05-08 18:11:53 +00:00
$buttonGroup -> addElement ( $deleteLink );
2012-10-28 14:37:54 +00:00
2012-10-28 15:06:33 +00:00
if ( count ( $configProfiles ) > 1 ) {
$importLink = new htmlLink ( null , '#' , '../../graphics/import.png' );
$importLink -> setTitle ( _ ( 'Import PDF structures' ));
$importLink -> setOnClick ( " showDistributionDialog(' " . _ ( " Import PDF structures " ) . " ', ' " .
2017-09-17 09:25:11 +00:00
_ ( 'Ok' ) . " ', ' " . _ ( 'Cancel' ) . " ', ' " . $templateClass [ 'typeId' ] . " ', 'import'); " );
2018-05-08 18:11:53 +00:00
$buttonGroup -> addElement ( $importLink );
2012-10-28 15:06:33 +00:00
}
2012-10-28 15:03:36 +00:00
$exportLink = new htmlLink ( null , '#' , '../../graphics/export.png' );
$exportLink -> setTitle ( _ ( 'Export PDF structure' ));
$exportLink -> setOnClick ( " showDistributionDialog(' " . _ ( " Export PDF structure " ) . " ', ' " .
2017-09-17 09:25:11 +00:00
_ ( 'Ok' ) . " ', ' " . _ ( 'Cancel' ) . " ', ' " . $templateClass [ 'typeId' ] . " ', 'export', ' " . 'template_' . $templateClass [ 'typeId' ] . " ', ' " . $_SESSION [ 'config' ] -> getName () . " '); " );
2018-05-08 18:11:53 +00:00
$buttonGroup -> addElement ( $exportLink );
$container -> add ( $buttonGroup , 12 , 4 );
$container -> addVerticalSpacer ( '1rem' );
2008-12-28 19:08:57 +00:00
}
2012-10-28 14:37:54 +00:00
2013-10-08 19:11:01 +00:00
// manage logos
2018-05-08 18:11:53 +00:00
$container -> addVerticalSpacer ( '4rem' );
$container -> add ( new htmlSubTitle ( _ ( 'Manage logos' )), 12 );
2017-01-04 19:52:51 +00:00
$logos = \LAM\PDF\getAvailableLogos ();
2013-10-08 19:11:01 +00:00
$logoOptions = array ();
foreach ( $logos as $logo ) {
$file = $logo [ 'filename' ];
$label = $file . ' (' . $logo [ 'infos' ][ 0 ] . ' x ' . $logo [ 'infos' ][ 1 ] . " ) " ;
$logoOptions [ $label ] = $file ;
}
$logoSelect = new htmlSelect ( 'logo' , $logoOptions , null );
$logoSelect -> setHasDescriptiveElements ( true );
2018-05-08 18:11:53 +00:00
$container -> addLabel ( $logoSelect );
2013-10-08 19:11:01 +00:00
$delLogo = new htmlButton ( 'delLogo' , _ ( 'Delete' ));
$delLogo -> setIconClass ( 'deleteButton' );
2018-05-08 18:11:53 +00:00
$container -> addField ( $delLogo );
$container -> addVerticalSpacer ( '2rem' );
$container -> addLabel ( new htmlInputFileUpload ( 'logoUpload' ));
2013-10-08 19:11:01 +00:00
$logoUpload = new htmlButton ( 'uploadLogo' , _ ( 'Upload' ));
$logoUpload -> setIconClass ( 'upButton' );
2018-05-08 18:11:53 +00:00
$container -> addField ( $logoUpload );
2013-10-08 19:11:01 +00:00
2018-05-08 18:11:53 +00:00
$container -> addVerticalSpacer ( '2rem' );
2012-10-28 14:37:54 +00:00
// generate content
2010-10-18 19:47:07 +00:00
$tabindex = 1 ;
parseHtml ( null , $container , array (), false , $tabindex , 'user' );
2012-10-28 14:37:54 +00:00
echo " </form> \n " ;
echo " </div> \n " ;
2017-09-17 09:25:11 +00:00
foreach ( $templateClasses as $templateClass ) {
$typeId = $templateClass [ 'typeId' ];
$scope = $templateClass [ 'scope' ];
2017-01-05 20:40:48 +00:00
$importOptions = array ();
2012-10-28 14:37:54 +00:00
foreach ( $configProfiles as $profile ) {
2017-09-17 08:17:13 +00:00
$typeManagerImport = new TypeManager ( $serverProfiles [ $profile ]);
2017-01-05 20:40:48 +00:00
$typesImport = $typeManagerImport -> getConfiguredTypesForScope ( $scope );
foreach ( $typesImport as $typeImport ) {
if (( $profile != $_SESSION [ 'config' ] -> getName ()) || ( $typeImport -> getId () != $typeId )) {
$accountProfiles = \LAM\PDF\getPDFStructures ( $typeImport -> getId (), $profile );
if ( ! empty ( $accountProfiles )) {
foreach ( $accountProfiles as $accountProfile ) {
$importOptions [ $profile ][ $typeImport -> getAlias () . ': ' . $accountProfile ] = $profile . '##' . $typeImport -> getId () . '##' . $accountProfile ;
}
}
2012-10-28 14:37:54 +00:00
}
}
}
//import dialog
2016-12-26 09:26:26 +00:00
echo " <div id= \" importDialog_ $typeId\ " class = \ " hidden \" > \n " ;
echo " <form id= \" importDialogForm_ $typeId\ " method = \ " post \" action= \" pdfmain.php \" > \n " ;
2012-10-28 14:37:54 +00:00
2018-05-02 18:29:47 +00:00
$containerStructures = new htmlResponsiveRow ();
$containerStructures -> add ( new htmlOutputText ( _ ( 'PDF structures' )), 12 );
2012-10-28 14:37:54 +00:00
2017-01-05 20:40:48 +00:00
$select = new htmlSelect ( 'importProfiles_' . $typeId , $importOptions , array (), count ( $importOptions , 1 ) < 15 ? count ( $importOptions , 1 ) : 15 );
2012-10-28 14:37:54 +00:00
$select -> setMultiSelect ( true );
$select -> setHasDescriptiveElements ( true );
$select -> setContainsOptgroups ( true );
$select -> setWidth ( '290px' );
2018-05-02 18:29:47 +00:00
$containerStructures -> add ( $select , 11 );
$containerStructures -> add ( new htmlHelpLink ( '408' ), 1 );
2012-10-28 14:37:54 +00:00
2018-05-02 18:29:47 +00:00
$containerStructures -> addVerticalSpacer ( '2rem' );
2012-10-28 14:37:54 +00:00
2018-05-02 18:29:47 +00:00
$containerStructures -> add ( new htmlOutputText ( _ ( " Master password " )), 12 );
2017-01-05 20:40:48 +00:00
$exportPasswd = new htmlInputField ( 'passwd_i_' . $typeId );
2012-10-28 14:37:54 +00:00
$exportPasswd -> setIsPassword ( true );
2018-05-02 18:29:47 +00:00
$containerStructures -> add ( $exportPasswd , 11 );
$containerStructures -> add ( new htmlHelpLink ( '236' ), 1 );
$containerStructures -> add ( new htmlHiddenInput ( 'import' , '1' ), 12 );
$containerStructures -> add ( new htmlHiddenInput ( 'typeId' , $typeId ), 12 );
addSecurityTokenToMetaHTML ( $containerStructures );
2016-12-19 20:32:08 +00:00
2018-05-02 18:29:47 +00:00
parseHtml ( null , $containerStructures , array (), false , $tabindex , 'user' );
2012-10-28 14:37:54 +00:00
echo '</form>' ;
echo " </div> \n " ;
2017-01-06 09:11:47 +00:00
//export dialog
echo " <div id= \" exportDialog_ $typeId\ " class = \ " hidden \" > \n " ;
echo " <form id= \" exportDialogForm_ $typeId\ " method = \ " post \" action= \" pdfmain.php \" > \n " ;
2012-10-28 14:37:54 +00:00
2018-05-02 18:26:10 +00:00
$containerTarget = new htmlResponsiveRow ();
2016-12-19 20:32:08 +00:00
2018-05-02 18:26:10 +00:00
$containerTarget -> add ( new htmlOutputText ( _ ( " Target server profile " )), 12 );
2017-01-06 09:11:47 +00:00
$exportOptions = array ();
foreach ( $configProfiles as $profile ) {
2017-09-17 08:17:13 +00:00
$typeManagerExport = new TypeManager ( $serverProfiles [ $profile ]);
2017-01-06 09:11:47 +00:00
$typesExport = $typeManagerExport -> getConfiguredTypesForScope ( $scope );
foreach ( $typesExport as $typeExport ) {
if (( $profile != $_SESSION [ 'config' ] -> getName ()) || ( $typeExport -> getId () != $typeId )) {
$exportOptions [ $typeManagerExport -> getConfig () -> getName ()][ $typeExport -> getAlias ()] = $profile . '##' . $typeExport -> getId ();
}
}
}
$exportOptions [ '*' . _ ( 'Global templates' )][ _ ( 'Global templates' )] = 'templates*##' ;
2016-12-19 20:32:08 +00:00
2018-05-02 18:26:10 +00:00
$exportSize = count ( $exportOptions ) < 10 ? count ( $exportOptions , 1 ) : 10 ;
$select = new htmlSelect ( 'exportProfiles_' . $typeId , $exportOptions , array (), $exportSize );
2017-01-06 09:11:47 +00:00
$select -> setHasDescriptiveElements ( true );
$select -> setContainsOptgroups ( true );
$select -> setMultiSelect ( true );
2016-12-19 20:32:08 +00:00
2018-05-02 18:26:10 +00:00
$containerTarget -> add ( $select , 11 );
$containerTarget -> add ( new htmlHelpLink ( '363' ), 1 );
2012-10-28 14:37:54 +00:00
2018-05-02 18:26:10 +00:00
$containerTarget -> addVerticalSpacer ( '2rem' );
2016-12-19 20:32:08 +00:00
2018-05-02 18:26:10 +00:00
$containerTarget -> add ( new htmlOutputText ( _ ( " Master password " )), 12 );
2017-01-06 09:11:47 +00:00
$exportPasswd = new htmlInputField ( 'passwd_e_' . $typeId );
$exportPasswd -> setIsPassword ( true );
2018-05-02 18:26:10 +00:00
$containerTarget -> add ( $exportPasswd , 11 );
$containerTarget -> add ( new htmlHelpLink ( '236' ), 1 );
$containerTarget -> add ( new htmlHiddenInput ( 'export' , '1' ), 12 );
$containerTarget -> add ( new htmlHiddenInput ( 'typeId' , $typeId ), 12 );
$containerTarget -> add ( new htmlHiddenInput ( 'name_' . $typeId , '_' ), 12 );
addSecurityTokenToMetaHTML ( $containerTarget );
2016-12-19 20:32:08 +00:00
2018-05-02 18:26:10 +00:00
parseHtml ( null , $containerTarget , array (), false , $tabindex , 'user' );
2012-10-28 14:37:54 +00:00
2017-01-06 09:11:47 +00:00
echo '</form>' ;
echo " </div> \n " ;
}
2012-10-28 14:37:54 +00:00
2011-04-25 18:00:47 +00:00
// form for delete action
echo '<div id="deleteProfileDialog" class="hidden"><form id="deleteProfileForm" action="pdfmain.php" method="post">' ;
echo _ ( " Do you really want to delete this PDF structure? " );
echo '<br><br><div class="nowrap">' ;
echo _ ( " Structure name " ) . ': <div id="deleteText" style="display: inline;"></div></div>' ;
echo '<input id="profileDeleteType" type="hidden" name="profileDeleteType" value="">' ;
echo '<input id="profileDeleteName" type="hidden" name="profileDeleteName" value="">' ;
echo '<input type="hidden" name="deleteProfile" value="true">' ;
2015-05-15 19:16:46 +00:00
echo '<input type="hidden" name="' . getSecurityTokenName () . '" value="' . getSecurityTokenValue () . '">' ;
2011-04-25 18:00:47 +00:00
echo '</form></div>' ;
2018-05-02 18:26:10 +00:00
include '../../lib/adminFooter.inc' ;
2017-01-05 20:40:48 +00:00
/**
* Imports the selected PDF structures .
*
* @ param string $typeId type id
* @ param array $options options
* @ param \LAMConfig [] $serverProfiles server profiles ( name => profile object )
2017-09-17 08:17:13 +00:00
* @ param TypeManager $typeManager type manager
2017-01-05 20:40:48 +00:00
* @ return \htmlStatusMessage message or null
*/
2017-09-17 08:17:13 +00:00
function importStructures ( $typeId , $options , & $serverProfiles , TypeManager & $typeManager ) {
2017-01-05 20:40:48 +00:00
foreach ( $options as $option ) {
$sourceConfName = $option [ 'conf' ];
$sourceTypeId = $option [ 'typeId' ];
$sourceName = $option [ 'name' ];
2017-09-17 08:17:13 +00:00
$sourceTypeManager = new TypeManager ( $serverProfiles [ $sourceConfName ]);
2017-01-05 20:40:48 +00:00
$sourceType = $sourceTypeManager -> getConfiguredType ( $sourceTypeId );
$targetType = $typeManager -> getConfiguredType ( $typeId );
2017-09-18 17:39:08 +00:00
if (( $sourceType !== null ) && ( $targetType !== null )) {
2017-01-05 20:40:48 +00:00
try {
\LAM\PDF\copyStructure ( $sourceType , $sourceName , $targetType );
}
catch ( \LAMException $e ) {
return new \htmlStatusMessage ( 'ERROR' , $e -> getTitle (), $e -> getMessage ());
}
}
}
return new \htmlStatusMessage ( 'INFO' , _ ( 'Import successful' ));
}
/**
* Exports the selected account profile .
*
* @ param string $typeId source type id
* @ param string $name profile name
* @ param array $options options
* @ param \LAMConfig [] $serverProfiles server profiles ( name => profile object )
2017-09-17 08:17:13 +00:00
* @ param TypeManager $typeManager type manager
2017-01-05 20:40:48 +00:00
* @ return \htmlStatusMessage message or null
*/
2017-09-17 08:17:13 +00:00
function exportStructures ( $typeId , $name , $options , & $serverProfiles , TypeManager & $typeManager ) {
2017-01-05 20:40:48 +00:00
$sourceType = $typeManager -> getConfiguredType ( $typeId );
2017-09-18 17:39:08 +00:00
if ( $sourceType === null ) {
2017-01-05 20:40:48 +00:00
return null ;
}
foreach ( $options as $option ) {
$targetConfName = $option [ 'conf' ];
if ( $targetConfName == 'templates*' ) {
try {
2017-01-06 09:11:47 +00:00
\LAM\PDF\copyStructureToTemplates ( $sourceType , $name );
2017-01-05 20:40:48 +00:00
}
catch ( \LAMException $e ) {
return new \htmlStatusMessage ( 'ERROR' , $e -> getTitle (), $e -> getMessage ());
}
}
else {
$targetTypeId = $option [ 'typeId' ];
2017-09-17 08:17:13 +00:00
$targetTypeManager = new TypeManager ( $serverProfiles [ $targetConfName ]);
2017-01-05 20:40:48 +00:00
$targetType = $targetTypeManager -> getConfiguredType ( $targetTypeId );
2017-09-18 17:39:08 +00:00
if ( $targetType !== null ) {
2017-01-05 20:40:48 +00:00
try {
2017-01-06 09:11:47 +00:00
\LAM\PDF\copyStructure ( $sourceType , $name , $targetType );
2017-01-05 20:40:48 +00:00
}
catch ( \LAMException $e ) {
return new \htmlStatusMessage ( 'ERROR' , $e -> getTitle (), $e -> getMessage ());
}
}
}
}
return new \htmlStatusMessage ( 'INFO' , _ ( 'Export successful' ));
}
2010-08-21 09:43:52 +00:00
?>