Browse code

Allow to set a member home page for logged in members an use it as reference page

Benjamin Roth authored on06/07/2017 22:03:43
Showing7 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,41 @@
1
+<?php
2
+
3
+/**
4
+ * Tweaks for Contao
5
+ *
6
+ * Copyright (c) 2014 Benjamin Roth [http://www.esales-media.de]
7
+ *
8
+ * @package eSM_tweaks
9
+ * @link    http://www.esales-media.de
10
+ * @license commercial
11
+ */
12
+
13
+
14
+$GLOBALS['TL_DCA']['tl_member']['palettes']['__selector__'][] = 'assignPage';
15
+$GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace('{homedir_legend', '{homepage_legend},assignPage;{homedir_legend', $GLOBALS['TL_DCA']['tl_member']['palettes']['default']);
16
+
17
+
18
+$GLOBALS['TL_DCA']['tl_member']['subpalettes']['assignPage'] = 'homePage';
19
+
20
+/**
21
+ * Add fields to tl_content
22
+ */
23
+
24
+$GLOBALS['TL_DCA']['tl_member']['fields']['assignPage'] = array
25
+(
26
+  'label'                   => &$GLOBALS['TL_LANG']['tl_member']['assignPage'],
27
+  'exclude'                 => true,
28
+  'inputType'               => 'checkbox',
29
+  'eval'                    => array('submitOnChange'=>true),
30
+  'sql'                     => "char(1) NOT NULL default ''"
31
+);
32
+$GLOBALS['TL_DCA']['tl_member']['fields']['homePage'] = array
33
+(
34
+  'label'                   => &$GLOBALS['TL_LANG']['tl_member']['homePage'],
35
+  'exclude'                 => true,
36
+  'inputType'               => 'pageTree',
37
+  'foreignKey'              => 'tl_page.title',
38
+  'eval'                    => array('fieldType'=>'radio', 'tl_class'=>'clr'),
39
+  'sql'                     => "int(10) unsigned NOT NULL default '0'",
40
+  'relation'                => array('type'=>'hasOne', 'load'=>'lazy')
41
+);
... ...
@@ -12,7 +12,7 @@
12 12
  * Palettes
13 13
  */
14 14
 $GLOBALS['TL_DCA']['tl_module']['palettes']['__selector__'][] = 'showTeaserImg';
15
-$GLOBALS['TL_DCA']['tl_module']['palettes']['pagelist'] = '{title_legend},name,headline,type;{config_legend},showProtected,showTeaserImg,perPage;{reference_legend},defineRoot;{template_legend:hide},customTpl,eSM_pagelist_template;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID,space';
15
+$GLOBALS['TL_DCA']['tl_module']['palettes']['pagelist'] = '{title_legend},name,headline,type;{config_legend},showProtected,showTeaserImg,perPage;{reference_legend},defineRoot;{template_legend:hide},customTpl,eSM_pagelist_template;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID,useHomePage';
16 16
 $GLOBALS['TL_DCA']['tl_module']['subpalettes']['showTeaserImg'] = 'imgSize';
17 17
 
18 18
 /**
... ...
@@ -37,6 +37,14 @@ $GLOBALS['TL_DCA']['tl_module']['fields']['eSM_pagelist_template'] = array
37 37
     'eval'                    => array('tl_class'=>'w50'),
38 38
     'sql'                     => "varchar(64) NOT NULL default ''"
39 39
 );
40
+$GLOBALS['TL_DCA']['tl_module']['fields']['useHomePage'] = array
41
+(
42
+    'label'                   => &$GLOBALS['TL_LANG']['tl_module']['useHomePage'],
43
+    'exclude'                 => true,
44
+    'inputType'               => 'checkbox',
45
+    'eval'                    => array('tl_class'=>'w50 m12'),
46
+    'sql'                     => "char(1) NOT NULL default ''"
47
+);
40 48
 
41 49
 /**
42 50
  * Class tl_module_esm_pagelist
43 51
new file mode 100644
... ...
@@ -0,0 +1,25 @@
1
+<?php
2
+
3
+/**
4
+ * Tweaks for Contao
5
+ *
6
+ * Copyright (c) 2014 Benjamin Roth [http://www.esales-media.de]
7
+ *
8
+ * @package eSM_tweaks
9
+ * @link    http://www.esales-media.de
10
+ * @license commercial
11
+ */
12
+
13
+/**
14
+ * Fields
15
+ */
16
+$GLOBALS['TL_LANG']['tl_member']['assignPage'][0] = 'Eine Home-Page festlegen';
17
+$GLOBALS['TL_LANG']['tl_member']['assignPage'][1] = 'Dem User eine Seite aus dem Seitenbaum als Home-Page zuweisen.';
18
+$GLOBALS['TL_LANG']['tl_member']['homePage'][0] = 'Home-Page';
19
+$GLOBALS['TL_LANG']['tl_member']['homePage'][1] = 'Bitte wählen Sie eine Seite aus dem Seitenbaum.';
20
+
21
+
22
+/**
23
+ * Legends
24
+ */
25
+$GLOBALS['TL_LANG']['tl_member']['homepage_legend'] = 'Home-Page';
... ...
@@ -15,3 +15,5 @@ $GLOBALS['TL_LANG']['tl_module']['showTeaserImg'][0] = 'Teaserbild anzeigen';
15 15
 $GLOBALS['TL_LANG']['tl_module']['showTeaserImg'][1] = 'Gibt auch das Teaserbild aus, falls vorhanden.';
