Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 04/09/2018 in all areas

  1. Hi. I'm eager to present you my website, officially released last week. It's multilingual website about a science&techno event (science popularization) which be held in May, in Québec, Canada. Organizers can register their events with Form builder and those events are display on front-end. http://science24heures.com I take the opportunity to thanks everyone who answer my questions, update their module or even create new one! I will not name people, because I will for sure forget some... I still have some issues with the website, but it's a work-in-progress, and I still have a lot of features I want to add for next year. By the meantime, comments and suggestions are welcome (just take in account it's not my job, but I volunteer for this organization for many years and suggested them to rebuild the website which was 12 years old (!)) Thanks again for PW and this community. I learned a lot of new knowledge (forms, hooks, svg more php and css, just naming some) along this journey... Mélanie
    7 points
  2. I think I'm almost done Plugins are now very easy to create and extremely useful as they are reuseable across multiple projects: Sample setup of column statistics: // custom column stats grid.plugins.colStats.valueGetters = { id: function(column, selected) { return grid.pluck(0,{selected}).length + (selected ? ' selected' : ' rows'); }, percent: function(column, selected) { return grid.avg(column, {selected}); }, }; Everything works in the backend and in the frontend, just echo the field as you would do with any other field echo $page->mygridfield Data loads blazingly fast. The 10.001 rows here load in 500ms and are automatically compressed by the server to reduce transfer time (here it results in 90KB instead of 1MB of data!). Thx again @adrian for that idea. Cell renderers can be combined as you like! That's really powerful and great! We can build libraries of different cellRenderers that we need often and then just wrap them in a function and return the one's we like: In this column I combine the "actionItems" renderer and the "percentBar" renderer. The actionItems are only applied for regular rows. For rows of the "colStats" plugin we only append " (avg)" to the cell and don't show the icons because they are here to edit this lines related page (and of course the statistics row has no related page): colDef.cellRenderer = function(params) { var str = ''; if(!params.data.colStatsRowType) { str = RockGrid.renderers.actionItems(params, [ { icon: 'fa fa-bolt', href: '/admin/page/edit/?id=' + params.data.id, target: ' target="_blank"', str: 'Open external: ' + params.data.title, },{ icon: 'fa fa-search', href: '/admin/page/edit/?field=percent&id=' + params.data.id, str: 'Open panel: ' + params.data.title, class: ' class="pw-panel hover"', }, ]); } else { str = ' (avg)' } return RockGrid.renderers.percentBar(params, str, (!params.data.colStatsRowType ? 0 : 2)); }; Updating the grid after closing the panel is on my todo-list
    4 points
  3. Hello, the module got updated, please upgrade it to version 1.1.9. This version contain some small fixes, the major fix is that packages can be built/extracted on Windows and/or Unix platforms and the exclusion feature still work as expected. Apart from that, I am working on the GoogleDrive feature; It look like that the AmazonS3 feature need an update. Dropbox v2 planned for soon. @adrian I found (another or maybe this is what you was talking about ?) confusing thing with GoogleDrive. Duplicator can store 10 packages in GoogleDrive and delete the older keeping the newer but without differencing packages built on distinct websites. In the current state of the module, when he get files from Google Drive, all packages are threated as "one (1) website".
    2 points
  4. @Artomultiplo, you could set Movie_Type and Movie_Category as Page Fields to interlink you content. See here for some inspiration.
    2 points
  5. Thank you all very much! I've instead used the "insert into template" method, but the include method is a lot better. I'm just starting up my processwire exploration with a project where I need to get some data from a JSON from a movie booking app and I'm actually doing giant steps considering that this is my first time with JSON and/or PHP. Is amazing, I'm doing stuff that I could only dream of when working with wordpress. I'm soooo exited... for real. This is the gist of what I'm using for creating the pages based on a json that I pull from an URL https://gist.github.com/protorob/e6050c78b4bee2dbce59c38234afa0de Any suggestion is well received. Thanks again fr your support!
    2 points
  6. @Artomultiplo of course everything is still working. The index.php file is the main processwire file, see https://processwire.com/api/include/ If you only want to create new pages from inside processwire (eg in a template file) you don't need to include index.php, because processwire is already booted.
    2 points
  7. I did see that and I tried it out in the past, I just couldn't get past the 24hr format entry and the clock entry method, I know that will be an issue with the client as well. This was a fast and easy way to get a picker that matches the datetime entry field. I really wish there was a native way to do that- it makes for a cleaner look for the user. Also looks really good in the new uikit theme.
    2 points
  8. I've run into this need a few times and decided to take a crack at it. I am doing a custom calendar and really needed to get this time field and I'm on a deadline. I have a solution- albeit a little quick and dirty, but it works well for my project. I've only played with this in the new AdminThemeUikit admin interface though and do not know if it works in previous versions of PW. This is similar to the solution above but with no dependency on the Admin Custom Files module. I created a file called pw_admin_timefield.js and put it in site/templates/admin/ to keep it organized from the site's code. Inside that file I added this: $(function() { if ($.fn.timepicker) { $("input[name*='_time'").timepicker({ controlType: 'select', oneLine: true, timeFormat: 'h:mm TT', stepMinute: 5 }); } }); Checking for the existence of that function is a requirement as it is not loaded on all admin pages and will prevent the page from rendering properly. Since this isn't integrated as a true module these settings dictate how the time select will render every time. The timepicker plugin included with PW is here at this link and has all documentation for configuration: http://trentrichardson.com/examples/timepicker/ In the site/templates/admin.php file I added these two lines: $modules->get('JqueryCore'); $config->scripts->add($config->urls->templates . 'admin/time_field/pw_admin_timefield.js'); If the JqueryCore module is not called you will get the $ not defined JS error. Whenever I need a time select field with no date I create a text field with a suffix of "_time" on the end of the field name which matches the jQuery selector above. So my calendar has event_start_time and event_end_time and they both get time-only pickers. This would be much better as a module with the level of configuration that the Datetime field has. I might work on doing that next, but in the meantime this immediately solved the problem I had quickly. Thanks to @Soma for this article on custom JS in the admin: http://soma.urlich.ch/posts/custom-js-in-processwire-admin/
    2 points
  9. Deprecation note (06/2022): This module has been deprecated in favour of a new RockForms module that does not only use NetteForms but also comes with a GUI. You can still use this module if you want, but I will not provide any fixes or updates or support! https://gitlab.com/baumrock/RockForms It uses the great NetteForms from Nette Framework (docs: https://doc.nette.org/en/2.4/forms ) Features: Client AND Server-side validation in one go (you only need to code your rules ONCE) CSRF protection (by processwire) Honepot spam protection (custom) Helper to create PW pages from submitted forms ($form->createPage($parent, $template, $title)) Add ?success=yourform tag to url ONLY after successful submission (for analytics) Recover fields after unsuccessful submission (server side validation error) Define custom actions + message on successful submission UiKit form renderer (more can be accepted by pull requests) Sample Form Setup: <?php namespace ProcessWire; $form = $modules->get('RockForms')->form; $form->addRadioList('salut', 'Anrede', ['m' => ' Herr', 'w' => ' Frau']); $form->addText('forename', 'Vorname'); $form->addText('surname', 'Nachname'); $form->addText('email', 'E-Mail-Adresse') ->setRequired('Bitte geben Sie Ihre Mailadresse an') ->addRule(Form::EMAIL) ; $form->addSubmit('submit', 'Anfrage senden'); $form->onSuccess = function($form) { $form->createPage(1017, 'mailitem', date('d.m.Y H:i:s') . ', {forename} {surname} {email}'); // send email // do whatever you want // return success message return 'thank you for your subscription'; }; echo $form->render(); For all available fields you can look here: https://doc.nette.org/en/2.4/form-fields Validation: https://doc.nette.org/en/2.4/form-validation Rendering: https://doc.nette.org/en/2.4/form-rendering More complex form example of the screencast: Module is alpha and not well tested yet. It should be save to use, but there might be breaking changes in the future. Also I'm quite sure that not all possible situations are covered. There are some switch() statements that check for the fieldtype and I only implemented the ones I needed so far. All others are easy to add - please make pull requests if you find any unsupported fields. Thank you. LIMITATIONS: Multiform support limited Changelog: 6.8.18 add multiform support 8.4.18 v2 little bugfix + load assets automatically 19.3.18 alpha release
    1 point
  10. Hi, So today I will writing a small tutorial on developing templates in Processwire using Twig Template, Processwire is a highly flexible CMS which gives developers/designers/users options and allows easy extension of the platform. So here goes the tutorial What is Twig Template ? Simply put in my own words, Twig is a modern templating engine that compiles down to PHP code, unlike PHP, Twig is clean on the eyes , flexible and also quite *easy* to have dynamic layout site with ease ,without pulling your hair out. Twig is trusted by various platforms. It was created by the guys behind Symfony. Take this code as an example {% for user in users %} <h1>* {{ user }}</h1> {% endfor %} This will simply be the equivalent in PHP World <?php $userArray = ["Nigeria","Russia"]; foreach($userArray as $user): ?> <h1><?= $user ?></h1> <?php endforeach; The PHP code though looks simple enough however, you start to notice that you have to be concerned about the PHP tags by ensuring they are closed properly , most times projects gets bigger and comes complex and harder to read/grasp, and also in PHP you can explicitly create variables in the template making it very hard to read as it grows and prone to getting messy WordPress is a major culprit when it comes to that regard. Have you ever wanted to created separate layouts for different pages and break your sites into different parts e.g Sidebar, Comment Section, Header Section ? the regular approach would be to create individual pages for each section and simply add them as templates for the pages and with time, you can end up having tons of templates, however Twig allows you to easily inherit templates and also override the templates where you can inject content into the block easily. Don't worry if you don't understand the concept, the following parts will explain with an example of how to easily inherit layouts and templates. Layout <!DOCTYPE html> <html lang="en"> <head> {{include("layout/elements/header.twig")}} </head> <body> <div class="container-fluid" id="minimal"> <header id="pageIntro"> <div class="bio_panel"> <div class="bio_section col-md-6"> <h1>Okeowo Aderemi</h1> <h2>{{ page.body }}</h2> </div> </div> <div class="clearfix"></div> </header> <section id="page-body"> <div class="container"> <div id="intro" class="col-md-7 col-lg-7"> <h1>About me</h1> <h2> {{ page.summary }} </h2> </div> {block name="content"}{/block} <a style="font-size:1.799783em; font-style:italic;color:#d29c23" href="{{pages.get('/notes').url }}">Read more articles</a> </div> <div class="clearfix"></div> </div> </section> </div> <footer> <div class="header-container headroom headroom--not-top headroom--pinned" id="header-container"> {{include("layout/elements/footer.twig")}} </div> </footer> </body> </html> This is basically a layout where we specify blocks and include other templates for the page, don't panic if you don't understand what is going on, I will simply break down the weird part as follows: Include This basically is similar to native PHP 'include', as it's name suggests it simply includes the templates and injects the content into the layout , nothing out of the ordinary here if you are already familiar with php's include function. {{ output }} This simply evaluates the expression and prints the value, this evaluate expressions, functions that return contents , in my own short words it's basically the same as <?= output ?> except for the fact that it's cleaner to read. {% expression %} unlike the previous this executes statements such as for loops and other Twig statements. {% for characters in attack_on_titans %} <h1> {{characters}} </h1> {% endfor %} This executes a for loop and within the for loop, it creates a context to which variables in that context can be referenced and evaluated, unlike dealing with the opening and closing PHP tags, Twig simply blends in with markup and makes it really quick to read. I will simply post the contents of both the header and footer so you can see the content of what is included in the layout header.php <meta charset="utf-8"/> <meta content="IE=edge" http-equiv="X-UA-Compatible"/> <meta content="width=device-width, initial-scale=1" name="viewport"/> <title> {{ page.title }} </title> <link href=" {{config.urls.templates }}assets/css/bootstrap.min.css" rel="stylesheet"/> <link href="{{config.urls.templates }}assets/css/main.min.css" rel="stylesheet"/> <link rel='stylesheet' type='text/css' href='{{config.urls.FieldtypeComments}}comments.css' /> <link rel="stylesheet" href="{{config.urls.siteModules}}InputfieldCKEditor/plugins/codesnippet/lib/highlight/styles/vs.css"> <script type="text/javascript" src="{{config.urls.siteModules}}InputfieldCKEditor/plugins/codesnippet/lib/highlight/highlight.pack.js"></script> <script src="{{config.urls.templates }}assets/js/vendors/jquery-1.11.3.min.js"> </script> <script src="{{config.urls.templates }}assets/js/vendors/bootstrap.min.js"> </script> <script src="{{config.urls.FieldtypeComments}}comments.js"></script> <link rel="stylesheet" type='text/css' href="{{config.urls.templates}}js/jquery.fancybox.min.css"> <script src="{{config.urls.templates}}js/jquery.fancybox.min.js"></script> {block name="javascriptcodes"}{/block} footer.php <nav class="site-nav pull-right"> <div class="trigger"> <a class="page-link" href="{{pages.get('/about').url}}"> <span>{</span> About <span>}</span> </a> <a class="page-link" href="{{pages.get('/notes').url}}"> <span>{</span> Journals <span>}</span> </a> <a class="page-link" target="_blank" href="https://ng.linkedin.com/in/okeowo-aderemi-82b75730"> <span>{</span> Linkedin <span>}</span> </a> <a class="twitter page-link" target="_blank" href="https://twitter.com/qtguru"> <span>{</span> Twitter <span>}</span> </a> </div> </nav> There's nothing special here, other than twig simply injecting these fragments into the main layout , the next part is the most interesting and important concept and benefit that Twig has to offer {% block content %}{% endblock %} This tag simply creates a placeholder in which the content would be provided by the template inheriting this layout, in lay terms it simply means child templates will provide content for that block, the 'content' simply uses the name 'content' to refer to that specific block, so assuming we were to inherit this template it would simply look like this. Inheriting Template Layout {% extends 'layout/blog.twig' %} {% block content %} <div class="container blog-container"> <section class="blog"> <header class="blog-header"> <h1> {{page.title}} </h1> <h5 class="blog_date"> {{page.published|date("F d, Y")}} </h5> <br> </br> </header> <div class="blog_content"> <hr class="small" /> {{page.body}} <hr class="small" /> </div> </section> </div> {% endblock %} {% block nav %} <div class="col-md-4 col-xs-4 col-sm-4 prev-nav"> <a href="{{page.prev.url}}"> ← Prev </a> </div> <div class="col-md-4 col-xs-4 col-sm-4 home-nav"> <a href="{{homepage.url}}"> Home </a> </div> <div class="col-md-4 col-xs-4 col-sm-4 next-nav"> <a href="{{page.next.url}}"> Next → </a> </div> {% endblock %} In this snippet you can easily notice how each blocks previously created in the header and layout are simply referenced by their names, by now you will notice that twig doesn't care how you arrange the order of each block, all Twig does is to get the contents for each blocks in the child templates and inject them in the layout theme, this allows flexible templating and also extending other layouts with ease. Twig in Processwire Thanks to @Wanze we have a Twig Module for Processwire and it's currently what i use to build PW solutions to clients https://modules.processwire.com/modules/template-engine-twig/ The Modules makes it easy to not only use Twig in PW but also specify folders to which it reads the twig templates, and also injects Processwire objects into it, which is why i can easily make reference to the Pages object, another useful feature in this module is that you can use your existing template files to serve as the data provider which will supply the data to be used for twig template. take for example, assuming I wanted the homepage to display the top six blog posts on it, TemplateEngineTwig will simply load the home.php ( Depending on what you set as the template), it is also important that your twig file bears the same name as your template name e.g home.php will render into home.twig here is an example to further explain my point. home.php <?php //Get the Top 6 Blog Posts $found=$pages->find("limit=6,include=hidden,template=blog-post,sort=-blog_date"); $view->set("posts",$found); The $view variable is the TemplateEngine which in this case would be Twig, the set method simply creates a variables posts which holds the data of the blog posts, the method allows our template 'blog.twig' to simply reference the 'posts' variable in Twig Context. Here is the content of the 'blog.twig' template blog.tpl {% extends 'layout/blog.twig' %} {% block content %} <div class="block_articles col-md-5 col-lg-5"> {% for post in posts %} <div class="article_listing"> <span class="article_date"> {{post.published}}</span> <h2 class="article_title"> <a href="{{post.url}}">{{post.title}}</a> </h2> </div> {% endfor %} {% endblock %} So home.php sets the data to be used in home.tpl once Twig processes the templates and generates the output, twig takes the output from the block and injects it in the appriopriate block in the layout, this makes Processwire templating more flexible and fun to work with. The major advantage this has; is that you can easily inherit layouts and provide contents for them with ease, without the need of running into confusions when handling complex layout issues,an example could be providing an administrator dashboard for users on the template side without allowing users into the Processwire back-end. You can also come up with several layouts and reusable templates. Feel free to ask questions and any concerns in this approach or any errors I might have made or overlooked. Thanks
    1 point
  11. As threatened in the Pub sub forum in the "What are you currently building?" thread, I've toyed around with Collabora CODE and built file editing capabilities for office documents (Libre-/OpenOffice formats and MS Office as well as a few really old file types) into a PW module. If you are running OwnCloud or NextCloud, you'll perhaps be familiar with the Collabora app for this purpose. LoolEditor Edit office files directly in ProcessWire Edit your docx, odt, pptx, xlsx or whatever office files you have stored in your file fields directly from ProcessWire's page editor. Upload, click the edit icon, make your changes and save. Can be enabled per field, even in template context. Currently supports opening and saving of office documents. Locking functionality is in development. See the README on GitHub for installation instructions. You should be reasonably experienced with configuring HTTPS and running docker images to get things set up quickly. Pull requests are welcome! Here is a short demonstration:
    1 point
  12. Rebuilt my own site recently using all the knowledge, tips & tricks I've learnt from the PW docs, forums etc, including adding PWA features. Ran it through several publicly available audits and it passed OK - w3c validation, google page speed insights, google lighthouse, etc. Also engaged a digital marketing agency to audit it from a Google search POV. Still some tweaking to do on content & backlink fronts. Overall though happy with the result which could never have been achieved without the help and support of the ProcessWire community. Thank each and everyone of you. https://www.clipmagic.com.au
    1 point
  13. Hey guys. Fresh off the oven. We're still polishing a bit, but went live anyway: https://inovtex.com/ Sorry this one is in Portuguese only, so you'll probably need the old google translate for it.
    1 point
  14. For people interested, Dropbox support is back. It needs to be tested a bit
    1 point
  15. A recent similar topic...Maybe the suggested approaches there will help?
    1 point
  16. 1 point
  17. I've already switched to the CSS solution but yeah sounds good about what you did. You should officially update the module.
    1 point
  18. @nazim13 uhm, are you sure you posted in the correct thread? What you posted here seems totally unrelated to the original subject... (and also... two years later?)
    1 point
  19. Sorry - ok understood, its another issue then. Thanks again.
    1 point
  20. Welcome to the world of ProcessWire Same feeling here for the last 4 Years Regarding your code: Maybe you need to check if the given pagename already exists. Not sure if that happens automatically or not, but you should definitely try and see if it throws an error.
    1 point
  21. @Artomultiplo check out these docs.
    1 point
  22. It is possible to have a responsive design for mybb. Here is a good example on the Sinisterly forum. I choose mybb over php because back in 2006-2008 I ran a free web hosting company, and made the big mistake of choosing phpbb instead of mybb. There was no such thing as plugins. They were called mods. To install a mod you had to modify the core phpbb code, and this caused HUGE problems if you had multiple mods installed or were running a newer phpbb version. Some mods would not work even if you had the required phpbb version and had followed the installation instructions correctly! You had to backup your website every time before you installed a mod. The "automod" mod which automated the modification of phpbb core files made the process easier, but did not solve any problems. You also have to backup your forum before upgrading phpbb as they do new versions which break the website and theme of the website if you're using a custom theme. Phpbb uses bad shoddy code and mybb uses better code. The way to make plugins for mybb is much better than how to make a plugin for phpbb. And mybb has the XThreads plugin! PS. I have not tried phpbb 3.1 and above where they rewrote a lot of things, added new features and removed lots of the suckiness.
    1 point
  23. It depends on your image field. If it's multiple you need to select one first. ie $page->images->first->httpUrl():
    1 point
  24. Everybody's currently hyping about Collabora CODE and editing OpenOffice, MS Office and PDF documents inside their Own-/NextCloud. Recently, a colleague wanted to know if it was possible to do that in our corporate intranet too. And so I thought, why not? So I have started dabbling with NextCloud and the Collabora docker image a bit and, after banging my head against the wall for a while (figuratively) and doing a lot of reverse engineering to wrap my mind around the wopi and lool stuff, I managed to include the LOOL leaflet in a page of my own making and load and save documents in it through a small PHP script. I'm starting to create a PW module from this that allows inline (more precisely: modal) editing of supported document types. The next steps: A small file abstraction layer that converts back and forth between WOPI-style file ids necessary for LOOL and PW file urls, provides locking and checks access permissions A file access token generator / verifier A WOPI REST endpoint library that handles all the actions needed for opening, saving, locking etc. and provides auxiliary information like user info, avatar etc. Finally, the module itself, containing both the WOPI endpoint logic that the Collabora image uses and the UI extension for InputfieldFile that creates the editor I'm going to get the basics set up, then I'll whip up a getting started manual that also documents the "missing links" that I had so much trouble with and finally push this and the code to github so anybody interested can contribute too.
    1 point
  25. Thanks for the thoughtful replies! Playing around with the Minimimal Site Profile, I just managed to achieve exactly what I wanted - hide the page title only on the home page - by adding an IF to _main.php - not an elegant solution, but one that worked, and the feeling was awesome. I'm used to messing with parts of applications, themes, plugins, to get what I want, but this is the first time it's actually how the whole thing works, not some isolated hack, but real learning. Amazing! @DonPachi Thanks for the detailed rave review! Sounds like we're both in that huge class of folks who aren't by first choice focused on the tech side of the web, but are inevitably drawn in because it's all part of the same thing. Kinda like DJs when they started also producing and making music, some said they weren't real musicians...but that evolved! I've spent maybe 3-4 hours total with ProcessWire so far, reading and with an installation of the default Minimal site, and my main thought is, "Why isn't everything like this?" This forum thread was also more than ecouraging: Site Architecture: How far to take Processwire "is the database"? Hope to one day help someone with my own PW forum reply that's something like yours! @Robin S Thanks for the high level view! Platform vs developer is very much on my mind, and your comments keep PW in perspective. Totally agree, an excellent fit with a highly competent developer is critical. That's a big part of why I'm checking out ProcessWire. If we took our specs to an extremely competent dev, and said we'd heard WordPress was a popular platform, the dev would either agree to do it in WordPress (with a quality outcome, for WP, and also all of the WP overhead), or hopefully suggest another, better option. Then we'd be into a whole pile of great frameworks and CMS platforms to consider. I'm trying to get ahead of that by picking the platform first, if possible, a platform that I can use as well, then finding the developer. I guess it does sound odd. I'm using WordPress as a step before detailed specs (including a wireframe), because it's so easy to do. WP and two main plugins (Gravity Forms, Advanced Custom Fields) let me create forms with the required functionality, and adequately display the data in the front end, using only the WP admin GUI. I'm writing copy on a wiki (DokuWiki), and using WP like this is no more involved than entering text in the wiki, which is pretty cool - we can get a hands-on feel for the forms and supporting content on an actual web site, and let other people test it, at no significant development cost. @bernhard Thanks for the forms comments! I'm finding my way around and will soon get to forms and check out RockForms, which looks fantastic (being invited to suggest features is not a bad plus). Docs are everything, and helpful community forums are a huge part of documentation. This is great!
    1 point
  26. Congrats! Another good use of the Canvas theme If you allow just one remark: Usability-wise, I would never let text run as far as e.g. here https://www.clipmagic.com.au/services/develop/ Text runs all across 1120px. I would either use CSS column-count on certain pages, or use some kind of grid / layout solution that narrows down big chunks of text. https://baymard.com/blog/line-length-readability
    1 point
  27. yes,thank you. I had finish book's and author's page. book: <?php echo "<h1>" . $page->title . "</h1>"; foreach($page->author as $author) { echo "<h3><a href=\"$author->url\">" . $author->title . "</a></h3>"; } ?> author: <?php echo "<h1>" . $page->title . "</h1>"; echo "<h2>books:</h2>"; $id = $page->get('id'); $results = $pages->find("author=$id, limit=20"); foreach($results as $r) { echo "<a href=\"$r->url\">$r->title</a>"; } ?> And can be linked to each other, but i just add one page-reference field: author. is it ok?
    1 point
  28. Hi @MikeM and welcome to the forum, your question was well structured and it seems that you put some time into writing your request. And you see that you got multiple helpful answers within a very short time period. That's how it usually works here - so if you decide to start learning pw you'll always find a helping hand here If you choose pw you should definitely take a look at my new module: You can build any form you want very easily. It's the only tool that I know that has frontend and backend validation in one go (making it super easy and fast to setup and highly maintainable) and it also has conditional fields, what you described as a must-have: https://doc.nette.org/en/2.4/form-validation There's also the pro module formbuilder, but I have only bought and never used it so I can't tell you anything about it. PS: If you need any assistance or new features for RockForms I would be happy to implement those features for you.
    1 point
  29. I don't know anything about translations because where I live there is no demand for multi-language websites. I'm sure someone will help you with specifics for that soon. But as some general advice, you'll find that any development problem becomes a lot less confusing and frustrating as soon as you install Tracy Debugger and learn how the basic bardump works. Then you can start dumping variables in your template files, includes and functions and that way find out where your problem lies. I can testify that it's very empowering and greatly reduces feelings of hopelessness.
    1 point
  30. Welcome @MikeM! Probably not telling you something you don't already know: the project may be simple conceptually, but it won't be a simple development task. You'll need to work with an experienced developer in order to get a good result with this project. PW is an excellent platform to use for just about any web project, and considering where you are posting this you'll probably find lots of people here who will tell you the same thing. But to be honest, there are many platforms that could be used successfully for this project - in reality the success is more likely to come down to the experience and skill of the developer you hire than the platform used. So seeing as you won't be building the site yourself, your task is really to evaluate developers rather than evaluate ProcessWire. That sounds unusual to me - I haven't heard of people developing one site just to serve as an example for another site they want developed. More typical I think is to use a wireframing tool to show the flow of interactions. This helps you clarify to yourself how the website will work and also helps communicate your intentions to the developer. The wireframe could also demonstrate the design if you wanted that, using a tool such as Invision. Here are some links to a few popular wireframing apps if you want to look at that approach instead: https://www.invisionapp.com/ https://www.mockflow.com/ https://wireframe.cc/
    1 point
  31. ProcessWire will make you want to be, and then in a fairly short space of time become a developer. I've been using ProcessWire for a year now, and whilst I still haven't published any modules like the very talented people on this forum, I've more than tripled my clients, can take an idea to a working prototype stage in less than a week and honestly enjoy every minute I spend interacting with PW. My previous background was purely as a web designer, bespoke designs but using various modules and essentially piecing sites together as many do. I also started with a personal project to get my head around PW, it was essentially a membership based database where users could add 'titles' to their collection and share them with others, produce stats etc. I never finished it because I moved onto client work but it functions perfectly and was a great, pressure-free basis for learning PW. I did a bit of maintenance this evening on an old clients WordPress site, and it's just a bloated, illogical mess and just being logged in feels like a security risk. The other option you may want to consider is Laravel, which I started learning after picking up ProcessWire, but with having the CMS out of the box (plus a ton of other time saving benefits) means there's no real reason to use Laravel over PW.
    1 point
  32. Sorry @Mike Rockett I completely missed your post. Was your goal to use another syntax instead of "{}"? If so, latte supports syntax switching but I guess you already know that: https://latte.nette.org/en/macros#toc-syntax-switching So you can simply add this: <script n:syntax="double"> var obj = {var: 123}; </script> Their docs says there are "asp", "python" syntaxes but those were removed long ago (just found out myself too though I've noticed it earlier that didn't work). However there's a trick: leave spaces between the delimiters and you're good to go. So in Vue use "{{ myVar|myFilter }}".
    1 point
  33. ModuleManager inherits from the Process class and calls its parent's init method here. Process::init in turn invokes Modules::loadModuleFileAssets. This method looks for .js and .css files in the same location and with the same name as the module it is called for and, if found, adds them to $config->scripts / $config->styles. Admin themes all have lines like these in their template code to load the contents of the $config->scripts and $config->styles: <?php foreach($config->styles as $file) echo "\n\t<link type='text/css' href='$file' rel='stylesheet' />"; ?> <?php foreach($config->scripts as $file) echo "\n\t<script type='text/javascript' src='$file'></script>"; ?>
    1 point
  34. If you're looking to do an elaborate a page builder with ProcessWire and don't want to pull your hair out, I highly recommended viewing this video: A couple notes: with the css grid specification, you can assign multiple blocks to the same grid-area but they will overlap each other. I've "overcome" this by combining multiple blocks into a parent div and assigning that instead. pretty easy to do. i didn't demonstrate it, if your blocks have a grid structure within them (like built with flexbox), you can still assign that block to a grid-area. so if your blocks themselves have a grid structure, that's ok. for example, if your css grid layout is 6 columns, but you have a block that has a grid inside of it (built with like uikit's grid that's 5 columns), you can assign that block to the grid-area. with the css grid specification, the flow of the blocks does not have to match the flow of the grid-areas. this is insanely powerful. Enjoy.
    1 point
  35. Why are there two modules? Can the main module be used without the "Packages Manager" module? Why the "sort by name" button and not use the table header? Delete all button goes all the way to the right because no "position: relative" on parent. You could also float it to right. Sorry if these were already discussed.
    1 point
  36. Hi Tina, Your steps cover most of the process. A few notes: Make sure that the files/folders in the assets folder are writable Make sure to copy the the .htaccess file to the root of your website (some FTP programs hide this file by default) I prefer to delete the contents of the /site/assets/cache folder, but I am not sure if it's needed. You can do this before uploading the site, just to safe time. If you are going to use a new sql database, you can change the name and the user in the site/config.php file. For future use, for example if you want to copy the production database to your local mamp installation, make sure you add "drop tables" to your export, otherwise you will get errors about existing tables. That's all I can think of now. And if something should go wrong.... these forums are here to help you. 8) /Jasper
    1 point
×
×
  • Create New...