2004-05-30 13:43:42 +00:00
< ? php
/*
$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
2013-01-12 13:58:47 +00:00
2005 - 2013 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
/**
* This is the main window of the pdf structure editor .
*
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 ();
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' );
2004-05-30 13:43:42 +00:00
setlanguage ();
2004-06-03 14:26:48 +00:00
// Unset pdf structure definitions in session if set
if ( isset ( $_SESSION [ 'currentPDFStructure' ])) {
2004-09-08 14:40:25 +00:00
unset ( $_SESSION [ 'currentPDFStructure' ]);
unset ( $_SESSION [ 'availablePDFFields' ]);
unset ( $_SESSION [ 'currentPageDefinitions' ]);
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' ])) {
2012-03-20 20:44:24 +00:00
metaRefresh ( 'pdfpage.php?type=' . htmlspecialchars ( $_POST [ 'scope' ]));
2008-12-28 19:08:57 +00:00
exit ();
2004-05-30 13:43:42 +00:00
}
2006-01-01 16:30:05 +00:00
$scopes = $_SESSION [ 'config' ] -> get_ActiveTypes ();
2010-04-04 15:00:06 +00:00
$sortedScopes = array ();
for ( $i = 0 ; $i < sizeof ( $scopes ); $i ++ ) {
2013-01-01 20:46:28 +00:00
if ( isAccountTypeHidden ( $scopes [ $i ])) {
continue ;
}
2010-04-04 15:00:06 +00:00
$sortedScopes [ $scopes [ $i ]] = getTypeAlias ( $scopes [ $i ]);
}
natcasesort ( $sortedScopes );
2004-05-30 13:43:42 +00:00
2011-04-25 18:00:47 +00:00
$container = new htmlTable ();
$container -> addElement ( new htmlTitle ( _ ( 'PDF editor' )), true );
if ( isset ( $_POST [ 'deleteProfile' ]) && ( $_POST [ 'deleteProfile' ] == 'true' )) {
// delete structure
if ( deletePDFStructureDefinition ( $_POST [ 'profileDeleteType' ], $_POST [ 'profileDeleteName' ])) {
$message = new htmlStatusMessage ( 'INFO' , _ ( 'Deleted PDF structure.' ), getTypeAlias ( $_POST [ 'profileDeleteType' ]) . ': ' . htmlspecialchars ( $_POST [ 'profileDeleteName' ]));
$message -> colspan = 10 ;
$container -> addElement ( $message , true );
}
else {
$message = new htmlStatusMessage ( 'ERROR' , _ ( 'Unable to delete PDF structure!' ), getTypeAlias ( $_POST [ 'profileDeleteType' ]) . ': ' . htmlspecialchars ( $_POST [ 'profileDeleteName' ]));
$message -> colspan = 10 ;
$container -> addElement ( $message , true );
}
}
2012-10-28 14:37:54 +00:00
if ( isset ( $_POST [ 'importexport' ]) && ( $_POST [ 'importexport' ] === '1' )) {
$cfg = new LAMCfgMain ();
$impExpMessage = null ;
if ( isset ( $_POST [ 'importProfiles_' . $_POST [ 'scope' ]])) {
// check master password
if ( ! $cfg -> checkPassword ( $_POST [ 'passwd_' . $_POST [ 'scope' ]])) {
$impExpMessage = new htmlStatusMessage ( 'ERROR' , _ ( 'Master password is wrong!' ));
}
elseif ( copyPdfProfiles ( $_POST [ 'importProfiles_' . $_POST [ 'scope' ]], $_POST [ 'scope' ])) {
$impExpMessage = new htmlStatusMessage ( 'INFO' , _ ( 'Import successful' ));
}
} else if ( isset ( $_POST [ 'exportProfiles' ])) {
// check master password
if ( ! $cfg -> checkPassword ( $_POST [ 'passwd' ])) {
$impExpMessage = new htmlStatusMessage ( 'ERROR' , _ ( 'Master password is wrong!' ));
}
elseif ( copyPdfProfiles ( $_POST [ 'exportProfiles' ], $_POST [ 'scope' ], $_POST [ 'destServerProfiles' ])) {
$impExpMessage = new htmlStatusMessage ( 'INFO' , _ ( 'Export successful' ));
}
}
if ( $impExpMessage != null ) {
$impExpMessage -> colspan = 10 ;
$container -> addElement ( $impExpMessage , true );
}
}
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' ];
$container -> addElement ( uploadPDFLogo ( $file , $filename ), true );
}
// delete logo file
if ( isset ( $_POST [ 'delLogo' ])) {
$toDel = $_POST [ 'logo' ];
$container -> addElement ( deletePDFLogo ( $toDel ), true );
}
2008-12-28 19:08:57 +00:00
// get list of account types
2004-07-16 06:33:37 +00:00
$availableScopes = '' ;
2008-12-28 19:08:57 +00:00
$templateClasses = array ();
2010-04-04 15:00:06 +00:00
foreach ( $sortedScopes as $scope => $title ) {
2008-12-28 19:08:57 +00:00
$templateClasses [] = array (
2010-04-04 15:00:06 +00:00
'scope' => $scope ,
'title' => $title ,
2008-12-28 19:08:57 +00:00
'templates' => " " );
2010-10-18 19:47:07 +00:00
$availableScopes [ $title ] = $scope ;
2008-12-28 19:08:57 +00:00
}
// get list of templates for each account type
for ( $i = 0 ; $i < sizeof ( $templateClasses ); $i ++ ) {
2010-10-18 19:47:07 +00:00
$templateClasses [ $i ][ 'templates' ] = getPDFStructureDefinitions ( $templateClasses [ $i ][ 'scope' ]);
2008-12-28 19:08:57 +00:00
}
2004-05-30 13:43:42 +00:00
2008-12-28 19:08:57 +00:00
// check if a template should be edited
for ( $i = 0 ; $i < sizeof ( $templateClasses ); $i ++ ) {
if ( isset ( $_POST [ 'editTemplate_' . $templateClasses [ $i ][ 'scope' ]]) || isset ( $_POST [ 'editTemplate_' . $templateClasses [ $i ][ 'scope' ] . '_x' ])) {
2012-03-20 20:44:24 +00:00
metaRefresh ( 'pdfpage.php?type=' . htmlspecialchars ( $templateClasses [ $i ][ 'scope' ]) . '&edit=' . htmlspecialchars ( $_POST [ 'template_' . $templateClasses [ $i ][ 'scope' ]]));
2008-12-28 19:08:57 +00:00
exit ;
}
}
2010-10-18 19:47:07 +00:00
2010-01-01 17:21:46 +00:00
include '../main_header.php' ;
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 " >
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' ]));
$message -> colspan = 10 ;
$container -> addElement ( $message , true );
2010-05-26 17:54:00 +00:00
}
2012-10-28 14:37:54 +00:00
2010-10-18 19:47:07 +00:00
// new template
$container -> addElement ( new htmlSubTitle ( _ ( 'Create a new PDF structure' )), true );
$newPDFContainer = new htmlTable ();
$newScopeSelect = new htmlSelect ( 'scope' , $availableScopes );
$newScopeSelect -> setHasDescriptiveElements ( true );
$newScopeSelect -> setWidth ( '15em' );
$newPDFContainer -> addElement ( $newScopeSelect );
$newPDFContainer -> addElement ( new htmlSpacer ( '10px' , null ));
$newPDFContainer -> addElement ( new htmlButton ( 'createNewTemplate' , _ ( 'Create' )));
$container -> addElement ( $newPDFContainer , true );
$container -> addElement ( new htmlSpacer ( null , '10px' ), true );
2012-10-28 14:37:54 +00:00
2010-10-18 19:47:07 +00:00
// existing templates
2012-10-28 14:37:54 +00:00
$configProfiles = getConfigProfiles ();
2010-10-18 19:47:07 +00:00
$container -> addElement ( new htmlSubTitle ( _ ( " Manage existing PDF structures " )), true );
$existingContainer = new htmlTable ();
2008-12-28 19:08:57 +00:00
for ( $i = 0 ; $i < sizeof ( $templateClasses ); $i ++ ) {
2012-10-28 14:37:54 +00:00
if ( $i > 0 ) {
$existingContainer -> addElement ( new htmlSpacer ( null , '10px' ), true );
}
2010-10-18 19:47:07 +00:00
$existingContainer -> addElement ( new htmlImage ( '../../graphics/' . $templateClasses [ $i ][ 'scope' ] . '.png' ));
$existingContainer -> addElement ( new htmlSpacer ( '3px' , null ));
$existingContainer -> addElement ( new htmlOutputText ( $templateClasses [ $i ][ 'title' ]));
$existingContainer -> addElement ( new htmlSpacer ( '3px' , null ));
$select = new htmlSelect ( 'template_' . $templateClasses [ $i ][ 'scope' ], $templateClasses [ $i ][ 'templates' ]);
$select -> setWidth ( '15em' );
$existingContainer -> addElement ( $select );
$existingContainer -> addElement ( new htmlSpacer ( '3px' , null ));
$exEditButton = new htmlButton ( 'editTemplate_' . $templateClasses [ $i ][ 'scope' ], 'edit.png' , true );
$exEditButton -> setTitle ( _ ( 'Edit' ));
$existingContainer -> addElement ( $exEditButton );
2011-04-25 18:00:47 +00:00
$deleteLink = new htmlLink ( null , '#' , '../../graphics/delete.png' );
$deleteLink -> setTitle ( _ ( 'Delete' ));
$deleteLink -> setOnClick ( " profileShowDeleteDialog(' " . _ ( 'Delete' ) . " ', ' " . _ ( 'Ok' ) . " ', ' " . _ ( 'Cancel' ) . " ', ' " . $templateClasses [ $i ][ 'scope' ] . " ', ' " . 'template_' . $templateClasses [ $i ][ 'scope' ] . " '); " );
2012-10-28 14:37:54 +00:00
$existingContainer -> addElement ( $deleteLink );
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 " ) . " ', ' " .
_ ( 'Ok' ) . " ', ' " . _ ( 'Cancel' ) . " ', ' " . $templateClasses [ $i ][ 'scope' ] . " ', 'import'); " );
$existingContainer -> addElement ( $importLink );
}
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 " ) . " ', ' " .
_ ( 'Ok' ) . " ', ' " . _ ( 'Cancel' ) . " ', ' " . $templateClasses [ $i ][ 'scope' ] . " ', 'export', ' " . 'template_' . $templateClasses [ $i ][ 'scope' ] . " ', ' " . $_SESSION [ 'config' ] -> getName () . " '); " );
$existingContainer -> addElement ( $exportLink );
2012-10-28 14:37:54 +00:00
$existingContainer -> addNewLine ();
2008-12-28 19:08:57 +00:00
}
2010-10-18 19:47:07 +00:00
$container -> addElement ( $existingContainer , true );
2012-10-28 14:37:54 +00:00
2013-10-08 19:11:01 +00:00
// manage logos
$logoContainer = new htmlTable ();
$logoContainer -> addElement ( new htmlSpacer ( null , '30px' ), true );
$logoContainer -> addElement ( new htmlSubTitle ( _ ( 'Manage logos' )), true );
$logos = getAvailableLogos ();
$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 );
$logoContainer -> addElement ( $logoSelect );
$delLogo = new htmlButton ( 'delLogo' , _ ( 'Delete' ));
$delLogo -> setIconClass ( 'deleteButton' );
$logoContainer -> addElement ( $delLogo , true );
$logoContainer -> addElement ( new htmlInputFileUpload ( 'logoUpload' ));
$logoUpload = new htmlButton ( 'uploadLogo' , _ ( 'Upload' ));
$logoUpload -> setIconClass ( 'upButton' );
$logoContainer -> addElement ( $logoUpload );
$container -> addElement ( $logoContainer , true );
$container -> addElement ( new htmlSpacer ( null , '10px' ), true );
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 " ;
for ( $i = 0 ; $i < sizeof ( $templateClasses ); $i ++ ) {
$scope = $templateClasses [ $i ][ 'scope' ];
$tmpArr = array ();
foreach ( $configProfiles as $profile ) {
if ( $profile != $_SESSION [ 'config' ] -> getName ()) {
$accountProfiles = getPDFStructureDefinitions ( $scope , $profile );
for ( $p = 0 ; $p < sizeof ( $accountProfiles ); $p ++ ) {
$tmpArr [ $profile ][ $accountProfiles [ $p ]] = $profile . '##' . $accountProfiles [ $p ];
}
}
}
//import dialog
echo " <div id= \" importDialog_ $scope\ " class = \ " hidden \" > \n " ;
echo " <form id= \" importDialogForm_ $scope\ " method = \ " post \" action= \" pdfmain.php \" > \n " ;
$container = new htmlTable ();
$container -> addElement ( new htmlOutputText ( _ ( 'PDF structures' )), true );
$select = new htmlSelect ( 'importProfiles_' . $scope , $tmpArr , array (), count ( $tmpArr , 1 ) < 15 ? count ( $tmpArr , 1 ) : 15 );
$select -> setMultiSelect ( true );
$select -> setHasDescriptiveElements ( true );
$select -> setContainsOptgroups ( true );
$select -> setWidth ( '290px' );
$container -> addElement ( $select );
$container -> addElement ( new htmlHelpLink ( '408' ), true );
$container -> addElement ( new htmlSpacer ( null , '10px' ), true );
$container -> addElement ( new htmlOutputText ( _ ( " Master password " )), true );
$exportPasswd = new htmlInputField ( 'passwd_' . $scope );
$exportPasswd -> setIsPassword ( true );
$container -> addElement ( $exportPasswd );
$container -> addElement ( new htmlHelpLink ( '236' ));
$container -> addElement ( new htmlHiddenInput ( 'importexport' , '1' ));
$container -> addElement ( new htmlHiddenInput ( 'scope' , $scope ), true );
parseHtml ( null , $container , array (), false , $tabindex , 'user' );
echo '</form>' ;
echo " </div> \n " ;
}
//export dialog
echo " <div id= \" exportDialog \" class= \" hidden \" > \n " ;
echo " <form id= \" exportDialogForm \" method= \" post \" action= \" pdfmain.php \" > \n " ;
$container = new htmlTable ();
$container -> addElement ( new htmlOutputText ( _ ( 'PDF structure' )), true );
$expStructGroup = new htmlTable ();
$expStructGroup -> addElement ( new htmlSpacer ( '10px' , null ));
$expStructGroup -> addElement ( new htmlDiv ( 'exportName' , '' ));
$container -> addElement ( $expStructGroup , true );
$container -> addElement ( new htmlSpacer ( null , '10px' ), true );
$container -> addElement ( new htmlOutputText ( _ ( " Target server profile " )), true );
foreach ( $configProfiles as $key => $value ) {
$tmpProfiles [ $value ] = $value ;
}
natcasesort ( $tmpProfiles );
$tmpProfiles [ '*' . _ ( 'Global templates' )] = 'templates*' ;
$findProfile = array_search ( $_SESSION [ 'config' ] -> getName (), $tmpProfiles );
if ( $findProfile !== false ) {
unset ( $tmpProfiles [ $findProfile ]);
}
$select = new htmlSelect ( 'destServerProfiles' , $tmpProfiles , array (), count ( $tmpProfiles ) < 10 ? count ( $tmpProfiles ) : 10 );
$select -> setHasDescriptiveElements ( true );
$select -> setSortElements ( false );
$select -> setMultiSelect ( true );
$container -> addElement ( $select );
$container -> addElement ( new htmlHelpLink ( '409' ), true );
$container -> addElement ( new htmlSpacer ( null , '10px' ), true );
$container -> addElement ( new htmlOutputText ( _ ( " Master password " )), true );
$exportPasswd = new htmlInputField ( 'passwd' );
$exportPasswd -> setIsPassword ( true );
$container -> addElement ( $exportPasswd );
$container -> addElement ( new htmlHelpLink ( '236' ));
$container -> addElement ( new htmlHiddenInput ( 'importexport' , '1' ), true );
parseHtml ( null , $container , array (), false , $tabindex , 'user' );
echo '</form>' ;
echo " </div> \n " ;
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">' ;
echo '</form></div>' ;
include '../main_footer.php' ;
2010-08-21 09:43:52 +00:00
?>