Zum Inhalt springen

newloginbox userdetails als datensatz einfügen

Erstellt am 4. Februar 2007 · 2 Antworten · letzte Antwort am 8. Februar 2007

Tags: Frontend-Benutzer, Frage

Unbekannter Benutzer ·

Hallo,
um die Verwantwortlichen Persohnen eines bestimmten Bereichs vorzustellen, möchte ich deren Userdetails untereinander anzeigen. Klar könnte ich dies einfach mit einem content element (z.B. text) erledigen, doch da ich eh newloginbox verwende und diese extension userdetails anzeigen kann, wollte ich eben diese userdetails als content einbinden.
Gibt es dazu eine Lösung?
Vielen Dank,
MArkus

Unbekannter Benutzer · · Beste Antwort

Hallo,
was ich zumindest lösen konnte, war newloginbox so zu bearbeiten, dass die Userliste in Abhänbgigkeit der Benutzergruppe dargestellt wird. Den php Quellcode habe ich irgendwo (wo weis ich net mehr) gefunden und noch etwas verändert. Bearbeiten muss man die class.tx_newloginbox_pi3.php so ab zeile 160:

// Get number of records:
                        $query = $this->pi_list_query('fe_users', 1, 'AND fe_users.usergroup = 1');
                        debug($query);

                        $res = $GLOBALS['TYPO3_DB']->sql_query($query);
                        if ($GLOBALS['TYPO3_DB']->sql_error()) {
                          t3lib_div::debug(array($GLOBALS['TYPO3_DB']->sql_error(), $query));
                          }

                        list($this->internal['res_count']) = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);

                        // Make listing query, pass query to MySQL:
                        $msw = $lConf['msw_gruppe'];
                        $query = $this->pi_list_query('fe_users', 0, 'AND concat(concat(\',\',fe_users.usergroup),\',\') LIKE \'%,'.$msw.',%\'');

In TypoScript kann man nun angeben, welche Gruppe aufgezählten werden soll:

[globalVar = TSFE:id=13]
plugin.tx_newloginbox_pi3.listView.msw_gruppe = 3
[global]

In Zeile 1 gibt man an auf welcher seite die in zeile 2 angegebene Gruppe gelistet werden soll. Auf der entsprechenden Seite ist natürlich auch die extension einzubinden.
Nicht gelöst habe ich allerdings das Problem der einzelnen Darstellung der Userdetails, aber dazu habe ich TS Anföngerforum noch eine Frage gestellt...
Lg,
markus

Unbekannter Benutzer ·

hab das ganze über eine Bearbeitung der extension gelöst:

flexform_ds_pi3.xml ergänzen:

	      <field_groupuid>
			<tceforms>
				<label>LLL:EXT:newloginbox/locallang_db.php:tt_content.pi_flexform.field_groupuid</label>
				<config>
				<type>input</type>
					<size>3</size>
				</config>
			</tceforms>
	      </field_groupuid>

class.tx_newloginbox_pi3.php so ab zeile 160 ergänzen (hab noch etwas mehr code hier gepostet, damit man genau sieht wo):

// Initializing the query parameters:
				list($this->internal['orderBy'], $this->internal['descFlag']) = explode(':', $this->piVars['sort']);
				$this->internal['results_at_a_time'] = t3lib_div::intInRange($lConf['results_at_a_time'], 0, 1000, 3); // Number of results to show in a listing.
				$this->internal['maxPages'] = t3lib_div::intInRange($lConf['maxPages'], 0, 1000, 2); // The maximum number of "pages" in the browse-box: "Page 1", 'Page 2', etc.
				$this->internal['searchFieldList'] = 'username,name,email,country,city,zip,telephone,address,title';
				$this->internal['orderByList'] = 'username,name,email,country,city,zip';
//bearbeitet BEGIN von Markus Schmitz-Weckauf 8.2.2007
			$uid = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'field_groupuid');        
			if ($uid <> '') {
				// Get number of records:
				$query = $this->pi_list_query('fe_users', 1, 'AND fe_users.usergroup = 1');
				$res = $GLOBALS['TYPO3_DB']->sql_query($query);
                        		if ($GLOBALS['TYPO3_DB']->sql_error()) {
                          			t3lib_div::debug(array($GLOBALS['TYPO3_DB']->sql_error(), $query));
                          		}
				list($this->internal['res_count']) = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
	
				// Make listing query, pass query to MySQL:
				$query = $this->pi_list_query('fe_users', 0, 'AND concat(concat(\',\',fe_users.usergroup),\',\') LIKE \'%,'.$uid.',%\'');

                        	}
			// Der else Teil entspricht dem original
                        	else {
				// Get number of records:
				$query = $this->pi_list_query('fe_users',1);
				$res = mysql(TYPO3_db,$query);
				if (mysql_error())	debug(array(mysql_error(),$query));
				list($this->internal['res_count']) = mysql_fetch_row($res);

				// Make listing query, pass query to MySQL:
				$query = $this->pi_list_query('fe_users');
			}
// bearbeitet ENDE
				$res = $GLOBALS['TYPO3_DB']->sql_query($query);
				if ($GLOBALS['TYPO3_DB']->sql_error()) {
					t3lib_div::debug(array($GLOBALS['TYPO3_DB']->sql_error(), $query));
				}
				$this->internal['currentTable'] = 'fe_users';

				// Put the whole list together:
				$fullTable = ''; // Clear var;

Der Teil zw. den beien Kommentaren von mir ist wichtig.
Im Backend kann man nun die uid der zu listenden gruppe angeben und dann werden nur mitglieder dieser Gruppe angezeigt. Gibt man nichts an, bleibt alles wie beim alten...
natürlich muss man noch in der locallang_db.php einen eintrag machen, dazu folge dem link unten.
LG,
Markus

PS: eventuell auch hier schauen (userdetails direkt anzeigen):
#57437