Schnellnavigation:

Kategorien

« September 2018»
S M T W T F S
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

Letzte Nachrichten

DSGVO
26.05.2018 18:39
Trackingtools und Datenschutzerklärung
14.03.2014 23:07
1:n und n:1 Relationen in Extbase
06.12.2013 12:04
Erste Abmahnungen wegen Google Analytics
04.10.2013 12:11

Kopieren Sie diesen Link in Ihren RSS-Reader

RSS 0.91Nachrichten
RSS 2.0Nachrichten

In eigener Sache

Peter Linzenkirchner, Lisardo EDV Beratung in Augsburg. Freelance und Partner für Design- und Webagenturen in Augsburg und München. Pixelgenaue Templates, valides HTML, barrierearm. TYPO3-Projekte, Extension-Programmierung und mehr ... 

Zur Zeit wird gefiltert nach: frontend
Filter zurücksetzen

Über GLOBALS[‘TSFE’]->fe_user kann man sich die gesamte Konfiguration der Frontenduser ausgeben lassen:

  1. $GLOBALS['TYPO3_DB']->debugOutput=true;
  2. echot3lib_div::debug($GLOBALS['TSFE']->fe_user);

Ergebnis:

  1. tslib_feuserauth Object
  2. (
  3.     [global_database]=>
  4.     [session_table]=>fe_sessions
  5.     [name]=>fe_typo_user
  6.     [get_name]=>ftu
  7.     [user_table]=>fe_users
  8.     [username_column]=>username
  9.     [userident_column]=>password
  10.     [userid_column]=>uid
  11.     [lastLogin_column]=>lastlogin
  12.     [enablecolumns]=> Array
  13.         (
  14.             [deleted]=>deleted
  15.             [disabled]=>disable
  16.             [starttime]=>starttime
  17.             [endtime]=>endtime
  18.         )
  19.  
  20.     [formfield_uname]=>user
  21.     [formfield_uident]=>pass
  22.     [formfield_chalvalue]=>challenge
  23.     [formfield_status]=>logintype
  24.     [security_level]=>normal
  25.     [auth_include]=>
  26.     [auth_timeout_field]=>6000
  27.     [lifetime]=>0
  28.     [gc_time]=>6000
  29.     [gc_probability]=>1
  30.     [writeStdLog]=>
  31.     [writeAttemptLog]=>
  32.     [sendNoCacheHeaders]=>0
  33.     [getFallBack]=>1
  34.     [hash_length]=>10
  35.     [getMethodEnabled]=>1
  36.     [lockIP]=>2
  37.     [lockHashKeyWords]=>useragent
  38.     [warningEmail]=>
  39.     [warningPeriod]=>3600
  40.     [warningMax]=>3
  41.     [checkPid]=>1
  42.     [checkPid_value]=>0
  43.     [id]=>ed2f34eb0c
  44.     [cookieId]=>ed2f34eb0c
  45.     [loginFailure]=>
  46.     [loginSessionStarted]=>
  47.     [get_URL_ID]=>
  48.     [newSessionID]=>
  49.     [forceSetCookie]=>
  50.     [dontSetCookie]=>
  51.     [challengeStoredInCookie]=>
  52.     [loginType]=>FE
  53.     [svConfig]=>
  54.     [writeDevLog]=>
  55.     [formfield_permanent]=>permalogin
  56.     [usergroup_column]=>usergroup
  57.     [usergroup_table]=>fe_groups
  58.     [groupData]=> Array
  59.         (
  60.             [title]=> Array
  61.                 (
  62.                 )
  63.  
  64.             [uid]=> Array
  65.                 (
  66.                 )
  67.  
  68.             [pid]=> Array
  69.                 (
  70.                 )
  71.  
  72.         )
  73.  
  74.     [TSdataArray]=> Array
  75.         (
  76.             [0]=>
  77.         )
  78.  
  79.     [userTS]=> Array
  80.         (
  81.         )
  82.  
  83.     [userTSUpdated]=>0
  84.     [showHiddenRecords]=>0
  85.     [sesData]=> Array
  86.         (
  87.             [th_mailformplus17]=>
  88.         )
  89.  
  90.     [sesData_change]=>0
  91.     [userData_change]=>0
  92.     [is_permanent]=>1
  93.     [user]=>
  94. )
  95. </pre>|</b><b>|Object:<pre>tslib_feuserauth Object
  96. (
  97.     [global_database]=>
  98.     [session_table]=>fe_sessions
  99.     [name]=>fe_typo_user
  100.     [get_name]=>ftu
  101.     [user_table]=>fe_users
  102.     [username_column]=>username
  103.     [userident_column]=>password
  104.     [userid_column]=>uid
  105.     [lastLogin_column]=>lastlogin
  106.     [enablecolumns]=> Array
  107.         (
  108.             [deleted]=>deleted
  109.             [disabled]=>disable
  110.             [starttime]=>starttime
  111.             [endtime]=>endtime
  112.         )
  113.  
  114.     [formfield_uname]=>user
  115.     [formfield_uident]=>pass
  116.     [formfield_chalvalue]=>challenge
  117.     [formfield_status]=>logintype
  118.     [security_level]=>normal
  119.     [auth_include]=>
  120.     [auth_timeout_field]=>6000
  121.     [lifetime]=>0
  122.     [gc_time]=>6000
  123.     [gc_probability]=>1
  124.     [writeStdLog]=>
  125.     [writeAttemptLog]=>
  126.     [sendNoCacheHeaders]=>0
  127.     [getFallBack]=>1
  128.     [hash_length]=>10
  129.     [getMethodEnabled]=>1
  130.     [lockIP]=>2
  131.     [lockHashKeyWords]=>useragent
  132.     [warningEmail]=>
  133.     [warningPeriod]=>3600
  134.     [warningMax]=>3
  135.     [checkPid]=>1
  136.     [checkPid_value]=>0
  137.     [id]=>ed2f34eb0c
  138.     [cookieId]=>ed2f34eb0c
  139.     [loginFailure]=>
  140.     [loginSessionStarted]=>
  141.     [get_URL_ID]=>
  142.     [newSessionID]=>
  143.     [forceSetCookie]=>
  144.     [dontSetCookie]=>
  145.     [challengeStoredInCookie]=>
  146.     [loginType]=>FE
  147.     [svConfig]=>
  148.     [writeDevLog]=>
  149.     [formfield_permanent]=>permalogin
  150.     [usergroup_column]=>usergroup
  151.     [usergroup_table]=>fe_groups
  152.     [groupData]=> Array
  153.         (
  154.             [title]=> Array
  155.                 (
  156.                 )
  157.  
  158.             [uid]=> Array
  159.                 (
  160.                 )
  161.  
  162.             [pid]=> Array
  163.                 (
  164.                 )
  165.  
  166.         )
  167.  
  168.     [TSdataArray]=> Array
  169.         (
  170.             [0]=>
  171.         )
  172.  
  173.     [userTS]=> Array
  174.         (
  175.         )
  176.  
  177.     [userTSUpdated]=>0
  178.     [showHiddenRecords]=>0
  179.     [sesData]=> Array
  180.         (
  181.             [th_mailformplus17]=>
  182.         )
  183.  
  184.     [sesData_change]=>0
  185.     [userData_change]=>0
  186.     [is_permanent]=>1
  187.     [user]=>
  188. )
  189. </pre>|</b><b>|Object:<pre>tslib_feuserauth Object
  190. (
  191.     [global_database]=>
  192.     [session_table]=>fe_sessions
  193.     [name]=>fe_typo_user
  194.     [get_name]=>ftu
  195.     [user_table]=>fe_users
  196.     [username_column]=>username
  197.     [userident_column]=>password
  198.     [userid_column]=>uid
  199.     [lastLogin_column]=>lastlogin
  200.     [enablecolumns]=> Array
  201.         (
  202.             [deleted]=>deleted
  203.             [disabled]=>disable
  204.             [starttime]=>starttime
  205.             [endtime]=>endtime
  206.         )
  207.  
  208.     [formfield_uname]=>user
  209.     [formfield_uident]=>pass
  210.     [formfield_chalvalue]=>challenge
  211.     [formfield_status]=>logintype
  212.     [security_level]=>normal
  213.     [auth_include]=>
  214.     [auth_timeout_field]=>6000
  215.     [lifetime]=>0
  216.     [gc_time]=>6000
  217.     [gc_probability]=>1
  218.     [writeStdLog]=>
  219.     [writeAttemptLog]=>
  220.     [sendNoCacheHeaders]=>0
  221.     [getFallBack]=>1
  222.     [hash_length]=>10
  223.     [getMethodEnabled]=>1
  224.     [lockIP]=>2
  225.     [lockHashKeyWords]=>useragent
  226.     [warningEmail]=>
  227.     [warningPeriod]=>3600
  228.     [warningMax]=>3
  229.     [checkPid]=>1
  230.     [checkPid_value]=>0
  231.     [id]=>ed2f34eb0c
  232.     [cookieId]=>ed2f34eb0c
  233.     [loginFailure]=>
  234.     [loginSessionStarted]=>
  235.     [get_URL_ID]=>
  236.     [newSessionID]=>
  237.     [forceSetCookie]=>
  238.     [dontSetCookie]=>
  239.     [challengeStoredInCookie]=>
  240.     [loginType]=>FE
  241.     [svConfig]=>
  242.     [writeDevLog]=>
  243.     [formfield_permanent]=>permalogin
  244.     [usergroup_column]=>usergroup
  245.     [usergroup_table]=>fe_groups
  246.     [groupData]=> Array
  247.         (
  248.             [title]=> Array
  249.                 (
  250.                 )
  251.  
  252.             [uid]=> Array
  253.                 (
  254.                 )
  255.  
  256.             [pid]=> Array
  257.                 (
  258.                 )
  259.  
  260.         )
  261.  
  262.     [TSdataArray]=> Array
  263.         (
  264.             [0]=>
  265.         )
  266.  
  267.     [userTS]=> Array
  268.         (
  269.         )
  270.  
  271.     [userTSUpdated]=>0
  272.     [showHiddenRecords]=>0
  273.     [sesData]=> Array
  274.         (
  275.             [th_mailformplus17]=>
  276.         )
  277.  
  278.     [sesData_change]=>0
  279.     [userData_change]=>0
  280.     [is_permanent]=>1
  281.     [user]=>
  282. <p>)</p>

