Leaderboard
Popular Content
Showing content with the highest reputation on 02/02/2018 in all areas
-
ProcessWire 3.0.90 This week updates focused mostly on GitHub issue reports, emphasizing a few that I'd put off for a little while because they would take more time than usual to resolve, and didn't affect many people. But they are nevertheless important, especially nearing the next master version. We also have a new addition in 3.0.90 thanks to @horst. This version adds the latest iteration of his ImageSizerEngineAnimatedGif module to the core. This means that PW can now generate variations (alternate sizes/crops) of animated GIFs. Previously any variations of an animated GIF just ended up being one frame of it. Now all the frames are retained. To enable this, go to Modules > Core > Image > Animated GIF Image Sizer, and click Install. Though we'll probably set this one to install automatically in one of the next versions. But once installed, upload an animated GIF, and ProcessWire takes care of the rest. No longer blog post this week because the above is all I have to report and it doesn't seem long enough for a blog post. I hope that everyone has a great weekend!10 points
-
Hey guys, I found something incredible. Look at this new fieldtype from the CMS Statamic: https://statamic.com/blog/statamic-2.8 It is called Bard and combines the Repeater Matrix with an normal textfield. I think this is a really good way to edit long text. It would be awesome if Processwire could get an similar fieldtype. What do you think? Jannis6 points
-
Just wanted to share a blogpost by myself about my master thesis that I'm writing at a great little company based in vienna and specialised in earth observation related things and geoinformatics called EOX: https://eox.at/2018/01/visualizing-geotiff-tiles-with-openlayers/ In (very) short, this is how WMTS works now: this is what we do: and this is what we analyze (finding the "break-even" when it starts to make sense using this approach): Maybe this might especially be interesting for you, @Mats ?6 points
-
As additional information for those who uses my third party module "Image Animated GIF":4 points
-
I think there's nothing that can't be done with RepeaterMatrix, but I like two details: The live preview is nice (not related to this field) Writing text directly to the field and only insert blocks where needed is definitely a nice improvement for the UI when you are writing lots of text. In a recent blogpost that I wrote it was quite tedious to use repeatermatrix' different types because sometimes I just needed one line of text to introduce the next block and I always had to create a new repeater matrix item. In those scenarios it would be great to just start writing and insert blocks where needed. A CKEditor field with HannaCode tags is similar but also not as good as your example imho.4 points
-
Update: Menu Builder 0.2.3 Changelog Fixed a bug where inactive pages in multi-language sites would still be displayed in menus. Thanks @thmsnhl Available in modules directory. Thanks.4 points
-
3 points
-
3 points
-
This is a good thing. I'd suggest that you first get a thorough grounding of the basics before plunging into creating anything. The resources suggested in the previous posts are all good. However, without a basic understanding of ProcessWire, they will not make much sense to you. People learn differently. Some people like to dive in and pick up the basics as they go along. Others (me included ) prefer to get the basics first before diving in. So, if you can go through these first, you'd be the better for it in the long run. Selectors PHP foreach loop (in case loops are newish to you) $page $pages Yes, what you asked is doable. But you will need to get those hands dirty with some custom code. It'll be fun though. Welcome to the forums .3 points
-
Hi @mr-fan, thanks for sharing this calendario demo. Would you mind to post the css tweaks you show in the example?2 points
-
This is OT, sorry, but if there is enough interest, the last few posts could be moved to a dedicated Topic... I do not have to much spare time this year but I would love to help anyone interested in developing an alternative module directory. For example there are such things for WP: http://www.wpmeta.org/ https://managewp.org/plugins/best https://proplugindirectory.com/ and more... ProcessWire is a native cataloging system, as we all know. So it would not take too much time for a few experienced devs to come up with something useful and opensource. What I could contribute is UI/UX design and creating and editing content, for example. We've read lots of other posts about willing to help to boost the ProcessWire documentation, so I guess there should be enough of us to turn it into a success story. This site I propose could be a "module+snippets finder", ie. a "ProcessWire Solutions" site, meaning both modules and snippets could be in the database, making integrated "solution" searches possible. Anybody up to the challenge?2 points
-
Looking good! Thanks for working on this. PW really needs an "image reference" fieldtype (wishlist topic). Several times I've thought about tackling it, but seems like a lot of work because users will be expecting a feature set matching the core images inputfield: sortable, scalable thumbs, different thumbnail views, etc. Not to mention new challenges like setting tags or description on the reference that is different from the source tags/description, how to handle deletion of the source image, etc. Quite tricky.2 points
-
Ah, I should have known there would be something in PIA for this - it's the real Swiss Army Knife for images. I really need to have a proper explore of that module. (I think it's the state of the docs that has been putting me off - maybe you could consolidate/tidy everything into the GitHub readme?) I have a very primitive system. For modules I'm interested in I have a spreadsheet with name, category, link, brief description of what it does (in my own words). But I often forget to update it with new modules and just try to rely on memory. For forum snippets (and links to the original post) I just have a folder with a bunch of text files in it. The text files are named according to what the snippet is about. Then when I'm looking for something I use the quick filter feature in my file manager (XYplorer).2 points
-
https://github.com/processwire/processwire-requests/issues/1562 points
-
2 points
-
Edit: Because of the great response to this topic I wrote a guest blogpost: https://processwire.com/blog/posts/building-custom-admin-pages-with-process-modules/ One of the hidden treasures of processwire seems to be the creation of custom admin pages. Technically speaking those pages are ProcessModules - but i guess that's the reason why so many people out there seem to be afraid of building them... it sounds so hard! You've never created a module for ProcessWire? You have never created a plugin for any other CMS? You have no clue about OOP with all its classes, methods and properties? No problem! I'll show you how simple you can start: <?php class CustomAdminPage extends Process { public static function getModuleinfo() { return [ 'title' => 'Custom Admin Page Example', 'summary' => 'Minimalistic ProcessModule to show that nobody has to be afraid of building custom admin pages.', 'href' => 'https://processwire.com/talk/topic/17709-how-to-create-custom-admin-pages-aka-processmodules-yes-its-that-simple/', 'author' => 'Bernhard Baumrock, baumrock.com', 'version' => 1, // page that you want created to execute this module 'page' => [ 'name' => 'customadmin', // your page will be online at /youradmin/setup/customadmin/ 'parent' => 'setup', 'title' => 'Custom Admin Page Example' ], ]; } public function ___execute() { return 'This is the most simple Admin-Page you have ever seen :)'; } } Now save this file as CustomAdminPage.module and place it in your /site/modules folder. After a refresh it will show your module in the modules manager of your site where you can install it: After installation you already have your first very own admin page! Congratulations! Was not too hard, was it? It's as simple as that! Now lets add some more custom HTML. And to show you another nice feature we will add this code to a separate method called executeDemo(). And because everything is so simple we will also add some javascript to this page public function ___executeDemo() { $out = ''; $out .= '<h1>H1 has some special css styling in the admin, thats why it seems to have no effect</h1>'; $out .= '<h2>H2 looks different ;)</h2>'; $out .= '<h3>...and so does H3</h3>'; $out .= '<button onclick="myFunction()">Click me</button>'; $out .= '<script>function myFunction() { alert("this is a demo javascript"); }</script>'; return $out; return ''; } Now thanks to ProcessWire-magic your page will already have its own URL: Just append /demo to your url and see what you get: And of course don't forget to click the button Ok, now that code looks a bit hacky, right? Inputfields and especially InputfieldMarkup for the win! We add another method with some advanced code. To use inputfields we need a form that holds all those inputfields and that makes it possible to handle user input lateron. See somas great tutorial about forms here for a quickstart and more details: public function ___executeAdvanced() { $out = '<h2>A more complex Example</h2>'; $form = wire()->modules->get('InputfieldForm'); $field = wire()->modules->get('InputfieldMarkup'); $field->label = 'Markup Test 1'; $field->value = '<h1>h1</h1><h2>h2</h2><h3>h3</h3><h4>h4</h4>'; $form->add($field); $out .= $form->render(); return $out; } Ok, it get's boring Let's do something more fun and add a chart in a second field and change the fields to 50% screen width (I'm sure you know that already from the GUI template editor)! public function ___executeAdvanced() { $out = '<h2>A more complex Example</h2>'; $form = wire()->modules->get('InputfieldForm'); $field = wire()->modules->get('InputfieldMarkup'); $field->label = 'Markup Test 1'; $field->value = '<h1>h1</h1><h2>h2</h2><h3>h3</h3><h4>h4</h4>'; $field->columnWidth = 50; $form->add($field); $field = wire()->modules->get('InputfieldMarkup'); $field->label = 'Chart Sample'; $field->value = '$chart'; //$field->notes = 'Example code taken from here: http://www.chartjs.org/docs/latest/getting-started/usage.html'; $field->columnWidth = 50; $form->add($field); $out .= $form->render(); return $out; } OK, we are almost there... we only need to add the chart library! To keep everything clean we will put the code for the chart in another method. We will make that method PRIVATE to add some security. Our new Method: private function renderChart() { // prepare chart code wire()->config->scripts->add('https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.3/Chart.min.js'); ob_start(); ?> <canvas id="myChart"></canvas> <script> var ctx = document.getElementById("myChart"); var myChart = new Chart(ctx, { type: 'bar', data: { labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"], datasets: [{ label: '# of Votes', data: [12, 19, 3, 5, 2, 3], backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)' ], borderColor: [ 'rgba(255,99,132,1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)' ], borderWidth: 1 }] }, options: { scales: { yAxes: [{ ticks: { beginAtZero:true } }] } } }); </script> <?php return ob_get_clean(); } Now we just need to call $this->renderChart() in the right place! Here is the complete Module: <?php class CustomAdminPage extends Process { public static function getModuleinfo() { return [ 'title' => 'Custom Admin Page Example', 'summary' => 'Minimalistic ProcessModule to show that nobody has to be afraid of building custom admin pages.', 'href' => 'https://processwire.com/talk/topic/17709-how-to-create-custom-admin-pages-aka-processmodules-yes-its-that-simple/', 'author' => 'Bernhard Baumrock, baumrock.com', 'version' => 1, // page that you want created to execute this module 'page' => [ 'name' => 'customadmin', // your page will be online at /youradmin/setup/customadmin/ 'parent' => 'setup', 'title' => 'Custom Admin Page Example' ], ]; } public function ___execute() { return 'This is the most simple Admin-Page you have ever seen :)'; } public function ___executeDemo() { $out = ''; $out .= '<h1>H1 has some special css styling in the admin, thats why it seems to have no effect</h1>'; $out .= '<h2>H2 looks different ;)</h2>'; $out .= '<h3>...and so does H3</h3>'; $out .= '<button onclick="myFunction()">Click me</button>'; $out .= '<script>function myFunction() { alert("this is a demo javascript"); }</script>'; return $out; return ''; } public function ___executeAdvanced() { $out = '<h2>A more complex Example</h2>'; $form = wire()->modules->get('InputfieldForm'); $field = wire()->modules->get('InputfieldMarkup'); $field->label = 'Markup Test 1'; $field->value = '<h1>h1</h1><h2>h2</h2><h3>h3</h3><h4>h4</h4>'; $field->columnWidth = 50; $form->add($field); $field = wire()->modules->get('InputfieldMarkup'); $field->label = 'Chart Sample'; $field->value = $this->renderChart(); $field->notes = 'Example code taken from here: http://www.chartjs.org/docs/latest/getting-started/usage.html'; $field->columnWidth = 50; $form->add($field); $out .= $form->render(); return $out; } private function renderChart() { // prepare chart code wire()->config->scripts->add('https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.3/Chart.min.js'); ob_start(); ?> <canvas id="myChart"></canvas> <script> var ctx = document.getElementById("myChart"); var myChart = new Chart(ctx, { type: 'bar', data: { labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"], datasets: [{ label: '# of Votes', data: [12, 19, 3, 5, 2, 3], backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)' ], borderColor: [ 'rgba(255,99,132,1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)' ], borderWidth: 1 }] }, options: { scales: { yAxes: [{ ticks: { beginAtZero:true } }] } } }); </script> <?php return ob_get_clean(); } } I hope you enjoyed reading this and it will open up many new possibilities for you! Updates: permissions: https://processwire.com/talk/topic/17709-how-to-create-custom-admin-pages-aka-processmodules-yes-its-that-simple/?do=findComment&comment=174746 tutorial on file uploads: https://processwire.com/talk/topic/17709-how-to-create-custom-admin-pages-aka-processmodules-yes-its-that-simple/?do=findComment&comment=185261 snippet how to use NavJSON: https://processwire.com/talk/topic/17709-how-to-create-custom-admin-pages-aka-processmodules-yes-its-that-simple/?do=findComment&comment=2164121 point
-
Since I was stuck to my flat today I took up a wish and rolled a Process module / CKEditor plugin combo that adds @-autocomplete like the mentions here in the forum to CKEditor fields. It's configurable, but only in module settings for now, the positioning of the select list is quite off and there's still some visual work to be done, so it is in early alpha state. Nonetheless, if you want to take a look, here it is: https://github.com/BitPoet/ProcessMention After installation, you may want to look into the "Additional selector" entry in the module's settings. You will most likely want to limit results to certain templates there. Edit: Updated to version 0.0.30 with fixed positioning of the dropdown. Edit2: Settings are configurable in field context now. If pwmentions is enabled, the according settings are shown on the "Input" tab.1 point
-
DEPRECATED - USE ROCKMIGRATIONS INSTEAD I'm very happy to share my newest module called "ProcessWire Kickstart" that I developed during the holidays Maybe some of you already saw the preview thread about this... What it does: This module makes it possible to install ProcessWire in a fully automated process. You can define all necessary settings in one single php file and you can even define "recipes" that get executed after installation. This means you can install modules, adopt settings and do whatever you want with your new site using the PW API (like creating pages and so on). You could also place a kind of frontend boilerplate on your git account and grab that after installation and place it in your templates folder. I ran out of time so maybe someone could try that out and show how he did it Additional to that there is a ProcessModule to install in your ProcessWire admin which makes creating and testing recipes super easy. Note: Alpha realese until this module gets some more testing. Please be careful with this tool since it does some heavy file system manipulations (unzipping, moving and DELETING whole directories...). Use at your own risk. Usage: Just grab a copy of the kickstarter, place it on your server, visit yournewsite.com/kickstart.php, adjust settings (like username+password) as needed and hit "install". If your mysql user does not have the rights to create a new database then you have to create a database before running the installer! Download: via SSH: cd /var/www/yournewsitedirectory wget baumrock.com/kickstart.php // or using curl curl baumrock.com/kickstart.php -L --output kickstart.php Manually: Klick baumrock.com/kickstart.php and upload the file to your server Note: baumrock.com/kickstart.php returns the current master file from the gitlab repo and changes the namespace of the script so that it can install itself via recipe. If you don't need to install the kickstart processmodule via recipe you could also download the kickstart.php file from gitlab. Screenshots/Walkthrough: The initial Screen: You can either upload a file via the left panel or take my example file from the gitlab repo: This way you can create your own kickstartfiles and host it on your own accounts. When the file is loaded you can easily edit all necessary informations, like username, password and the url where to grab ProcessWire from. I just tried it with an old version as well... 2.7 worked just fine (having the old installer that recently was updated) but an ancient 2.2.4 version failed. I don't think anybody will ever need to install lots of old versions of pw with this tool but I wanted to mention it here. Hit "install" and lean back - on my VPS it takes 15 seconds to install my very own custom version of processwire with all modules that i need After logging into your admin you'll see that all modules from your recipe are installed: Recipe Editor: As recipes are executed after processwire was installed you have all your API magic available there. Running this scripts is only possible inside of a working processwire installation, so I created a module to help you with that task. See the comments of the sample recipe for more information! I hope this tool helps you to save lots of time and create lots of awesome ProcessWire websites I would be happy to see how you use this and please share useful recipes here in the thread so that everybody can profit. Maybe you just want to throw in an idea what could be done (for example I can imagine a recipe that checks file permissions on the system after installation)... Some parts of the code and maybe also part of the idea are taken from @Soma 's old and still great online installer, thx for that!1 point
-
This is already available within the RTE, I think the same functionality should be brought through to the Image field (note: I am not asking for a media manager )1 point
-
1 point
-
That statamic UI is seriously GORGEOUS! (is very much like craft cms). The PW repeater matrix field, as cool as it is, looks somewhat dated in comparison IMHO. Totally this. Some parts of my blog posts have a ckeditor field just for three or four words (yeah, I could add another type in there 'Short text' or something but I stupidly didn't): I actually set them to all open now by default because it's awkward and not fun editing specific parts when it's laid out like the above. And this is only half of the items!1 point
-
@theo, I'll have a look. I'm not sure about the ProcessWire side of things but MB itself does check for languages when installed in a multi-language site. It doesn't activate other languages when creating a menu (which are hidden pages in admin). Hence, when saving the menu it only saves the menu title as $page->title = 'My Menu'. Since no language is specified nor is there input for other languages, the title is saved to the current language's title field. When you switch to another language, there is no menu title to display since none was saved in the first place. By the way, this is the reason why in multi-language sites, menus cannot be rendered using their titles or names. You need to pass render() the menu ID or page. Back to the missing titles issue, it's an issue I have previously considered. Back then, I came to the conclusion that it was not worth having menu items with multi-lingual titles since I couldn't think of a scenario to justify it. Your use case demonstrates that I need to revisit the issue. I'll work on this for the next version. When creating and editing menus, there will be inputs for the different languages that are available (creating) and for enabled languages (when editing) [difference here being no need to edit the title of a menu title if that language is not enabled for that menu]. Above means I'll have to change the way menus are created. It has been suggested before that MB should lose the textarea for input of menu titles (one-per-line). I think I'll go with a simple table (like the one used when adding custom menu items) with columns for each available language or a ul list or div with tabs for each available language (i.e., mimic ProcessWire's language title field). To create additional menus simultaneously, one would only have to click on an 'add another menu link/icon'. This will also resolve the issue of rendering menu items using their titles in multi-language sites. If a menu title or name is passed to render(), we will look for a menu by that title in the user's language. Sorry for the long post! Some of these are notes-to-self to be honest .1 point
-
Yeah sorry - went off topic - but that's why I originally asked - if there was any additional functionality included for setting up templates and fields beyond the default APIs capabilities. The migrations module install idea is genius though. Thanks.1 point
-
yes google "site:processwire.com create template field api" see some example code: https://processwire.com/talk/topic/1051-adding-and-assigning-fields-without-using-gui/?do=findComment&comment=9150 create a recipe that executes this code you could also make the recipe install the migrations module, copy over some migrations from a git repo and then execute this migrations.1 point
-
Thanks for the idea, I tested with and without UAC, same thing happen. And I can confirm that permission are OK as the files are copied by the script only if the dir already exist. Directories and files in regular site/assets are created/written successfully. This drive me crazzy and I can't live with a modified core file ?1 point
-
Thank you. My level isn't high either. But I think this project is not big enough for teamwork. Not even sure it's a project.1 point
-
Can you compare my settings to yours, because in my case it works well. I have my JS custom file located in the folder "ckeditor". Path to the JS-file entered in the input: mystyles:/site/templates/ckeditor/mystyles.js and in the mystyles.js I have fe UIKit styles like these: CKEDITOR.stylesSet.add( 'mystyles', [ { name: 'Inline Code', element: 'code' }, { name: 'Inline Quotation', element: 'q' }, { name: 'Bild links', element: 'img', attributes: { 'class': 'align_left' } }, { name: 'Bild rechts', element: 'img', attributes: { 'class': 'align_right' } }, { name: 'Bild zentriert', element: 'img', attributes: { 'class': 'align_center' } }, { name: 'Small', element: 'small' }, { name: 'Text durchstreichen', element: 'del' }, { name: 'Inserted Text', element: 'ins' }, { name: 'Cited Work', element: 'cite' }, { name: 'Highlight', element: 'mark' }, { name: 'Einfügen', element: 'ins' }, { name: 'Sample', element: 'samp' }, /* Uikit headlines */ { name: 'unterstrichen', element: 'h3', attributes: { 'class': 'uk-heading-divider' } }, { name: 'Linie in der Mitte', element: 'h', attributes: { 'class': 'uk-heading-line' } }, { name: 'Kugel am Anfang', element: 'h', attributes: { 'class': 'uk-heading-bullet' } }, /* Uikit paragraphs */ { name: 'Kleine Schrift', element: 'p', attributes: { 'class': 'uk-text-small' } }, { name: 'Große Schrift', element: 'p', attributes: { 'class': 'uk-text-large' } }, { name: 'Nur Kleinbuchstaben', element: 'p', attributes: { 'class': 'uk-text-lowercase' } }, { name: 'Nur Großbuchstaben', element: 'p', attributes: { 'class': 'uk-text-uppercase' } }, { name: 'Erster Buchstabe groß', element: 'p', attributes: { 'class': 'uk-text-capitalize' } }, { name: 'Farbe: gedämpft', element: 'p', attributes: { 'class': 'uk-text-muted' } }, { name: 'Farbe: Primär', element: 'p', attributes: { 'class': 'uk-text-primary' } }, { name: 'Farbe: Erfolg', element: 'p', attributes: { 'class': 'uk-text-success' } }, { name: 'Farbe: Warnung', element: 'p', attributes: { 'class': 'uk-text-warning' } }, { name: 'Farbe: Gefahr', element: 'p', attributes: { 'class': 'uk-text-danger' } }, /* ul classes */ { name: 'Liste mit Kugel', element: 'ul', attributes: { 'class': 'uk-list uk-list-bullet'}}, { name: 'Liste mit Linie', element: 'ul', attributes: { 'class': 'uk-list uk-list-divide'}} ] ); Here is a screen shot of the custom styles dropdown: So in my case I didnt find it difficult to add styles1 point
-
Yeah, that is difficult. Instead of including a copy of InputfieldIcon, another approach could be to auto-install a custom inputfield module (e.g. InputfieldIconFaPro). Then hook into the form rendering of ProcessTemplate and ProcessField and remove the existing inputfield, adding InputfieldIconFaPro in it's place with the same name (so it still reads/writes the "icon" property). Here are the classes (got them with some regex find/replace in file web-fonts-with-css/scss/_icons.scss):1 point
-
1 point
-
1 point
-
There is also 'X-Powered-By: Processwire' in response headers. $config->usePoweredBy = false; // to prevent it output1 point
-
1 point
-
Thank you very much. I've simply added a separate MyModule.module file class MyModule extends Process implements Module to the module folder. And in the ModuleInfo of the Fieldtype added: 'installs' => 'MyModule', So i can run my code in __execute of this Process module. Works! Thank you.1 point
-
Hehe sure but i think it‘s good for Processwire but the 5th Place was already before my post here...1 point
-
I'm pretty sure your post here made a difference but that is quite ok, I think.1 point
-
First thank you to all for the help!! Great know there are many user active! @horst OK I think the this solution cloud work, so I have to make one hidden page like principal category and every page for each image to call it from the back-end page where I want show up the images, exact? Thank you @Robin S and @theo Media Library + fieldtype-assisted-url look interesting, I can use this and replace it with image fields, but if I do I will lost all the api image? this could be nice also because i can use it with external folder like make my image folder. no? @szabesz thank you I'll go see the page.1 point
-
Anyone following this thread have any issues with the dev version before I merge to master? I'll merge later today if I don't hear anything. Thanks!1 point
-
. Yeah, @Robin S has been on fire! I've learnt a lot about Inputfields and Hooks from his work. That's me! .1 point
-
Welcome NoWords! Short answer to a long question - Yes, almost certainly. Bit longer answer - Most (if not all) of your needs could be accomplished by creating a ProcessModule. This will require some programming, which you may or may not be comfortable with. See This will allow all the control over member budgets etc that you need. In PW a user page is just a page so any custom fields can be added to a user just as they would any other page. Depending on your requirements around 'events', there are various calendar modules available but without knowing a bit more about that side of things, the built in date support might be all you need. Have a look at @bernhard's tutorial above, and come back to us with any more questions you might have.1 point
-
Since today, 31-01-2018, we have support for this in the PW Core. Therefore I updated this module to version 2.0.2 This version handles the detection of the core support and dismiss its installation then. If the core module is available but not installed, it get installed instead of this third party module. If you have this third party module already installed since a previous PW version and upgrade your wire folder, this module will detect the core module and install it. Its own hook isn't registered then and you get a notification about the changes.1 point
-
That's what OR-groups are for. $userTest = $users->get("(nick={$input->post->nick}), (email={$input->post->email})"); Btw., don't forget to sanitize your input before using it in selectors.1 point
-
It does work here (tested on PHP 7.1, 7.0 and 5.3) both with native mkDir and WireFileTools.1 point
-
I don't ever trust site/templates. I figure that site/assets/files makes it pretty definite, but as @kongondo mentioned, I always test via: isit.pw The other thing that isit.pw checks (I think), is the "it" url parameter that PW uses for all page requests. I got there from: https://w3techs.com/technologies/details/cm-processwire/all/all1 point
-
@godmok and everyone! Ok, hopefully this is the last update before pushing dev to master. This new version moves the "example numbers" into the Output Format Options syntax so that you can specify different numbers for each format which is important so you can tell from the dropdown whether the numbers are being formatted correctly or not. The syntax is: name | format | example numbers For example: northAmericaStandard | {+[phoneCountry]} {([phoneAreaCode])} {[phoneNumber,0,3]}-{[phoneNumber,3,4]} {x[phoneExtension]} | 1,221,5673456,123 australiaWithCountryAreaCodeNoLeadingZero | {+[phoneCountry]} {([phoneAreaCode,1,1])} {[phoneNumber,0,4]} {[phoneNumber,4,4]} {x[phoneExtension]} | 61,07,45673456,123 Note that the example numbers are comma separated for each component of the number. You can see the output in the dropdown in this screenshot. See how I have a leading zero/two digit area code and 8 digit number for the Australian examples vs 3 digit area code and 7 digit number for North America. Remember that this new 2.x version needs a different syntax for the format options, so if you are upgrading from 1.x, you will need to adjust, or empty the settings to have the new defaults populate automatically. This is OT, but I think it's a good excuse to advertise @netcarver's awesome ModuleReleaseNotes which shows what's changed when you go to upgrade a module (using Ryan's PW Upgrade module). Most importantly it highlights when a module is tagged as having breaking changes, which this new v2 of FieldtypePhone has. I hate implement breaking changes, but sometimes you just have to I'll give it another couple of days for the dust to settle (and here back from you guys) before pushing to Master.1 point
-
Glad to hear. While I am introducing breaking changes, I thought it was time to tweak the output format syntax a little. I have committed a new version to the dev branch. It is now recommended to put your spaces and dashes outside the curly braces, eg: {+[phoneCountry]} {([phoneAreaCode,1,1])} {[phoneNumber,0,4]}-{[phoneNumber,4,4]} {x[phoneExtension]} Compare this to the old version: {+[phoneCountry] }{([phoneAreaCode,1,1]) }{[phoneNumber,0,4]-}{[phoneNumber,4,4]}{ x[phoneExtension]} I think the new way is cleaner, because the space, dash, etc between number components are not actually part of the component itself. Note that for the country "+" or extension "x" you still want those inside the { } component delimiters because they actually belong to that component of the number. Does that make sense and seem like a logical improvement to you?1 point
-
Bernhard i wrote it and i repeat it you are really my hero - the admin/backend was always a ? to me since i was flashed about all the options on the frontendside with the API, creating some little modules or changing some or using small hooks to get some results are the level i was before i read your tutorials and examples...:) Wanna share a really cool example im playing with this responsive calendar plugin: https://tympanus.net/Development/Calendario/ in an easy process module i get some results like this (with some CSS tweaks): This is with the example data from but it works like a charm and is seemless responsive within the PW admin. Code i used on the PW side is really easy: now i'm getting hands dirty on trigger some booking data and some actionbuttons... Thank you for sharing your knowlegde! I wish you a healthy and successfull year - best regards mr-fan1 point
-
That's a first What does the system looks like? If you could post some screenshots I'm sure we could help you out. But you should start with some basic stuff like bernhard already described in his tutorial.1 point
-
glad you like it and thanks for the compliment yeah... it's not as easy to find in the beginning (and often i'm still searching a lot around the code). but most of the necessary informations are not too hard to find if you look at the code. Inputfields for example have a baseclass here: https://github.com/processwire/processwire/blob/master/wire/core/Inputfield.php Also see somas tutorial about forms (i updated my initial post with the link: https://processwire.com/talk/topic/2089-create-simple-forms-using-api/ ) I'll see what i can do...1 point
-
Thanks for this great tutorial! I am impressed by your PW admin UI manipulation skill all time. This tutorial could definitely get someone's hands dirty. Yes it is really quite hard imo because the related information is not easy to find. They do exist but always sit inside various post replies. It just looks like a missing piece to beginners. I long for a more in-depth version of this tutorial, or a complete guide precisely, that shows how to accurately use wiretab, pw-modal, panel, buttons etc. and layout all of them properly. I discovered a bit from reading through the core files and modules by trial and error but I believe I still have a long long way to go. I believe many people, like me a while ago, stuck in the layout phase and then give up their modules development.1 point
-
Thanks @bernhard! This needs to be on the front page1 point