16 16
 $GLOBALS['TL_LANG']['tl_module']['eSM_pagelist_template'][0] = 'Listen-Template';
17 17
 $GLOBALS['TL_LANG']['tl_module']['eSM_pagelist_template'][1] = 'Hier können Sie das Listen-Template überschreiben.';
18
+$GLOBALS['TL_LANG']['tl_module']['useHomePage'][0] = 'Home-Page verwenden';
19
+$GLOBALS['TL_LANG']['tl_module']['useHomePage'][1] = 'Die Home-Page als Referenzseite verwenden, wenn sich ein Mitglied angemeldet hat.';
18 20
new file mode 100644
... ...
@@ -0,0 +1,25 @@
1
+<?php
2
+
3
+/**
4
+ * Tweaks for Contao
5
+ *
6
+ * Copyright (c) 2014 Benjamin Roth [http://www.esales-media.de]
7
+ *
8
+ * @package eSM_tweaks
9
+ * @link    http://www.esales-media.de
10
+ * @license commercial
11
+ */
12
+
13
+/**
14
+ * Fields
15
+ */
16
+$GLOBALS['TL_LANG']['tl_member']['assignPage'][0] = 'Assign Home-Page';
17
+$GLOBALS['TL_LANG']['tl_member']['assignPage'][1] = 'Assign a page from the pagetree as Home-Page for the user.';
18
+$GLOBALS['TL_LANG']['tl_member']['homePage'][0] = 'Home-Page';
19
+$GLOBALS['TL_LANG']['tl_member']['homePage'][1] = 'Please choose a page from the pagetree.';
20
+
21
+
22
+/**
23
+ * Legends
24
+ */
25
+$GLOBALS['TL_LANG']['tl_member']['homepage_legend'] = 'Home-Page';
... ...
@@ -15,3 +15,5 @@ $GLOBALS['TL_LANG']['tl_module']['showTeaserImg'][0] = 'Show teaser image';
15 15
 $GLOBALS['TL_LANG']['tl_module']['showTeaserImg'][1] = 'Also displays the teaser image if available.';
16 16
 $GLOBALS['TL_LANG']['tl_module']['eSM_pagelist_template'][0] = 'List template';
17 17
 $GLOBALS['TL_LANG']['tl_module']['eSM_pagelist_template'][1] = 'Here you can override the default list template.';
18
+$GLOBALS['TL_LANG']['tl_module']['useHomePage'][0] = 'Use Home-Page';
19
+$GLOBALS['TL_LANG']['tl_module']['useHomePage'][1] = 'Use the Home-Page as reference page if a member is logged in.';
... ...
@@ -64,7 +64,17 @@ class ModulePagelist extends Module
64 64
 		$trail = $objPage->trail;
65 65
 
66 66
 		// Overwrite with custom reference page
67
-		if ($this->defineRoot && $this->rootPage > 0)
67
+    if ($this->useHomePage && FE_USER_LOGGED_IN)
68
+    {
69
+      $this->import('FrontendUser', 'User');
70
+
71
+      if ($this->User->assignPage && $this->User->homePage)
72
+      {
73
+        $trail = array($this->User->homePage);
74
+        $intPage = $this->User->homePage;
75
+      }
76
+    }
77
+    else if ($this->defineRoot && $this->rootPage > 0)
68 78
 		{
69 79
 			$trail = array($this->rootPage);
70 80
 			$intPage = $this->rootPage;