Dabei werden die Daten des eingeloggten Benutzers und seiner Benutzergruppe ausgegeben. Damit kann einfach überprüft werden, ob es sich um einen gültigen Benutzer handelt und ob er der richtigen Gruppe angehört.

31August2010

Frontend Editing

Ausgehend von einem Artikel bei expertinnen-web.de habe ich mal versucht, das Frontend-Editing in einem meiner Projekte zu implementieren. Dabei hat sich schnell herausgestellt, dass man ein paar Schritte anders machen muss, wenn TemplaVoila anstatt Automake-Template verwendet wird.

Zuerst gehe ich ähnlich vor und erstelle die verschiedenen User und Gruppen:

User und Gruppen incl. User-TSconfig

Zunächst der normale Weg im Backend: Ich richte eine Backend-Gruppe namens “redaktion” ein und lege alle Rechte fest, die diese Gruppe haben soll. Dabei regle ich wie üblich über die Option “Zugriff” in der “Web”-Palette welche Rechte diese Gruppe bei einzelnen Seiten haben soll (lesen, editieren, löschen, neue Seiten anlegen etc. )

Über das Seiten-TSconfig (der root-Seite) lege ich fest, welche Rechte neu erstellte Seiten bekommen:

  1. # Eigentuemer
  2. TCEMAIN.permissions.userid = 5
  3. # Gruppe immer Redaktion:
  4. TCEMAIN.permissions.groupid = 1
  5. # Gruppe bekommt immer alle Rechte
  6. TCEMAIN.permissions.group = 31

