Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by psy

  1. Maybe take a look at URL segments? https://processwire.com/docs/front-end/how-to-use-url-segments/
  2. @3fingers edit your original post title with [solved] at the start πŸ˜‰
  3. @3fingers rather than 'find', 'findMany'. 'find' loads all found pages in memory. Another alternative maybe @bernhard's RockFinder module?
  4. Guess I'll have to learn about valueGetter. This is a baptism of πŸ”₯ 🀣
  5. Looking forward to it. Have to get this client's job finished and paid first. πŸ˜‰
  6. Well that worked, thanks! Not very user friendly though. The general public wont get it 😞
  7. My first attempt at RockFinder & RockGrid and truly impressed. Well done @bernhard! Have already created my dataset using joins, changing column headings and the tip for Select Options in my custom php file to display the option's title rather than the value in a column. All good. Problem arises with the filter for the Select Options field, column is project_status, with column header changed to 'Status'. I've no idea how to change the filter from the PW assigned index value to the text value of the field. See examples: 1. Full data set 2. Using a text entry in the filter, eg starting to type 'draft' 3. Entering the PW assigned select options index for 'draft' I'm guessing it needs a custom filter and would appreciate help and guidance. TIA psy
  8. @Robin S - brilliant! Your code works like a charm on my site after adjusting a bit of my own code to suit. Can't thank you enough 😍
  9. Thanks @Robin S great work however still can't get it happening on my site πŸ˜₯ Using your method I get a Forbidden 403 Error in the Chrome dev console, eg https://mysite.com/uppy 403
  10. I've been in htaccess hell for days. Has anyone successfully implemented a TusPHP server with ProcessWire using the Upply client? If so, please share how you did it. https://uppy.io/ https://github.com/ankitpokhrel/tus-php I saw that @LostKobrakai had created a chunked upload solution https://gist.github.com/LostKobrakai/ddb11c64dcb0f1bf1c8eed4dd534a868 that used resumable.js which is great but I'd really like to to use the Uppy client, and eventually implement the Uppy companion plugin to upload directly to a cdn such as Amazon S3 or Google Cloud. I've exhausted every possible .htaccess variation I can think of. Also tried to implement the Tus server in a subdirectory which ended in CORS purgatory. The Uppy client is beautiful and super simple to implement in a template. Getting the Tus server to work in a ProcessWire installation is a different matter. Even tried to adapt the WordPress plugin suggestions but guessing the WP htacess isn't nearly as comprehensive as the ProcessWire (with ProCache) htaccess file. This is the bit that breaks ProcessWire: # .htaccess RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^files/?(.*)?$ /server.php?$1 [QSA,L] ProcessWire has its own very important 'files' directory so I changed the Uppy/Tus directory to 'tus-endpoint' and tried to replace server.php with a PW page called 'tus-server' that did the TusPHP server.php stuff in a template. Help and suggestions extremely welcome
  11. Just throwing it out there and not the answer to all PW static site situations, but a PWA like https://www.pwabuilder.com/ may help. In my experience, there can be glitches between PWABuilder depending on the config chosen, and ProCache with too much unsynched caching. Definitely not the answer if your site has lots of forms and/or dynamic content, but for static sites that have dodgy internet connections it's definitely worth investigating.
  12. From @ryan's comment in the blog post https://processwire.com/blog/posts/webp-images-in-pw/: "By the way, if for some reason the webp results in a larger image (which is very rare), calling the $image->webp->url will return the smaller (non-webp) image." Very excited to see webp support in PW core then followed all the instructions. Couldn't get it working, or so I thought. Seems I did. OK, I take the craftsman's approach when adding images: Photoshop image as needed then reduce the image size to close to the max dimensions I need Export for Web Legacy - jpeg high @ 60% quality Drop exported jpeg into the lovely TinyBeest app https://www.tinybeest.com/ (Mac only) Upload TinyBeest-optimised image to PW, often output with MarkupSrcSet https://modules.processwire.com/modules/markup-src-set/ template code Every time I used $image->webp->url I got a jpg file with great quality. Only got webp when I uploaded the original image, often MB's huge. Bit frustrating that my images still get scored down on Google Page Speed Insights for not being webp - but then they'd be bigger and take longer to download πŸ˜‚
  13. Good pick-up @wbmnfktr! /site/init.php is different to /site/templates/_init.php I guess the custom of using ready.php is that by that time, PW knows about the current page which in this case, is referenced in the hook.
  14. Hi @VeiJari It's usual practice, but not compulsory, to put hooks into /site/ready.php. site/ready.php loads before _init.php. You're changing the saved page data so you may need to turn off outputting formatting first if saving the entire page, or simply set-and-save the 'ajasta' field, eg (untested): wire()->addHookAfter('Pages::published', function($event) { $page = $event->arguments('page'); $t = wire()->templates->get($page->template); if($t->name == 'artikkeli' && $t->hasField("ajasta") { $page->setAndSave('ajasta', 0); } $event->return = $page; });
  15. I use LastPass because, just because it works for me. Haven't delved into other options. Tip: (also found elsewhere in the forum) When using a password manager, turn it off when editing a PW user profile
  16. Thanks @tpr I'm sure the answer is in there somewhere. ProcessWire & Google searched but that page didn't come up
  17. Thanks @tpr But won't that give me all pages? On the Business page, I only want to show pages that have 'Business' checked, whether on it's own or also checked with 'Individual'. What was my third choice? Only showed two 🀣 Second choice doesn't work via the API on select options fields
  18. I have a select options field that displays as multi-choice checkboxes. It's a required field and some pages have only one option selected, other pages have both selected, eg: Page 1: category = Business Page 2: category = Individual Page 3: category = Business and Individual Dilemma arises when I try to select pages that have both 'Business' and 'Individual' This codes works if I only want one choice: if ($page->id == 1055) { $services = $pages->get(1115)->children("category=Business"); } elseif ($page->id == 1113) { $services = $pages->get(1115)->children("category=Individual"); } BUT both $services result sets leave out Page 3. So I tried the following using the 'contains' selector which caused a page crash: if ($page->id == 1055) { $services = $pages->get(1115)->children("category*=Business"); } elseif ($page->id == 1113) { $services = $pages->get(1115)->children("category*=Individual"); } Any suggestions on how to write the selector to successfully retrieve pages that have both choices? Thanks psy Solution: The selector retrieves the value/id, not the title of the option if multiple, eg "1|2" rather than "Business|Individual". Changed it to: if ($page->id == 1055) { $services = $pages->get(1115)->children("category=1"); } elseif ($page->id == 1113) { $services = $pages->get(1115)->children("category=2"); } This covered the and/or scenario.
  19. psy

    My code

    A huge shout out thank you to all the PW developers who have, and continue to help me.
  20. @dab, yes, the PushAlert support team are almost as helpful as the PW devs here πŸ˜‰ DON'T use the PushAlert sw.js file. It's the vanilla version and doesn't include the PW custom code to save subscriber ID's with PW user ID's. The module will automatically add sw.js + the custom function to the <head> for you. See my post to @dragan about this above. Also see the IMPORTANT section of the README about manifest.json. If you're site already has one, just add the gcm_sender_id code line.
  21. @dab Great it's now working for you. All credit to flydev for the fix πŸ™‚ The reporting of "Attempted" rather than "Delivered" is a question for PushAlert support. Once PW sends the notification, it hands over to PushAlert and then catches the response to report the status.
  22. @flydev grateful for your patience with me on resolving this issue. Fixed in gitHub Working code is: $http->setHeader("Authorization", "api_key=". $this->api_key); Also updated the _getHttp function with same fix in gitHub
  23. @flydev Thanks again for the detailed feedback. My development site runs PW 3.0.124 so I don't understand why the behaviour would be different? C'est la vie. In version 3.0.124, Ryan introduced support for cURL in WireHttp https://processwire.com/blog/posts/pw-3.0.124-and-new-site/#wirehttp-updated-with-curl-support In the PushAlert.module I tried to take advantage of this new feature, from Line 439: // Prepare and send the request $slug = "send"; if($this->wire('config')->version('3.0.124')) { // ProcessWire version is 3.0.124 or newer $result = $this->_sendHttp($slug, $options); } else { $result = $this->_sendCurl($slug, $options); } return $result; } /** * @param $slug * @param $options * @return mixed */ private function _sendHttp ($slug, $options) { $http = new WireHttp(); $headers = Array(); $headers[] = "Authorization: api_key=". $this->api_key; $http->setHeaders( $headers); $result = $http->send($this->api_url . $slug, $options); return $result; } /** * @param $slug * @param $options * @return bool|string */ private function _sendCurl ($slug, $options) { $headers = Array(); $headers[] = "Authorization: api_key=" . $this->api_key; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->api_url . $slug); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($options)); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); return $result; } Because I cannot recreate the issue, would you please try commenting out lines 458, 459 & 460 and replacing them with: // $headers = Array(); // $headers[] = "Authorization: api_key=". $this->api_key; // $http->setHeaders( $headers); $http->setHeader("Authorization: api_key=". $this->api_key); and let me know if this resolves the issue. More: I used Array() in WireHttp to keep it consistent with the cURL method. Happy to change in the module _sendHttp method if WireHttp headers array works differently. Still wondering why it worked on my PW 3.0.124 and not for you...
  24. @flydev Great feedback and excellent suggestion. On the list for the next release πŸ™‚
  25. @dab Thank you ☺️ The field creation bit is pure PW, not PushAlert related at all so not sure why this occurred but good to know about uppercase/lowercase in field names. The deletion of the pushalert_endpoint.php template is also pure PW/PHP as per the docs: https://processwire.com/api/ref/wire-file-tools/unlink/ // Delete the endpoint template file - should never be customised $templatePath = $this->wire('config')->paths->templates . "pushalert_endpoint.php"; if (is_file($templatePath)) $this->wire('files')->unlink($templatePath); Could it be a permissions error?
  • Create New...