Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bugfix Box->Detailanzeige: ggf. falsche Anzahl der Cookies korrigieren und kleine Verbesserungen #318

Open
oioix opened this issue Mar 2, 2024 · 9 comments
Assignees

Comments

@oioix
Copy link

oioix commented Mar 2, 2024

REDAXO:
AddOns: Consent Manager 4.2.0

Description / Beschreibung
Wenn man in der Box sich die Details zu den Cookies anzeigen lässt, wird rechts der Cookie Gruppe eine Zahl gezeigt, die eigentlich die Anzahl der Cookies in der Gruppe ausgeben soll.
Hier wird bisher aber nur gezählt und angezeigt, wie viele Dienste (Checkboxen) in der jeweiligen Gruppe ausgewählt/aktiviert sind.
Wenn man im yaml eines Dienstes mehrere Cookies angibt, werden diese bisher nicht gezählt.
Die angezeigte Zahl ist also immer dann falsch, wenn im yaml eines verwendeten Dienstes mehr als ein Cookie aufgeführt ist.

Nachfolgender Code behebt das Problem.

Außerdem habe ich noch ein paar kleine Verbesserungen eingefügt. Dieses sind:

  • Der Cookie-Zahl eine Klasse "consent_manager-cookiegroup-number" hinzugefügt, damit man die Zahl per css kleiner oder anders formatiert als den Namen der Gruppe anzeigen kann
  • Leere Klammer hinter dem Cookie-Namen entfernen, wenn kein Servicename hinterlegt ist.
  • zum jeweiligen Link "Datenschutzerklärung" immer dann die Attribute target="_blank" und rel="noopener noreferrer nofollow" hinzugefügt, wenn der Link zu einer fremden Website führt.

Einfach in fragments/consent_manager_box.php das komplette foreach{} ab Zeile 50 gegen den nachfolgenden Code austauschen. Die geänderten Passagen sind mit // START und // END gekennzeichnet

                        foreach ($consent_manager->cookiegroups as $cookiegroup) {
                        	
                        	if (count($cookiegroup['cookie_uids']) >= 1) {
                        		// START changed - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                        		// bugfix of wrong cookie count
                        		$countDefs	= 0;
                        		$countAll 	= 0;
                            	if (isset($cookiegroup['cookie_uids'])) {
									foreach ($cookiegroup['cookie_uids'] as $cookieUid) {
									
										$countDefs = count($consent_manager->cookies[$cookieUid]['definition']);
										$countAll = $countAll + $countDefs;
									}
                        		}
                        	
                                echo '<div class="consent_manager-cookiegroup-title consent_manager-headline">';
                                echo $cookiegroup['name'] . ' <span class="consent_manager-cookiegroup-number">(' . $countAll . ')</span>'; // added class to enable change size of the counted cookie number
                                 // END changed - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                echo '</div>';
                                echo '<div class="consent_manager-cookiegroup-description">';
                                echo $cookiegroup['description'];
                                echo '</div>';
                                echo '<div class="consent_manager-cookiegroup">';
                                foreach ($cookiegroup['cookie_uids'] as $cookieUid) {
                                    if (isset($consent_manager->cookies[$cookieUid])) {
                                        $cookie = $consent_manager->cookies[$cookieUid];
                                        if (isset($cookie['definition'])) {
                                            foreach ($cookie['definition'] as $def) {
                                            	// START changed - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                // enhancements: 
                                                // hide empty "()" if no service name is provided
                                                // add attributes target="_blank" and rel="noopener noreferrer nofollow" for links to external websites
                                                $erviceName		= '';
                                                if($cookie['service_name']) $erviceName = '('.$cookie['service_name'].')';
                                                
                                                $linkTarget		=  '';
												$linkRel		=  '';
												$cookProvider	= strtolower($cookie['provider']);
												$expressionsAry = ['diese website','this website']; // TODO: add relevant expressions for of further languages identifying "this website" 
                                                
                                                echo '<div class="consent_manager-cookie">';
                                                echo '<span class="consent_manager-cookie-name"><strong>' . $def['cookie_name'] . '</strong> ' . $erviceName . '</span>';
                                                echo '<span class="consent_manager-cookie-description">' . $def['description'] . '</span>';
                                                echo '<span class="consent_manager-cookie-description">' . $consent_manager->texts['lifetime'] . ' ' . $def['cookie_lifetime'] . '</span>';
                                                echo '<span class="consent_manager-cookie-provider">' . $consent_manager->texts['provider'] . ' ' . $cookie['provider'] . '</span>';
                                               	if(!in_array($cookProvider, $expressionsAry)) {
                                                	$linkTarget =  'target="_blank"';
													$linkRel	=  'rel="noopener noreferrer nofollow"';
                                                }
                                                echo '<span class="consent_manager-cookie-link-privacy-policy">'.PHP_EOL;
                                                echo '	<a href="'.$cookie['provider_link_privacy'].'" '.$linkTarget.' '.$linkRel .'>'.$consent_manager->texts['link_privacy'].'</a>'.PHP_EOL;
                                                echo '</span>'.PHP_EOL;
                                                // END changed - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                                echo '</div>' . PHP_EOL;
                                            }
                                        }
                                    }
                                }
                                echo '</div>';
                            }
                        }

