Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 12/01/2020 in all areas

  1. Announcing the current status, planned release, roadmap and preview of Padloper 2. Status Feature freeze. Full multilingual support. Only PHP 7.2+ supported. Support for ProcessWire 3.0 only. Backend support for modern browsers only (that support JavaScript ES6 modules). Current Work Finish work on admin/backend. Work on installer and uninstaller (including configurable availability of some features). Work on UI/UX improvements. Start work on documentation with special focus on technical documentation. Continue work on Padloper API and data/model component. Roadmap Please note that these ARE NOT hard and fast targets. The roadmap may have to be adjusted to accommodate technical and non-technical constraints. Q1 2021 Inbuilt support for (latest) PayPal (full rewrite, no external modules required). Additional work on Padloper API. Invite a limited number of early alpha testers (fully-priced product). Soft and closed release of Padloper 2. Q2 2021 Start work on relaunch of Padloper website. Inbuilt support for Stripe (no external modules required). Future Plans Support for more Payment Gateways. Support for order, customers, etc imports and exports. Support for AdminThemeReno and AdminThemeDefault. Separate fully-featured frontend shop module. Consider support for multiple currencies. FAQ 1. Have you abandoned this project? No. 2. When will Padloper 2 be released? First early alpha release is scheduled for Q1 2021. This target may change depending on circumstances! Access will be by invite only for this first release. 3. What is the pricing model of Padloper 2? Three licences: Single Site, Developer and Agency licences (12 months’ updates and VIP support). 4. How much will Padloper 2 Cost? No price has been set yet. It will cost more than Padloper 1. 5. Can we upgrade from Padloper 1? No. 6. Will existing users of Padloper 1 get a discount for Padloper 2? No, this will not be possible. Apologies for the earlier announcement. It was unrealistic and unworkable. 7. Can we pay for Padloper 2 in advance? No. 8. Does Padloper 2 render markup/templates in the frontend? No. Access to all data you need to build your shop’s frontend is via the Padloper API. 9. Can we keep sending you ‘Are we there yet’ messages? No, please. Preview Here is a video preview of the current state of the backend/admin of Padloper 2. Please note the following: This is early alpha. There are bugs! It even includes WIP/notes!! FOUC, misaligned things, etc. The video shows the near-raw implementation of Vuetify UI. The UI/UX improvements work is yet to start. What you see here is the development version. Some of the incomplete features may not be available in the early releases. Most of the features you see will be optional to install.
    3 points
  2. I just added the support for videos embedded via the youtube-nocookie.com domain to the Textformatter. Fixed in 0.4.3 Thank you all for noticing and helping to find the missing URL ?
    3 points
  3. If enabled in the TextformatterPrivacyWire settings, yes. But it's disabled by default.
    3 points
  4. Hi all, To those who have asked questions, just noting here that I have seen them and will answer you when I get a bit of time. I will respond by editing the first post, whenever possible, just so we have Q&As in one easy-to-find location. Thanks.
    3 points
  5. Just checking: TextformatterVideoEmbed is listed before TextformatterPrivacyWire? If it's the other way around, this won't work. This could potentially affect the situation. I would make sure if it makes difference, i.e. try disabling it and see if that changes anything. So far this has worked for me, but let us know if the issue persists ? Edit: if TextformatterVideoEmbedOptions runs before TextformatterPrivacyWire, this will definitely break things due to this line: https://github.com/blaueQuelle/privacywire/blob/master/TextformatterPrivacyWire.module#L51. Seems like an easy fix, though. Admittedly the order of the modules is a bit fragile, but part of it is really due to the way textformatters work and there's not much that can be done about that.
    2 points
  6. For anyone that is interested in doing the same this seems to have worked. Place this in admin.php, before the controller.php line: $config->styles->add('/assets/css/custom.css'); And then add this in your new custom.css file: form#selected_image_settings p#wrap_info span#action_icons span { display: none; } form#selected_image_settings p#wrap_info span#action_icons span#description_action { display: block; } span#selected_image_pixels, span#selected_image_checkboxes { display: none; } Now you just get the image description button. Make sure you check the Skip width attributes on image tags in the Page Edit Image config or set width and height to auto in your main site CSS. I will test it out a bit more but seems to be working fine for now.
    2 points
  7. Really an impressive job! Except that in this preview I have already seen everything an e-commerce needs, and even more. Can't wait to see how the APIs work!! This year we already had in mind to redo the site, it could be the kick in the ass we needed!
    2 points
  8. Does this help? https://github.com/fusonic/opengraph#retrieve-open-graph-data-from-a-url You could try without a library, but something like: https://stackoverflow.com/questions/7454644/how-to-get-open-graph-protocol-of-a-webpage-by-php may not not be very reliable. There is also this: https://www.opengraph.io/examples/php-open-graph-example/ / https://github.com/primeobsession/opengraph-io-php but it hasn't been updated in years so not sure this is a great way to go but might be a useful resource nonetheless.
    2 points
  9. Hey guys, Thought I would share a quick preview of Designme. A module we (Eduardo @elabx and I) are building for visually laying out your templates/edit screens. ? This is a really quick, zero polish screen grab. FYI. Video #2 - UPDATE This new video shows the following features in Designme: Re-arranging fields via Drag & Drop Re-sizing fields via Dragging. Adjusting field settings - with live refresh. Working on "hidden" fields while Designme is active. Creating New fields. Deleting fields. Creating/Deleting Tabs. Dragging fields between tabs. Creating fieldsets. Tagging/Un-tagging fields. Fields without headers expand when hovered (like checkboxes). Live filtering of fields in the sidebar. Ability to adjust (all) Template settings without leaving Designme. Template File Tree Editing Template files source code with ACE Editor. Editing Multiple files with ACE Editor. (New Tabs) Saving files. Techie stuff Fields load their own js/css dependancies. *ready to use on creation (*most fields) Everything happens via Ajax to ProcessPageEdit (via module + hooks). Designme has a JS api that you can use. All actions trigger events. We would love any detailed feedback on what you see so far. If you are interested in testing Designme. Let me know below. ? Video #1.
    1 point
  10. Proper error handling is definitely on the implementation list. I guess it just got upgraded to a higher priority item now that we've seen that. For what it's worth I've been playing around with the API for months and haven't experienced that. Not downplaying the importance of error handling, just hoping that means they're correct when they say that it happens seldomly. I'll be pushing more work when I can get some time dedicated to the module. I'm slammed at work right now but I will prioritize error handling when I'm back on the project. Thank you for reporting this here as someone might look for answers if this happens again, even with error handling.
    1 point
  11. TextformatterPrivacyWire.module works fine here as long as: 1) the iframe contains www.youtube.com/embed/ and not www.youtube-nocookie.com/embed/ and 2) as long as its the second textformatter (or at least the textformatter after VideoEmbed). Just played around with it here in my testing setup.
    1 point
  12. There are three areas I would plan to explore personally, depending on the hooks/API calls available. These are three areas that, aside from payment processing, represent the logistic challenges of most e-commerce platforms on the market today - external logistics integration (third party warehousing), order shipment boxing, sales tax calculation. None of these are dealbreakers, and most solutions have contingencies for shipping and taxes. I think what you already have in place should work really well. However, these are areas I will personally look into as optional extensions to the system. 1) Support for external order ID field - this would allow me to wire up an external Amazon FBA transmission/status workflow to a post-payment-success hook. I'm guessing I could add a text field to the order page type, and it would also need to be able to generate shipment pages for a given order that include status. 2) Allow for a postage calculation/package tracking bypass - An external hook for shipped order products prior to the internal process, that could get wired to a service like Shipstation. In the past I have used systems that include case freight tables, where if a person is buying both pick/pack items and casebound items, the case freight can have box dimensions and weights set in place in advance - a case acts like a variant in this case, but unlike single items, the dimensions are important as they go straight to the postage calc api. Unless you are going to pull a CS-Cart where they let you put in box dimensions and it calculates how many boxes you will need to ship an order - but that gets pretty crazy. In our case, we used the weight of single pick pack and general dimensions to develop a calculation for the shipping box sizes we'd likely use. 3) Allow for a tax calculation bypass - An external pre-shipping/post-shipping hook could connect to a tax calculation service api. I realize some locales charge sales taxes on shipping costs as well as the product (ugh, sorry) so it would make sense to toggle pre- or post- shipping calculation. That being said, I can't wait to start working with this. I had just started digging a little bit into padloper integration but I think padloper 2 is going to be a lot easier to manage for end users.
    1 point
  13. Jeez, you're a bloody legend ? This feels much nicer! You really went the extra mile with supporting this request - much appreciated. Thanks again.
    1 point
  14. Hi, I'm not sure this will solve my problem. If I understand, your module will print og, but I want to do the opposite : grab og from a link. Correct me if i'm wrong, Mel
    1 point
  15. I can see why that isn't optimal and I agree that it would be good to be able to selectively disable particular textformatters when outputting. The Hanna Code Dialog module depends on Hanna Code and isn't intended to be used independently of it. The way you're using it is unusual so although I don't want to make changes to the module that I think could compromise the experience for typical users you could use a custom hook/module that would load the Hanna Code Dialog CKE plugins to suit your circumstances. So you'd create your own custom version of HannaCodeDialog::afterCkeRenderReady(). $wire->addHookAfter('InputfieldCKEditor::renderReadyHook', function (HookEvent $event) { $inputfield = $event->object; $field = $inputfield->hasField; // For your field name(s)... if(!$field || $field->name !== 'body') return; $config_name = "InputfieldCKEditor_{$field->name}"; $config_name_matrix = "InputfieldCKEditor_{$field->name}_matrix"; $config = $this->wire('config'); $js_config = $config->js(); foreach($js_config as $key => $value) { if($key === $config_name || strpos($key, $config_name_matrix) === 0) { $js_config[$key]['extraPlugins'] .= ',hannadropdown,hannadialog'; $config->js($key, $js_config[$key]); } } });
    1 point
  16. Looks great. Random question: how does a piece of data like order notes get stored? Is it PW fields or custom Padloper tables?
    1 point
  17. For anyone who is interested in integrating tailwind inside a processwire project here is a little walktrough based on my workflow. This little guide is based on Tailwind 1.9.6 (latest before 2.0 release) because some PostCSS library I use are still not compatible with 2.0 version (not a big deal, really). You can find the necessary files here. - Place package.json, tailwind.config.js, postcss.config.js inside your template folder. - Create a "pcss" folder, and make a structure like this: pcss ├── inc │ ├── colors.pcss │ ├── fonts.pcss │ ├── media_queries │ │ ├── lg.pcss │ │ ├── md.pcss │ │ ├── sm.pcss │ │ └── xl.pcss │ └── sitewide.pcss └── kickstart.pcss Now you got everything to get started, let's have a look at the files: package.json Inside "package.json" you have different dependencies I've installed to mimick my "old" scss workflow (importing, nesting, etc..), the important part however is the script section: "start": "npx tailwindcss build pcss/kickstart.pcss -o css/dist.css", "watch": "npx postcss pcss/kickstart.pcss -o css/dist.css --watch", "build": "cross-env NODE_ENV=production npx postcss pcss/kickstart.pcss -o css/dist.css" "start" is the bootstrap script you have to run at first, to let node compile tailwind as a whole. Do it at the beginning of the project or everytime you make some changes to "tailwind.config.js" Change the name of your pcss files accordingly (I've used pcss as an extension, but css would work perfectly fine) "watch" is the next script you have to run in order to have live reload of your stylesheets. "build" is the script you have to invoke once you are ready to deploy to production (you need to specify your purge rules inside postcss.config.js, keep reading.) tailwind.config.js Here you can specify your tailwind configurations, read the docs here. One thing to notice inside mine is that I've set purge: false because I prefer to configure the purge part inside a dedicated file, which is: postcss.config.js This file is responsible to handle postcss options, and purge is one of them. The paths you declare inside the content array are the ones whom will be scanned and purged eventually. Mine could be different than yours, so pay attention. The whitelistPattern array is useful when you want to exclude some classes from the purge phase, below I'm excluding the ones whom starts with "fff-". ... content: [ './*.php', './inc/*.php', './fields/*/*.php' // etc. ], whitelistPatterns: [ // Pattern to exclude during extraction /^(fff-)/ ], ... The other settings are pretty explanatory (cssnano is used in production for minification). As a final note you'll notice that every pcss file I use starts (and ends) with: /* purgecss start ignore */ css... /* purgecss end ignore */ Those tell purgecss to ignore completely the file, since I know I want to retain every rule/class I write in there. If you got everything setup correctly you can start having fun ? Run: npm install then: npm run start and finally: npm run watch Hope this little "guide" could enlighten in using Tailwind ?
    1 point
  18. Hi @modifiedcontent have you considered just using Ryan's ProcessForgotPasswords module that is already part of PW and just loading it in your template file and having it take care of things for you? I've not tried it myself in my own template files but it is certainly possible. Something like this might work for you on your reset page template (totally untested, but you seem to be willing to experiment)... <?php if ($user->isLoggedin()) { $session->logout(); $session->redirect('/'); } else { $pfp = wire()->modules->get("ProcessForgotPassword"); $pfp->useInlineNotices = true; $pfp->emailFrom = 'your-from-address@your.domain'; echo $pfp->execute(); } There are several other settings like 'useInlineNotices' that are documented in the module from lines 17-28, linked here. You'll be better served using this core module if you can, rather than writing something yourself. If you do want to use this as a learning opportunity, and decide to go with your own code then I'd suggest research in the following areas: CSRF tokens, session variables, cryptographically secure random number generators, MD5 weaknesses and password hashing.
    1 point
  19. This is so much more than I expected. Truly. Amazing job @kongondo One wish: That PayPal and Stripe timelines were reversed.
    1 point
  20. Great to hear! My current project with Padloper 1 will be released in the next week. So maybe I should convert it to Padloper 2 in future.
    1 point
  21. Looks very amazing. Wish I could use it for a site I am working on now. Also interested in being an alpha tester.
    1 point
  22. @kongondo This is looking phenomenal. Amazing work. I would gladly get involved in the Alpha release if possible, with great pleasure!! This is most exciting. Made my morning! Haha.
    1 point
  23. Can't believe it, it's not a dream. YEEEEES. How can I get the invitation? ?
    1 point
  24. Hi @DrQuincy Not sure that this is the right way but you can hide this block via CSS, create custom permission and check it in the hook to ___executeResize() if the user has it. https://github.com/processwire/processwire/blob/master/wire/modules/Process/ProcessPageEditImageSelect/ProcessPageEditImageSelect.module#L1282
    1 point
  25. @teppo Thanks alot for your PR with the TextformatterVideoEmbed integration! I tested and merged your PR today. I like the idea of adding more and more integrations with other modules like TextformatterVideoEmbed.
    1 point
  26. I've pages using the custom-page-template and I would like to display a simple message at the top of the page form when editing those pages in the Admin. I thought about hooking ProcessPageEdit::buildForm() but I do not well how to use that hook in order to display the message just for the custom-page-template pages. Any help? UPDATE: Solution found wire()->addHookAfter('ProcessPageEdit::buildForm', function(HookEvent $event) { $ProcessPageEdit = $event->object; $form = $event->arguments('form'); switch ($ProcessPageEdit->getPage()->template->name) { case 'custom-page-template': $form->prependMarkup("<div style='margin-bottom: 3.6em; margin-top: 1em; background: #ffd;'>MY MESSAGE</div>"); break; default: // do nothing } }); Any improvement is welcome!
    1 point
  27. I've used https://themeforest.net/item/canvas-the-multipurpose-html5-template/9228123?s_rank=1 for a number of sites and found it covers most of my front end requirements. It has a heap of page templates that are easy to convert to PW templates and individualise for client site looks.
    1 point
  28. Building menus for any usage has been discussed a lot over the years. Here's one post: https://processwire.com/talk/topic/2787-custom-menu-not-related-to-page-tree/#entry27275 In the end, i have found that having a branch on the page tree for the menu is the most flexible and easiest to: - code custom navs from (mega menus, boostrap etc) - publish/unpublish menu items - use permissions for menu items (e.g. show some menu items to logged in users) - insert stuff like forms, videos etc into a menu and it works very well with MSN (markup simple navigation) because it allows you to set the parent...
    1 point
  29. You could retrieve the errors from the Inputfield, clear them out, and then replace with your own: $errors = $inputfield->getErrors(true); // true=clear the errors out // $errors is a plain PHP array of error messages... // ...if you want to iterate it or do anything with it $inputfield->error('Your custom error message');
    1 point
  30. Well... while this works (1): This doesn't (2): I use a slightly modified version of Ryan's Video embed for YouTube/Vimeo module which already saves the "no cookie" domain to the database. Users would paste the URL as usual, the module fetches the oEmbed data but in my case the domain will be replaced. Around line 104 in Ryan's module I changed that part: $embedCode = str_replace('youtube.com', 'youtube-nocookie.com', $data['html']);
    0 points
×
×
  • Create New...