• Content Count

  • Joined

  • Last visited

  • Days Won


ryan last won the day on February 18

ryan had the most liked content!

Community Reputation

15,411 Excellent

About ryan

  • Rank

Contact Methods

  • Website URL

Profile Information

  • Gender
  • Location
    Atlanta, GA

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. This week we take a look at what’s in ProcessWire 3.0.126 which focuses largely on resolving issue reports, but also includes a handy new $page->if() method— https://processwire.com/blog/posts/pw-3.0.126/
  2. This week we take a closer look at the upcoming ProMailer module with a lot more details and screenshots. Plus an update on next steps with the new website and development schedule in the weeks ahead— https://processwire.com/blog/posts/promailer-preview/
  3. ryan

    @Robin S Good point, I need to update that phpdoc in that file and will. I think it'll be more convenient for users if I keep it up to date with Sanitizer, rather than removing it completely. At least I like my code editor being able to recognize them as function calls rather than errors. As far as I know, there's not anything we can do phpdoc-wise to cover instruction methods (like text50_entities), since there's basically an infinite possible combination of them. Though will be translating the blog post into regular documentation for these new additions.
  4. ryan

    Feel free to keep reporting here. I am checking in here for errors like this every few days and then fixing them as they come up. I'm guessing not too many more of these will turn up, as I've been continuing to update the logic in our 404 hook, plus logging 404s in ProfilerPro to catch any others that might have been missed.
  5. ProcessWire 3.0.125 has several useful new $sanitizer methods and options, as well as new ways to access them directly from the $input API variable. This makes dealing with user input even easier than it was before. This version also brings updates to our translation functions and improvements to our API documentation: https://processwire.com/blog/posts/pw-3.0.125/
  6. ryan

    If you've got the Android File Transfer app installed, try removing it. After upgrading to Mojave here, I was getting constant disconnects on bluetooth, which might have been the same with WiFi. After several days trying everything, finally uninstalled Android File Transfer and then no more problems. Still missing having the convenience of that app, but it really was screwing things up. Surprisingly runs just fine on my MBP, though I've not yet upgraded that to Mojave, so that's probably why.
  7. I'd planned on writing up a blog post today and bumping the PW version up to 3.0.125, but working on documentation pages ended up taking up most of the day. My hands are getting a bit tired from all the writing, so I'll keep this post short. I'll have a more formal post with more on the 3.0.125 version next week. People have been asking for more information on the various ProcessWire API access methods, as well as more information on the Functions API. I've written up a new documentation page that covers all the details. Though it's become a bit long, so next week I might split off the Functions API part into a separate child page. But for now, this is what I've got—the new documentation page is located here: https://processwire.com/docs/start/api-access/ In addition, the ProcessWire API Explorer module has been updated to support documentation for ProcessWire's procedural functions this week. And as a result, our online API documentation page now covers them all too. I spiffed up the phpdoc on all of them (and in some cases re-wrote the content) in preparation for that. For those that were asking for more documentation on the API functions, this page also has a section dedicated for those. Here's a direct link to our more than 50 procedural functions available in PW that previously didn't have any online documentation: https://processwire.com/api/ref/functions/
  8. ryan

    This is not what I'm saying. You seem to think this is something complex, but I think that's because you are used to something different. New users will not already be used to something. What I'm suggesting is actually much simpler than you think, and is more specific and clear than using exclusively $var or var(). Please wait and see what I write up this week, and I think it'll make sense. Like I mentioned earlier, if you fully understand it and still don't agree about the benefits, then I'll reconsider, but for now trust me on this. I would agree if we were showing $pages and pages() in the same set of examples, or $page and page(). But we are not. The examples don’t state “this is from a template file” or “this is from another script”, or any number of other contexts you could access PW’s API from. There’s plenty of cases where this call will work exactly as-is. If you are in a context where it won’t, it even specifically tells you what you need to do: call $page->of(false); first. Any 1-line example could work in one context and not another, that's the nature of it. In this brief set of intro examples it's important that we show not just getting data, but also saving it—wouldn't you agree? Yet setAndSave() is an advanced call, there for people that know what they are doing with regards to output formatting. It's not something to put in a beginner example because it's not for beginners. It’s important to learn what output formatting is before you start bypassing it. So I’m a little shy about a setAndSave() call here, plus I think it’s kind of a unique one-off in PW’s API, so not a general API example to communicate the underlying flavor of the API. And these examples are trying to communicate the overall flavor of the API, something to get you interested enough to explore further. In the examples we also refer to floors, height, year, email. Immediately under the examples it states “All fields in ProcessWire are custom fields that you easily define and edit in the admin.” This is what the examples are showing, and this is actually a pretty important point of the homepage. The fields you access from a page are entirely your own and you configure them how you want. If this is something that causes one confusion, then that would be a good confusion because it's revealing a key "aha" point. If this is something that sends one packing, then they didn't get it and are likely looking for something different than what PW is, which is also fine. But my preference is not to present examples that imply a fixed-field system, because that is the opposite of what PW is. Ah okay, thanks, I'll revisit and test it out again for those elements.
  9. ryan

    It's been mentioned a couple of times. I think functions API should lead the examples, but I understand the concern. Per the mention in last week's post, I'll be writing up all the details this coming week. Take a look, and if I haven't convinced you guys at that point, I'll be happy to change the examples. The only thing is, we'll probably need to come up with new examples because they get too long without the functions API. And at that point, they no longer serve the intended purpose at least on the marketing aspect. Favicons now added. The same could be said of using an API variable inside of a function or method. These are short examples to get you interested, they lack surrounding context regardless of what style API you are using with PW, and there will be cases where they work and where they don't either way. We're just trying to give people a small sip to see if it tastes good, not show them how to brew the beer. However, with that said, the intention is that they will work out of the box. They do work on the dev branch right now (which is the branch we recommend for new installs). This will also merge to master again soon. The examples have always worked on the core Regular site profile as well. Error messages have also been added to detect when you use a functions API call without them enabled, and it then tells you exactly what you need to do to enable it. As far as the core goes, the values set in /wire/config.php have to be settings that work on all existing installations. Whereas the values set in /site/config.php are those intended for new installations. We can't enable the functions API on existing installations—only new installations. The reason is that someone may have defined their own pages() function (for example) years before we even had a functions API, and upgrading to a version of PW that has it pre-enabled would then break their installation. I make an effort to ensure anything that gets added in PW is done so in a backwards compatible manner, and this is why there are properties like $config->installed and independent config files. The mix of approaches is actually relevant here because anything using a function refers to something where only one instance can exist, and anything using a variable refers to something that can have any number of instances. So I would use a variable like $page in an example when the intention is to say "can be any page", whereas I would use page() when the intention is to say "page being viewed", as there can only be one. That is one benefit, but definitely not the only one. Read what I have to say later this week. Context is important here and the statement above skips that. I'm recommending the functions API for front-end templates, where PW manages the instance for you. But this is also where our audience is going to be 99% of the time. Of course if you are developing modules, then neither pages() or $pages is right for you, as you are going to need to ask for them from $this. I'm not trying to appeal to module developers, they already have a good handle on this stuff. I went back and forth on this one a couple weeks ago, but settled on the centered version after a lot of testing. Centered felt much more balanced, perhaps because the lines are so short that all the weight ends up on the left side. These are just short snippets of text, but if it were any longer then no doubt we'd want to go left aligned. Good one and I agree. I think Robin S. also mentioned this if I recall, and I do have it on my list to add this capability. Uikit 3 doesn't come with an autocomplete component (Uikit 2 did), and we don't have one to use from jQuery UI like we do in the admin (since not using jQuery UI on this site). So the current autocomplete search is completely homegrown. I don't really know how to add the arrow key nav to this at the moment but do plan to hopefully figure it out soon. Between the existing wire highlight pointer, and the existing darkened text, and then add on that the text usually matches that of the headline, to me this just seems like way too much emphasis and redundancy if we also add a color change to it as well? At least my opinion is I don't want my eyes to be drawn to that unless I'm specifically looking for it.
  10. ryan

    Check your /site/config.php file. There is a $config->userAuthSalt salt value present there and it would need to be identical between the two installations, otherwise the two installations are hashing passwords differently. That's usually a good thing, but in your case where you want the existing logins to work, you would want to keep that userAuthSalt value.
  11. ryan

    @Robin S The download versions should be showing now.
  12. ryan

    Yep, I've got profilerpro monitoring them and if any url gets more than a couple hits then I add a redirect. It looks like there were a few I missed but slowly accounting for them as they pop up.
  13. In this week’s post, we’ll take a look a look at the new website and focus on some parts of it and how they were built. Then we’ll dive into the latest version of ProcessWire on the dev branch, version 3.0.124— https://processwire.com/blog/posts/pw-3.0.124-and-new-site/
  14. ryan

    The old logo is back due to popular demand. I've never liked the way it looks next to the newer mark, but reducing the brightness of the word "Process" seems to help a bit, so I think it works for now. The issue with the overlapping dropdown should be fixed now, please let me know if anyone else is still seeing it. You might have to double-test in Incognito mode if you do, just in case something is stuck in the cache. I agree with Adrian's points on Tracy, and also I wouldn't know how to maintain it if he ever decided to go meditate in a cave in India for a year. But I also agree about how useful and important Tracy is and that we should give her first class treatment around here and make it as easy as possible for people to make it a part of their installation. Perhaps the core modules install screen has an "Install Tracy" button, or special site profile, or maybe PW's default error messages could suggest Tracy as an option for additional developer help, etc. I think the example is fine because it just depends if output formatting is on or off. And if it's on, it'll give you an error about what you need to do. The purpose of those examples on the homepage is not to provide a full start-to-finish API workflow, but it's to show some interesting snippets to what's possible in 1 line of code. This is more about marketing than it is about serving as documentation, though of course they are good examples too. Regarding use of $pages vs pages(), I had thought we had it enabled in all the site profiles by now, but it turns out it was in the newest one but not the older ones. I'm updating the older ones so that it is enabled by default. I'm also updating the error handler so that if it detects you are trying to use the functions API but the $config->useFunctionsAPI is false, it replaces the "undefined function" error message with a "you need to enable the functions API and here's how..." message. Tracy actually got me thinking of this because I mistyped something and its error said something along the lines of "did you mean [alternative-function]" (not sure of exact wording) and I found that incredibly helpful. It's showing up for me. It's just there's a lot of stuff with the word "find" in it, so you just have to click on the view-all link. This is actually how we make it possible for that footer to be always up-to-date with the forums, Twitter, etc., even if the rest of the page is on a 1-day (or 1-week) cache via ProCache. It uses Uikit's scrollspy to automatically load the footer via ajax from a separate page that is on a 60-second cache, but only if you actually scroll to it. In this manner, we're getting full cached delivery, and a fully up-to-date News/footer section when/if you scroll down to it.
  15. ryan

    @matjazp @tpr Thanks! That did it. I know I can edit SVG files as XML but didn't know anything about what changes would be necessary to accomplish anything like this, so I appreciate it.