Listen Layout und Zugriff von Gästen

Hast du Probleme Admidio einzurichten? Hier kannst du Fragen rund um die Einrichtung stellen.
Antworten
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Listen Layout und Zugriff von Gästen

Beitrag von ise »

Hallo,
Ich hab mal ne Frage zu den Listen. Die werden bei mir gar nicht in meinem Layout angepasst. Das heisst der Hintergrund und die Farbe werden vom CSS übernommen, doch es sieht aus, als würden die folgenden Teile fehlen würden:

Code: Alles auswählen

require(THEME_SERVER_PATH. '/overall_header.php');
require(THEME_SERVER_PATH. '/overall_footer.php');
Ich hab nun diese beiden Codes in das file lists_show.php eingefügt, die require(THEME_SERVER_PATH. '/overall_header.php'); wird akzeptiert und die Liste wird auch schön im Design angezeigt, doch der overall_footer.php wird nicht angewendet. So wie ich den Code verstehe, sollten diese ja auch bereits verwendet werden (sind ja in einer IF Schlaufe vorhanden).
Hat jemand anderes auch dieses Problem?

Die andere Frage ist: Ich möchte meine eigene Liste auch für Gäste meiner Seite zur Verfügung stellen. Die Mitgliederliste der Rollen können ja nur niemand, nur Rollenmitglied oder allen angemeldeten Benutzern angezeigt werden. Wenn ich beim Listen erstellen auf das "Für alle Benutzer" Icon klicke, hab ich als Gast jedoch immer noch nicht die Möglichkeit, die Liste anzusehen. Woran liegt das? Gibt es eine Möglichkeit, diese zu umgehen? Wenn ich require('../../system/login_valid.php'); auskommentiere, erhalte ich einen SQL error.

Vielen Dank für eure Hilfe!
Happy new Year aus Südafrika!
Gruss
Ise
Benutzeravatar
fasse
Administrator
Beiträge: 6229
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Ise,

wir hatten die Layoutdateien bei den Listen absichtlich herausgenommen, da Listen meistens viele Spalten beinhalten und so meist das Layout der Seite gesprengt haben. Ggf. kann man bei wenigen Spalten diese Dateien automatisch wieder einbinden lassen, dass müssen wir mal für die nächste Version überlegen. Der Overall-Footer sollte aber genauso angewendet werden, wie der header. Evtl. hast du ihn an eine Stelle eingebaut, die nicht durchlaufen wird ?

Auch das auskommentieren von require('../../system/login_valid.php'); sollte so funktionieren, wie du es dir gedacht hast. Evtl. ein UTF8-Problem mit dem Editor ?

Gruß
Fasse
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Hallo Fasse,
Danke für deine rasche Antwort.
Sofern ich das require('../../system/login_valid.php'); auskommentiere, funktioniert es als eingeloggter User, als Gast erhalte ich aber folgende Fehlermeldung:

Code: Alles auswählen

Fehlermeldung

Du hast keine Rechte, diese Aktion auszuführen
Zurück Zurück

S Q L - E R R O R

CODE: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND rol_cat_id = cat_id AND cat_org_id =' at line 16

B A C K T R A C E

FILE: adm_program/system/db/mysql.php
LINE: 193
CALL: DB->db_error()

FILE: adm_program/system/db/mysql.php
LINE: 77
CALL: MySqlDB->db_error()

FILE: adm_program/modules/lists/lists_show.php
LINE: 168
CALL: MySqlDB->query()
Meine Idee ist, dass ich eine Leiterliste für all meine Mitglieder sowie Interessenten meines Vereins zur Verfügung stellen möchte. Da jedoch die Tabelle adm_user_data nicht wirklich übersichtlich dargestellt ist, möchte ich lieber das Listenmodul verwenden.
Gibts da keine einfache Lösung?

Gruss
Ise
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Im Bezug auf das Layout. In der lists_show.php Datei ist ja folgender Quellcode ab Zeile 838 vorhanden:

