Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 06/12/2021 in all areas

  1. ProcessWire 3.0.180 contains 20 commits containing various minor new features, issue resolutions and pull requests. While there's no single major feature to write a big blog post around, combined there are a lot of worthwhile and useful updates so this version is definitely worth updating to. More details can be found in the dev branch commit log and at ProcessWire Weekly (issue #370 covered an addition to our $files API var). Yesterday the forums were running a little slow because we had our yearly DDOS’er pay the site a visit once again (remember last time?), and from an apparently unl
    21 points
  2. Hi there, I'm starting a small series of tutorials here. The first one(s) deal with the topic "How can I add a watermark to all pageimages of a site?" first episode "Tutorial how to add a site wide optional watermarking method to all pageimages" second episode "Second Episode: "How can I add a watermark to all pageimages of a site?"" This is targeted to all, - beginners, intermediate, pros, - but mainly to interested PW lovers. The fictitious starting situation could be that a website owner has been creating beautiful photos for many years and would like to show them on
    12 points
  3. Restaurant Blechnapf Neumünster - https://www.restaurant-blechnapf.de/ Fine culinary dining combined with a similar fine setup of design and webdev can be found at Blechnapf, Neumünster. One of our oldest partners in crime culinary highlights. Classic german dishes, experimental dishes based on classic dishes and even very own creations of all-time classics. Even though they are officially targetting your taste buds you can find a lot of more adventures there. They offer support for all kinds of experiences from readings, poetry slams, business meetings and even weddings (just in c
    8 points
  4. This peace of software is impressive to me. Just want to share: Althttpd is a simple webserver that has run the https://sqlite.org/ website since 2004. Althttpd strives for simplicity, security, and low resource usage. As of 2018, the althttpd instance for sqlite.org answers about 500,000 HTTP requests per day (about 5 or 6 per second) delivering about 50GB of content per day (about 4.6 megabits/second) on a $40/month Linode. The load average on this machine normally stays around 0.1 or 0.2. About 19% of the HTTP requests are CGI to various Fossil source-code repositories. ... h
    6 points
  5. Retrieve, collect and store geolocation data from external geocoding services. Under the hood, the module uses the great PHP Library geocoder-php by William Durand and Tobias Nyholm and adds some processwire magic. Download: Github: https://github.com/neuerituale/FieldtypeGeocoder Module directory: coming soon
    6 points
  6. In my opinion the best solution would be to use a ProFields Table field because it has less overhead than pages and everything is viewable inside a single compact inputfield. But if you go with a page-based approach (which will be just fine if not 100% optimal) then your options are: Repeater PageTable Child pages Another opinion: purchasing the ProFields bundle should be a no-brainer for any regular PW user. Any one of the Table, Repeater Matrix and Combo fieldtypes alone is worth the purchase price, but you get all of them, plus several more goodies which are just
    5 points
  7. A serializer module for ProcessWire Pages. This module will add a new method to all pages, called serializer(), which returns JSON. https://github.com/Luis85/FlowtiPageSerializer ## Dependecies symfony/serializer symfony/property-access ## Requirements ProcessWire 3.x Composer ## Installation cd site/modules git clone git@github.com:Luis85/FlowtiPageSerializer.git cd FlowtiPageSerializer composer install ## Usage $page->serialize() will return the serialized Page Object as a JSON string representation containing all accessable fi
    4 points
  8. Probably the easiest method would be having their clients each with their own page, and each report is it's own child page. One template for the client pages and one template for the pdf pages. You can add the necessary fields to the pdf template to facilitate searching. Personally, I shy away from building intelligence into a naming conventions. You might have your client person(s) doing the uploading select the client then select the pdf file, and enter any other necessary data associated with that report. If your client already has a data system from which the reports are generated at
    4 points
  9. Hello everyone, We're looking for someone to join our team full time as a User Experience Developer. This role is about evolving our UI design system in HTML/CSS/JS as we continuously improve our web sites (built on ProcessWire of course!), email marketing, and other digital channels. The ideal candidate will be a creative thinker who also understands how design choices impact SEO, performance, accessibility, and standards compliance. It's a great company (70+ years old, multi-generational family owned) with excellent pay and benefits, and we are remote friendly. Get more info and apply h
    4 points
  10. If you can build enough discipline in the way you write conditionals, you can avoid this by always putting the constant part first: if ('xx' == $page->template->name) { So if you accidentally miss an equals sign and do an assignment, you get an error from the runtime as you are trying to assign to a constant string literal. I've tried to build this habit over the years and sometimes remember to do this - but I'm not there yet.
    4 points
  11. Klippo Eutin - https://www.klippo-eutin.de/ "Is my child safe while walking around town?"... well at least in Eutin (Germany) children of all ages are safe now or at least they can find a spot in case they need help. Our client and partner Deutscher Kinderschutzbund Eutin e.V. (roughly translated to: German Child Protection Association Eutin) started a new initiative to help children finding a safespace while en route through town. No matter what - a missed transportation, low battery, in need of a toilet, or whatever. Certified partners of Klippo Eutin help children of all ages to
    4 points
  12. Today a new version of FormBuilder has been released in the FormBuilder support board (our 50th version) and it has a lot of interesting new features, which we’ll take a closer look at in this post— https://processwire.com/blog/posts/formbuilder-v50/
    4 points
  13. I'm posting this as an update to an earlier post created by @Hari KT: https://processwire.com/talk/topic/4958-composer-support-for-processwire/. Though that approach still (kind of) works (as does the one detailed in https://github.com/wireframe-framework/processwire-composer-installer), thanks to @d'Hinnisdaël there's now a better alternative: the official composer/installers project 🙂 An example repository implementing the things detailed in this post: GitHub repository: https://github.com/teppokoivula/HelloWorld Packagist entry: https://packagist.org/packages/teppokoivula/h
    3 points
  14. Second Episode: "How can I add a watermark to all pageimages of a site?" first episode "Tutorial how to add a site wide optional watermarking method to all pageimages" second episode "Second Episode: "How can I add a watermark to all pageimages of a site?"" In the first episode we created a function that adds a watermark overlay to our original images. This function was hooked via the name "wm" to the pageimage object. We positioned a big centralized overlay to the original images. This suites right if you or your customer will not use cropped portions of the images somewhere d
    3 points
  15. <?php $page->of(false); $page->yourfield->add("https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Processwire_logo.svg/2560px-Processwire_logo.svg.png"); $file = $page->getUnformatted('yourfield')->last(); $file->description = 'hello world'; $page->save(); getUnformatted ensures that you get the files as array and then retrieve the last file 🙂
    3 points
  16. Here's a hook that might help: $wire->addHookBefore('ProcessModule::executeEdit', function(HookEvent $event) { if($event->wire()->input->get('name') !== 'YourModuleName') return; $event->wire()->addHookBefore('InputfieldForm::render', function(HookEvent $event) { /** @var InputfieldForm $form */ $form = $event->object; if($form->id !== 'ModuleEditForm') return; $your_module = $event->wire()->modules->get('YourModuleName'); if($your_module->foo === 'bar') { $uninstall = $form->getChildByName('uninstall'); $uninstall->description('Y
    3 points
  17. One way is to tell them to have the Hannacodes side by side, just like the buttons would be [[special_button url='example1.com' label='Visit Example1.com']][[special_button url='example2.com' label='Visit Example2.com']] But this depends on the html code that you are generating for that Hanna code. For that to work, you would need the root html tag of each of those buttons to be displayed as "inline-block" on your CSS. Another option is to use a single Hanna Code for both buttons, and style them to be side by side. This would give you more control over the styling, since you can ha
    3 points
  18. Damn, what a noob. That was it. How does one make a full project, publish it, test it, and never see a broken pages or a piece of red text anywhere saying Hey, where's your <body> tag? A mistery. Thank you sir, beer's on me 🍻
    3 points
  19. I might be misunderstanding this, but I think you could be setting it in the wrong place. Could you change the array returned from getModuleInfo() based on the result of the condition? Like this; public static function getModuleInfo() { $module_info = [ 'title' => '', 'version' => 100, ... ... the other usual fields here ... 'permanent' => false, ]; $data = wire('modules')->getConfig('MyModuleName'); if (your_condition_based_on_settings($data)) { $module_info['permanent'] = true; } return $module_info
    3 points
  20. You can set the module as permanent, then it cannot be uninstalled. public static function getModuleInfo() { return array( 'title' => '', 'version' => 100, 'summary' => '', 'href' => '', 'author' => '', 'singular' => true, 'autoload' => true, 'permanent' => true // <-- PERMANENT ); } Or, if you need it conditionally set, you can check your condition and set the permanent state in the modules config function.(?) public static function getModuleInfo() { $conditionMatch = (bool) calculateSomeConditionH
    3 points
  21. I’ve taken your word for it and purchased ProFields for this project. To also show my support for the future of ProcessWire. 😁
    3 points
  22. 3 points
  23. Hi, I used this one a lot, but before you go further with it: It has one disadvantage. You have to use one type for all fields (subfields). So, pretty fine to use textarea for text and textarea, but there is already a new fieldtype out that makes the textareas obsolete. It is called Combo and since yesterday available in version v6beta. As you said: So.Many.Options! 🙂 The only part that seems to be different, what I got so far til now, (started exploring / reading with / about COMBO two weeks ago), is a difference with searching / finding results in multi language sites. Whereas all
    3 points
  24. "data-phc" attribute is missing on body tag. Are you sure you have body at all?
    2 points
  25. Version 1.1.6 is out! 🥳 Changelog: Adds Router->registerErrorHandlers() Hook, that should allow you to overwrite the general error- and warning handlers of the module. That should fix the problem that @David Lumm mentioned above without breaking things for other users. Allows Apikey & Auth-token to be set as GET-params. That can be useful when it comes to loading images via api. Fixes a bug that made it possible to authenticate with the PHP session (cookie) even though token-auth was enabled. Adds Router->setCorsHeaders() Hook Updated Composer &
    2 points
  26. Interesting concept and super low power. I've always liked low power installs - I used to run our book warehouse pick-n-pack system from a android tablet wirelessly connected to a Raspberry Pi server running our warehouse software. There was a thermal label printer too, and all offset by the solar array on our roof - but nothing as teensy as the power budget of the system you linked to.
    2 points
  27. I implemented that previously. In my experience, if you create a page for each event (using child pages or repeater) you will end up with hundreds of thousands of pages quickly, and in each one you will recorded only a minimum data. I think that is very inefficient. Maybe using ProTable is a better solution. I finally ended up using a textarea and saved one event in each line, when I was going to show the timeline I parsed it with regex, as well to update the tracking info this is very easy. Maybe if I do that again, I would avoid parsing every request for the tracking info by saving/reading/u
    2 points
  28. Here are the step by step to install and setup ProcessWire with the help of a server management tool - https://cloudstick.io/ 1. Create your Vultr compute. 2. Select the Operating system Ubuntu 16.04/18.04/20.04 LTS >> Enter your server root password then click on Deploy now! 3. Create an account in CloudStick and connect your server: Click on connect server >> Enter your server login details >> Add this server. 4. Your server setup will be done in couple of minutes - The setup will finish less than 8 minutes. Then select your
    2 points
  29. Where and how? Don't know what you mean with this. As author of this thread you can either mark the thread or an answer as solution - I guess. I haven't seen it by now. You could change the title to [SOLVED] ... as well. Which works fine here as well. Hey... ProcessWire has the best community from all! And I've seen a lot.
    2 points
  30. @ryan, regarding the update to ProcessWireUpgrade, could you please add an option to skip this interstitial screen? Because it doesn't add much value and just requires an extra click. If you are visiting the Upgrades page it already implies that you want to load the latest core and module versions to check if there are any upgrades available and the few seconds needed isn't going to be a big deal to you. Thanks.
    2 points
  31. Hi everyone. It's been a while. A little update. There has been a delay, again, unfortunately! Lockdown hit really hard. There were also a number of technical issues but these have since been resolved. Finally, a number of you (having seen the preview videos) strongly expressed the need for the Padloper UI to resemble the ProcessWire admin theme even in the alpha stage. The message I got was that this was more important to them from the get-go than having advanced Padloper features. I accepted their reasoning but this came at a cost. Padloper 2 has been re-themed to look like the Process
    2 points
  32. Hello netcarver Thanks very much for your reply. Sorry, we have just found it in the scripts folder here and changed it to HTTPS $("#jquery_jplayer_1").jPlayer({ ready: function () { $(this).jPlayer("setMedia", { mp3: "https://www.reallawsolicitors.com/site/templates/mp3/january2013.mp3" })/*.jPlayer("play");*/ }/*, It all seems to work now. Thanks for taking the time to reply and offer of help. David
    1 point
  33. I misunderstood the documentation! Got it working now. Thanks a ton!
    1 point
  34. Thanks @horst Interesting thought, but the condition depends on a setting in a configuration field of the module, so I guess this will not work, but I will try it!
    1 point
  35. I answer myself. The error is triggered when we leave empty the configuration field "Notifications From Email". 😆
    1 point
  36. As far as I have understood from fast reading through some docs: No. But I'm not sure yet and this needs more investigation. My interest is in regard of bringing small services online with small computers like arduinos, raspi zero, etc.
    1 point
  37. Thank you for help. The "getInfo" method is useful. I found out where the issue was and "tomorrow" is a the easiest way to go here.
    1 point
  38. I wish Apple's development practices were in line with such a feat, but sadly quite the contrary is happening these days: https://eclecticlight.co/2021/06/14/are-macos-updates-easier-than-ever/ Form Bug Sur and up, they can't even provide a Safari quick fix with a relatively small installer, but a big system updater of few gigs! https://eclecticlight.co/2021/05/03/apple-has-released-big-sur-11-3-1-update/ "Although it apparently addresses just these two vulnerabilities, it’s still 3.3 GB for an M1 Mac and 2.4 GB for an Intel model." Yikes 😞
    1 point
  39. Hello guys, I have updated a client website to V3 but now FormBuilder 0.2.2 is no longer functioning even though it states compatibility with V3. They had a freelance developer build the website so they aren't able to update it and neither am I. I can rollback the website, but they are wanting to use some modules that only support V3. I was wondering what the process would be? I have access to the licence key. Thanks, Tom EDIT: Was able to edit the source code and fix it.
    1 point
  40. Problem resolved, thanks to the above help. A basic error in that mod-rewrite was not enabled. Did not prove straightforward to enable it in the Alpine image I was using, but one of the provided links pointed me to several Docker containers that are already set up for pw. Using the joyofpw/docker container instead of the one I was using got me going within a few minutes. Many thanks for all the help.
    1 point
  41. couldn't find it so I **update** can't change the title... With this section removed, PW doesn't detect mod_rewrite: # 8B. Set an environment variable so the installer can detect that mod_rewrite is active. # ----------------------------------------------------------------------------------------------- # Note that some web hosts don't support this. If you get a (500) error, try commenting out this # SetEnv line below. <IfModule mod_env.c> SetEnv HTTP_MOD_REWRITE On </IfModule> Without this help, a person like me wasn't ab
    1 point
  42. thx everybody! was my bad 😳 I had the SetEnv deleted - thought it wouldn't be there any longer (thread is almost 10 years old 😉 ) when I searched for it (suggestion in above mentioned thread). I'm happy to get help so easily! btw: how can I flag this thread as solved?
    1 point
  43. Thanks again, @wbmnfktr! Hidden characters was one of my thoughts too. I see that all the hidden characters exposed by these two sites are also visible by default in my Vim configuration: spaces and linefeeds. Comparing both the original content and the version that works after my unsubstantial revisions using those two sites, I don't see any significant difference between the problem version and the working version. The problem version didn't have any suspicious hidden unicode characters or sequences that these tools exposed. I'm still stumped, but at least now I know some new angle
    1 point
  44. What happens when you try "Check again"? The same message, error 500 or something else? If error 500, there's probably something in .htaccess that your server doesn't like. It might be worth installing a fresh .htaccess, just in case an error has crept in. Other than that, if you've tried everything in the discussion mentioned above, this starts to go beyond my knowledge!
    1 point
  45. More fun (can't upload animated gif) with style switcher... style-switcher.mp4
    1 point
  46. Hey Adrian, I like the idea! But I'm not sure what would really be the best way to achieve something like this. I've created a module for my style to make it easy for me to maintain it and also it has lots of helpful background information about admin themes/styles: https://github.com/baumrock/AdminStyleRock The main reason for putting everything into a module is my git submodule based setup. So I can simply add my theme as submodule and pull and push changes to any of my projects. My module can also serve as an example for others that want to provide a style for AdminTheme
    1 point
  47. @ryan - what about a dedicated "Skins" section - maybe within the modules directory. Perhaps the requirement for adding a skin to the directory would be to link to a Github repo with the admin.less and also an admin.png file which could be used on the skin's page in the directory. Ideally I think it would be nice if it was possible to view all skin screenshots via a gallery of thumbnails to make it easy to browse visually.
    1 point
  48. Where exactly are you stuck? Differentiating between normal and AJAX requests, rendering content (are you doing that server- or client-side?), encoding the content for the AJAX response? An example of your current code and what's not working about it would be helpful. A couple of observations, in no particular order: The first thing I notice is that the infinite scroll library you linked seems to employ a non-standard way of doing "load more" buttons. Instead of requesting only the new items, it works with an existing classic pagination and just loads the entire next page, throws aw
    1 point
  49. The trick is to build up a string variable eg. $selector, based on the options chosen by the user and using that variable as part of something like: $images = $page->children($selector); This assumes of course that all your images are child pages of the main gallery page. You'll probably want $selector to end up being something like: sort=-camera_model, sort=resolution, sort=-size The way to build $selector can be seen in the Skyscraper's search.php file. For example, this section: if($input->get->keywords) { $value = $sanitizer->selectorValue($input->get->key
    1 point
×
×
  • Create New...