Hallo,
ich hätte da eine kleine Anmerkung bzw. eine Frage.
Da man ja das Problem mit dem Frontendzugriff nur über das Anlegen von Benutzern lösen kann, kann es durchaus bei großen Projekten bis zu 3000 Mitglieder geben, die dort angelegt werden müssen. Gibt es die Möglichkeit diese Benutzer im Menüpunkt limitiert anzeigen zu lassen. Beispielsweise in 100ter Schritten, so wie es bei dem Newsletter auch ist.
Ist dies schon der Fall, oder muss die Sache noch entwickelt werden, oder kann ich es mir nachträglich noch einbauen. Contenido hat nämlcih so seine Schwierigkeiten bei ca. 2000 Benutzer alle links anzuzeigen.
kiyoku
limitierte Anzeige von Benutzern
Für die V4.4.4 könntest Du so etwas entwickeln, in der V4.5 wurde der Bereich stark überarbeitet - er enthält eine Suchfunktion aber (noch) keine Blätterfunktion.
Im Rahmen der Newsletter-Überarbeitung ist das Blättern auch im Newsletter-Bereich (für V4.5) flöten gegangen - ich wollte es mir aber nochmal ansehen, aber das dauert sicher eine ganze Weile, bis da was (von mir) kommt.
Gruß
HerrB
Im Rahmen der Newsletter-Überarbeitung ist das Blättern auch im Newsletter-Bereich (für V4.5) flöten gegangen - ich wollte es mir aber nochmal ansehen, aber das dauert sicher eine ganze Weile, bis da was (von mir) kommt.
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
o.k., ich habe mich mal an die Arbeit gemacht und eine limitierte Anzeige der Benutzer möglich gemacht.
Folgende Schritte sind zu durchlaufen:
1. die Datei "contenido\templates\standard\template.rights_menu.html" ist folgendermaßen anzupassen.
Einfach den folgenen Code unter var sid = "{SID}"; einfügen
Weiter unten in der Tabelle müssen folgende Zeilen noch eingefügt werden
2. die Datei "contenido\includes\include.rights_menu.php" ist folgendermaßen anzupassen.
Einfach den folgenden Code
durch folgenden Code ersetzen
Die beiden Dateien einfach mit einem FTP-Programm wieder auf den Server spielen und schon sollte es funktionieren.
Eine Sache sei noch angemerkt. Der folgende Code wurde von mir nicht beachtet und einfach gelöscht.
Ich weiß nicht vorauf sich das $restriction bezieht und für was es wichtig ist. Es funktioniert aber auch so.
So ich hoffe, ich habe nichts vergessen.
Ich stehe aber bei Problemchen gerne zur Verfügung.
Viel Spaß damit.
kiyoku
Folgende Schritte sind zu durchlaufen:
1. die Datei "contenido\templates\standard\template.rights_menu.html" ist folgendermaßen anzupassen.
Einfach den folgenen Code unter var sid = "{SID}"; einfügen
Code: Alles auswählen
function userChangeLimit()
{
var element = document.getElementsByTagName("SELECT");
url = "";
url += "main.php?area=user";
url += "&frame=2";
url += "&limit="+element[0].value;
url += "&usersStart={USERSSTART}";
url += "&contenido=" + sid;
parent.frames["left_bottom"].location.href = url;
}
function userStartSearch()
{
var element = document.getElementsByTagName("INPUT");
url = "";
url += "main.php?area=user";
url += "&frame=2";
url += "&limit={LIMITTO}";
url += "&search="+element[0].value;
url += "&usersStart={USERSSTART}";
url += "&contenido=" + sid;
parent.frames["left_bottom"].location.href = url;
}
Code: Alles auswählen
<tr>
<td colspan="2">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td align="left"><img src="images/spacer.gif" width="20" height="10">{LEFT}</td>
<td align="center" class="text_medium">{PAGESPEC}</td>
<td align="right">{RIGHT}<img src="images/spacer.gif" width="20" height="10"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
<tr>
<td style="padding-left: 4px;" align="left" colspan="2">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="text_medium">i18n("Limit"):</td>
<td colspan="2" class="text_medium">{LIMIT}</td>
</tr>
<tr>
<td class="text_medium">i18n("Search"):</td>
<td class="text_medium">{SEARCH}</td>
<td class="text_medium" valign="center"><img src="images/spacer.gif" width="2">{SEARCHSUBMIT}</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
Einfach den folgenden Code
Code: Alles auswählen
$sql = "SELECT
username, realname, user_id, perms
FROM
".$cfg["tab"]["phplib_auth_user_md5"]."
ORDER BY
username ASC";
if ($restriction == 1)
{
$sql = "SELECT
A.username AS username, A.realname AS realname, A.user_id as user_id, A.perms as perms
FROM
".$cfg["tab"]["phplib_auth_user_md5"]." AS A,
".$cfg["tab"]["rights"]." AS B,
".$cfg["tab"]["actions"]." AS C
WHERE
C.name = 'front_allow' AND
B.user_id = A.user_id AND
C.idaction = B.idaction AND
A.perms LIKE ''
GROUP BY
user_id
ORDER BY
username ASC";
}
if ($restriction == 3)
{
$sql = "SELECT
A.username AS username, A.realname AS realname, A.user_id as user_id, A.perms as perms
FROM
".$cfg["tab"]["phplib_auth_user_md5"]." AS A,
".$cfg["tab"]["rights"]." AS B,
".$cfg["tab"]["actions"]." AS C
WHERE
C.name NOT LIKE 'front_allow' AND
B.user_id = A.user_id AND
C.idaction = B.idaction AND
A.perms NOT LIKE ''
GROUP BY
user_id
ORDER BY
username ASC";
}
$db->query($sql);
// Empty Row
$bgcolor = '#FFFFFF';
$tpl->set('s', 'PADDING_LEFT', '10');
$thisperm = split(",", $auth->auth["perm"]);
$accessibleClients = $classclient->getAccessibleClients();
while ($db->next_record())
{
$userperm = split(",", $db->f("perms"));
$allow = false;
Code: Alles auswählen
$tpl->set('s', 'USERSSTART',$usersStart);
if (is_string($search) && strlen($search) > 0)
{
$search = urlencode($search); /* HerrB: urlencode ergänzt*/
$limitSQL = "AND name LIKE '%$search%' OR email LIKE '%$search%' ";
} else {
$limitSQL = "";
}
$sql = "SELECT
COUNT(*)
FROM
".$cfg["tab"]["phplib_auth_user_md5"]."
ORDER BY
username ASC
$limitSQL";
$db->query($sql);
if ($db->next_record())
{
$numUsers = $db->f("COUNT(*)");
} else {
$numUsers = 0;
}
if (!is_numeric($limit) || $limit == 0)
{
$limit = 20;
}
$tpl->set('s', 'LIMITTO', $limit);
$howManyUsers = $limit;
if ($usersStart > $numUsers)
{
$usersStart = $numUsers-$howManyUsers;
}
if ($usersStart < 0)
{
$usersStart = 0;
}
$limitOptions = array(
10 => "10",
20 => "20",
50 => "50",
100 => "100");
$tpl2 = new Template;
$tpl2->set('s', 'NAME', 'limit');
$tpl2->set('s', 'CLASS', 'text_medium');
$tpl2->set('s', 'ID', 'limit');
$tpl2->set('s', 'OPTIONS', "onChange='userChangeLimit()'");
foreach ($limitOptions as $key => $value)
{
if ($key == $limit)
{
$selected = "SELECTED";
} else {
$selected = "";
}
$tpl2->set('d', 'VALUE', $key);
$tpl2->set('d', 'CAPTION', $value);
$tpl2->set('d', 'SELECTED', $selected);
$tpl2->next();
}
$select = $tpl2->generate($cfg["path"]["templates"]. $cfg["templates"]["generic_select"],true);
if ($usersStart > 0)
{
$left = '<a href="'.$sess->url("main.php?area=$area&frame=2&limit=$limit&usersStart=".($usersStart-$howManyUsers)).'"><img border="0" src="images/pfeil_links.gif"></a>';
} else {
$left = '<img src="images/spacer.gif" width="9" height=15">';
}
if (($usersStart + $howManyUsers) < $numUsers)
{
$right = '<a href="'.$sess->url("main.php?area=$area&frame=2&limit=$limit&usersStart=".($usersStart+$howManyUsers)).'"><img border="0" src="images/pfeil_rechts.gif"></a>';
} else {
$right = '<img src="images/spacer.gif" width="9" height=15">';
}
$tpl->set('s', 'LEFT', $left);
$tpl->set('s', 'RIGHT', $right);
$tpl->set('s', 'LIMIT', $select);
$pageCount = ceil($numUsers / $limit);
$currentPage = ceil($usersStart / $limit)+1;
if ($numUsers > 0)
{
$tpl->set('s', 'PAGESPEC', i18n("Page") .' '. $currentPage .' / '.$pageCount);
} else {
$tpl->set('s', 'PAGESPEC', i18n("No results"));
}
$tpl->set('s', 'SEARCH', '<input type="text" name="search" class="text_medium" maxlen="256" size="16">');
$tpl->set('s', 'SEARCHSUBMIT', '<input type="image" onclick="userStartSearch()" src="images/submit.gif" alt="'.i18n("Start search").'" title="'.i18n("Start search").'">');
$sql = "SELECT
username, realname, user_id, perms
FROM
".$cfg["tab"]["phplib_auth_user_md5"]."
ORDER BY
username ASC
$limitSQL";
$db->query($sql);
// Empty Row
$bgcolor = '#FFFFFF';
$tpl->set('s', 'PADDING_LEFT', '10');
$thisperm = split(",", $auth->auth["perm"]);
if ($numUsers > 0)
{
$db->seek($usersStart);
}
$userCount = 0;
$accessibleClients = $classclient->getAccessibleClients();
while ($db->next_record())
{
$userCount++;
if ($userCount > $howManyUsers)
{
break;
}
$userperm = split(",", $db->f("perms"));
$allow = false;
Eine Sache sei noch angemerkt. Der folgende Code wurde von mir nicht beachtet und einfach gelöscht.
Code: Alles auswählen
if ($restriction == 1)
{
$sql = "SELECT
A.username AS username, A.realname AS realname, A.user_id as user_id, A.perms as perms
FROM
".$cfg["tab"]["phplib_auth_user_md5"]." AS A,
".$cfg["tab"]["rights"]." AS B,
".$cfg["tab"]["actions"]." AS C
WHERE
C.name = 'front_allow' AND
B.user_id = A.user_id AND
C.idaction = B.idaction AND
A.perms LIKE ''
GROUP BY
user_id
ORDER BY
username ASC";
}
if ($restriction == 3)
{
$sql = "SELECT
A.username AS username, A.realname AS realname, A.user_id as user_id, A.perms as perms
FROM
".$cfg["tab"]["phplib_auth_user_md5"]." AS A,
".$cfg["tab"]["rights"]." AS B,
".$cfg["tab"]["actions"]." AS C
WHERE
C.name NOT LIKE 'front_allow' AND
B.user_id = A.user_id AND
C.idaction = B.idaction AND
A.perms NOT LIKE ''
GROUP BY
user_id
ORDER BY
username ASC";
}
So ich hoffe, ich habe nichts vergessen.
Ich stehe aber bei Problemchen gerne zur Verfügung.
Viel Spaß damit.
kiyoku
Das ist für Version 4.4.4, richtig?
Gruß
HerrB
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net