Code: Alles auswählen

 if($req_mode == 'print')
    {
        echo '</body></html>';
    }
    else
    {    
        echo '
        <ul class="iconTextLinkList">
            <li>
                <span class="iconTextLink">
                    <a href="'.$g_root_path.'/adm_program/system/back.php"><img 
                    src="'. THEME_PATH. '/icons/back.png" alt="Zurück" /></a>
                    <a href="'.$g_root_path.'/adm_program/system/back.php">Zurück</a>
                </span>
            </li>
        </ul>';
    
        require(THEME_SERVER_PATH. '/overall_footer.php');
    }
Von daher sollte der Footer ja eigendlich inbegriffen sein.

Dasselbe mit dem Header:

Code: Alles auswählen

// Html-Kopf wird geschrieben
    if($req_mode == 'print')
    {
    	...
    }
    else
    {
        ...
        require(THEME_SERVER_PATH. "/overall_header.php");
    }
Hab die IF Schlaufen genau angeschaut und an diversen Orten versucht den Footer zu plazieren, er wurde leider nie dargestellt. Test mit Safari und Firefox. Es ist kein UTF-8 Problem.

Gruss
Ise
Benutzeravatar
fasse
Administrator
Beiträge: 6229
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Ise,

Benutzerlisten für externe darzustellen, wird so einfach nicht möglich sein. Ich habe mir das jetzt noch einmal im Code angeschaut und dort noch ein paar Probleme behoben, weshalb es bei dir u.a. auch zu dem SQL-Fehler kommt. Dies wird dann in der 2.1.8 behoben sein. Allerdings kannst du dann immer noch nicht als externer auf die Listen zugreifen, da hier die Logik dann erst einmal bei der Rollenkonfiguration und der Listenanzeige eingebaut werden müsste.

Dies sollte aber nach meinen Änderungen kein großes Problem mehr sein, müsste aber noch gemacht werden und würde dann höchstwahrscheinlich erst in einer 2.2 kommen, welche aber noch dauert. Ein genaues Releasedatum gibt es für diese Version noch nicht.

Dein 2. Problem muss ich mir später mal anschauen.

Viele Grüße
Fasse
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Hallo Fasse,
Danke für deine Info.
Ich hab mir noch überlegt, eine eigene Webseite nur für diese Liste zusammen zu stellen, wobei der Benutzer nicht eingeloggt sein muss. Doch die Daten sind nicht wirklich schön in der Tabelle gespeichert, sodass sie nicht einfach auszulesen sind. Sie sind ja alle in derselben Spalte, ob Name, Vorname, Adresse oder Emailadresse. Wie kann ich mit PHP sauber in eine Tabelle einfügen? Ich werde mal was versuchen, doch wenn du da schon eine Vorlage IF Schlaufe hast, bin ich dir dankbar :)
Doch möcht ich eigendlich so viel Module wie möglich von Admidio übernehmen, sodass die Verwaltung zentral bleibt.

Vielen Dank für deine Bemühungen.

Gruss
Ise
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Hallo Fasse,
Also, ich hab da mal kurz was versucht:

Code: Alles auswählen

echo '<table border="1" width="100%"><tr><td>Name</td><td>Adresse</td><td>E-Mail senden</td><tr>';
$result = mysql_query("SELECT * FROM adm_user_data");

while($row = mysql_fetch_array($result))
  {
  $inhalt = utf8_encode($row['usd_value']);
  $id = $row['usd_usf_id'];
  $usr_id = $row['usd_usr_id'];
  if($id == 1){
  echo '<tr><td>'.$inhalt;
  }
  if ($id == 2){
  echo ' '.$inhalt.'</td>';
  }
  if ($id == 3){
  echo '<td>'.$inhalt;
  }
  if ($id == 4){
  echo ', '.$inhalt;
  }
  if ($id == 5){
  echo ' '.$inhalt.'</td>';
  }
  if ($id == 12){
  echo '<td>'.$inhalt.'</td></tr>';
  }
}
echo '</table>';
Wie kann ich nun bei dem Query nur die eine Rolle auslesen? Das ist ja in einer anderen Tabelle abgespeichert. Oder nach Nachname sortieren?

Irgendwie stimmt der Code noch nicht ganz, sobald ich die letzte Abfrage 12 mache, stimmt die Tabellenformatierung nicht mehr sauber.
http://www.jsmoeriken.ch/newpage/adm_pr ... rliste.php

