Enabled create_base
This commit is contained in:
@@ -211,6 +211,7 @@ class AJAXTree extends HTMLTree {
|
||||
if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
|
||||
debug_log('Entered (%%)',33,0,__FILE__,__LINE__,__METHOD__,$fargs);
|
||||
|
||||
parent::draw_javascript();
|
||||
printf('<script type="text/javascript" src="%slayersmenu-browser_detection.js"></script>',JSDIR);
|
||||
printf('<script type="text/javascript" src="%sajax_tree.js"></script>',JSDIR);
|
||||
}
|
||||
|
@@ -28,6 +28,7 @@ class HTMLTree extends Tree {
|
||||
if (DEBUG_ENABLED && (($fargs=func_get_args())||$fargs='NOARGS'))
|
||||
debug_log('Entered (%%)',33,0,__FILE__,__LINE__,__METHOD__,$fargs);
|
||||
|
||||
static $js_drawn = false;
|
||||
$server = $this->getServer();
|
||||
|
||||
echo '<table class="tree" border="0">';
|
||||
@@ -85,27 +86,28 @@ class HTMLTree extends Tree {
|
||||
*/
|
||||
foreach ($this->getBaseEntries() as $base) {
|
||||
if (! $base->isInLDAP()) {
|
||||
$js_drawn = false;
|
||||
$javascript_id++;
|
||||
|
||||
printf('<tr><td class="spacer"></td><td class="spacer"></td><td><img src="%s/unknown.png" /></td><td colspan="%s">%s</td></tr>',
|
||||
$rdn = split('=',get_rdn($base->getDN()));
|
||||
printf('<tr><td class="spacer"></td><td class="spacer"></td><td><img src="%s/unknown.png" alt="" /></td><td colspan="%s">%s</td></tr>',
|
||||
IMGDIR,$this->getDepth()+3-3,pretty_print_dn($base->getDN()));
|
||||
|
||||
$this->javascript .= sprintf('<form id="create_base_form_%s" method="post" action="cmd.php?cmd=template_engine">',$javascript_id);
|
||||
$this->javascript .= sprintf('<form id="create_base_form_%s_%s" method="post" action="cmd.php">',$server->getIndex(),$javascript_id);
|
||||
$this->javascript .= '<div>';
|
||||
$this->javascript .= '<input type="hidden" name="cmd" value="template_engine" />';
|
||||
$this->javascript .= sprintf('<input type="hidden" name="server_id" value="%s" />',$server->getIndex());
|
||||
$this->javascript .= sprintf('<input type="hidden" name="container" value="%s" />',htmlspecialchars($server->getContainer($base->getDN())));
|
||||
$this->javascript .= sprintf('<input type="hidden" name="rdn" value="%s" />',get_rdn($base->getDN()));
|
||||
$this->javascript .= sprintf('<input type="hidden" name="rdn_attribute[]" value="%s" />',$rdn[0]);
|
||||
$this->javascript .= sprintf('<input type="hidden" name="new_values[%s][]" value="%s" />',$rdn[0],$rdn[1]);
|
||||
$this->javascript .= '<input type="hidden" name="template" value="none" />';
|
||||
$this->javascript .= '<input type="hidden" name="create_base" value="true" />';
|
||||
$this->javascript .= '</div>';
|
||||
$this->javascript .= sprintf('</form>');
|
||||
|
||||
printf('<tr><td class="spacer"></td><td class="spacer"></td><td class="spacer"></td><td colspan="%s"><small>%s<a href="javascript:document.getElementById(\'create_base_form_%s\').submit()">%s</a></small></td></tr>',
|
||||
$this->getDepth()+3-3,_('This base entry does not exist.'),$javascript_id,_('Create it?'));
|
||||
|
||||
echo '</table>';
|
||||
|
||||
if (! $onlytree)
|
||||
echo '</div></td></tr>';
|
||||
|
||||
echo '</table>';
|
||||
return;
|
||||
printf('<tr><td class="spacer"></td><td class="spacer"></td><td class="spacer"></td><td colspan="%s"><small>%s <a href="javascript:document.getElementById(\'create_base_form_%s_%s\').submit()">%s</a></small></td></tr>',
|
||||
$this->getDepth()+3-3,_('This base entry does not exist.'),$server->getIndex(),$javascript_id,_('Create it?'));
|
||||
|
||||
} else {
|
||||
$this->draw_item($base->getDN(),-1);
|
||||
@@ -138,8 +140,6 @@ class HTMLTree extends Tree {
|
||||
echo '</table>';
|
||||
echo "\n\n";
|
||||
|
||||
static $js_drawn = false;
|
||||
|
||||
if (! $js_drawn) {
|
||||
$this->draw_javascript();
|
||||
$js_drawn = true;
|
||||
@@ -540,6 +540,7 @@ class HTMLTree extends Tree {
|
||||
echo "<!-- Forms for javascript submit to call to create base_dns -->\n";
|
||||
echo $this->javascript;
|
||||
echo "<!-- The end of the forms for javascript submit to call to create base_dns -->\n";
|
||||
$this->javascript = '';
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -501,7 +501,7 @@ class PageRender extends Visitor {
|
||||
debug_log('Entered (%%)',129,0,__FILE__,__LINE__,__METHOD__,$fargs);
|
||||
|
||||
foreach ($this->template->getAttributes(true) as $attribute)
|
||||
if ($attribute->hasbeenModified())
|
||||
if ($attribute->hasbeenModified()) {
|
||||
if ($attribute->getValues())
|
||||
foreach ($attribute->getValues() as $index => $details)
|
||||
$this->draw('HiddenValue',$attribute,$index);
|
||||
@@ -509,6 +509,7 @@ class PageRender extends Visitor {
|
||||
# We are deleting this attribute, so we need to display an empty value
|
||||
else
|
||||
$this->draw('HiddenValue',$attribute,0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -330,6 +330,13 @@ class Template extends xmlTemplate {
|
||||
unset($_REQUEST['new_values']['objectclass']);
|
||||
}
|
||||
|
||||
} elseif (get_request('create_base')) {
|
||||
if (get_request('rdn')) {
|
||||
$rdn = explode('=',get_request('rdn'));
|
||||
$attribute = $this->addAttribute($rdn[0],array('values'=>array($rdn[1])));
|
||||
$attribute->setRDN(1);
|
||||
}
|
||||
|
||||
} else {
|
||||
debug_dump_backtrace('No DN or CONTAINER?',1);
|
||||
}
|
||||
@@ -535,7 +542,8 @@ class Template extends xmlTemplate {
|
||||
# If this is the default creation template, we need to set some additional values
|
||||
if ($this->isType('default') && $this->getContext() == 'create') {
|
||||
# Load our schema, based on the objectclasses that may have already been defined.
|
||||
$this->rebuildTemplateAttrs();
|
||||
if (! get_request('create_base'))
|
||||
$this->rebuildTemplateAttrs();
|
||||
|
||||
# Set the RDN attribute
|
||||
$counter = 1;
|
||||
@@ -620,6 +628,10 @@ class Template extends xmlTemplate {
|
||||
# If DN is not set, our DN will be made from our RDN and Container.
|
||||
elseif ($this->getRDN() && $this->getContainer())
|
||||
return sprintf('%s,%s',$this->getRDN(),$this->GetContainer());
|
||||
|
||||
# If container is not set, we're probably creating the base
|
||||
elseif ($this->getRDN() && get_request('create_base'))
|
||||
return $this->getRDN();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -439,6 +439,8 @@ class TemplateRender extends PageRender {
|
||||
return 'modification';
|
||||
elseif ($this->container)
|
||||
return 'creation';
|
||||
elseif (get_request('create_base'))
|
||||
return 'creation';
|
||||
else
|
||||
debug_dump_backtrace(sprintf('Unknown mode for %s',__METHOD__),1);
|
||||
}
|
||||
@@ -677,7 +679,10 @@ class TemplateRender extends PageRender {
|
||||
|
||||
# Title
|
||||
$this->drawTitle();
|
||||
$this->drawSubTitle();
|
||||
if (get_request('create_base'))
|
||||
$this->drawSubTitle(sprintf('<b>%s</b>: %s',_('Creating Base DN'),$this->template->getDN()));
|
||||
else
|
||||
$this->drawSubTitle();
|
||||
echo "\n";
|
||||
|
||||
# Menu
|
||||
@@ -1287,6 +1292,10 @@ class TemplateRender extends PageRender {
|
||||
echo '<tr><td colspan="2">';
|
||||
foreach ($this->template->getRDNAttrs() as $rdn)
|
||||
printf('<input type="hidden" name="rdn_attribute[]" value="%s" id="rdn_attribute"/>',htmlspecialchars($rdn));
|
||||
|
||||
if (get_request('create_base'))
|
||||
echo '<input type="hidden" name="create_base" value="true" />';
|
||||
|
||||
echo '</td></tr>';
|
||||
}
|
||||
}
|
||||
@@ -1299,8 +1308,13 @@ class TemplateRender extends PageRender {
|
||||
|
||||
echo '<tr>';
|
||||
printf('<td class="heading">%s</td>',_('Container'));
|
||||
printf('<td><input type="text" name="container" size="40" value="%s" />',htmlspecialchars($default_container));
|
||||
draw_chooser_link('entry_form','container');
|
||||
echo '<td>';
|
||||
if (get_request('create_base'))
|
||||
printf('%s<input type="hidden" name="container" size="40" value="%s" />',$default_container,htmlspecialchars($default_container));
|
||||
else {
|
||||
printf('<input type="text" name="container" size="40" value="%s" />',htmlspecialchars($default_container));
|
||||
draw_chooser_link('entry_form','container');
|
||||
}
|
||||
echo '</td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
@@ -1395,6 +1409,17 @@ class TemplateRender extends PageRender {
|
||||
public function drawFormEnd() {
|
||||
if (DEBUGTMP) printf('<font size=-2>%s</font><br />',__METHOD__);
|
||||
|
||||
# Include the RDN details to support creating the base
|
||||
if (get_request('create_base')) {
|
||||
if (get_request('rdn')) {
|
||||
$rdn = explode('=',get_request('rdn'));
|
||||
echo '<div>';
|
||||
printf('<input type="hidden" name="new_values[%s][]" value="%s" />',$rdn[0],$rdn[1]);
|
||||
printf('<input type="hidden" name="rdn_attribute[]" value="%s" />',$rdn[0]);
|
||||
echo '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
echo '</form>';
|
||||
|
||||
# Javascript
|
||||
@@ -1457,12 +1482,13 @@ class TemplateRender extends PageRender {
|
||||
|
||||
if (($this->template->isType('default') && $this->template->getContext() == 'create' && $page == 1) || $page < $this->pagelast) {
|
||||
echo '<form action="cmd.php?cmd=template_engine" method="post" enctype="multipart/form-data" id="entry_form" onsubmit="return submitForm(this)">';
|
||||
echo '<div>';
|
||||
|
||||
} else {
|
||||
echo '<form action="cmd.php" method="post" enctype="multipart/form-data" id="entry_form" onsubmit="return submitForm(this)">';
|
||||
echo '<div>';
|
||||
|
||||
if ($_SESSION[APPCONFIG]->getValue('confirm','create'))
|
||||
if ($_SESSION[APPCONFIG]->getValue('confirm','create') && ! get_request('create_base'))
|
||||
echo '<input type="hidden" name="cmd" value="create_confirm" />';
|
||||
else
|
||||
echo '<input type="hidden" name="cmd" value="create" />';
|
||||
@@ -1475,6 +1501,8 @@ class TemplateRender extends PageRender {
|
||||
printf('<input type="hidden" name="server_id" value="%s" />',$this->getServerID());
|
||||
printf('<input type="hidden" name="template" value="%s" />',$this->template->getID());
|
||||
printf('<input type="hidden" name="page" value="%s" />',$page+1);
|
||||
if (get_request('create_base'))
|
||||
echo '<input type="hidden" name="create_base" value="true" />';
|
||||
|
||||
$this->drawHiddenAttributes();
|
||||
|
||||
|
@@ -337,6 +337,11 @@ class ldap_pla extends ldap {
|
||||
if ($result) {
|
||||
# Update the tree
|
||||
$tree = get_cached_item($this->index,'tree');
|
||||
|
||||
# If we created the base, delete it, then add it back
|
||||
if (get_request('create_base'))
|
||||
$tree->delEntry($dn);
|
||||
|
||||
$tree->addEntry($dn);
|
||||
|
||||
set_cached_item($this->index,'tree','null',$tree);
|
||||
|
@@ -1422,11 +1422,8 @@ function get_next_number($base,$attr,$increment=false,$filter=false,$startmin=nu
|
||||
$query['filter'] = sprintf('(%s=*)',$attr);
|
||||
$search = $server->query($query,'auto_number');
|
||||
|
||||
if (! count($search))
|
||||
return;
|
||||
|
||||
# Construct a list of used numbers
|
||||
$autonum = array();
|
||||
$autonum = array(0);
|
||||
|
||||
foreach ($search as $dn => $values) {
|
||||
$values = array_change_key_case($values);
|
||||
|
Reference in New Issue
Block a user