Jump to content

joshua

Members
  • Posts

    86
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by joshua

  1. I just merged your PR πŸ˜‰ Thank you for contributing @chrizz!
  2. Thanks @chrizz! That's a good idea. I will look into your PR later today and will merge it as soon as possible πŸ˜‰
  3. That's great! Thanks for the feedback. It is even easier now in v1.0.9 as I reduced the hook priority, so every "usual" hook written inside a template should work, too.
  4. That's correct, currently PrivacyWire loads itself in the module ready() method. I played around with some settings to load PrivacyWire later. You can find the feature in this branch: https://github.com/webworkerJoshua/privacywire/tree/feature-initiate-privacywire-laster In this version PrivacyWire initiates itself before Page::render: $this->addHookBefore('Page::render', $this, 'initiatePrivacyWire'); Could you try this version and confirm, that it's working the way you wanted / expected? After that I will do some more testing before merging into the main branch just to be sure that there are no side effects πŸ˜‰ Thanks!
  5. I just added a small function for this usecase in v1.0.7. You can trigger this "re-initiating" by calling window.PrivacyWire.reHandleExternalButtons() Updated / Added code: https://github.com/webworkerJoshua/privacywire/blob/1.0.7/src/js/PrivacyWire.js#L146-L149
  6. Is your ProcessWire instance installed in the root web directory or somewhere else? The only noticible change I find in your code examle is the directory within the script tag: <script nomodule type='text/javascript' src='.../site/modules/PrivacyWire/js/PrivacyWire_legacy.js'> Usually the src attribute starts directly with '/site/' instead of '.../site/' <style>.privacywire{position:fixed;bottom:-250%;left:0;right:0;box-shadow:0 -1px 3px rgba(0,0,0,.3);opacity:0;background:#fff;z-index:1;padding:1rem;transition:bottom .3s ease-in,opacity .3s ease}.show-banner .privacywire-banner,.show-message .privacywire-message,.show-options .privacywire-options{bottom:0;opacity:1}.privacywire-header{font-weight:700}.privacywire-ask-consent-blueprint,.privacywire button[hidden],[data-ask-consent-rendered="1"]{display:none}</style> <script>var PrivacyWireSettings={"version":1,"dnt":"0","customFunction":"","messageTimeout":1500,"consentByClass":"1","cookieGroups":{"necessary":"Necessary","functional":"Functional","statistics":"Statistics","marketing":"Marketing","external_media":"External Media"}};</script> <script type='module' src='/site/modules/Privacywire/js/PrivacyWire.js'></script> <script nomodule type='text/javascript' src='/site/modules/Privacywire/js/ie_polyfill.js'></script> <script nomodule type='text/javascript' src='/site/modules/Privacywire/js/PrivacyWire_legacy.js'></script>
  7. Hi Jens, sounds like an good workflow and also a nice improvement for the PrivacyWire module config. I'll add it as soon as I find the time. Best, Joshua
  8. Thanks for noticing! I fixed the typo in the git repo, should be updated in the PW module repo soon. Hm, I'm looking into this problem. Which version of PrivacyWire are you using?
  9. In this example the starting quote at the type attribute is missing: <script type="text/plain" data-type="text/javascript" data-category="external_media" class="require-consent">...</script> In your example: Does it work with the quotation mark?
  10. You mean something like the screenshot attached? That's possible with some CSS (this is just an example, how one could do this) .show-banner > .privacywire-page-wrapper, .show-options > .privacywire-page-wrapper, .show-message > .privacywire-page-wrapper { position: fixed; left: 0; top: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(5px); display: flex; justify-content: center; align-items: center; } .privacywire { display: none; } .show-banner .privacywire.privacywire-banner, .show-options .privacywire.privacywire-options, .show-message .privacywire.privacywire-message { display: block; position: relative; left: auto; right: auto; bottom: auto; max-width: 450px; }
  11. You can ommit the src attribute also. In my test case it works that way. I use it a lot in combination with vimeo video and used the implementation as in this video Bildschirmaufnahme 2021-04-05 um 14.46.29.mov
  12. In theory yes, but as PrivacyWire is not able to set the cookie without JavaScript in the first place, there is no cookie or localStorage to check. Also caching might be a problem when doing this with php.
  13. Without enabled JavaScript (thus the <noscript> tag), it is not possible to asynchronously load something (as there is no JavaScript to do so – chasing one's own tail).
  14. That's right! Currently I'm doing this with a pretty custom python script, which runs updates directly in the database. But RockMigrations seems to be a better solution - solid as a "rock" πŸ˜‰ and easy to handle. Thanks!
  15. Hi @bernhard, Nice work! I'm currently working on something very similiar. Focus would be also mainly triggering the install process via CLI to automate the setup process of new projects. Further on I want to add the possibility to add Fields and Repeater Matrix Content Types via CLI.
  16. Right now there is no "clear cookie" function. You could add an custom js function, which gets triggered after saving the consent and insert the function name in the module config option. One easy way to not use google analytics afterwards, would be a simple reload: var reloadAfterConsent = function() { window.location.reload(); }; After the reload, the google script will not be loaded again, but the cookies will remain. To also delete existing cookies, some extra work is needed as PrivacyWire don't know, what cookies got set by which script and you probably don't want to delete all cookies. You could write a function to check for current consent state and delete cookies, if no consent to a specific category is given. Here is a very rough (and not tested in real life) idea, how you could do something like this: function eraseCookie(name) { document.cookie = name+'=; expires=Thu, 01 Jan 1970 00:00:00 UTC;'; } var removeGoogleCookies = function() { if(window.PrivacyWire.userConsent.cookieGroups.statistics !== true) { eraseCookie("_ga"); eraseCookie("_gid"); // or whatever your cookie names are } }; And then add removeGoogleCookies to the "Trigger a custom js function" config option. This script is written with the new logic from the ES6 branch, should also work in earlier versions with different naming though.
  17. @LAPS With this new version, there are even more customizations available. Have a look into the comments in PrivacyWire.module. This example code does the same as the one from my post from last Friday, but with the new syntax of the new version: <html> <head> <!-- your head content --> <?php $privacywire = $modules->get("PrivacyWire"); // load the css files echo $procache->link([ $config->urls->template . "path/to/your/stylesheet.css", $privacywire->getPrivacyWireStyles()->url ]); // load the inline script echo $privacywire->renderPrivacyWireConfigAsInlineJs(); ?> </head> <body> <!-- your body content --> <!-- your body content --> <!-- your body content --> <?php // render the required DOM elements echo $privacywire->bodyContent; // render the JavaScript files echo $procache->script([ $config->urls->template . "path/to/your/scripts.js", $privacywire->getPrivacyWireCore()->url ]); ?> </body> </html>
  18. Hey everyone, I did a lot of refactoring of PrivacyWire this weekend - both for the backend and frontend. The Javascript core of PrivacyWire is nearly completely rewritten in ES6. This results in much better readability and of course extensibility. For examle, as asked by @Torsten Baldes, one can now manually trigger to refresh the element detection of PrivacyWire by simple running the following function afterwards: window.PrivacyWire.refresh(); You'll find a brief overview of the updates here: https://github.com/blaueQuelle/privacywire/blob/es6/CHANGELOG.md#101b-beta Right now this update is in an separate branch at github: https://github.com/blaueQuelle/privacywire/tree/es6 I would be happy if some of you could test this version in your dev environment. If you haven't used any hooks or modifications, it should just run without any changes. I'm looking forward to your feedback! πŸ™‚ Best, Joshua
  19. Hi @Torsten Baldes, right now there is no such functionality available. I'm will try some ways to implement this soon.
  20. Hi everyone, did I understood it correctly, that you want to to include the JS provided by PrivacyWire in one combined file with your other JS files via ProCache? And the same with the CSS styles? This actually requires some steps, as PrivacyWire needs the inline script (to pass the backend settings to the frontend), the body content (to have the DOM elements of the banner) and the JS file (to provide the functionality). With the newest PrivacyWire version (0.4.4) you can do it that way: Check the "Render Banner and Header Content Manually" in the PrivacyWire config options: Add the required elements as followed: <html> <head> <!-- your head content --> <?php // load the css files echo $procache->link([ $config->urls->template . "path/to/your/stylesheet.css", $modules->get("PrivacyWire")->getPathToCssFile() ]); // load the inline script -> needs to be before the other scripts echo $modules->get("PrivacyWire")->getInlineJavaScriptTag(); ?> </head> <body> <!-- your body content --> <?php // render the required DOM elements echo $modules->get("PrivacyWire")->renderBodyContent(); // render the JavaScript files echo $procache->script([ $config->urls->template . "path/to/your/scripts.js", $modules->get("PrivacyWire")->getJsFile() ]); ?> </body> </html>
  21. I just added the support for videos embedded via the youtube-nocookie.com domain to the Textformatter. Fixed in 0.4.3 Thank you all for noticing and helping to find the missing URL πŸ˜‰
  22. If enabled in the TextformatterPrivacyWire settings, yes. But it's disabled by default.
  23. Hi @The G, thanks for noticing this behavior! During the development of PrivacyWire I never thought of showing or hiding divs or "regular" elements - only thought of scripts, videos, media ... So, good catch! I refactored that part of the priw_updateAllowedElement function to fix this bug. Cloning is required for everything, where media, scripts or other external stuff gets loaded... Waaaait a minute... While I was writing these lines of nonesense, I realized that this idea is wrong! πŸ₯³ You're right - keeping the elements alive and just update the attributes works for scripts, images, iframes and of course divs and other elements, too. I refactored again and tested the new version with all kind of elements and media... Only script tags need to be a new added element, as they will not run otherwise: https://html.spec.whatwg.org/multipage/scripting.html#script-processing-model 0.4.2 fixed it!
  24. Hi @ceberlin, sounds like an good idea to me. To allow this kind of "tracking" we would need to send this decission via JS to an endpoint which connects to the ProcessWire API. I will think about an way to implement this feature. I'm also open for a PR, if you already have an idea how to realize this feature.
Γ—
Γ—
  • Create New...