'; echo ("
\n"); $errors = array(); $tabindex = 1; $container = new htmlTable(); $container->addElement(new htmlTitle(_("Multi edit")), true); // LDAP suffix $showRules = array('-' => array('otherSuffix')); $hideRules = array(); $container->addElement(new htmlOutputText(_('LDAP suffix'))); $suffixGroup = new htmlTable(); $types = $_SESSION['config']->get_ActiveTypes(); $suffixes = array(); foreach ($types as $type) { $suffixes[getTypeAlias($type)] = $_SESSION['config']->get_Suffix($type); $hideRules[$_SESSION['config']->get_Suffix($type)] = array('otherSuffix'); } $treeSuffix = $_SESSION['config']->get_Suffix('tree'); if (!empty($treeSuffix)) { $suffixes[_('Tree view')] = $_SESSION['config']->get_Suffix('tree'); $hideRules[$_SESSION['config']->get_Suffix('tree')] = array('otherSuffix'); } $suffixes = array_flip($suffixes); natcasesort($suffixes); $suffixes = array_flip($suffixes); $suffixes[_('other')] = '-'; $suffixValues = array_values($suffixes); $valSuffix = empty($_POST['suffix']) ? $suffixValues[0] : $_POST['suffix']; $suffixSelect = new htmlSelect('suffix', $suffixes, array($valSuffix)); $suffixSelect->setHasDescriptiveElements(true); $suffixSelect->setSortElements(false); $suffixSelect->setTableRowsToShow($showRules); $suffixSelect->setTableRowsToHide($hideRules); $suffixGroup->addElement($suffixSelect); $otherSuffixTable = new htmlTable(); $valOtherSuffix = empty($_POST['otherSuffix']) ? '' : $_POST['otherSuffix']; $otherSuffixTable->addElement(new htmlInputField('otherSuffix')); $suffixGroup->addElement($otherSuffixTable); $container->addElement($suffixGroup); $container->addElement(new htmlHelpLink('700'), true); // LDAP filter $valFilter = empty($_POST['filter']) ? '' : $_POST['filter']; $container->addElement(new htmlTableExtendedInputField(_('LDAP filter'), 'filter', $valFilter, '701'), true); // operation fields $container->addElement(new htmlSubTitle(_('Operations')), true); $container->addElement(new htmlOutputText(_('Type'))); $container->addElement(new htmlOutputText(_('Attribute name'))); $container->addElement(new htmlOutputText(_('Value'))); $container->addElement(new htmlHelpLink('702'), true); $opCount = empty($_POST['opcount']) ? '3' : $_POST['opcount']; if (isset($_POST['addFields'])) { $opCount += 3; } $operations = array(_('Add') => ADD, _('Modify') => MOD, _('Delete') => DEL); for ($i = 0; $i < $opCount; $i++) { // operation type $selOp = empty($_POST['op_' . $i]) ? ADD : $_POST['op_' . $i]; $opSelect = new htmlSelect('op_' . $i, $operations, array($selOp)); $opSelect->setHasDescriptiveElements(true); $container->addElement($opSelect); // attribute name $attrVal = empty($_POST['attr_' . $i]) ? '' : $_POST['attr_' . $i]; $container->addElement(new htmlInputField('attr_' . $i, $attrVal)); $valVal = empty($_POST['val_' . $i]) ? '' : $_POST['val_' . $i]; $container->addElement(new htmlInputField('val_' . $i, $valVal), true); // check input if (($selOp == ADD) && !empty($attrVal) && empty($valVal)) { $errors[] = new htmlStatusMessage('ERROR', _('Please enter a value to add.'), htmlspecialchars($attrVal)); } if (($selOp == MOD) && !empty($attrVal) && empty($valVal)) { $errors[] = new htmlStatusMessage('ERROR', _('Please enter a value to modify.'), htmlspecialchars($attrVal)); } } // add more fields $container->addVerticalSpace('5px'); $container->addElement(new htmlButton('addFields', _('Add more fields'))); $container->addElement(new htmlHiddenInput('opcount', $opCount), true); // error messages if (sizeof($errors) > 0) { $container->addVerticalSpace('20px'); foreach ($errors as $error) { $error->colspan = 5; $container->addElement($error, true); } } // action buttons $container->addVerticalSpace('20px'); $buttonGroup = new htmlGroup(); $buttonGroup->colspan = 3; $dryRunButton = new htmlButton('dryRun', _('Dry run')); $dryRunButton->setIconClass('dryRunButton'); $buttonGroup->addElement($dryRunButton); $buttonGroup->addElement(new htmlSpacer('10px', null)); $applyButton = new htmlButton('applyChanges', _('Apply changes')); $applyButton->setIconClass('saveButton'); $buttonGroup->addElement($applyButton); $container->addElement($buttonGroup, true); $container->addVerticalSpace('10px'); // run actions if ((sizeof($errors) == 0) && (isset($_POST['dryRun']) || isset($_POST['applyChanges']))) { runActions($container); } parseHtml(null, $container, array(), false, $tabindex, 'user'); echo ("
\n"); echo ''; include 'main_footer.php'; } /** * Runs the dry run and change actions. * * @param htmlTable $container container */ function runActions(&$container) { // LDAP suffix if ($_POST['suffix'] == '-') { $suffix = trim($_POST['otherSuffix']); } else { $suffix = $_POST['suffix']; } if (empty($suffix)) { $error = new htmlStatusMessage('ERROR', _('LDAP Suffix is invalid!')); $error->colspan = 5; $container->addElement($error); return; } // LDAP filter $filter = trim($_POST['filter']); // operations $operations = array(); for ($i = 0; $i < sizeof($_POST['opcount']); $i++) { if (!empty($_POST['attr_' . $i])) { $operations[] = array($_POST['op_' . $i], $_POST['attr_' . $i], $_POST['val_' . $i]); } } if (sizeof($operations) == 0) { $error = new htmlStatusMessage('ERROR', _('Please specify at least one operation.')); $error->colspan = 5; $container->addElement($error); return; } $_SESSION['multiEdit_suffix'] = $suffix; $_SESSION['multiEdit_filter'] = $filter; $_SESSION['multiEdit_operations'] = $operations; $_SESSION['multiEdit_status'] = null; // disable all input elements $jsContent = ' jQuery(\'input\').attr(\'disabled\', true); jQuery(\'select\').attr(\'disabled\', true); jQuery(\'button\').attr(\'disabled\', true); '; $container->addElement(new htmlJavaScript($jsContent), true); // progress area $container->addElement(new htmlSubTitle(_('Progress')), true); $progressDiv = new htmlDiv('progressArea', ''); $progressDiv->colspan = 5; $container->addElement($progressDiv, true); // JS block for AJAX status update $ajaxBlock = ' jQuery.get(\'multiEdit.php?ajaxStatus\', null, function(data) {handleReply(data);}, \'json\'); function handleReply(data) { jQuery(\'#progressArea\').html(data.content); if (data.status != "finished") { jQuery.get(\'multiEdit.php?ajaxStatus\', null, function(data) {handleReply(data);}, \'json\'); } else { jQuery(\'input\').removeAttr(\'disabled\'); jQuery(\'select\').removeAttr(\'disabled\'); jQuery(\'button\').removeAttr(\'disabled\'); } } '; $container->addElement(new htmlJavaScript($ajaxBlock), true); } /** * Performs the modify operations. */ function runAjaxActions() { $jsonReturn = array( 'status' => 'finished', 'content' => 'content' ); echo json_encode($jsonReturn); }