Danke für deine Hilfe!
Gruss
Ise
Benutzeravatar
fasse
Administrator
Beiträge: 6229
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Ise,

um ein SQL-Statement für eine Liste zu bekommen, lässt du dir am Besten das Statement einer eigenen Liste ausgeben. Dazu ergänzt du in der Datei adm_program/modules/lists/lists_show.php so ca. Zeile 167 hinter folgendem Code

Code: Alles auswählen

$list = new ListConfiguration($g_db, $req_lst_id);
$main_sql = $list->getSQL($role_ids, $show_members);
folgende Zeile:

Code: Alles auswählen

echo $main_sql; exit();
Nun wird dir anstelle der eigenen Liste das SQL-Statement ausgegeben. Dieses kannst du dann als Vorlage nutzen.

Gruß
Fasse

PS: Die Zeile musst da dann natürlich wieder entfernen, um die Liste wieder vernünftig anzeigen lassen zu können.
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Hall Fasse,
Vielen Dank für deinen Tip!
Diese Ausgabe hilft mir leider wenig, da irgendwelche Alias verwendet wurden.

Code: Alles auswählen

LEFT JOIN adm_user_data row1id1 
ON row1id1.usd_usr_id = usr_id 
AND row1id1.usd_usf_id = 1 
LEFT JOIN adm_user_data row2id2 
ON row2id2.usd_usr_id = usr_id 
AND row2id2.usd_usf_id = 2 
LEFT JOIN adm_user_data row3id10 
ON row3id10.usd_usr_id = usr_id 
AND row3id10.usd_usf_id = 10 
LEFT JOIN adm_user_data row4id3 
ON row4id3.usd_usr_id = usr_id 
AND row4id3.usd_usf_id = 3 
LEFT JOIN adm_user_data row5id4 
ON row5id4.usd_usr_id = usr_id 
AND row5id4.usd_usf_id = 4 
LEFT JOIN adm_user_data row6id5 
ON row6id5.usd_usr_id = usr_id 
AND row6id5.usd_usf_id = 5 
WHERE rol_id IN (6) 
AND rol_cat_id = cat_id 
AND cat_org_id = 1 
AND mem_rol_id = rol_id 
AND mem_begin <= "2010-01-06" 
AND mem_end > "2010-01-06" 
AND mem_usr_id = usr_id 
AND usr_valid = 1 
ORDER BY mem_leader DESC , 
row1id1.usd_value ASC, 
row2id2.usd_value ASC
Diese row2id2 etc sind keine Spalten. Bei mir hat das Query nur "Array" ausgegeben.
Wie kann ich also nach Nachname sortieren? Das ist ja nicht eine eigene Spalte.

Gruss
Ise
Benutzeravatar
fasse
Administrator
Beiträge: 6229
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Ise,

du musst auch das komplette SQL-Statement nehmen und bei dir nutzen. Wenn du nur Teile daraus kopierst, dann funktioniert es nicht, da (wie du schon richtig geschrieben hast) es mit alias arbeitet, welche auch nötig sind.

Wenn du dann später mit mysql_fetch_array darauf zugreifst, dann musst du entweder mit den Namen, die im Select hinter AS stehen arbeiten oder du greifst mit $row[0], $row[1] .... auf die einzelnen Spalten aus dem select-Statement zu.

Gruß
Fasse
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Das hat so geklappt. Danke Fasse!
Hab die Werte anfangs falsch ausgelesen.

Vielen Dank für eure Hilfe!
Gruss
Ise
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Hallo Fasse,
Ein kleines Problem gibts noch. Um das Profilbild anzeigen zu können, muss der Benutzer eingeloggt sein. Kann man dies irgendwie umgehen, sodass Gäste mein Profilbild ebenfalls sehen kann? Es geht darum, dass ich dieses in eine seperate Liste einbaue.

Gruss
Ise

Edit: der CHMOD auf den entsprechenden Ordner ist auf 777
ise
Beiträge: 119
Registriert: 11. Sep 2009, 11:08
Wohnort: Schweiz

Beitrag von ise »

Habs gefunden. Im /modules/list/photo_show.php musste ich die Zeile 16 auskommentieren:

Code: Alles auswählen

require("../../system/login_valid.php");
Gruss
Ise
Antworten