BUG 9218 Con el plugin ldap v.1.4.26, haciendo upgrade... SOLVED
- The ldap list was generated with an excessive size and the checkboxes were not selected in the entire page. - The Ldap list was optimized to generate it with the smallest size possible - It was created a new template to improve the selection of the checkbox.
This commit is contained in:
@@ -147,37 +147,18 @@ class LDAP
|
||||
$sKeyword .= '*';
|
||||
}
|
||||
}
|
||||
$sFilter = '(&';
|
||||
if (count($aAuthSource['AUTH_SOURCE_OBJECT_CLASSES']) > 0) {
|
||||
$sFilter .= '(|';
|
||||
$aObjects = explode("\n", $aAuthSource['AUTH_SOURCE_OBJECT_CLASSES']);
|
||||
foreach ($aObjects as $sObject) {
|
||||
$sFilter .= '(objectClass=' . trim($sObject) . ')';
|
||||
$sFilter = '(&(|(objectClass=*))';
|
||||
|
||||
if ( isset( $aAuthSource['AUTH_SOURCE_DATA']['LDAP_TYPE']) && $aAuthSource['AUTH_SOURCE_DATA']['LDAP_TYPE'] == 'ad' ) {
|
||||
$sFilter = "(&(|(objectClass=*))(|(samaccountname=$sKeyword)(userprincipalname=$sKeyword))(objectCategory=person))";
|
||||
}
|
||||
$sFilter .= ')';
|
||||
}
|
||||
if (count($aAuthSource['AUTH_SOURCE_ATTRIBUTES']) > 0) {
|
||||
$sFilter .= '(|';
|
||||
$aAttributes = explode("\n", $aAuthSource['AUTH_SOURCE_ATTRIBUTES']);
|
||||
foreach ($aAttributes as $sObject) {
|
||||
$sObject = trim($sObject);
|
||||
if ($sObject != '') {
|
||||
$sFilter .= '(' . trim($sObject) . '=' . $sKeyword . ')';
|
||||
}
|
||||
}
|
||||
$sFilter .= ')';
|
||||
}
|
||||
// note added by gustavo cruz gustavo-at-colosa.com
|
||||
// code added in order to add the data of the aditional filter field
|
||||
// the nature of the filter and the correct use will be explained in a
|
||||
// future blog post
|
||||
$sFilter .= isset($aAuthSource['AUTH_SOURCE_DATA']['AUTH_SOURCE_ADDITIONAL_FILTER'])
|
||||
? $aAuthSource['AUTH_SOURCE_DATA']['AUTH_SOURCE_ADDITIONAL_FILTER'] :'' ;
|
||||
$sFilter .= ')';
|
||||
else
|
||||
$sFilter = "(&(|(objectClass=*))(|(uid=$sKeyword)(cn=$sKeyword)))";
|
||||
|
||||
//G::pr($sFilter);
|
||||
$aUsers = array();
|
||||
$oSearch = @ldap_search($oLink, $aAuthSource['AUTH_SOURCE_BASE_DN'], $sFilter);
|
||||
$oSearch = @ldap_search($oLink, $aAuthSource['AUTH_SOURCE_BASE_DN'], $sFilter, array('dn','uid','samaccountname', 'cn','givenname','sn','mail','userprincipalname','objectcategory', 'manager'));
|
||||
|
||||
if ($oError = @ldap_errno($oLink)) {
|
||||
return $aUsers;
|
||||
}
|
||||
|
||||
@@ -95,11 +95,11 @@ try {
|
||||
global $G_PUBLISH;
|
||||
$G_PUBLISH = new Publisher();
|
||||
if ($aFields['AUTH_SOURCE_PROVIDER'] != 'ldap') {
|
||||
$G_PUBLISH->AddContent('propeltable', 'paged-table', 'authSources/ldapSearchResults', $oCriteria,' ',array('Checkbox' => G::LoadTranslation('ID_MSG_CONFIRM_DELETE_CASE_SCHEDULER')));
|
||||
$G_PUBLISH->AddContent('propeltable', 'pagedTableLdap', 'authSources/ldapSearchResults', $oCriteria,' ',array('Checkbox' => G::LoadTranslation('ID_MSG_CONFIRM_DELETE_CASE_SCHEDULER')));
|
||||
}
|
||||
else {
|
||||
if (file_exists(PATH_XMLFORM . 'authSources/' . $aFields['AUTH_SOURCE_PROVIDER'] . 'Edit.xml')) {
|
||||
$G_PUBLISH->AddContent('propeltable', 'paged-table', 'authSources/' . $aFields['AUTH_SOURCE_PROVIDER'] . 'SearchResults', $oCriteria,' ',array('Checkbox' => G::LoadTranslation('ID_MSG_CONFIRM_DELETE_CASE_SCHEDULER')));
|
||||
$G_PUBLISH->AddContent('propeltable', 'pagedTableLdap', 'authSources/' . $aFields['AUTH_SOURCE_PROVIDER'] . 'SearchResults', $oCriteria,' ',array('Checkbox' => G::LoadTranslation('ID_MSG_CONFIRM_DELETE_CASE_SCHEDULER')));
|
||||
}
|
||||
else {
|
||||
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', array('MESSAGE' => 'File: ' . $aFields['AUTH_SOURCE_PROVIDER'] . 'SearchResults.xml' . ' doesn\'t exist.'));
|
||||
|
||||
144
workflow/engine/templates/pagedTableLdap.html
Normal file
144
workflow/engine/templates/pagedTableLdap.html
Normal file
@@ -0,0 +1,144 @@
|
||||
<!-- START BLOCK : headBlock -->
|
||||
<table cellpadding="0" cellspacing="0" border="0"><tr><td>
|
||||
<div class="boxTop"><div class="a"></div><div class="b"></div><div class="c"></div></div>
|
||||
<div class="pagedTableDefault">
|
||||
<table id="pagedtable[{pagedTable_Id}]" name="pagedtable[{pagedTable_Name}]" border="0" cellspacing="0" cellpadding="0" class="Default">
|
||||
<tr >
|
||||
<td valign="top">
|
||||
|
||||
<div class='subtitle'>{title}</div>
|
||||
<table cellspacing="0" cellpadding="0" width="100%" border="0">
|
||||
<!-- START BLOCK : headerBlock -->
|
||||
<tr><td class="headerContent">{content}</td></tr>
|
||||
<!-- END BLOCK : headerBlock -->
|
||||
</table>
|
||||
<table id="table[{pagedTable_Id}]" name="table[{pagedTable_Name}]" cellspacing="0" cellpadding="0" width="100%" class="pagedTable">
|
||||
<!-- END BLOCK : headBlock -->
|
||||
<!-- START BLOCK : contentBlock -->
|
||||
<script type="text/javascript">{pagedTable_JS}</script>
|
||||
<tr>
|
||||
<!-- START BLOCK : headers -->
|
||||
<td class="pagedTableHeader"><img style="{displaySeparator}" src="/js/maborak/core/images/separatorTable.gif" /></td>
|
||||
<td width="{width}" style="{align}" class="pagedTableHeader" >
|
||||
<a href="{href}" onclick="{onclick}{onsort}">{header}</a>
|
||||
</td>
|
||||
<!-- END BLOCK : headers -->
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<!-- START BLOCK : row -->
|
||||
|
||||
<!-- START BLOCK : rowMaster -->
|
||||
<tr class='{masterRowClass}' id="{masterRowName}">
|
||||
<!-- START BLOCK : fieldMaster -->
|
||||
<td class="pagedTableHeader1"><a href="#" ><img src="/images/minus.gif" onclick="toggleMasterDetailGroup('table[{pagedTable_Name}]','{masterRowName}',this);return false;" border="0"></a><b>{value1}</b></td><td class="pagedTableHeader1" {alignAttr}><b>{value}</b> </td>
|
||||
<!-- END BLOCK : fieldMaster -->
|
||||
</tr>
|
||||
<!-- END BLOCK : rowMaster -->
|
||||
|
||||
<tr class='{class}' onmouseover="setRowClass(this, 'RowPointer' )" onmouseout="setRowClass(this, '{class}')" name="{rowName}" id="{rowName}">
|
||||
<!-- START BLOCK : field -->
|
||||
<td{classAttr}></td><td{classAttr}{alignAttr}>{value}</td>
|
||||
<!-- END BLOCK : field -->
|
||||
</tr>
|
||||
<!-- END BLOCK : row -->
|
||||
|
||||
|
||||
<!-- START BLOCK : rowTag -->
|
||||
<!-- END BLOCK : rowTag -->
|
||||
|
||||
<!-- START BLOCK : norecords -->
|
||||
<tr class='Row2'>
|
||||
<td nowrap colspan="{columnCount}" align='center' >
|
||||
{noRecordsFound}<br>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END BLOCK : norecords -->
|
||||
|
||||
<!-- START BLOCK : bottomFooter -->
|
||||
<tr>
|
||||
<td nowrap colspan="{columnCount}">
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tr class="pagedTableFooter">
|
||||
<td width="110px" style="{indexStyle}">
|
||||
{labels:ID_ROWS} {firstRow}-{lastRow}/{totalRows}
|
||||
</td>
|
||||
<!--<td style="text-align:center;{fastSearchStyle}"><!--{labels:ID_SEARCH}
|
||||
<input type="text" class="FormField" onkeypress="if (event.keyCode===13){pagedTableId}.doFastSearch(this.value);if (event.keyCode===13)return false;" value="{fastSearchValue}" onfocus="this.select();" size="10" style="{fastSearchStyle}"/>
|
||||
</td>-->
|
||||
<td style="text-align:center;">
|
||||
{first} {prev} {next} {last}
|
||||
</td>
|
||||
<td width="60px" style="text-align:right;padding-right:8px;{indexStyle}">{labels:ID_PAGE} {currentPage}/{totalPages}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END BLOCK : bottomFooter -->
|
||||
<!-- END BLOCK : contentBlock -->
|
||||
<!-- START BLOCK : closeBlock -->
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="boxBottom"><div class="a"></div><div class="b"></div><div class="c"></div></div>
|
||||
</td></tr></table>
|
||||
<!-- END BLOCK : closeBlock -->
|
||||
<!-- START IGNORE -->
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
if (typeof(document.getElementById("form[SelectAll]")) != undefined) {
|
||||
document.getElementById("form[SelectAll]").innerHTML = '[SELECT-ALL]';
|
||||
}
|
||||
|
||||
function toggleMasterDetailGroup(tablename,groupName,imgicon){
|
||||
alert("ingresa");
|
||||
|
||||
groupNameArray=groupName.split(",");
|
||||
table=getElementByName(tablename);
|
||||
|
||||
var rows = table.getElementsByTagName('tr');
|
||||
for(i=0;i<rows.length;i++){
|
||||
if(rows[i].id!=""){
|
||||
currentRowArray=rows[i].id.split(",");
|
||||
sw=false;
|
||||
//alert(groupNameArray);
|
||||
//alert(currentRowArray);
|
||||
|
||||
tempVar=currentRowArray[0].split("_MD_");
|
||||
if(tempVar[0]==""){
|
||||
if(currentRowArray.length>groupNameArray.length){
|
||||
currentRowArray[0]=tempVar[1];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for(j=0;j<groupNameArray.length;j++){
|
||||
if(currentRowArray[j]==groupNameArray[j]){
|
||||
sw=true;
|
||||
}else{
|
||||
sw=false;
|
||||
}
|
||||
}
|
||||
|
||||
//alert(sw);
|
||||
if(sw){
|
||||
if (rows[i].style.display == '') {
|
||||
rows[i].style.display = 'none';
|
||||
imgicon.src="/images/plus_red.gif";
|
||||
}else{
|
||||
rows[i].style.display = '';
|
||||
imgicon.src="/images/minus.gif";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<!-- END IGNORE -->
|
||||
@@ -24,9 +24,6 @@
|
||||
<tr>
|
||||
<td valign='top'>
|
||||
<table cellspacing="0" cellpadding="0" border="0" width="95%">
|
||||
<tr>
|
||||
<td align="left" valign="baseline"> {$form.CheckboxSelectAll} <span id="AgeLabel"><span> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<span id="spanUsers" />
|
||||
|
||||
@@ -23,12 +23,9 @@
|
||||
<en>Cancel</en>
|
||||
</BTN_CANCEL>
|
||||
|
||||
<CheckboxSelectAll type="Checkbox">
|
||||
<en></en>
|
||||
</CheckboxSelectAll>
|
||||
|
||||
<JS type="javascript"><![CDATA[
|
||||
getField('CheckboxSelectAll').style.visibility = 'hidden';
|
||||
|
||||
getField('btnImport').style.visibility = 'hidden';
|
||||
|
||||
function disableEnterKey(e)
|
||||
{
|
||||
@@ -52,18 +49,15 @@ function disableEnterKey(e)
|
||||
}
|
||||
}
|
||||
|
||||
getField('btnImport').style.visibility = 'hidden';
|
||||
var searchUsers = function() {
|
||||
var oRPC = new leimnud.module.rpc.xmlhttp({
|
||||
url : 'authSources_Ajax',
|
||||
args: 'action=searchUsers&sUID=' + getField('AUTH_SOURCE_UID').value + '&sKeyword=' + getField('KEYWORD').value
|
||||
args : 'action=searchUsers&sUID=' + getField('AUTH_SOURCE_UID').value + "&sKeyword=" + getField('KEYWORD').value
|
||||
});
|
||||
oRPC.callback = function(rpc){
|
||||
document.getElementById('spanUsers').innerHTML = rpc.xmlhttp.responseText;
|
||||
if (document.getElementById('aUsers[0]')) {
|
||||
getField('btnImport').style.visibility = 'visible';
|
||||
getField('CheckboxSelectAll').style.visibility = 'visible';
|
||||
document.getElementById("AgeLabel").innerHTML = '[SELECT-ALL]';
|
||||
}
|
||||
else {
|
||||
getField('btnImport').style.visibility = 'hidden';
|
||||
@@ -94,15 +88,6 @@ var importUsers = function(oForm) {
|
||||
}
|
||||
};
|
||||
|
||||
var selectAll = function(bChecked) {
|
||||
var oAux;
|
||||
var i = 0;
|
||||
while (oAux = document.getElementById('aUsers[' + i + ']')) {
|
||||
oAux.checked = true;
|
||||
i++;
|
||||
}
|
||||
};
|
||||
|
||||
function cancel(){
|
||||
window.location = 'authSources_List';
|
||||
}
|
||||
@@ -110,26 +95,6 @@ function cancel(){
|
||||
leimnud.event.add(getField('KEYWORD'), 'keypress', function(event) {
|
||||
return disableEnterKey(event);
|
||||
});
|
||||
leimnud.event.add(getField('CheckboxSelectAll'), 'click', function() {
|
||||
var oAux;
|
||||
var i = 0;
|
||||
if (document.getElementById('form[CheckboxSelectAll]').checked)
|
||||
{
|
||||
document.getElementById("AgeLabel").innerHTML = '[DESELECT-ALL]';
|
||||
while (oAux = document.getElementById('aUsers[' + i + ']')) {
|
||||
oAux.checked = true;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById("AgeLabel").innerHTML = '[SELECT-ALL]';
|
||||
while (oAux = document.getElementById('aUsers[' + i + ']')) {
|
||||
oAux.checked = false;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
]]></JS>
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<dynaForm width="90%" rowsPerPage="1000">
|
||||
<dynaForm menu="authSources/authSources_SearchUsersMenu" width="90%" rowsPerPage="1000">
|
||||
|
||||
<Checkbox type="text" titleAlign="center" align="left" enableHtml="1" onclick="return false;">
|
||||
<Checkbox type="text" titleAlign="center" align="left" colWidth="20%" enableHtml="1" onclick="return false;">
|
||||
<en><![CDATA[<span id="spanSelectAll"></span>]]></en>
|
||||
</Checkbox>
|
||||
|
||||
<FullName type="text" colWidth="20%" titleAlign="center" align="left">
|
||||
<FullName type="text" colWidth="15%" titleAlign="center" align="left">
|
||||
<en>Name</en>
|
||||
</FullName>
|
||||
|
||||
<Email type="text" colWidth="20%" titleAlign="center" align="left">
|
||||
<Email type="text" colWidth="15%" titleAlign="center" align="left">
|
||||
<en><![CDATA[<span style="width:40px; display:block;">E-Mail</span>]]></en>
|
||||
</Email>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user