Wer will kann die Datei besagte Datei fragements/consent_manager_box.php auch in das Addon project/fragements kopieren, und den Code dort ändern. Dann funktioniert es gleich und bleibt beim nächsten Addon-Update erhalten.

@bitshiftersgmbh
Copy link
Member

Könntest du evtl. auf der aktuellen Version basierend (4.3.0 bzw. Code mit Merge vin heute) einen PR dazu anlegen? Das wäre perfekt!

@aeberhard aeberhard self-assigned this Apr 17, 2024
oioix added a commit to oioix/consent_manager that referenced this issue Apr 20, 2024
pull request, wie von bitshiftersgmbh in issue FriendsOfREDAXO#318 erwünscht.
@oioix
Copy link
Author

oioix commented Apr 20, 2024

Könntest du evtl. auf der aktuellen Version basierend (4.3.0 bzw. Code mit Merge vin heute) einen PR dazu anlegen? Das wäre perfekt!

Habe ich gerade erledigt. Hoffe, es ist richtig so. Mein erster PR seit 4 Jahren.

oioix added a commit to oioix/consent_manager that referenced this issue Apr 20, 2024
pull request, wie von bitshiftersgmbh in issue FriendsOfREDAXO#318 erwünscht.

Ich hatte im ersten PR in Zeile 84 eine Kleinigkeit beim Kopieren des Codes vergessen. Daher hier das entsprechend vervollständigte Update meines PR. (Sorry)
@oioix
Copy link
Author

oioix commented Apr 22, 2024

Hat das mit dem PR geklappt? Bin nicht sicher, ob ich das richtig gemacht habe.
Kurze Rückmeldung wäre nett.

@aeberhard
Copy link
Member

@oioix Hi Chris,
hier ist kein PR zu sehen !

@oioix
Copy link
Author

oioix commented Apr 23, 2024

Hi Andreas, danke für die Info. Mir wurde angezeigt, dass ich ihn erfolgreich abgeschickt habe und einen Tag später nicht mehr.
Jetzt sollte er aber hoffentlich da sein.

@bitshiftersgmbh
Copy link
Member

Ich seh immer noch nix. Hast du den PR auch hier im Main Repo erstellt und nicht in einem Fork (für den Fork)?

image

@oioix
Copy link
Author

oioix commented Apr 23, 2024

Versteh ich nicht. Bei mir wird es als ganz normaler PR angezeigt.
Ich hab gem. Anleitung einen Fork erstellt. Kann es sein, dass ich den PR in den Fork gepostet habe?

Screenshot 2024-04-23 | 09 16 45

@aeberhard
Copy link
Member

Hi Chris @oioix ,

jo Du hast den PR auf deinen eigenen Fork erstellt!

@oioix
Copy link
Author

oioix commented Apr 23, 2024

Ups, dumm gelaufen. Jetzt sollte es aber passen. Ich hab es nochmal gemacht.

oioix added a commit to oioix/consent_manager that referenced this issue Apr 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants