-
Posts
6,670 -
Joined
-
Last visited
-
Days Won
366
Everything posted by bernhard
-
AlpineJS is only used for the frontend of the store to show instant price updates when variations are changed: Payment is, of course, handled via PHP/Backend as everything client side can be manipulated easily by the client and thus would not be secure. I'll send you a PM See here for example: https://www.maletschek.at/nautics/motore/elektromotore/temo-der-tragbare-elektroantrieb/#7055:7059,7060-7071:7070-amount:2 As you can see it will even remember product variations via url hash π
-
@LMD good news π I think this issue should be fixed with v1.3.0 of RockCommerce. You also need to upgrade RockGrid to v1.3.0! The reason for the issue was that mysql does not support indexes on json columns and I'm using JSON for the "data" column of FieldtypeRockGrid So the issue was actually an issue in the RockGrid module, not RockCommerce itself.
-
@adrian sorry for causing work π Seems like the "find user" filter input does not filter mail addresses even though I set the config of the panel to "{name} ({email})". Maybe you can address this at some point as well? Thx a lot!
-
Sure, that's also great, thank you π Already tried it and it helps a lot, thx! π
-
Hey @adrian I'm developing a project where users are identified by their mail addresses and their usernames are random strings: Would it be possible to set a custom user property to display in the user switcher panel? A simple textfield would be enough for my use case where I can enter "email" and it would display the email instead of the username. Or maybe show the mail address by default in brackets?
-
Hey @gebeer I have added support for this on the dev branch, please check π Here are the docs: https://github.com/baumrock/RockDevTools/tree/dev/docs/livereload#disabling-livereload-for-specific-pages
-
I have added a hook recorder and this is what I got when logging in with a non-existing email address: ProcessWire\ProcessLogin::execute ProcessWire\ProcessLogin::buildLoginForm ProcessWire\ProcessLogin::loginFormProcessReady ProcessWire\ProcessLogin::loginFailed ProcessWire\ProcessLogin::loginFormProcessed ProcessWire\ProcessLogin::renderLoginForm ProcessWire\ProcessLogin::headline ProcessWire\ProcessLogin::getLoginLinks ProcessWire\ProcessLogin::executed So to me it looks like loginFormProcessReady should work. This is the whole hook recorder log, which looks like InputfieldForm::processInput should also be an option? ProcessWire\Fields::load ProcessWire\Fieldgroups::load ProcessWire\Templates::load ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\Session::init ProcessWire\ProcessWire::init ProcessWire\Pages::find ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\FieldgroupsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldgroupsArray::changed ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\TemplatesArray::changed ProcessWire\TemplatesArray::changed ProcessWire\FieldgroupsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldgroupsArray::changed ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\TemplatesArray::changed ProcessWire\TemplatesArray::changed ProcessWire\FieldgroupsArray::changed ProcessWire\FieldgroupsArray::changed ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\TemplatesArray::changed ProcessWire\TemplatesArray::changed ProcessWire\FieldgroupsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldgroupsArray::changed ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\TemplatesArray::changed ProcessWire\TemplatesArray::changed ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\FieldgroupsArray::changed ProcessWire\FieldgroupsArray::changed ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\TemplatesArray::changed ProcessWire\TemplatesArray::changed ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\UserPage::hasPagePermission ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\ProcessPageView::execute ProcessWire\PagesRequest::getPage ProcessWire\PagesRequest::getPageForUser ProcessWire\DefaultPage::viewable ProcessWire\PagesRequest::getLoginPageOrUrl ProcessWire\Pages::find ProcessWire\ProcessPageView::ready ProcessWire\ProcessWire::ready ProcessWire\Config::InputfieldWrapper ProcessWire\Config::callUnknown ProcessWire\JqueryUI::use ProcessWire\PageFrontEdit::getPage ProcessWire\FieldgroupsArray::changed ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\FieldgroupsArray::changed ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\FieldgroupsArray::changed ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\FieldgroupsArray::changed ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\TemplatesArray::changed ProcessWire\TemplatesArray::changed ProcessWire\TemplatesArray::changed ProcessWire\TemplatesArray::changed ProcessWire\TemplatesArray::changed ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\Pages::find ProcessWire\Pages::find ProcessWire\Pages::find ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\TemplateFile::render ProcessWire\DefaultPage::render ProcessWire\PageRender::renderPage ProcessWire\TemplateFile::render ProcessWire\ProcessController::execute ProcessWire\UserPage::hasPagePermission ProcessWire\Pages::find ProcessWire\UserPage::hasPagePermission ProcessWire\Pages::find ProcessWire\ProcessLogin::execute ProcessWire\ProcessLogin::buildLoginForm ProcessWire\ProcessLogin::loginFormProcessReady ProcessWire\InputfieldForm::processInput ProcessWire\InputfieldText::processInput ProcessWire\InputfieldText::processInput ProcessWire\InputfieldSubmit::processInput ProcessWire\InputfieldHidden::processInput ProcessWire\InputfieldHidden::processInput ProcessWire\InputfieldHidden::processInput ProcessWire\InputfieldHidden::processInput ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\ProcessLogin::loginFailed ProcessWire\ProcessLogin::loginFormProcessed ProcessWire\ProcessLogin::renderLoginForm ProcessWire\ProcessLogin::headline ProcessWire\InputfieldForm::render ProcessWire\InputfieldForm::renderInputfield ProcessWire\InputfieldText::render ProcessWire\InputfieldForm::renderInputfield ProcessWire\InputfieldText::render ProcessWire\InputfieldForm::renderInputfield ProcessWire\InputfieldSubmit::render ProcessWire\InputfieldForm::renderInputfield ProcessWire\InputfieldHidden::render ProcessWire\InputfieldForm::renderInputfield ProcessWire\InputfieldHidden::render ProcessWire\InputfieldForm::renderInputfield ProcessWire\InputfieldHidden::render ProcessWire\InputfieldForm::renderInputfield ProcessWire\InputfieldHidden::render ProcessWire\ProcessLogin::getLoginLinks ProcessWire\Pages::find ProcessWire\ProcessLogin::executed ProcessWire\AdminThemeUikit::getExtraMarkup ProcessWire\AdminThemeUikit::getExtraMarkup ProcessWire\AdminThemeUikit::getUikitCSS ProcessWire\AdminThemeUikit::getExtraMarkup ProcessWire\AdminThemeUikit::getExtraMarkup ProcessWire\AdminThemeUikit::getExtraMarkup ProcessWire\AdminThemeUikit::renderBreadcrumbs ProcessWire\AdminThemeUikit::getExtraMarkup ProcessWire\AdminThemeUikit::getExtraMarkup ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\Pages::find ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\ProcessPageView::finished ProcessWire\ProcessWire::finished ProcessWire\DefaultPage::viewable ProcessWire\DefaultPage::rootParent ProcessWire\DefaultPage::viewable ProcessWire\DefaultPage::rootParent ProcessWire\DefaultPage::rootParent ProcessWire\DefaultPage::rootParent ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\DefaultPage::viewable ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\DefaultPage::viewable ProcessWire\FieldsArray::changed ProcessWire\FieldsArray::changed ProcessWire\FieldsArray::changed ProcessWire\DefaultPage::viewable ProcessWire\DefaultPage::editable ProcessWire\UserPage::hasPagePermission ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\DefaultPage::addable ProcessWire\UserPage::hasPagePermission ProcessWire\Pages::find ProcessWire\DefaultPage::publishable ProcessWire\DefaultPage::editable ProcessWire\UserPage::hasPagePermission ProcessWire\Pages::find ProcessWire\DefaultPage::listable ProcessWire\DefaultPage::moveable ProcessWire\DefaultPage::editable ProcessWire\UserPage::hasPagePermission ProcessWire\Pages::find ProcessWire\DefaultPage::sortable ProcessWire\DefaultPage::editable ProcessWire\UserPage::hasPagePermission ProcessWire\Pages::find ProcessWire\DefaultPage::deleteable ProcessWire\DefaultPage::trashable ProcessWire\DefaultPage::restorable ProcessWire\DefaultPage::rootParent ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\PageArray::changed ProcessWire\DefaultPage::viewable ProcessWire\User::hasPagePermission ProcessWire\Pages::find ProcessWire\DefaultPage::editable ProcessWire\User::hasPagePermission ProcessWire\Pages::find ProcessWire\DefaultPage::addable ProcessWire\User::hasPagePermission ProcessWire\Pages::find ProcessWire\DefaultPage::publishable ProcessWire\DefaultPage::editable ProcessWire\User::hasPagePermission ProcessWire\Pages::find ProcessWire\DefaultPage::listable ProcessWire\User::hasPagePermission ProcessWire\Pages::find ProcessWire\User::hasPagePermission ProcessWire\Pages::find ProcessWire\DefaultPage::moveable ProcessWire\DefaultPage::editable ProcessWire\User::hasPagePermission ProcessWire\Pages::find ProcessWire\DefaultPage::sortable ProcessWire\DefaultPage::editable ProcessWire\User::hasPagePermission ProcessWire\Pages::find ProcessWire\DefaultPage::deleteable ProcessWire\DefaultPage::trashable ProcessWire\DefaultPage::restorable ProcessWire\DefaultPage::rootParent ProcessWire\PageArray::changed ProcessWire\PageArray::changed ProcessWire\DefaultPage::viewable ProcessWire\DefaultPage::editable ProcessWire\DefaultPage::addable ProcessWire\DefaultPage::publishable ProcessWire\DefaultPage::listable ProcessWire\DefaultPage::moveable ProcessWire\DefaultPage::editable ProcessWire\User::hasPagePermission ProcessWire\Pages::find ProcessWire\PageFinder::find ProcessWire\PageFinder::getQuery ProcessWire\DefaultPage::sortable ProcessWire\DefaultPage::editable ProcessWire\User::hasPagePermission ProcessWire\DefaultPage::deleteable ProcessWire\DefaultPage::trashable ProcessWire\DefaultPage::restorable ProcessWire\DefaultPage::rootParent ProcessWire\WireCache::log ProcessWire\WireCache::log ProcessWire\WireDateTime::relativeTimeStr ProcessWire\WireDateTime::relativeTimeStr ProcessWire\WireDateTime::relativeTimeStr ProcessWire\WireDateTime::relativeTimeStr ProcessWire\Session::changed ProcessWire\Session::changed ProcessWire\WireCache::log ProcessWire\WireCache::log ProcessWire\Fields::load ProcessWire\Fieldgroups::load ProcessWire\Templates::load ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\Fieldgroup::setQuietly ProcessWire\Fieldgroup::callUnknown ProcessWire\Session::init
-
I'm using a regular UIkit modal... Original theme: With the default theme the modal is vertically centered, which causes a weird glitch when closing it: As the UIkit docs mention there is a standardised way to center the modal: https://getuikit.com/docs/modal#center-modal. And as you can see there it will work properly if used properly. I don't know why the default modal is vertically centered with the new theme, but I know that adding these kind of visual "optimisations" causes problems. Could you please stick to default UIkit markup and concepts as much as possible with your overrides to avoid these kind of issues? Thank you.
-
Using the new theme on mobile seems very hard to me at the moment. The menu button is not available and the page tree with all pagelist actions is... somewhat strange. pagelist actions are sometimes not visible at all, sometimes they appear when clicked, sometimes they don't.
-
...that's the title of this video that I found recently and it had some useful tips & tricks that I didn't know:
- 1 reply
-
- 9
-
-
Feature Request/Suggestion - URL Hooks ability to override URL Segments
bernhard replied to JayGee's topic in API & Templates
Absolutely! Had the problem several times and it just hit me again π -
Hi @Hackasacka thx for your interest. I think it should be quite simple. But I don't have any capacities at the moment. Basically all that RockCommerce needs is a payment ID to work with. It saves that payment ID to the order and from that payment ID we can talk to the payment provider, which is in my case Mollie. So for example when an order is paid Mollie sends a request to the RockCommerce webhook url with the payment ID and the new payment status. RockCommerce then saves that to the order page. I guess with paypal or stripe it's a similar process? So ideally the code should be refactored that in the RockCommerce config we can choose from different payment providers that are installed. But I don't have any experience with PayPal or stripe and at the moment I don't have any capacities to add this myself anytime soon. Also note that mollie offers PayPal as an option, are you aware of that?
-
As long as you are not color blind I guess π
-
RockShell - a ProcessWire Commandline Companion β¨οΈ
bernhard replied to bernhard's topic in Modules/Plugins
Thx, already tried that, no luck. Also when updating dependencies manually which I already did I get some PHP errors π Seems there is more to it, so if anybody wants to contribute his/her time and knowledge for this update it would be highly appreciated π -
RockShell - a ProcessWire Commandline Companion β¨οΈ
bernhard replied to bernhard's topic in Modules/Plugins
RockShell currently uses the following composer.json file: { "require": { "illuminate/console": "^8.40", "illuminate/events": "^8.40", "symfony/browser-kit": "^5.4", "symfony/css-selector": "^5.4", "symfony/dom-crawler": "^5.4", "symfony/http-client": "^5.4", "symfony/mime": "^5.4" }, "autoload": { "files": [ "Application.php" ] }, "config": { "platform": { "php": "7.4.0" } } } I'm using PHP8.4 on my latest project and get many warnings like this: So I thought just update dependencies... Turns out it's not that simple. "composer update" will only update to the listed versions, which are already quite dated. Any experienced composer users here @teppo @Jonathan Lahijani that know an easy way to do this? illuminate/console for example is version 12.17 at the moment. -
There is a free online event on ::: June 17, 2025 ::: 13:30β18:30 CET/CEST ::: 07:30β12:30 EST/EDT ::: 11:30β16:30 UTC https://lp.jetbrains.com/phpverse-2025/ @ryan what about taking part as a speaker on such events to make PW more popular?
-
@ryan I took some time to reflect and let the situation cool down. I'm very interested in keeping up a good relationship with you, which is why I want to address your last post rather than moving on and pretending nothing happened. I think this is neither what I said nor what I did. This statement has really bothered me a lot over the last days. I'm sorry if I made you feel that way. It was honestly not my intention and I apologise for that! I want to add that if you feel that the other person is behaving unfairly, it might be worth considering whether you've given them a fair chance to explain their perspective. I have read this thread again from the beginning, and I see many posts from my side that very much follow your suggested syntax for being taken seriously. However, I didn't feel that my concerns were being heard or addressed. I honestly think we both could have done better. I'm fine with that and I hope you are too! Otherwise please let me know and we can discuss this further.
-
Regarding the new scrollbars on the menu dropdowns. I think that's a great improvement! Is that part of the new style or is that considered to be part of the base style for all AdminThemeUikit styles? I think it would be great to have it in the base style!
-
Thx for adding that detail! Considering that Ryan mentioned the nature of the new style being like extending PHP classes, I wonder why settings of the default theme are part of the AdminThemeUikit module. Visible or not - technically they are built into AdminThemeUikit, which feels strange. I'd expect AdminStyleKonkat to be a separate module and therefore all dedicated settings would be on the module config of AdminStyleKonkat. Again, this module could still be part of the core and it could still be turned on by default. At least for new installations - I still think it would be good to not change the style with the upgrade without asking. Settings that apply to all styles on the other hand would be part of the module config of AdminThemeUikit. For example the CMD+K hotkey is independent of the style and thus would belong on the config screen of AdminThemeUikit, which would mean this feature can be used by any style. I think this would be a very clear setup that clearly separates the responsibilities of the THEME and the STYLE and this would very well reflect what Ryan mentioned as strategy.
-
@jploch sorry for all the posts, but as you can tell I'm spending a lot of time in the PW backend, so I report things as they pop up. Take your time to evaluate them and to respond. Expanding on this suggestion it confuses me a lot to see this part of the GUI inside of AdminThemeUikit: I think it would make much more sense if these settings were defined on the settings page of AdminStyleKonkat, as it makes no sense to me to allow darkmode settings on AdminThemeUikit if I'm using AdminStyleRock which does not offer a darkmode. @ryan I hope this is considered to be constructive feedback and I hope it helps you to understand why I got a very different impression of what this new "theme" is or should be.
-
Thank you. Thank you.
-
Because the code of the module would be identical to AdminThemeUikit, and the new theme is still all Uikit. I want AdminThemeUikit to remain PWβs main admin theme, just with more options for the appearance of it; especially one that helps us attract new users. Were it a 3rd party thing for people to install then a separate module would still make sense. But for this case, it would just be unnecessary overhead. I forgot to respond to this one and I'd consider it important. It sounds like you totally misunderstood my request. I'm very much for using AdminThemeUikit and I very much support all the mentioned goals. I was just questioning why it was not built in a way that followed what we pushed to the core in 2021. And probably released as a module first, and then, when early adopters had time to test and give feedback, was merged to the core and set as the new default. I think this approach would have signalled the appropriate care and it would also have helped to identify which parts need to be part of the new theme and which parts need to be addressed in the base theme. If keeping and supporting all existing themes is a goal, then I think this approach would have best signalled this and would have had the best chance to make it happen. Take this comment for example from my rock theme: // @ryan // early stage idea // can we move those colors to the base theme (eg --pw-gray-200)? // then all styles could inherit those colors // and all module developers could rely on them. // the problem now is that modules use their own colors // often based on reno, which make the style break when // someone uses AdminStyleRock or any other style/theme You see that I even used css variables in this comment, so I'm definitely aware of their possibilities and benefits. But the more complex things get the more careful we have to be. --- I can't understand what you mean by "code would be identical to AdminThemeUikit". Just have a look at AdminStyleHello if you did not already. I built it in 2022 to propose a clean way of how to extend the base uikit theme in ProcessWire. I don't see how that would be considered to be "identical to AdminThemeUikit"? As it is not too late for anything may I ask if the current setup can be changed? Could the new theme be called "AdminStyleKonkat" and could it be built in a way that I proposed with AdminStyleHello in 2022 (or better π )? I think this would help in reducing confusion about what is a theme and what is a skin and it would clearly show that all styles are just a skin on top of AdminThemeUikit and all are equally supported and the user can choose whatever he/she wants. If AdminStyleKonkat was built in that way I'm not sure whether supporting AdminStyleRock made sense, as it tackled the same goals, but I think this does not matter. I think the current situation is confusing. We have AdminThemeUikit and there we have two options. The "default" theme and the "original" theme. Then we have some themes and styles lying around somewhere in the modules directory. Like AdminThemeBoss (which is also a skin on top of AdminThemeUikit as far as I know and which seems to also tackle similar goals with having neutral colors and one primary color) or AdminStyleRock. If a user wanted to use one of these modules he had to install it as a module and then he had to go to AdminThemeUikit to select "original" theme. If he didn't do that, the style might cause problems and the user would likely think that the style is broken and can not be used. This has already happened in only two weeks of having the new theme on the dev branch: https://github.com/processwire/processwire-issues/issues/2078 I think this setup is confusing and I think the process for users is currently confusing as well. I could think of the new style being a module (AdminStyleKonkat) and any other style being the same. Being a module does not mean it can not be in the core. I don't understand that conclusion. We have many modules in the core, some of them being installed by default, some being ready to install with the click of a button. AdminThemeUikit could, for example, then pick up all modules that are installed and follow the naming convention "AdminStyle..." and list them as an option to choose from: vs.