Leaderboard
Popular Content
Showing content with the highest reputation on 07/04/2018 in all areas
-
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.30 points
-
Hi Guys Last time I got a psd file from a customer. I needed the Images from the psd file but I hadn't photoshop or gimp installed on my system (and I also don't wanted them to have since I don't like them). So I quickly searche a online tool where I could extract the images from the psd file and I found pretty fast https://studio.psdetch.com/. It worked great for me. I could select any image in the psd file and extract it with a click of a button, pretty easy. It looks like it has also some other features but I don't looked at it in detail. Hope this helps some of you. Greetings Orkun5 points
-
Cool. On a related note: If you need to extract images from an MS-Word file, there's an easy "hack": Copy the Word file rename it to filename.zip. Un-zip it, and you'll see a folder "media" with all the images inside5 points
-
Wordpress has one thing different than ProcessWire, which enables them to have such a high quality default theme: Just three types of data, where two are quite similar. It‘s post, pages and comments. The rest is wysiwyg content all the way. In Processwire we don‘t have that and the power of it comes from not having that. Wordpress themes are just pretty frontends for a nearly non changing backend structure, which it had for years. In ProcessWire the first thing you probably do is creating your own content types (templates) and that‘s what no default theme can cater for. How should it know how to display that random blob of data you decided is a entity in websites domain? So there‘s not much incentive to spend a great amount of money on a high quality theme, which is unusable for just about any reasonable usage of processwire beyond „first impression“ after installation.5 points
-
This is a conversation that comes up quite a bit in our shop. It's a valid point you make especially from the perspective of first-timers. I have ran into this a lot of times with people new to PW or even just in general web design dev conversations where PW comes up. I preach PW to all my fellows (of course) and I am often met with the same reaction... something along the lines of "we would have chosen PW because it seems perfect, but we needed to get something done [fast, easy, simple, etc.]..." I am fully in the camp of the reason I love PW is that it doesn't force me into some frontend hell like other platforms (not mentioning any names). Of course, this is ideal for me as I am a frontend design/developer. So I see how there is this big gap in perception. I think there could be a strong market for prebuilt PW site profiles that are robust and full-featured. Especially if they focus on a specific demographic or genera (for lack of a better term) like real estate or business sites or hotels. With tools like the Repeater Matrix, we almost always build a WYSIWYG experience for all of our customers. So they can choose, drag and drop, and combine site elements however they want. They love it. Buuuutttt.... this is where the whole conversation gets tricky. The beauty of Processwire is that it's "an un-opinionated CMS/CMF". that literally is the magic sauce. So every time we break out this discussion and go down the idea phase of how we could actually create the type of experience you are suggesting... we end up at the same conclusion. That by making those content/layout/structure/design/ decisions in advance, we end up sacrificing the very thing that draws us to PW in the first place. I agree that PW is missed in a lot of cases. In my experience it goes like this: Developers: it's too simple - can't handle what I want to do. And they go a more "complicated" route. Designers: it's too hard, I can't seem to get something to appear instantly... it's too hard/slow/complicated. I feel like I have been in that conversation 100 times. I find that the people that take to PW are almost always people who have crafted their frontend chops and care enough about that part of the experience that they value PW's way of staying completely out of your way. At the same time giving you full control over the design of your admin/backend experience as well. I think making an out of the box solution to websites with PW ends up missing the reason it works so well in the first place. But, this is probably not the last time I jump into this conversation or start to think of how I can make some killer templates/site profiles for sale. hahaha. I hope this discussion continues because I think there is a piece of magic here... just haven't cracked the nut on it yet.3 points
-
Hi, ProcessWire does not compete with the WordPress market... Thank the lord. ProcessWire is for developers with basic to advanced knowladge who need a tool to make their vision a reality, easier. A framework. Much like jQuery. You must have some knowledge of JavaScript to fully understand jQuery. Just like if you were to develop for WordPress, you'll need PHP knowledge. Well, unless you are looking to sell themes. I don't know why a PHP developer would touch WordPress. ProcessWire's API is so much easier. So to answer your question, in ProcessWire you start here - http://php.net/docs.php then here - https://processwire.com/docs/ In WordPress you start here - https://wordpress.org/plugins/ then here - https://codex.wordpress.org/FAQ_My_site_was_hacked Edit: Notice how the 'My site was hacked' question was in the Frequently Asked Question section... Should it really be a frequently asked question? Because I don't think I've seen it asked once on the ProcessWire forum. Edit2: Most people here just use the blank profile and see the other profiles as bloat.3 points
-
This in site/ready.php works just fine for me (using basic-page and the summary field instead) <?php namespace ProcessWire; wire()->addHookBefore("Pages::saveReady", function($event) { $page = $event->arguments(0); if($page->template == 'basic-page') { if($page->maintenance) { $page->of(false); $page->summary = wire("user")->name; } else { $page->of(false); $page->summary = ''; } } }); Does you hook even trigger. Easy test would be to add exit("hooked"); in your hook.2 points
-
I'm working on a module that makes easier to run tests, from within the admin. It's a process module and you can add pages anywhere in the admin and set each page a tests directory. So you can add new tester pages, or specify a path to an existing tests directory, see my TemplateLatteReplace module's tests in action on the screencap. Furthermore you can narrow the list of tests within a directory with URL parameters, to include only a few tests or exclude some. This may come handy if you don't want to run all the tests within a directory. Another handy feature is that you can re-run tests via ajax, that makes it easy to check whether your fixes are working (whether in "real" code or in test code).2 points
-
DEPRECATED If you are interested in the new version (commercial module launching in 2023) write me a PM --- Some of you might have followed the development of this module here: https://processwire.com/talk/topic/15524-previewdiscussion-rockdatatables/ . It is the successor of "RockDataTables" and requires RockFinder to get the data for the grid easily and efficiently. It uses the open source part of agGrid for grid rendering. WHY? ProcessWire is awesome for creating all kinds of custom backend applications, but where it is not so awesome in my opinion is when it comes to listing this data. Of course we have the built in page lister and we have ListerPro, but none of that solutions is capable of properly displaying large amounts of data, for example lists of revenues, aggregations, quick and easy sorts by the user, instant filter and those kind of features. RockGrid to the rescue ? Features/Highlights: 100k+ rows Instant (client side) filter, search, sort (different sort based on data type, eg "lower/greater than" for numbers, "contains" for strings) extendable via plugins (available plugins at the moment: fullscreen, csv export, reload, batch-processing of data, column sum/statistics, row selection) all the agGrid features (cell renderers, cell styling, pagination, column grouping etc) vanilla javascript, backend and frontend support (though not all plugins are working on the frontend yet and I don't plan to support it as long as I don't need it myself) Limitations: While there is an option to retrieve data via AJAX the actual processing of the grid (displaying, filtering, sorting) is done on the client side, meaning that you can get into troubles when handling really large datasets of several thousands of rows. agGrid should be one of the most performant grid options in the world (see the official example page with a 100k row example) and does a lot to prevent problems (such as virtual row rendering), but you should always have this limitation in mind as this is a major difference to the available lister options that do not have this limitation. Currently it only supports AdminThemeUikit and I don't plan to support any other admin theme. Download: https://gitlab.com/baumrock/FieldtypeRockGrid Installation: https://gitlab.com/baumrock/RockGrid/wikis/Installation Quikckstart: https://gitlab.com/baumrock/RockGrid/wikis/quickstart Further instructions: https://gitlab.com/baumrock/RockGrid/wikis/quickstart#further-instructions German Translation File: site--modules--fieldtyperockgrid--fieldtyperockgrid-module-php.json Changelog: https://gitlab.com/baumrock/FieldtypeRockGrid/raw/master/changelog.md Module status: alpha, License: MIT Note that every installation and uninstallation sends an anonymous google analytics event to my google analytics account. If you don't want that feel free to remove the appropriate lines of code before installation/uninstallation. Contribute: You can contribute to the development of this and other modules or just say thank you by testing, reporting issues and making PRs at gitlab liking this post buying me a drink: paypal.me/baumrock/5 liking my facebook page: facebook.com/baumrock hiring me for pw work: baumrock.com Support: Please note that this module might not be as easy and plug&play as many other modules. It needs a good understanding of agGrid (and JavaScript in general) and it likely needs some looks into the code to get all the options. Please understand that I can not provide free support for every request here in the forum. I try to answer all questions that might also help others or that might improve the module but for individual requests I offer paid support (please contact me via PM). Use Cases / Examples: Colored grid cells, Icons, Links etc. The Grid also has a "batcher" feature built in that helps communicating with the server via AJAX and managing resource intensive tasks in batches: Filters, PW panel links and instant reload on panel close: You can combine the grid with a chart library like I did with the (outdated) RockDataTables module:1 point
-
This week we've got a lot of updates on our core dev branch, including new features, issue resolutions and more. For starters, we've added support for making the Trash and Restore features available to non-superusers, along with related improvements. Plus we've got several new useful and interesting page traversal methods and properties added to our $page API. https://processwire.com/blog/posts/processwire-3.0.107-core-updates/1 point
-
ProcessWire & Vue.js — a Lovestory Introducing the all new ICF Conference Website The new ICF Conference Page — Fearless » What would happen if we were equipped to fearlessly face the daily challenges and live a life without fear? « This question is at the core of our next ICF Conference in 2019 in Zurich. Its also the question we set out to answer in terms of developing the new website; the all new ICF Conference website is our most advanced website in terms of technology, designed to take advantage of the latest web-technologies. Its a brand new design powered by a lean setup, using ProcessWire for easy content management and a slick frontend based on Vue.js, Quasar and a heavily customized Uikit theme. Technology-stack — From backend to frontend, technologies that are fun, easy and fast to develop with We built on the ICF Ladieslounge website as a solid foundation and took our learnings from building our last Conference Booklet PWA (Progressive Web App) and applied it to the new website. Some highlights of the new ICF Conference website: Completely decoupled backend and frontend Custom design based on Uikit frontend framework Changing of languages happens instantly, no page-reload required Easy content updates thanks to ProcessWire All data is transferred using a single request returning custom JSON » Continue reading on Medium And please don't forget to clap and share:1 point
-
Please take this suggestion, based from the view of a decision maker which framework to use: I hear you saying: "Processwire can do everything. It is not limited to web sites." Sure, it's true and we all got it. However, you canot target "everything". You have to market to specific demand. The success of WP and Bootstrap is their totally overwhelming "out-of-the-box" instant gratification. Click.. Click.. AWESOME website. "Done!" Of course, it is not done. However, users are hooked enough to dig deeper, study, try thing out, extend. And bam, they invested additional time and are captured in that ecosystem. While the Processwire installation technically is flawless, it spits out newbies into the desert (or alternatively into nah sort of website template). The gap between the Processwire post-installation situation and something WP provides with their modern templates is too high. We almost skipped Processwire, because we just didn't know how to get to a first success. It is only, that WP exploded after installing two incompatible plugins, that we came back. We now work with a Processwire Pro to do the website for us but not everybody is willing to invest into the blind. Processwire is totally awesome - I felt that with my very first look. It is so clean, fast, tight, professional, secure and flexible, that I want to see it thriving. Please get users hooked with an awesome general startup experience, people can start working on. it doesn't take more than a beautiful modern website template and ideally with a page builder module preset.1 point
-
It seems that if i hit the "x" icon to close the banner (.pwcmb-widget__close::before) cookies are set to "y". Probably beacause of the class "js-pwcmb-allow-cookies" ... Is that by purpose? I fixed it by deleting the class "js-pwcmb-allow-cookies" in the module file notice.tpl.php on line 18. And by adding this code in the module file CookieManagementBanner.js on line 150: $('.pwcmb-widget__close').on('click', function() { cookieMonster.ui.showMessage(); cookieMonster.block(); });1 point
-
@adrian Thanks for the reply. That seems strange - I would have thought the collapsedHidden status would have included it in the form as a hidden input. For now, I'll just use a hook in my site/ready.php to hide the unneeded tabs as I don't want have any module updates remove changes. Thanks!1 point
-
The issue that I raised on May 8 has now gone away. It was very probably caused by an entirely separate problem I was having with permissions, and thus is nothing to do with this module! I posted about the permissions issue at https://processwire.com/talk/topic/19266-page-edit-permission-not-working/.1 point
-
It used to work like that, but it wasn't working for multi-language page names. This change happened in this commit (https://github.com/adrianbj/RestrictTabView/commit/9316082a26315a42d5036481da9d136eb5d4c42e). You could use an older commit, or if you can find a way to make it work while being hidden, I'd love to know. Maybe it needs to be hidden (or positioned off screen) via CSS instead?1 point
-
WOW!! This looks awesome, @joshuag!! Seems very useful, especially for speed up the creation of complex templates!!1 point
-
Ok, i find out a way myself. I set up a new js file, include this in the foot of my website and added this function: function loadGAonConsent(){ window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga('create', 'UA-000000-0', 'auto'); ga('set', 'anonymizeIp', true); ga('send', 'pageview'); var gascript = document.createElement("script"); gascript.async = true; gascript.src = "https://www.google-analytics.com/analytics.js"; document.getElementsByTagName("head")[0].appendChild(gascript, document.getElementsByTagName("head")[0]); } and also this three lines to check if the cookie has been set: if(localStorage.getItem('pwcmbAllowCookies')){ loadGAonConsent(); } To exclude browsers that got the no-track option on you can use this: if(localStorage.getItem('pwcmbAllowCookies') == 'y' && navigator.doNotTrack != 1 && navigator.doNotTrack != "yes" && window.doNotTrack != 1 && navigator.msDoNotTrack != 1){ loadGAonConsent(); } Would be great if there were a "only show cookie banner if do not track is off" checkbox in the module ... or something simular.1 point
-
Just ran across another issue with the module: When active, it seems to be limiting the number of pages displayed in the page tree to 11 children of the Home Page (of which one is the virtual parent). How to reproduce: on a clean install of PW 3.0.98, install and configure Virtual Parents as usual - for example virtual-parent-page=virtual-child-page; create 1 page under Home with the "virtual-parent-page" template ; create some pages under Home that have the "virtual-child-page" template for that Virtual Parent - they will be correctly moved under the Virtual Parent page; create some more pages under Home with "basic-page" template (not configured in Virtual Parents Module), so that they show alongside the Virtual Parent Page in the tree, until you have a total of 11 children of "Home" showing in the tree - so far so good; create 1 more page under Home, with the "basic-page" template, name it something special, like "Important page"; the new page will not appear in the tree. if you turn off virtual folders and manually sort the new page to the top, it will show, but another page will be hidden (the one at the bottom of the tree) when turning Virtual Parents back on. if you keep creating new pages under "Home" they will not be shown in the tree.1 point
-
Looks very polished. Are the animations very slow or is that the video framerate? Looking great so far!1 point
-
Me neither - still getting the same error without the File Compiler involved. I found that this works... protected function executeAction($options) { $pages = $this->pages; $p = $pages(1); } So it's not a difficult thing to work around, just puzzling is all.1 point
-
Testing with actual fields in the template (just for convenience, and will be the same for inputfields added dynamically with InputfieldWrapper::insertAfter(), etc)... Empty fieldset: renders fine. Empty fieldset tab: tab itself renders but not the tab content. Probably needs some inputfield contained within it even if that inputfield isn't visible. Try InputfieldHidden, or InputfieldMarkup with no markup and the skipLabelHeader option.1 point
-
Hello! The kind of thing I will really like to use!1 point
-
I have played with namespacing it and had no luck with this issue. I have to head out in a minute, but if you are interested, you can get the module working with namespace with these lines around line #134 in the main module file: $actionName = $this->wire('input')->get->action; $fullclass = __NAMESPACE__ . '\\' . $actionName; $this->action = new $fullclass; Let me know if you get anywhere, otherwise I can investigate further later and if no luck we can ask Ryan.1 point
-
yes, i know, i'm talking about site profiles that require no coding https://modules.processwire.com/categories/site-profile/ and these:1 point
-
Hi Thank you for the reply and the information. Apologies for only replying now. As both PW and the database are running in separate containers I struggled to link the two together. On IRC I discussed the issue with user buovjaga (which might be your IRC username?). During that discussion, the user posted two links and this link - https://github.com/davidk132/processwire-docker-compose provided the answer. The method with which you link the database container to the PW container from the PW setup is the important part. The database ip/url should be the name of the database container service. Other than that I struggled with a faulty docker container and MySQL. Eventually the I used the following which works: PW docker - suzel/docker-processwire Database - Official MariaDB localhost should be replaced with the MariaDB docker container service ID - in my case mdb1 Below the docker-compose file: version: '2' services: mdb1: image: mariadb:latest volumes: - /path/to/local/directory/mysql_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: *** MYSQL_DATABASE: *** MYSQL_USER: *** MYSQL_PASSWORD: *** pw1: depends_on: - mdb1 image: suzel/docker-processwire restart: always volumes: - volume:/var/www/html #- ./config:/usr/local/etc/php ports: - "80:80" volumes: procw1_data:1 point
-
I could be wrong but.. you are trying to modify a protected property directly and that the reason. As you know, you can't modify directly a protected property outside his class. and you have to use a setter to modify this variable. Try #2 : Generally speaking, the properties on an object will be set to protected and so attempting to access a property in this way will cause an error. So what actually happen here. The property $page->prop doesn't really exist and a magic __set() is written, and also a magic __get() function is written which will return a value when you read from this property. PHP will automatically call it for you when you try to access a property that is not one of the object’s public properties. If you try to set a property that is not accessible, the __set() magic method will be triggered. Its important to stipulate here that the return of this __get() magic function is a VALUE and not a reference (&__get()). If it was a reference that have been be returned by the function, you could modify the returned property. Assigning a variable directly to it can work if there is a corresponding magic __set(), but here you cannot modify it, since its actually a function which return value (and not a reference!) : the key is here So, basically, we can say that you are trying to do the following : $page->__get('prop')[] = ['d'], which doesn't mean anything, and PHP will trigger a notice of type : Indirect modification of overloaded property1 point
-
It looks like the following works: RewriteBase / # RewriteBase /pw/ # RewriteBase /~user/ With this configuration, the 200 OK errors do not display and the PW admin page tree renders properly.1 point
-
In case anyone else* (*so that would be the future me then, when I've forgotten o_O) wants to know how to do this, I worked it out, it's probably in the docs but for the life of me I could not find it (sorry doc writers). You have a hanna code called my_hanna_snippet and you want to output it from within a template, not from the Admin i/f. $hanna = $modules->get('TextformatterHannaCode'); echo $hanna->render("[[my_hanna_snippet]]"); Hope this helps someone/me in the future1 point