Jump to content

BrendonKoz

Members
  • Posts

    314
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by BrendonKoz

  1. Using straight database methods/functions to retrieve data would, unless you process the results differently, just be standard PHP / MySQL requests. You can use the API docs about $database, and take advantage of it, but it's just a ProcessWire way of querying a separate database. The resultant data would still be just that -- data. How you then further process that data and then display it in a template is up to you. Most of what is rendered in a template is up to you, as a developer, anyway. If you're looking for a more ProcessWire-like way of referring to data when using the WireDatabasePDO class (ex: $page->MyCustomTable->row->first('property')), you won't get it, that's just a helper class to standard PDO methods within PHP. Something like kixe's FieldtypeSelectExternalOption might provide you with a PW-like feeling, though I don't know if it's entirely necessary. It all depends on what you want to do with the data from the table, and how you want to interact with it, if at all. If you want to be able to edit it in the admin, and/or create pages from it, then it's not quite as simple, and I'm not sure you'd want to. You certainly can, however. So with the separate database, what is it you'd like to be able to do to, or with, it? Simply display it? Here's another good discussion on this topic, also in the forum...
  2. @MarcC If/When you get a chance to look into it again: How was Tracy duplicating the behavior if it was template-based rendering?
  3. That's excellent. 🥰 Ah, I did not intend to suggest complete removal - only a collapsed interface to lessen the vertical scroll when a user might not need to interact with individual dates in a recurrence. The difficulty might be in separating out the progress bar, depending on how you're handling the HTML (since I think having that shown at all times is absolutely important). szabesz mentioned BusyCal; I use Rainlendar for my calendaring; it uses a tabbed interface to section out different aspects of events/reminders, that way (theoretically) similarly used functions are grouped together, but not everything is viewed at once. That said, there are benefits to certain users having everything viewed at once that can get lost in tabs/collapsed areas too, so I humbly refer to your best judgment and preference! 🙂
  4. Sorry, tinacious - my suggestions were generalized suggestions of things to try that might get you there, not necessarily a full solution on its own without some additional legwork. Glad poljpocket's suggestion gets you a little closer!
  5. That's definitely an interesting one based on what you've already provided. My first thought would be some sort of custom TextFormatter but you've already tried removing that. Even more confusing considering the rendering within TracyDebugger is showing the duplication. Silly question: You weren't working on a local/dev version but checking updates on a live/production version, right? ProCache was most definitely completely off, and any saved caches were cleared? Field-level caching was not enabled on the body field? Is the body field a standard textarea/CKEditor/TinyMCE field, or is it part of a Repeater(Matrix)?
  6. If you're willing to use a Docker-based solution for your local dev testing -- or just give it a go, I just searched via Google to see if there was a Docker container pre-configured that someone's put together using your two listed prerequisites. There is (of course) a WordPress setup that someone has shared. You could use Docker and setup the customized container, then either delete WordPress (if you want) or use the setup and just install ProcessWire alongside it for testing (and then [likely] destroy it when you're done testing). A lot of PW developers here love DDEV as a development environment which uses Docker as the underlying service. It might be an opportunity for you to try an alternative local development hosting setup just to see if you like it. Honestly, I don't know if you'll want to switch from MAMP fulltime as MAMP is likely going to be more responsive with system resources. BUT, for a quick test of validating LiteSpeed and MariaDB support (if you didn't want to spin up a DigitalOcean or Linode or similar service temporarily), it would definitely work in a pinch to give you some more peace of mind. Docker Hub: LiteSpeed WordPress Setup
  7. I love the planned efficiency of that. I was actually thinking that, using meta(), there might be a way (or a few ways) to mix the two, but I hadn't fully thought it through. I was actually wondering about that after watching the video, and after bernhard's explanation of what is actually stored. So currently it sounds like there is a single page that stores all of the various data, aside from the date, and/or datetime values for recurrence. However, what does happen if there is a description exception within the series? Example: A client wants to hold a recurring meeting on the 2nd and 4th Thursday of the month. It's a book club. They know they'll be having this meeting for the full year, with the exception of major holidays. They want to include the name of the book that will be discussed for each meeting - so nearly everything will be exactly the same, with the exception of a description field (or a separate "book" field?). If the base solution is to only duplicate the date fields, if there is a desire to edit individualized adjustments per event within a recurrence, can those pages created for recurrence attach additional field data that would override? And if yes, how would one then revert changes by overriding a description later (ex: update descriptions for all events from this date forward)? It is completely reasonable to simply say, "This won't support that [yet?]." 😄 A lot of things should be extended by the developer taking advantage of the module, I'm simply curious how that might be achieved based on the architecture of the module. P.S. - Although the live-loading data table is really cool, without hooks, is it possible to (optionally?) hide that from the user until/unless they'd need to interact with it? I'm just thinking that from a UX perspective, it's pretty (and super cool) to look at but can take up a large portion of screen real estate if not actually needed. P.P.S. - Will this be a standalone Pro Rock module, or will it require RockFrontend as well?
  8. The ProDevTools module of User Activity is another possible option. I haven't used it, so I'm not 100% sure if it prevents this from happening, or just alerts users when the possibility of a collision exists. https://processwire.com/store/pro-dev-tools/user-activity/
  9. Perhaps reaching back out to them for clarification might be needed. 😄
  10. So is this a proposed solution as a template for module developers to implement in any JS-enabled modules, is it for PW to implement in its JS-powered backend implementations, or even something else entirely...? I'm just wondering how or where the integration of this would take place. I can see the benefit to this being offered, whether or not I can immediately see a need for myself at this point in time.
  11. @Ivan Gretsky I wish I had answers to your questions, but I'm mostly replying here out of curiosity for myself: I'm a little confused here. Is the first item that they want you to remove the Domain attribute, or they want it added? If they want it (Domain attribute) added, according to MDN, the "__Host- prefix [...] must not have a domain specified", though in your linked example, a domain is specified. That definitely confuses me. (Maybe MDN is wrong?) As for how to modify those values in PW, I don't have an answer there. 😞
  12. I still follow soma on Twitch. He occasionally has (digital) painting sessions. 🙂 Signed up for Pinkary. Hopefully they'll offer an API like the original Twitter days to build out supporting apps. Interestingly, Pinkary runs completely on SQLite.
  13. It looks like you've each chosen the differing options. 😉
  14. Been trying to get my buddy to field test all of these suggestions you all have been making so I can just wait until a clear winner surfaces after a decent amount of time. 🤣 His feedback after I mentioned Sourcegraph Cody was that Cursor makes it ridiculous easy for the AI to auto-generate, and auto-modify multiple files for him. He's saving to Git far more often due to the lack of a single-action, multi-file undo, but otherwise that's the "gotcha" between all of the other suggestions made after Cursor. The assistants are really coming along blazingly fast.
  15. Using a service to determine holidays is one option, but then which holiday(s) do you want to support? Governmentally observed holidays, or perhaps even the silly ones, too? Things can get tricky when assumptions start to be made. A (potentially) simpler approach would be to have two other option areas: Dates to Include Dates to Exclude Since you're attempting to tackle recurrence: it may be desirable to have events occur within a range, but then a business will be closed due to an observable organizational holiday (like an owner's birthday), or alternatively a date exception is made where an additional entry would want to be added, and it's known ahead of time. Alternatively, it's just as easy to delete some after creation, or similarly clone. 🙂
  16. Calendaring and/or events management is a large undertaking, unless feature requirements are kept extremely minimal on purpose. The hardest, but often most requested aspects of a calendaring solution would likely already have discussions in the Recurme module's discussion topic, and Ryan's Date Range Fields (ProField) topic...so, essentially, recurrence (RRULEs), and how to handle them. I remember you even broke down the various problematic ways of attempting to solve searching, or retrieving, for events with, I think, a Fieldtype module, where the problems were with recurrence and ranges. For storing recurrence of events, there are also two potential scenarios, architecturally: Create individual unique entries (PW pages, in this case) for each event that is part of a series - it can then be modified independently even if mildly associated to the original group. Create a single entry that stores metadata about the recurrence to extrapolate virtual entries from the original. Both options have their pros and cons, but I'm not familiar enough with the research behind them to understand what would be best, or if there's even a hybrid approach. I'd imagine the first would be far easier to implement and maintain. Related to RRULE would also be vCalendar/iCal/ICS support. Best suggestion: If feature suggestions are calendar/event adjacent, but don't actually belong to calendaring, do not support it. I was just thinking how iCal is used to help customers remind themselves about events, but more often customers don't know how that technology works, so offering an email reminder for the event could be a feature suggestion. However, emailing could easily be handled by a developer that is taking advantage of your module and expanding on it, so although emailing a reminder about an event is related to an events calendar, emailing itself is not an integral part of an event calendar. 😉 @Jonathan Lahijani might have some suggestions too, with his use of one with the Geffen Playhouse. His solution was different, but issues he dealt with may be of use. Good luck, Bernhard!! 💪
  17. Hard to know exactly what to suggest as many different scenarios could affect responsiveness. (Re-?)Rendering images could easily slow things down, as could page reference properties that aren't loaded until called/necessary. Depending on your setup, using findRaw() or findMany() might have a positive impact, as would your autojoin; if you think an autojoin might only be necessary for your one scenario, you could look into findJoin() and whether it accomplishes the same end-result on that page. For a ProcessWire (Pro) module assist, there's always ProfilerPro, as well.
  18. Alternatively, you can just use different logic on your interactive procedure. I do something similar to this with just a single field, where the first image (manually sorted) in an images (Multiple Images field) is used as the primary/cover photo. All of the rest are placed into the standard gallery. The API makes that easy with the WireArray class methods of first() (only retrieve the first when using the "cover photo" as a portfolio thumbnail) and shift() (if you wanted to separate the first/cover photo from the rest of the group in a template). Images are files, so you can use the same logic for file fields. If you don't want to modify your template(s) and would prefer to keep your logic flow intact, what dynweb mentions should work too. 🙂
  19. Thanks, Ryan, for implementing that change, and Pete for making the suggestion! It's obviously not a huge headache, and the slider interface itself is a quicker and easier way to modify things rather than going into each field individually, but I too kept looking for a simpler option, so this is a nice change. I'm sure I'll more often use the double-click method moving forward (esp. since 33/33/33 looks weird, so I set things to 33/34/33 for thirds). With regard to the dedicated column width range slider, since there's no photo example of that in your post, does that also include a direct numeric input, or is it only a range slider? It may be nit-picky, but I think a numeric input might be even simpler/quicker. (Will you be using a <dialog> as the UI for that?) Either way, this is such a small and simple thing that will just make me smile, so your effort here will definitely not be wasted!! Have an awesome weekend.
  20. Good catch. Neither of those modules are enabled by default. Looking up that module and finding a discussion, this might be useful to read up. In the description of the module, it states that it is under development (i.e.: not finished). ?
  21. If the JavaScript filenames are the same per theme (likely), your browser might just be caching them. Do a hard refresh and see if that updates how the alerts are rendered. I can't tell what browser you're currently using, so... Firefox: CTRL+F5 Chrome and Microsoft Edge: SHIFT+(clicking on)?️
  22. Good catch! I never thought about that, but yes, I always enable that upon first installation too, and disable it as needed. Another good catch because, honestly, I never really look at the host's customizations. If I want something different, I used to have to compile and configure PHP myself, so I aim not to have to do that. That said, PHP's output buffering functions (ex: ob_start()) are usually used when dealing with session handling, and I just presumed Ryan was using them. Perhaps not. I'll have to try @poljpocket's install.php file and see, quickly, if it fixes things (easier than searching the entirety of the codebase for ob_start calls and if/how they're used!).
×
×
  • Create New...