-
Posts
794 -
Joined
-
Last visited
-
Days Won
40
Everything posted by Jonathan Lahijani
-
I can give a quick reply about the Geffen calendar, but most of what there is to know about it is in that article I wrote. How the show performances (events) came to exist wasn't a concern as that was managed with a 3rd party service, obtained via an API and stored as child pages of a show. The main takeaway from that project was that we needed to simply display upcoming shows in a monthly calendar format (large and small) and when I originally developed the site, I leaned on FullCalendar. However that was total overkill and difficult to maintain because FullCalendar is more than just a way to display events in a calendar format, but an interactive component with dragging and dropping like what you'd get in a real calendaring system (Google Calendar, etc.). It's also built with complex JS which I like to avoid. I just needed an easy way to display information with simple AJAX loading between months. To solve those, CSS Grid (ie, "display:grid") and HTMX fit perfectly with some straight-forward PHP code to build it. One extra improvement that can be made to display a large and small calendar in different contexts while using the same HTML is to use container queries, but because browser support for it a couple years ago was still very low, I avoided it.
-
Easy way to get all $pages->meta() data?
Jonathan Lahijani replied to bernhard's topic in General Support
Wasn't there a module that surfaced this information in the admin? Anyone remember what it was called? I can't find it. Edit: TracyDebugger can do it. -
Very true. IP block lists, mail limits and all that stuff is probably something I don't want to deal with on my own, but I'll probably experiment with it on a personal sites just to get an understanding.
-
A couple others I forgot to mention originally: Matomo: website analytics (alternative to Google Analytics) https://matomo.org/ Syncthing: file syncing tool (alternative to Dropbox, Google Drive); it's not strictly a tool to help build websites like all the others I mentioned, but it's become a vital tool in helping me de-google https://syncthing.net/
-
I haven't used it yet but it would be for both transactional emails and mass emails (newsletters). In the context of ProcessWire: transactional emails being Form Builder email notifications, forgot password requests, new user notifications, etc. mass emails being those sent by ProMailer
-
I'd like to hear what software you self-host and that act as an alternative for a cloud-based offering. It doesn't have to be FOSS, commercial is OK too. Some of my go-to ones, beyond ProcessWire and LAMP, are: Uptime Kuma: an uptime monitor (recently discovered this and it's earned a spot on my 'tools' server) https://github.com/louislam/uptime-kuma Postal: open-source mail delivery platform (recently discovered this as well; acts as an alternative to Mailgun, Sendgrid). https://docs.postalserver.io/ Invoice Ninja: I already have my own custom project/bookkeeping/invoices system that I built and maintain with PW, but I'd probably use this if I didn't go that route https://www.invoiceninja.org/ RocketShipIt: self hosted shipping API (has a cloud option as well; commercial but very good pricing; alternative to EasyPost and similar services) https://www.rocketship.it/
-
User Activity module AJAX forbidden due to updated apache
Jonathan Lahijani replied to adrian's topic in General Support
At the time of this writing: Ubuntu 22.04 is at Apache 2.4.52 Ubuntu 24.04 is at Apache 2.4.58 Both are experiencing the issue where going to example.com/some-folder/?foo=%3Fbar causes a 403, unless I modify the rewrite rule to be this updated version discussed above: RewriteRule ^(.*)$ index.php [L,QSA] @adrian You said the issue would be resolved when 2.4.63 is available. So is the best plan to wait for that version to be released in apt package manager, update to it, then revert the rewrite rule back to what it originally was? -
Wouldn't this be a great demo/challenge for ProcessWire?
Jonathan Lahijani replied to wbmnfktr's topic in Dev Talk
What was described in the tweet sounds somewhat similar to what I did with Transferware Collectors Club, which I built over the course of 2021 and with HTMX (before it was 1.0). Check out the video I linked to in the post here (it's not a public site): -
I just set up Uptime Kuma based on the recommendation here. It's a nice piece of software. I set it up on a very cheap Hetzner server (like $3.85/month) and installed it using the non-Docker approach. I'm using Mailgun for email notifications. It's my first time using Hetzner but I keep hearing great things about it. DigitalOcean is my go-to for servers, but Hetzner has better deals apparently. Feature rich, self-hosted, easy to install (ie, it didn't break when following the simple commands). Perfection.
-
RockShell - a ProcessWire Commandline Companion ⌨️
Jonathan Lahijani replied to bernhard's topic in Modules/Plugins
@bernhard Can pw:install be completely unattended if I execute it with all the required options on the command line (which I'm guessing is not possible for database info) or does it require "stepping" through given that it's built with BrowserKit? Note: I'm not using ddev if that matters. -
Hi Bernard, In Rails, it's theoretically possible to take a non-Rails managed database and get the schema of it in ActiveRecord-based migrations: db:schema:dump The reason I bring this up is because if I wanted to take an existing non-RM PW project and start using RM in its entirety, I believe I currently have to manually make the master migrations file initially "by hand" even if it involves copying the field or template export code (let's not forget pages as well) RM conveniently provides when editing a field or template. So my question is, does RM have an equivalent of Rails' schema dump to speed up completely RM-ifying an existing project or would I have to manually create those field and template migrations (and pages as well)? I could do it by hand (no problem) and it would take 1-2 hours. This question also touches up tearing up and down a site for testing. Interested to hear your thoughts.
-
[SOLVED ]Running Console Loads Front-End
Jonathan Lahijani replied to aComAdi's topic in Tracy Debugger
@adrian No issues with latest version. -
Another question: In Mystique, you are able to detect the page requesting the field, and as a result, modify the fields that actually get displayed. This is very useful because it allows you to have one Mystique field but have it "morph" depending on the context. On my sites, I typically only have 1 Mystique field called 'options'. I then assign that to various templates that need it (even specific matrix-types like for my page builder). Then when the field is loaded when editing a page or a matrix-type, I can "build" the field based on what template requested it because the $page variable is available. My 'gallery' matrix-type/page builder block will have fields that are gallery configuration related, my 'video' block will have video configuration fields, but they are all still technically the single Mystique 'options' field. @ryan So in your example of /site/templates/custom-fields/contact.php, is it able to determine what page requested it?
-
As others have mentioned, this is quite similar to the Mystique field which I'm a fan of and has the feel of how custom fields work in WordPress (more "on the fly"). I use Mystique for my matrix-based page builder block options which is a great fit. Will consider switching to this since it will be first-party and more integrated. Does it store the saved input data in json as well? I'm guessing this doesn't work with repeaters or images, correct?
-
@ryan In my original reply to this post I mentioned making PW a bit stronger for web application development. After reading these replies, it seems that a lot of the more intricate techniques that would be desired for advanced use cases are already possible natively, but even those of us here that I would consider highly experienced with PW and OOP are still picking up a few crucial nuggets of information that go a long way in structuring a web application with PW (at least it seems that way). So to elaborate on what I stated originally, I think demonstrating how you would approach some of these advanced techniques natively in PW (showing that a feature request to make it "nicer" is not necessary / technically problematic) in a real working app would be very helpful. I believe you attempted this with the site-invoices profile and building it out further with more web-application-y type techniques would really be great.
-
@ryan Assuming one were to take this approach, what is the proper/recommended way to load the ProductPageTools.php class file?
-
With regards to SEO related features, I think that being natively built in to ProcessWire is not the best choice as it goes against the unopinionated nature of ProcessWire. If one were to develop a webapp where SEO is not necessary, those fields would cause bloat. But if this were to be an official Profield, it would be wonderful. Personally, I use the FieldsetGroup Pro field (I gave SEOMaestro a try but it didn't work the way I liked), but since that's now legacy, I will have to switch my approach at some point in the future. It looks like this (note: it used to have XML sitemap fields as well, however when WireSitemapXML came out, I removed them and let that module handle it): If there were to be an new SEO module similar to my screenshot (meaning it supports fields for X, Facebook and other social networks), I would hope it's not officially called "FieldtypeSEO" but rather something like "FieldtypePresence" (ChatGPT helped me with that one) since it's more fitting (it helps improve your site's "presence" via search engines and social media networks). Personally I dislike the word SEO as it represents a lot of what's wrong with the internet and the snake-oil behind it.
-
How to prevent session locks?
Jonathan Lahijani replied to Martijn Geerts's topic in General Support
Reviving this thread. Let's say I quickly opened 3 different pages in new browser tabs to edit in the admin that each take 10 seconds to load (assume they are pages with a lot of related data and repeater items). Because of session locking, it must load the first page, then after that is completed loading, it will load the second page, and so on. This means there is considerable lag. I believe this is not an issue with ProcessWire itself (regardless if using SessionHandlerDB or file-based sessions), but how PHP does session locking in general to prevent issues. So there's no problem-free way around this... is that still correct? -
Making ProcessWire stronger for full-stack web application development, allowing it to become an unassuming alternative to Laravel and Rails but from the origins as a CMS. ProcessWire is the perfect CMS (there's no doubt in my mind about that), and it's actually already quite good for web application development (both natively and with 3rd party modules), but with some enhancements to make it more "batteries included", enhancing page classes and some tooling, ProcessWire can have its feet in both the CMS and full-stack framework buckets in a way that's perhaps unique. I can elaborate on this further as that sounds a little too generic, but I've been developing a web application with PW for over 9 months (it's a very complicated project and it's replacing an existing, in-production system which makes it even more tricky and high-stakes) and when it's done I can share some ideas. This one enhancement alone moved the needle quite a bit in making ProcessWire more web application friendly.
- 127 replies
-
- 20
-
-
-
Google flagging Rockfrontend as malware
Jonathan Lahijani replied to heldercervantes's topic in General Support
Is this related to the recent polyfill.js supply-chain attack? https://news.ycombinator.com/item?id=40791829 https://sansec.io/research/polyfill-supply-chain-attack -
The larger picture of why I'm doing this is to overall De-Google, De-Microsoft and De-Apple my life as much as possible (surely there will be exceptions). It's not about saving money or privacy (those are very very minor points), but personal optimization, control, me being ready for it, Linux desktop having become really great in the last X years, and taking a stronger liking to FOSS and self-hosting.
-
Going back to finding the best file manager, I think I'm going to settle on Konqueror (I tried about 7 different ones). I'd prefer to stick with a GTK app, but all the GTK file managers are just too simplistic. I need my tab state saved and none of them do that except for Konqueror (well maybe some do but it's outweighed by other things I prefer to skip like dual-pane file management). KDE apps tends to be advanced user oriented, and in this case, the deep customization capability of the app really shines for what I need. As for TUI and CLI apps, one route I've long considered is switching to terminal-based apps for almost everything and being as mouseless as possible. Before I do that though, I would first want to become comfortable with Neovim and Vim-style key bindings. The problem with that however is I don't type "correctly" (fingers on home row, etc.) so fixing that after 30 years of typign my own way will be... fun. Small incremental steps for now, but after many years of experimenting, I think the "year of the Linux Desktop" has arrived for me.
-
I wrote about it here to an extent: Indeed. While I don't use laptops, I did have a Intel NUC for a while and that totally drove me insane with the fan whizzing. However a new era is now upon us with Qualcomm Snapdragon X, the non-Apple alternative Apple Silicon. When Framework laptops get this chip and Linux support is 100%, I'm making the switch and saying goodbye to X86 (and Windows).