Dadurch vermeide ich, dass die Mitglieder der Gruppe “redaktion” Seiten, die von einem Admin erstellt wurden, nicht sehen oder nicht bearbeiten können. Ob man das so haben will, muss man natürlich von Fall zu Fall entscheiden.

Die Gruppe “redaktion” bekommt nun ein User-TSconfig:

  1. admPanel {
  2.   #Frontend-Editieren generell freigeben, sowohl editieren wie Vorschau
  3.   enable.edit=1
  4.   enable.preview=1
  5.     #Buttons abhängig vom Admin-Panel - also umschaltbar
  6.   override.edit.displayIcons=0
  7.   override.preview.showHiddenPages=0
  8.   #Admin-Panel einschalten
  9.   hide=0
  10. }

Damit bekommt die Gruppe ein Adminpanel zu sehen, das aber nur eingeschränkte Möglichkeiten bietet. (Ich gehe hier einen anderen Weg als expertinnen-web.de: ich möchte, dass das Admin-Panel mit den Vorschaumöglichkeiten zur Verfügung steht.

Natürlich muss man im Haupt-Typoscript-Template das Frontendediting noch generell freischalten:

  1. page.config.admPanel = 1

Danach lege ich einen oder mehrere Backend-User an und weise ihnen die Gruppe “redaktion” zu.

Frontend-User und Backend-User zusammenbringen

Das geschieht über die Extension simulatebe. Die Extension zunächst installieren und danach in headerData einbinden:

  1. page.headerData.99 < plugin.tx_simulatebe_pi1

Da ich YAML verwende, sieht es bei mir so aus:

  1. temp.buildHeaderData {
  2.   10=TEXT
  3.   10.value= <link href="fileadmin/css/
  4.   20 = USER
  5.   20.userFunc = tx_flexformgetconstant_pi1->main
  6.   20.field = cssfile
  7.   30 = TEXT
  8.   30.value = "rel="stylesheet"type="text/css"/>
  9.   40=TEXT
  10.   40.value= <!--[if lte IE 7]>
  11.   50=TEXT
  12.   50.value= <link href="fileadmin/css/patches/
  13.   60 = USER
  14.   60.userFunc = tx_flexformgetconstant_pi1->main
  15.   60.field = iehacks
  16.   70 = TEXT
  17.   70.value = "rel="stylesheet"type="text/css"/>
  18.   80=TEXT
  19.   80.value= <![endif]-->
  20.  
  21.   99<plugin.tx_simulatebe_pi1
  22. }

Danach die passenden Frontend-User anlegen und über das neue Feld “Related Backend User” mit den passenden Backend-Usern verbinden. Jetzt können sich die Frontend-User als Backend-User über das Frontend-Login einloggen.

Einbau der Edit-Panels in eine TemplaVoila-Seite

Da ich TemplaVoila verwende und auch etwas andere Ziele verfolge, geht es jetzt anders weiter als bei den Web-Expertinnen. Prinzipiell müssen die gleichen Einstellungen gemacht werden, aber an anderen Stellen.

Zunächst öffne ich das “XML der Datenstruktur” meiner TemplaVoila-Seitenvorlage und füge dort das Editpanel für neu Inhaltsobjekte ein, und zwar in den XML-Tag, der die Inhaltselemente aufnimmt:

  1. <field_content type="array">
  2.             <tx_templavoila type="array">
  3.                 <title>Inhaltsbereich</title>
  4.                 <sample_data type="array">
  5.                     <numIndex index="0"></numIndex>
  6.                 </sample_data>
  7.                 <eType>ce</eType>
  8.                 <TypoScript><![CDATA[
  9. # Neue Inhaltselemente anlegen               
  10. 4=EDITPANEL
  11. 4 {
  12.     newRecordFromTable=tt_content
  13.         allow= new
  14. }
  15.  
  16. 10=RECORDS
  17. 10.source.current=1
  18. 10.tables=tt_content
  19. 10.wrap= <!--TYPO3SEARCH_begin--> | <!--TYPO3SEARCH_end-->
  20.                   ]]></TypoScript>

Entscheidend sind die Zeilen 4 =, damit erscheint ein Button, mit dem auf der Seite neue Inhaltselemente angelegt werden können.

Jetzt möchte ich noch die Toolbar zum Anlegen neuer Seiten im Kopf der Seite ausgeben. Dazu muss ich entweder einen eigenen Platzhalter in der TemplaVoila-Vorlage anlegen, oder eine vorhandene Definition erweitern. Ich erweitere meine Kopfdefinition:

  1. lib.kopf=COA
  2. lib.kopf {
  3.   # Editpanel für die Seite einbinden und formatieren:
  4.   5<styles.content.editPanelPage
  5.   5.10.allow>
  6.   5.10.allow=toolbar,move,hide
  7.   5.10.label.data=
  8.   5.10.label.wrap=
  9.  
  10.   # der Rest meiner Kopfausgabe
  11.   10=TEXT
  12.   10.value={$kopf.headline}
  13.   10.wrap= <h1>|</h1>
  14.   20=TEXT
  15.   # mit data und page, da TemplaVoila field selbst schon belegt.
  16.   20.data=page:title
  17.   20.wrap= <h2>|</h2>
  18. }

Formatierung der Toolbar und Icons:

Da ich die Standardausgabe nicht besonders schön finde, entferne ich einiges, z. B. die Labels. Dazu folgenden Code ins TypoScript-Setup des Haupttemplates eingeben:

  1. ################ Edit Panel ################
  2. tt_content.stdWrap.editPanel.label=
  3. # Label entfernen
  4. tt_content.stdWrap.editPanel.line=0
  5. # Linie unterhalb des Edit-Panels enfernen
  6.  

Ausserdem ergänze ich mein Stylesheet noch:

  1. table.typo3-editPanel { border:none;background-color:#fff;opacity: 0.3;-moz-opacity: 0.3;filter: Alpha(opacity=30);zoom:1;}
  2. table.typo3-editPanel TD.typo3-editPanel-controls {border:none;background-color:#fff;}

Nicht ganz W3C-konform, durch die Transparenz sind die Werkzeuge aber deutlich dezenter. Über das Adminpanel können die Werkzeuge zusätzlich an- und ausgeschaltet werden. Ausserdem steht eine Preview zur Verfügung, mit der die Ansicht aller Frontend-Benutzer simuliert werden kann.

Weiterführende Links: