Browse code

[Update] Refactoring and simplifying member templates

Sebastian Zoglowek authored on24/05/2022 01:40:07
Showing6 changed files
... ...
@@ -29,7 +29,7 @@ use Contao\System;
29 29
  * @author Fabian Ekert <fabian@oveleon.de>
30 30
  * @author Sebastian Zoglowek <https://github.com/zoglo>
31 31
  */
32
-class ModuleAvatar extends Module
32
+class ModuleAvatar extends ModuleMemberExtension
33 33
 {
34 34
     /**
35 35
      * Template.
... ...
@@ -38,8 +38,6 @@ class ModuleAvatar extends Module
38 38
      */
39 39
     protected $strTemplate = 'memberExtension_avatar';
40 40
 
41
-    const DEFAULT_PICTURE = 'bundles/contaomemberextension/avatar.png';
42
-
43 41
     /**
44 42
      * Return a wildcard in the back end
45 43
      *
... ...
@@ -82,36 +80,9 @@ class ModuleAvatar extends Module
82 80
     {
83 81
         $objTemplate = $this->Template;
84 82
 
85
-        $this->size = $this->imgSize;
86
-
87
-        $objTemplate->noAvatar = true;
88
-
89 83
         $this->import(FrontendUser::class, 'User');
90 84
         $objMember = MemberModel::findByPk($this->User->id);
91 85
 
92
-        $projectDir = System::getContainer()->getParameter('kernel.project_dir');
93
-
94
-        // Check for avatar
95
-        if(!!$objMember->avatar)
96
-        {
97
-            $objFile = FilesModel::findByUuid($objMember->avatar);
98
-        }
99
-        // Check for standard avatar from member configuration
100
-        else if(!!Config::get('defaultAvatar'))
101
-        {
102
-            $objFile = FilesModel::findByUuid(Config::get('defaultAvatar'));
103
-        }
104
-
105
-        // If file does not exist use default image
106
-        if (null !== $objFile || is_file($projectDir . '/' . $objFile->path))
107
-        {
108
-            $objTemplate->noAvatar = false;
109
-            $this->singleSRC = $objFile->path;
110
-            $this->addImageToTemplate($this->Template, $this->arrData);
111
-        }
112
-        else
113
-        {
114
-            $objTemplate->singleSRC = self::DEFAULT_PICTURE;
115
-        }
86
+        $this->parseMemberAvatar($objMember, $objTemplate, $this->imgSize);
116 87
     }
117 88
 }
... ...
@@ -31,17 +31,18 @@ use Contao\System;
31 31
  */
32 32
 abstract class ModuleMemberExtension extends Module
33 33
 {
34
+    const DEFAULT_PICTURE = 'bundles/contaomemberextension/avatar.png';
35
+
34 36
     /**
35 37
      * Parse member template
36 38
      *
37 39
      * @param $objMember
38 40
      * @param $objTemplate
39 41
      * @param $arrMemberFields
40
-     * @param $varImgSize
41
-     *
42
+     * @param $strImgSize
42 43
      * @return string
43 44
      */
44
-    protected function parseMemberTemplate($objMember, $objTemplate, $arrMemberFields, $varImgSize)
45
+    protected function parseMemberTemplate($objMember, $objTemplate, $arrMemberFields, $strImgSize)
45 46
     {
46 47
         $arrFields = [];
47 48
 
... ...
@@ -50,7 +51,7 @@ abstract class ModuleMemberExtension extends Module
50 51
             switch($field)
51 52
             {
52 53
                 case 'avatar':
53
-                    $this->addAvatarToTemplate($objMember, $objTemplate, $varImgSize);
54
+                    $this->parseMemberAvatar($objMember, $objTemplate, $strImgSize);
54 55
                     break;
55 56
 
56 57
                 default:
... ...
@@ -79,42 +80,46 @@ abstract class ModuleMemberExtension extends Module
79 80
     }
80 81
 
81 82
     /**
82
-     * Add avatar to template
83
+     * Parses an avatar to the template
83 84
      *
84
-     * @param $objMember
85
+     * @param MemberModel $objMember
85 86
      * @param $objTemplate
86
-     * @param $varImgSize
87
+     * @param $strImgSize
88
+     * @return void
87 89
      */
88
-    protected function addAvatarToTemplate($objMember, $objTemplate, $varImgSize)
90
+    protected function parseMemberAvatar(MemberModel $objMember, $objTemplate, $strImgSize)
89 91
     {
92
+        $objTemplate->singleSRC = self::DEFAULT_PICTURE;
90 93
         $objTemplate->addImage = false;
91 94
 
92
-        if (!$objMember->avatar && !Config::get('defaultAvatar'))
93
-        {
94
-            return;
95
-        }
95
+        $uuidDefault = Config::get('defaultAvatar');
96 96
 
97
-        $arrData = ['size' => $varImgSize];
98
-        
99 97
         if(!!$objMember->avatar)
100 98
         {
101 99
             $objFile = FilesModel::findByUuid($objMember->avatar);
102 100
         }
101
+        else if(!!$uuidDefault)
102
+        {
103
+            $objFile = FilesModel::findByUuid($uuidDefault);
104
+        }
103 105
         else
104 106
         {
105
-            $objFile = FilesModel::findByUuid(Config::get('defaultAvatar'));
107
+            return;
106 108
         }
107 109
 
108
-        if ($objFile === null || !is_file(System::getContainer()->getParameter('kernel.project_dir') . '/' . $objFile->path))
110
+        $projectDir = System::getContainer()->getParameter('kernel.project_dir');
111
+
112
+        // If file does not exist use default image
113
+        if (null === $objFile || !\is_file($projectDir . '/' . $objFile->path))
109 114
         {
110 115
             return;
111 116
         }
112 117
 
113
-        $arrData['singleSRC'] = $objFile->path;
114 118
         $objTemplate->addImage = true;
115
-
119
+        $this->size = $strImgSize;
120
+        $this->singleSRC = $objFile->path;
116 121
         //ToDo: Change to FigureBuilder in the future
117
-        $this->addImageToTemplate($objTemplate, $arrData, null, null, $objFile);
122
+        $this->addImageToTemplate($objTemplate, $this->arrData);
118 123
     }
119 124
 
120 125
     /**
121 126
new file mode 100644
... ...
@@ -0,0 +1,8 @@
1
+<figure class="image_container">
2
+
3
+  <?php if($this->addImage): ?>
4
+    <?php $this->insert('picture_default', $this->picture); ?>
5
+  <?php else: ?>
6
+    <img src="<?= $this->singleSRC; ?>" width="200" height="200" itemprop="image">
7
+  <?php endif; ?>
8
+</figure>
... ...
@@ -2,14 +2,6 @@
2 2
 
3 3
 <?php $this->block('content'); ?>
4 4
 
5
-<?php if($this->noAvatar):?>
6
-  <figure class="image_container">
7
-    <img src="<?= $this->singleSRC; ?>" width="200" height="200" itemprop="image">
8
-  </figure>
9
-<?php else: ?>
10
-  <figure class="image_container">
11
-      <?php $this->insert('picture_default', $this->picture); ?>
12
-  </figure>
13
-<?php endif; ?>
5
+<?php $this->insert('memberExtension_image', $this->arrData); ?>
14 6
 
15 7
 <?php $this->endblock(); ?>
... ...
@@ -1,15 +1,12 @@
1 1
 <div class="member_list_default">
2
-    <?php if($this->addImage): ?>
3
-        <figure class="image_container">
4
-          <?php $this->insert('picture_default', $this->picture); ?>
5
-        </figure>
6
-    <?php endif; ?>
7
-    <ul>
8
-        <?php foreach ($this->fields as $k => $v): ?>
9
-            <li class="<?= $k ?>"><?= $v ?></li>
10
-        <?php endforeach; ?>
11
-    </ul>
12
-    <?php if($this->link): ?>
13
-        <a href="<?=$this->link?>"><?=$GLOBALS['TL_LANG']['MSC']['memberDetail']?></a>
14
-    <?php endif; ?>
2
+  <?php $this->insert('memberExtension_image', $this->arrData); ?>
3
+
4
+  <ul>
5
+    <?php foreach ($this->fields as $k => $v): ?>
6
+      <li class="<?= $k ?>"><?= $v ?></li>
7
+    <?php endforeach; ?>
8
+  </ul>
9
+  <?php if($this->link): ?>
10
+    <a href="<?=$this->link?>"><?=$GLOBALS['TL_LANG']['MSC']['memberDetail']?></a>
11
+  <?php endif; ?>
15 12
 </div>
... ...
@@ -1,12 +1,9 @@
1 1
 <div class="member_reader_full">
2
-    <?php if($this->addImage): ?>
3
-        <figure class="image_container">
4
-          <?php $this->insert('picture_default', $this->picture); ?>
5
-        </figure>
6
-    <?php endif; ?>
7
-    <ul>
8
-        <?php foreach ($this->fields as $k => $v): ?>
9
-            <li class="<?= $k ?>"><?= $v ?></li>
10
-        <?php endforeach; ?>
11
-    </ul>
2
+  <?php $this->insert('memberExtension_image', $this->arrData); ?>
3
+
4
+  <ul>
5
+    <?php foreach ($this->fields as $k => $v): ?>
6
+      <li class="<?= $k ?>"><?= $v ?></li>
7
+    <?php endforeach; ?>
8
+  </ul>
12 9
 </div>