Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by psy

  1. OMG solved! 🤞 When I was digging into wire/core/WireHTTP I think the file got corrupted, maybe during an upload to my dev server (yes, still staging) Replaced it with a new copy and site is working again @netcarver truly appreciate your help and patience.
  2. @netcarver I tried that on the frontend and it worked but now every time it has to wire a new page, or in admin perform some http task, it fails. My error logs are filling up fast
  3. @ryan any ideas? Nothing that involves https works, eg admin 'Save' functions, frontend redirects.
  4. Have uninstalled: TracyDebugger LoginRegisterPro (not used anyway) Very few other modules in use and still the error, admin & fe 😞
  5. @netcarver Thanks for your input. Site doesn't use any hooks Searched Google, forum but not repo. Will do so now. There was an old post that was vaguely similar but didn't have an answer. See link below Turning off the error may hide the error message but, you're right, it will totally obscute the real issue.
  6. I've been working on a a new site for weeks. $session did it's normal, wonderful stuff until today when it didn't - boom!!! $session now occasionally holds vars from one page to another. The killer is $session->location or $session->redirect. Before redirecting, the page crashes with: I went back to basics with the default theme: Using ProcessWire 3.0.212 dev PHP v8.1 (tried 7.4 & 8.0 too) Error occurs in Chrome & Firefox Editing modules, eg turning TracyDebugger on/off also triggers the problem Error occurs in front and back end. Often, clicking on a link to a different page clears the error but $session still screwy. Have no idea why PW suddenly stopped correctly wiring $session. Is this a bug? Am I doing something wrong? Help & ideas on how to fix gratefully accepted. Solved: Upload a fresh copy of WireHTTP to my server. Previous version may have been corrupted in transit.
  7. Solved! Instead of re-using the same $http object I'd used for multiple previous GET requests, I created a new one, ie $postHttp. Postman had "no-cache" as a header.. Thanks again for the tip @netcarver
  8. Thanks for the tips netcarver. Will compare the headers 🙂 I had "Content-Type" then looked into WireHTTP.php where it's listed everywhere in lowercase, eg: <?php public function post($url, $data = array(), array $options = array()) { if(!isset($this->headers['content-type'])) $this->setHeader('content-type', 'application/x-www-form-urlencoded; charset=utf-8'); return $this->send($url, $data, 'POST', $options); }
  9. I'm trying to post json data to an endpoint with: <?php $http = new WireHttp(); $http->setHeaders([ 'X-Auth-Token' => 'XXXXXX', 'Accept'=> 'application/json', 'content-type' => 'application/json' ]); $myEndPoint = "https://myendpoint.com/api"; $params = [ 'parent_id' => 0, 'name' => "My Name", 'is_visible' => false ]; $paramsJSON = json_encode($params); $http->setData($paramsJSON); $response = $http->post($myEndPoint); if($http->getError()) { echo "HTTP request failed: " . $http->getError(); $this->die; } //..... } It fails every time no matter how I present the $params with: HTTP request failed: 400 Bad Request:. It works successfully when I post through Postman app. The endpoint & headers are correct and used successfully elsewhere with $http->get Help to fix much appreciated.
  10. Have you set up your local URL's on the Home page 'Settings' tab, url fields ? It's usual to use the ISO Language (not Country) codes, eg 'de' for 'German'.
  11. An alternative approach using native PW is to make your titles the shorter version and use a field, eg 'headline' for the lengthy version. In your templates use: <h1><?=$page->get('headline|title')?></h1> This will output the headline if it's available and if not, the title. You can then also use the shorter version in front end menus, etc. In the admin page list, it will default to the shorter 'title' field. If you need the front end page URL to be the longer version for SEO, you could add a hook in templates/ready.php, eg (untested): <?php $wire->addHookBefore('Pages::saved', function(HookEvent $event) { $page = $event->arguments(0); // ensure it meets the requirements if (empty($page->headline) || $page->template !== 'your-template-name') return; // regenerate the page url from the headline field $page->url = wire('sanitizer')->pageName('headline'); // Populate back arguments $event->arguments(0, $page); }); And another way.... In your template, Advanced tab, under "List of fields to display in the Admin Page List", simply enter {name-of-your-shorter-field}
  12. Bump My site has 17 languages and I'm getting this error too when adding a new language
  13. Hi @Sebi Would you please give some actual code examples? I've tried all sorts of variations and if I manage to get a response, it's always in the default lang (English), eg: Thanks for all the work you've done with AppApi and the add-on modules. Hope you can help. Cheers psy SOLVED (almost!) In _init.php: In my page template javascript: In my AppApi custom class to make it multi-language: Everything seems to work fine EXCEPT when using AppApiPage on the home page. The response is still always in the default language.
  14. Tip for the unwary... My admin site's default lang is 'en' - just happens as per install. Was surprised to see that the new TinyMCE inputfield menus etc defaulted to Russian 🤔. Solution: When configuring Modules -> InputfieldTinyMCE, ensure your 'default' lang is set to the correct lang code, eg "en-US"
  15. @DV-JF it was running 3.0.200 and I upgraded to the latest dev 3.0.207 I also changed line 845 in PagesLoader.php to confirm if $options is an array: $options = is_array($options) && count($options) ? array_merge($defaults, $options) : $defaults; Switched the site back to PHP8 and it's working again. @ryan fyi
  16. It worked before and now not 🤔 The web server was recently upgraded to PHP8 and I know PHP8 is much stricter on argument typing than previous PHP versions, and this blip resulted in a Server 500 error: 2022-11-16 14:56:21 guest https://xxxxxxx.com/api/ Fatal Error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, string given in /home/xxxxxxx/public_html/wire/core/PagesLoader.php:845 The code was a 'page get' selector request in an ajax call. It all worked before the PHP update and I'm sure there are others using $pages->get() without issues on PHP8. $pages->get("id=". $sanitizer->int($data->pid)) I also tried it without the "id=". I think the problem is more that $options is a string in the line in the PagesLoader.php: <?php $options = count($options) ? array_merge($defaults, $options) : $defaults; Any ideas on how to fix? Thanks, psy Solution Changed line 845 in PagesLoader.php to confirm $options is an array and the site worked again. $options = is_array($options) && count($options) ? array_merge($defaults, $options) : $defaults;
  17. On many of my sites I have a page for business information which includes: toggle for site down for maintenance or live combo field for business name, address, phone, email, contact name, etc functional field for common phrases The combo field is great in this scenario. The data is fairly static and I only need to add the one combo field for a bunch of 'sub' information, bits of which may be used throughout the site. The alternative is to create a fieldset with individual fields, all of which would only be used in a single template and have one entry per field.
  18. Hi @Jan Romero The PW docs refer to language codes. I didn't realise language codes and country codes were slightly different. Solution discovered by trial and error, and ironically, Google's Search help. Initially the warning only appeared when that lang page loaded, but once done so, the whole site had "Dangerous" in the browser address bar. Refreshing using the default lang cleared the message.
  19. This is my first multi-lang site and client, bless his cotton socks, has chosen to have the site in at least 10 languages. Have figured out many things but Chrome is not playing nice. The default lang is English UK (lang url code is 'default' or 'gb'). On some langs, esp English US (lang url code is 'en-us') and Japanese (lang url code 'jp'), it's flagging the pages as "dangerous - could be phishing". All works fine in Firefox. Questions: 1. How to stop Google flagging valid lang pages as dangerous? ANSWER: Use the language code NOT the country code in the URL, eg English US = en-us (not just 'us') and Japanese = ja (not 'jp'). 2. On langs that don't follow the 'English' convention of text LTR, how do I set alternatives in the HMTL? eg Japanese is 'top to bottom, right to left'. Have done what I can in the CSS using logical properties (eg margin-block-start, padding-inline-end, etc) ANSWER: Add the language name as a class in the body tag then set the writing mode in CSS, eg: /* japanese */ body.japanese { writing-mode: vertical-rl; min-height: auto; overflow-x: auto; } HTH psy
  20. Being able to download full-scale images, including SVG's, directly from an admin->page-edit->images field via a single click on an icon would be a great feature
  21. Not sure I fully understood thei issue but I'd use dev tools to identify the element rule, then add the download icon to :before or :after styling in your custom CSS after SCSS compilation
  22. So, after 5+ years of being a ProcessWire dev, I've bagged my first multi-lang project. Be prepared for questions 🤣
  23. @BrendonKoz Container queries have been on the CSS agenda for a long time. At present the @container rule has limited browser support but it's definitely on its way. See https://caniuse.com/?search=%40container
  24. @maddmac glad the module still works ? It doesn't do anything except create new pages as per the criteria set in the module config. The new pages are simply pages - you can then query whatever you wish as normal. The module only has one method which adds a Hook Event after a page is saved.
  25. Seems to be a problem with namespaces. Try adding namespace ProcessWire to the template: <?php namespace ProcessWire; include '<?php echo $config->urls->templates ?>stripe-php/init.php'; //require 'vendor/autoload.php'; use Stripe\Stripe; Stripe\Stripe::setApiKey('xxxxxxxxx');
  • Create New...