186 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			186 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
|  | <?php | ||
|  | /** | ||
|  |  * Displays a form for adding an attribute/value to an LDAP entry. | ||
|  |  * | ||
|  |  * @package phpLDAPadmin | ||
|  |  * @subpackage Page | ||
|  |  */ | ||
|  | 
 | ||
|  | /** | ||
|  |  */ | ||
|  | 
 | ||
|  | require './common.php'; | ||
|  | 
 | ||
|  | # The DN we are working with
 | ||
|  | $request = array(); | ||
|  | $request['dn'] = get_request('dn','GET'); | ||
|  | 
 | ||
|  | # Check if the entry exists.
 | ||
|  | if (! $request['dn'] || ! $app['server']->dnExists($request['dn'])) | ||
|  | 	error(sprintf(_('The entry (%s) does not exist.'),$request['dn']),'error','index.php'); | ||
|  | 
 | ||
|  | $request['page'] = new TemplateRender($app['server']->getIndex(),get_request('template','REQUEST',false,null)); | ||
|  | $request['page']->setDN($request['dn']); | ||
|  | $request['page']->accept(true); | ||
|  | $request['template'] = $request['page']->getTemplate(); | ||
|  | 
 | ||
|  | # Render the form
 | ||
|  | if (get_request('meth','REQUEST') != 'ajax') { | ||
|  | 	$request['page']->drawTitle(sprintf('%s <b>%s</b>',_('Add new attribute'),get_rdn($request['dn']))); | ||
|  | 	$request['page']->drawSubTitle(); | ||
|  | 
 | ||
|  | 	echo '<div style="text-align: center;">'; | ||
|  | 	if (count($request['template']->getAvailAttrs())) { | ||
|  | 		# If we have more than the configured entries, we'll separate our input to the old ways.
 | ||
|  | 		if (count($request['template']->getAvailAttrs()) > $_SESSION[APPCONFIG]->getValue('appearance','max_add_attrs')) { | ||
|  | 			$attr = array(); | ||
|  | 			$attr['avail'] = array(); | ||
|  | 			$attr['binary'] = array(); | ||
|  | 
 | ||
|  | 			foreach ($request['template']->getAvailAttrs() as $attribute) | ||
|  | 				if ($app['server']->isAttrBinary($attribute->getName())) | ||
|  | 					array_push($attr['binary'],$attribute); | ||
|  | 				else | ||
|  | 					array_push($attr['avail'],$attribute); | ||
|  | 
 | ||
|  | 			if (count($attr['avail']) > 0) { | ||
|  | 				echo '<br />'; | ||
|  | 				echo _('Add new attribute'); | ||
|  | 				echo '<br />'; | ||
|  | 				echo '<br />'; | ||
|  | 
 | ||
|  | 				echo '<form action="cmd.php" method="post">'; | ||
|  | 				echo '<div>'; | ||
|  | 
 | ||
|  | 				if ($_SESSION[APPCONFIG]->getValue('confirm','update')) | ||
|  | 					echo '<input type="hidden" name="cmd" value="update_confirm" />'; | ||
|  | 				else | ||
|  | 					echo '<input type="hidden" name="cmd" value="update" />'; | ||
|  | 
 | ||
|  | 				printf('<input type="hidden" name="server_id" value="%s" />',$app['server']->getIndex()); | ||
|  | 				printf('<input type="hidden" name="dn" value="%s" />',htmlspecialchars($request['dn'])); | ||
|  | 
 | ||
|  | 				echo '<select name="single_item_attr">'; | ||
|  | 
 | ||
|  | 				foreach ($attr['avail'] as $attribute) { | ||
|  | 					# Is there a user-friendly translation available for this attribute?
 | ||
|  | 					if ($attribute->haveFriendlyName()) | ||
|  | 						$attr_display = sprintf('%s (%s)',$attribute->getFriendlyName(),$attribute->getName(false)); | ||
|  | 					else | ||
|  | 						$attr_display = $attribute->getName(false); | ||
|  | 
 | ||
|  | 					printf('<option value="%s">%s</option>',htmlspecialchars($attribute->getName()),$attr_display); | ||
|  | 				} | ||
|  | 
 | ||
|  | 				echo '</select>'; | ||
|  | 
 | ||
|  | 				echo '<input type="text" name="single_item_value" size="20" />'; | ||
|  | 				printf('<input type="submit" name="submit" value="%s" class="update_dn" />',_('Add')); | ||
|  | 				echo '</div>'; | ||
|  | 				echo '</form>'; | ||
|  | 
 | ||
|  | 			} else { | ||
|  | 				echo '<br />'; | ||
|  | 				printf('<small>(%s)</small>',_('no new attributes available for this entry')); | ||
|  | 			} | ||
|  | 
 | ||
|  | 			if (count($attr['binary']) > 0) { | ||
|  | 				echo '<br />'; | ||
|  | 				echo _('Add new binary attribute'); | ||
|  | 				echo '<br />'; | ||
|  | 				echo '<br />'; | ||
|  | 
 | ||
|  | 				echo '<!-- Form to add a new BINARY attribute to this entry -->'; | ||
|  | 				echo '<form action="cmd.php" method="post" enctype="multipart/form-data">'; | ||
|  | 				echo '<div>'; | ||
|  | 
 | ||
|  | 				if ($_SESSION[APPCONFIG]->getValue('confirm','update')) | ||
|  | 					echo '<input type="hidden" name="cmd" value="update_confirm" />'; | ||
|  | 				else | ||
|  | 					echo '<input type="hidden" name="cmd" value="update" />'; | ||
|  | 
 | ||
|  | 				printf('<input type="hidden" name="server_id" value="%s" />',$app['server']->getIndex()); | ||
|  | 				printf('<input type="hidden" name="dn" value="%s" />',$request['dn']); | ||
|  | 				echo '<input type="hidden" name="binary" value="true" />'; | ||
|  | 
 | ||
|  | 				echo '<select name="single_item_attr">'; | ||
|  | 
 | ||
|  | 				foreach ($attr['binary'] as $attribute) { | ||
|  | 					# Is there a user-friendly translation available for this attribute?
 | ||
|  | 					if ($attribute->haveFriendlyName()) | ||
|  | 						$attr_display = sprintf('%s (%s)',$attribute->getFriendlyName(),$attribute->getName(false)); | ||
|  | 					else | ||
|  | 						$attr_display = $attribute->getName(false); | ||
|  | 
 | ||
|  | 					printf('<option value="%s">%s</option>',htmlspecialchars($attribute->getName()),$attr_display); | ||
|  | 				} | ||
|  | 
 | ||
|  | 				echo '</select>'; | ||
|  | 
 | ||
|  | 				echo '<input type="file" name="single_item_value" size="20" />'; | ||
|  | 				printf('<input type="submit" name="submit" value="%s" class="update_dn" />',_('Add')); | ||
|  | 
 | ||
|  | 				if (! ini_get('file_uploads')) | ||
|  | 					printf('<br /><small><b>%s</b></small><br />', | ||
|  | 						_('Your PHP configuration has disabled file uploads. Please check php.ini before proceeding.')); | ||
|  | 
 | ||
|  | 				else | ||
|  | 					printf('<br /><small><b>%s: %s</b></small><br />',_('Maximum file size'),ini_get('upload_max_filesize')); | ||
|  | 
 | ||
|  | 				echo '</div>'; | ||
|  | 				echo '</form>'; | ||
|  | 
 | ||
|  | 			} else { | ||
|  | 				echo '<br />'; | ||
|  | 				printf('<small>(%s)</small>',_('no new binary attributes available for this entry')); | ||
|  | 			} | ||
|  | 
 | ||
|  | 		} else { | ||
|  | 			echo '<br />'; | ||
|  | 
 | ||
|  | 			$request['page']->drawFormStart(); | ||
|  | 			printf('<input type="hidden" name="server_id" value="%s" />',$app['server']->getIndex()); | ||
|  | 			printf('<input type="hidden" name="dn" value="%s" />',htmlspecialchars($request['dn'])); | ||
|  | 
 | ||
|  | 			echo '<table class="entry" cellspacing="0" align="center" border="0">'; | ||
|  | 
 | ||
|  | 			foreach ($request['template']->getAvailAttrs() as $attribute) | ||
|  | 				$request['page']->draw('Template',$attribute); | ||
|  | 
 | ||
|  | 			$request['page']->drawFormSubmitButton(); | ||
|  | 			echo '</table>'; | ||
|  | 
 | ||
|  | 			$request['page']->drawFormEnd(); | ||
|  | 		} | ||
|  | 
 | ||
|  | 	} else { | ||
|  | 		printf('<small>(%s)</small>',_('no new attributes available for this entry')); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	echo '</div>'; | ||
|  | 
 | ||
|  | # The ajax addition (it is going into an existing TemplateRendered page
 | ||
|  | } else { | ||
|  | 	# Put our DIV there for the callback
 | ||
|  | 	echo '<fieldset>'; | ||
|  | 	printf('<legend>%s</legend>',_('Add Attribute')); | ||
|  | 	echo '<div id="ajADDATTR">'; | ||
|  | 	echo '<table class="entry" cellspacing="0" align="center" border="0">'; | ||
|  | 	echo '<td valign="top" align="center">'; | ||
|  | 
 | ||
|  | 	printf('<select name="attr" onchange="ajDISPLAY(\'%s\',\'cmd=add_value_form&server_id=%s&dn=%s&attr=\'+this.value,\'%s\',\'append\');">', | ||
|  | 		'ADDATTR',$app['server']->getIndex(),$request['template']->getDNEncode(),_('Please Wait')); | ||
|  | 
 | ||
|  | 	printf('<option value="%s">%s</option>','',''); | ||
|  | 	foreach ($request['template']->getAvailAttrs() as $attribute) | ||
|  | 		printf('<option value="%s">%s</option>',htmlspecialchars($attribute->getName()),$attribute->getFriendlyName()); | ||
|  | 
 | ||
|  | 	echo '</select>'; | ||
|  | 
 | ||
|  | 	echo '</td>'; | ||
|  | 	echo '</table>'; | ||
|  | 	echo '</div>'; | ||
|  | 	echo '</fieldset>'; | ||
|  | } | ||
|  | ?>
 |