Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/06/2025 in all areas

  1. Hello everyone! 🙂 I’ve been using ProcessWire for well over a decade now, so I've been reading here forever, but never actually posted! I recently launced simplesignature.email and once again was delighted how great ProcessWire works for me, so I decided to share this one here! We’re a creative duo (Michael, and Stefan) from Switzerland working at and for many creative and branding agencies over the years. One thing often comes up: we need to create consistent email signatures for our clients. After trying many unsatisfying solutions, we decided to build our own. Goals: Clean, very minimal and easy to use, targeted mostly at designers Work reliably across email clients Possibility to easily share a signature with team members or clients Free of the common issues (PNG logos, font inconsistencies, broken layouts) So we built Simple Signature! Technical Stuff / ProcessWire Architecture Each user gets one ProcessWire page that stores all their signature configurations as JSON We bypassed ProcessWire's user system for a simpler magic link authentication (most users don’t need to login) Technical Features Client-server synchronization with signature configs stored in localStorage first and then pushed to the server, with debounced synchronization to do this efficiently Pure vanilla JavaScript with modular components for real-time preview rendering Server-side image processing using Imagick for different image shapes (circle, square, rectangle) “Business” Model Free for individual use (one signature) Pro plan enables multuple signatures and sharing them via a link - useful for agencies creating signatures for clients Simple Lemon Squeezy checkout overlay integration for payment processing While we’re not primarily revenue-focused - we built it for our own needs and as a free tool – a few paid users might help support operation and hosting costs for free tier Let me know if you happen to have a use for Pro features – happy to send you a discount code! Third Party Modules used: MarkupCloudflareTurnstile to make sure users requesting to create a login magic link are human WireMailSmtp to send emails As primarily a frontend developer, I found ProcessWire to be (again!) the perfect backend solution for this project, even without extensive PHP experience. It’s just super flexible, easy to use and robust. Visit simplesignature.email/signature-editor/ to see the tool it in action. Happy to answer any questions! Best, Michael
    8 points
  2. I don't think there is a coupon code for the ProFields, at least I'm not aware of one. But with your purchase you are supporting Ryan, the developer of Processwire.
    4 points
  3. Nice one, I can see myself using this for a quick email signature! Just one small UI issue: you need to specify "min-width:0" on .input-bar__field otherwise the bold icon doesn’t fit in on links (on Firefox at least):
    3 points
  4. So cool to see you using it! Oh, this was bugging me too, it actually has already been on my todo list for some time. Your comment made me finally tackle it! It's much better this way.
    2 points
  5. You’re welcome! Another small remark from quickly using it: maybe you should only allow to drag-and-drop when using the handle, instead of the whole bar. If I try to select text (or double-click to select the whole text) I cannot because it moves the bar. Also if I happen to release the drag on a text field, it appends the bar’s position. simplesignature.mp4
    2 points
  6. Thank you so much @monollonom for your feedback and for pointing that out, appreciate it! I fixed the UI issue just now.
    2 points
  7. @bernhard This is something that is coming up in my current project for a client that has support group meetings. For example, a support group meets every Monday at 3pm but the second meeting next month has to be moved from 3pm to 4pm due to an unforeseen situation, or maybe an in-person meeting will be held online instead. This would also apply if an occurrence needed to change days, so a recurring event could take place every Monday at 3pm but meeting "X" will take place on Tuesday due to that Monday being a holiday. This happens regularly enough with the client's operations that I have to take it into account. In this situation they would need to: Adjust the start/end time or possibly day for that specific instance Update fields (such as a description or body field) for this instance to inform visitors of any changes when they visit the site Click a checkbox to mark this instance has having had a schedule adjustment which renders a "badge" on that event when rendered in a list of support groups and make it easy to query with a selector. Will be used to differentiate occurrences that have had a schedule change vs just some edits to content somewhere on the page. A couple of months ago I was tinkering with showing/hiding fields to achieve this but I haven't worked on that component of the site since then and don't remember where I was at with it.
    1 point
  8. Thx! It was great 🤩 That's very good news, so we'll get it working! I'll let you know when I have the new version ready. Cool. Let me know when exactly and we'll arrange something! 🙂
    1 point
  9. I think you've just come across another one of those cases where in-memory selectors don't match DB ones 😖
    1 point
  10. We've been working on a project in ProcessWire for the x time, and the more we use it, the more amazed we are by what this incredible CMS can do. From an SEO, developer, usability, and customization perspective, it’s truly outstanding. My team was deeply involved with Joomla! for 10 years - since its foundation - so we’ve seen a lot. After years of using ProcessWire, I just want to thank @ryan and everyone who has contributed - whether through code, ideas, support, or anything else. What a beauty, what a powerful CMS! 🚀
    1 point
  11. There is also the Croppable Image module
    1 point
  12. It doesn't look like this module is being maintained anymore and there's an issue that should be known by users. The sitemap generator is including: Pages that have 'include in sitemap' unchecked Hidden pages Children of unpublished pages Not sure if this is being experienced by others but this can be problematic for discovery of pages that shouldn't be readily known to the public. Correction If a parent page has indexing disabled, but a child page does not, then the child page will still be indexed, which kind of opens the parent page for indexing as well. Best to keep robots.txt up to date as a fallback. If you would like hidden pages to not show up in sitemap.xml, then modify L77 of SeoMaestro/src/SitemapManager.php <?php $selector = sprintf( 'template=%s,template!=admin,id!=%s,include=hidden', // Remove 'include=hidden' from this line implode('|', array_keys($templates)), $this->getExcludedPages() );
    1 point
  13. You can just add a hidden field that is populated on page save from the content of each RepeaterMatrix or RockPageBuilder item. That field can then be queried by any search. In RockPageBuilder you get the benefit that you can simply add a dedicated method to every block: <?php // Text.php public function searchIndex() { return $this->body; } // Accordion.php public function searchIndex() { $index = ""; foreach($this->items as $item) { $index .= $item->headline . ": " . $item->body . "\n"; } return $index; } Thats not a built in feature but as all RockPageBuilder blocks are dedicated PHP files and classes things like this are super easy and clean to implement. This solution would obviously add additional data to the database, so fields are not queried directly. But that adds more options in presenting your search results. See here for some insights:
    1 point
  14. Here's a tiny module that I originally built for my own needs, but figured that someone else might find it useful as well: Textformatter Iframe Embed. It is a textformatter that (by default) turns this: <p>iframe/https://www.domain.tld/path/</p> ... into this: <iframe class="TextformatterIframeEmbed" src="https://www.domain.tld/path/"></iframe> Embed tag (iframe/) and iframe tag markup can be customized via module configuration screen.
    1 point
  15. Never mind, I have change it to this code and now it works: <?php echo $items->renderPager([ 'page' => wire('page'), 'nextItemLabel' => "Next", 'previousItemLabel' => "Prev", 'listMarkup' => '<nav aria-label="navigation"><ul class="pagination">{out}</ul></nav>', 'itemMarkup' => '<li class="page-item {class}">{out}</li>', 'linkMarkup' => '<a class="page-link" href="{url}">{out}</a>', 'currentLinkMarkup' => '<a class="page-link" href="{url}">{out}</a>', 'currentItemClass' => "active" ]); ?> I think it was the 'currentLinkMarkup' that was actually missing ?
    1 point
×
×
  • Create New...