Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 05/05/2022 in all areas

  1. I'm a big fan of HTMX. It's kindof like "lower level" than hotwire and not sure if even comparable to Livewire. And there is also the Intertia.js adapter if you want to take a look.
    4 points
  2. @wbmnfktr thanks for starting this topic, very interesting! After reading all replies I think I get your point. I mostly develop with Django (Python) where DRF gives a powerful standardized API centered around models. Still, as you said, while working with other systems I always miss processwire for it's flexibility ;) From what I understood other systems include a REST API out of the box (more or less) where processwire "forces you to write some lines of codes" … and I guess that is the strength of processwire. It does not force you into a one fits all solution. My two cents: For an upcoming project I tested different solutions. With AppApi indeed I got resonable results in not 2 but 15 minutes. With JWT included, nice! (thanks @Sebi) For smaller needs URL hooks … for bigger needs –without auth– PageQueryBoss … –with auth– appAPI, is my way to go. But yes +1 for a core integrated solution that publishs pages based on standards . Doing so it would even be easy to get a clear, understandable and standardized API Documentation.
    3 points
  3. hotwire, unpoly doesnt require any backend language. mostly use with pw: Unpoly: Unobtrusive JavaScript framework
    3 points
  4. I think person 2 sees page B in 2 seconds. I did a kind of test... I have two pages and two templates: page "Yellow" uses template "colour" and page "A Basic Page" uses template "basic_page". There's nothing special about the template file for basic_page but in the template file for colour I have: sleep(30); If I load page Yellow in one tab and then immediately load A Basic Page in another tab then I have to wait 30 seconds to view either page. But if I load page Yellow in one tab and then immediately load A Basic Page in an incognito window (which will have a different session) then the page loads immediately.
    3 points
  5. Maybe my https://github.com/joyofpw/inertia module can be of help ?
    2 points
  6. Sorry for the delay. At this point we're really looking for someone who is in the South Windsor, CT area or who could relocate for this full-time position. We currently work in the office 2 days a week and work from home the other three. But my boss (the owner of the company) says he is also interested in making connections as there is the possibility of contract work on an individual project basis or perhaps full time remote work at a later date.
    2 points
  7. True. Unless one adds the flag objects=1, in which case one get a stdClass ?.
    2 points
  8. ProcessWire 3.0.198 contains a mixture of new features and issue resolutions. Below are details on a few of the new features: Support was added for runtime page cache groups. This enables pages to be cached as a group—and just as importantly—uncached as a group. While it can be used by anybody, it was added primarily to add efficiency to $pages->findMany(), so that it can cache supporting pages (like parents and page references). Previously, it would have to load a fresh copy of each supporting page used by findMany() results (for every returned page) since findMany() used no in-memory caching. If it did cache in memory, then you could potentially run out of memory on large result sets, so that strategy was avoided. Consider the case of iterating over all pages returned by findMany() and outputting their URLs... that triggers load of all parent pages for each page in the result set. And without a memory cache, it meant it would have to do it for each page in the results. Following this week's updates, now it can cache these supporting pages for each chunk of 250 pages, offering potentially significant performance improvement in many cases, without creating excess memory usage or memory leaks. When the chunk of 250 result pages is released from memory (to make room for the next chunk), all the supporting pages (parents, page references, etc.) are also released from memory, but not before. Now findMany() can offer both memory efficiency and great performance. For as long as I can remember, ProcessWire has had an apparently undocumented feature for dependent select fields that enables you to have two page reference fields using selects (single, multiple or AsmSelect) where the selected value in one select changes the selectable options in the other select (Ajax powered). Think of "categories" and "subcategories" selects, for example, where your selection for "categories" changes what options are selectable in "subcategories". Part of the reason it's undocumented is that it is one of those features that is a little bit fragile, and didn't work in some instances, such as within Repeater items. That changed this week, as the feature has been updated so that it can also work in Repeater items too. The $pages->findRaw() method was updated with a new "nulls" option (per Adrian's request in #1553). If you enable this new "nulls" option, it will add placeholders in the return value with null values for any fields you requested that were not present on each matching page. This reflects how PW's database works, in that if a field has no value, PW removes it from the database entirely. Without the nulls option (the existing behavior), it retains the more compact return values, which omit non present values completely. For example, consider the following: $items = $pages->findRaw("template=user, fields=email|first_name|last_name"); If a row in the result set had no "first_name" or "last_name" populated, then it would not appear in the that row of the return value at all... [ "email": "ryan@processwire.com" ] By specifying the "nulls" option, it will still include placeholders for field values not present in the database, and these will have a value of null: $items = $pages->findRaw("template=user, nulls=1, fields=email|first_name|last_name"); [ "email": "ryan@processwire.com", "first_name": null, "last_name": null ] By the way, if you don't specify which fields you want to get (which is the same as saying "get all") then adding the nulls option makes it provide placeholders for all fields used by the page's template. As you might expect, without the nulls option, it includes only populated fields. Also included in 3.0.198 are 7 issue fixes, most of which are visible in the dev branch commits log. That's all for this week. Thanks for reading this update and have a great weekend!
    1 point
  9. This week's commits for ProcessWire 3.0.199 focus primarily in wrapping up several remaining reported issues in preparation for our master/main release version. So you can think of 3.0.199 as very close to a release candidate for the next master/main version. A few of the issues resolved this week were ones that had been around a long time, due to being difficult to reproduce, or issues that had been held off for awhile because they were going to take additional time to resolve. (See commit log for details). Having closed out a few of those older issues this week, I'm feeling good about where the dev branch is right now and think we're just about there. If you have a chance to test out the current dev branch (3.0.199), please let us know if you run into any issues. At least one person has asked about why we're not bumping the version to 3.1 (previously, or now). The reason is that all 200 versions of 3.x should be compatible with each other, enabling one to upgrade (or potentially downgrade) between the 3.x versions, without any drama. That's a good thing I think, and so I'm kind of proud that we are approaching version 3.0.200, which will hopefully be our next master. I'm sure we'll have a 3.1 at some point in time, but I'd like to keep on the 3.0.x track so long as upgrades remain drama free. Thanks, and have a great weekend!
    1 point
  10. Are you talking about this? You can unselect the curent parent if you hover over it.
    1 point
  11. +1 I am working on my first Unpoly driven frontend and loving it so far. With so little code one can do a lot! What I'm aiming at the most is this: no businness data validation / calculation / transformation / whatsoever on the frontend, only in PHP at server side! A lot of "hidden" features are lurking in the Unpoly docs, reveling that things can be quickly implemented by applying a few HTML attributes only, see for example "dependent selects": https://unpoly.com/input-up-switch Unpoly is what Bootstrap is for CSS but for JavaScript, so to speak.... This is an important remark, I think. What they solve (including Unpoly) is not exactly that, but one can code all the "businness data manipulation" on the server only, and use these JavaScript libraries to implement an app like behavior in the browser relatively easily (especially in the case of Unpoly). One still needs to find the "right" backend framework/CMS/CMF that fits ones need and implement the HTML rendering for the frontend as required by the chosen JavaScript framework.
    1 point
  12. I'm not familiar with LanguageLocalizedURL module, but you can change /site/modules/LanguageLocalizedURL.module line 174 to $str = mb_strtolower("$str"); In /wire/modules/Fieldtype/FieldtypeRepater/InputfieldRepeater.module replace line 719 with if(!strlen("$addLabel")) $addLabel = $this->_('Add New'); I reported both of your findings so they will be fixed.
    1 point
  13. Yes, that's the missing 1% :-) Please try changing to $splitPass = str_split($pass, (int) (strlen($pass) / 2) + 1);
    1 point
  14. yes that's the one. I had the issue before a long time ago. still recovering from racking my brain back then
    1 point
  15. I would go with PHP 8 and the latest dev (soon to become a master). We have ironed out like 99% od deprecation warnings in PHP8, some may still pop up, but will be fixed promptly.
    1 point
  16. Thanks for the reply. The purpose of my question is ultimately related to priming my ProCache cache. Right now, I have a whole bunch of optimizations in place, but when I deploy my site, I purposely clear all cached pages as they need to be rebuilt. If I have a script to primes 50 pages that each take 20 seconds to prime, one after another right after deploy, I'm wondering to what extent this makes the site inaccessible during the priming process. My question is what is it that exactly causes a site to lag for one person while another person (or my priming script) is loading intensive pages?
    1 point
  17. Thanks for the great help everybody!
    1 point
  18. You grabed the latest master 3.0.184? No go for PHP 8. Use the latest dev 3.0.199.
    1 point
  19. Just adding that I am working on an API for adding products, variants, categories, etc. This will be available via the global $padloper.
    1 point
  20. Hi @alexm, This is a multi page reference field (padloper_product_attributes_options) so you would add using any of the ways shown here in ProcessWire docs using PageArray::add() syntax. https://processwire.com/api/ref/page-array/add/ Here are some Padloper product variant examples Please note that example 2 assumes the (parent) product page has the attributes Colour and Size in its field padloper_product_attributes as the respective parents of the attribute options Red and Medium. <?php namespace ProcessWire; // the variant product page $variantPage->of(false); // Example 1: get and add one attribute option $attributeOption = $pages->get(1234);// e.g. /colour/red/ // Add one page (attribute option) $variantPage->padloper_product_attributes_options->add($attributeOption); // Example 2: Add multiple pages (attribute options) // $selector: full selector $selector1 = "template=padloper-attribute-option,title=Red|Medium,check_access=0"; $variantPage->padloper_product_attributes_options->add($pages->find($selector1)); // OR // $selector2: Padloper short syntax selector $selector2 = "template=option,title=Red|Medium"; $variantPage->padloper_product_attributes_options->add($padloper->find($selector2)); // Example 3: Add one page by ID (attribute option) $variantPage->padloper_product_attributes_options->add(1669);// e.g. /size/medium/ // save the variant product page's attribute options field $variantPage->save('padloper_product_attributes_options'); Hope this helps.
    1 point
  21. Hi @csaggo.com. Apologies, for the delay. This has taken longer than anticipated. Good news though, I now have a solution that caters for all sorts of formatting. I am currently testing and plan to release end of this week. Thanks.
    1 point
  22. @thetuningspoon, Thanks for posting this. If possible, please edit your post and address points #1 - 3 as relevant as per the job posting guidelines: E.g. remote working, US-based, similar time zone, etc ?. Thanks!
    1 point
  23. What about the "X-Requested-With: XMLHttpRequest" header? The $config->ajax call requires that to be sent.
    1 point
  24. Thanks! TL;DR No; I will not provide a feature comparison list of Padloper 1 versus Padloper 2 for the sake of validating the price of the latter. The simple reason is that it is a futile exercise. Pricing a product takes into account so much more than a features list ?. Longer Read Pricing a product is not as simple as your post implies. If it was simply a matter of adding new / more features, pricing most things in life would be straightforward. All we'd have to do is add a new feature and subsequently increase the price. Fortunately, that is not how the real world works. For instance, at what point will the law of diminishing returns kick in? Or, at what point does the product become unaffordable to most users simply because more features were added? Assuming a product was priced at x and I add 20 new features, should I then price it at 20x?? If 20x is beyond reach for many customers, do I then stop adding features so that I can freeze the price at 20x? Should I remove features so that I can reduce the price? Your proposition also implies that all added features are equal with respect to their object and/or perceived values. So, if I add 1 feature, the price should go up commensurately. I guess you get my point by now. However, let's talk a bit more about this. Pricing a product is a delicate combination of various factors. Some of these include, in no particular order: Perceived value. Objective value. Product Features. Inflation. Customer service. Market place. Competition. Quality of product. Other market forces. The above is not an exhaustive list and some of the points could probably be merged into one. Tempted as I might to digress into an economics pricing class 101, I'll pass and just make a few more comments. With no relation whatsoever to the current pricing points for Padloper, my opinion is that Padloper 1 was under-priced. Not just my opinion, by the way, as various people have privately told me this (unsolicited comments). If you are still wondering whether you need Padloper 2 then you probably don't need Padloper 2 ?. Padloper 1 will work just fine in your case. Those who need Padloper 2 know it and know why they need it. So, in answer to your question, no; I will not provide a feature comparison list of Padloper 1 versus Padloper 2 for the sake of justifying the price point of the latter. It is pointless to do so as the intricacies of pricing any product are much more complex than your question implies. As for the features of Padloper 2, I'll add these to the new Padloper website in due course. Meanwhile, you can get a glimpse of these from my original post. Demo videos are also on the way.
    1 point
  25. Hi! Anyone got any news on this issue?? Gettin git on runcloud too. EDIT: Well I did change the render() return on BreadcrumStructuredData.php on SeoMaestro to this: return $this->files->render(dirname(dirname(__DIR__)) . '/templates/structured_data_breadcrumb.php', ['listItems' => $this->getListItems()] ); And now it seems to have stopped throwing that error , now I wish I knew why it's different lol I was completely tripping with this, it's actually only Tracy Debugger the one triggering this issue.
    1 point
×
×
  • Create New...