dotnetic Posted January 14, 2020 Share Posted January 14, 2020 I found the solution, I have to include the hook before the require in admin.php Link to comment Share on other sites More sharing options...
d'Hinnisdaël Posted January 14, 2020 Author Share Posted January 14, 2020 @zoeck I implemented modal editing for the collection panels. See the latest release. You can set the mode to modal or blank for edit or view links. The modal auto-closes on page save and the panel reloads via AJAX when an edit modal closes. /* Open edit links in modal, view links in new tab */ $panels->add([ 'panel' => 'collection', 'data' => [ 'editMode' => 'modal', 'viewMode' => 'blank', ], ]); 2 Link to comment Share on other sites More sharing options...
d'Hinnisdaël Posted January 14, 2020 Author Share Posted January 14, 2020 5 minutes ago, Jens Martsch - dotnetic said: I found the solution, I have to include the hook before the require in admin.php I could make that a bit more obvious in the documentation 🥂 2 Link to comment Share on other sites More sharing options...
dotnetic Posted January 14, 2020 Share Posted January 14, 2020 It would also be nice, if you provide a complete copy and paste solution for the admin.php, so one could directly see a working example. This requires of course to install all submodules. Link to comment Share on other sites More sharing options...
dotnetic Posted January 14, 2020 Share Posted January 14, 2020 Anyways, this is a really nice module. Thank you for releasing it. Link to comment Share on other sites More sharing options...
d'Hinnisdaël Posted January 14, 2020 Author Share Posted January 14, 2020 @gmclelland There's a few good ideas in there! I do have an at-a-glance/counter panel on the roadmap, but I'm not sure how to exactly build that since ProcessWire — as opposed to Wordpress — doesn't have any pre-configured content types, so I would have to make it a bit more configurable. I also like the idea of having different tabs, although it's not a requirement I see many pages having. It should be relatively simple to implement, though (apart from the permissions stuff). Link to comment Share on other sites More sharing options...
d'Hinnisdaël Posted January 14, 2020 Author Share Posted January 14, 2020 6 minutes ago, Jens Martsch - dotnetic said: It would also be nice, if you provide a complete copy and paste solution for the admin.php, so one could directly see a working example. I'm planning on revamping the documentation at some point — split it into sub-pages and make it more navigable. Next on the list is an example section with code snippets for all panels, as you suggested. 1 Link to comment Share on other sites More sharing options...
dotnetic Posted January 14, 2020 Share Posted January 14, 2020 It would also be nice, if I could add panels as an array of arrays (or objects) like $panels->add([ [ 'panel' => 'number', 'title' => 'Neue Seiten', 'data' => [ 'number' => 484, 'detail' => '100 mehr als im vorigen Monat', 'trend' => 'up', ] ], [ 'panel' => 'page-list', 'title' => 'zuletzt bearbeitete Seiten', 'data' => [ 'collection' => 'template=basic-page, limit=10', 'sortable' => true, ], ] ]); Right now, it seems, that I have to use $panels->add for every single panel, is that correct? Link to comment Share on other sites More sharing options...
Macrura Posted January 14, 2020 Share Posted January 14, 2020 7 minutes ago, Jens Martsch - dotnetic said: Right now, it seems, that I have to use $panels->add for every single panel, is that correct? i agree here with this – i actually tried to add an array of panels first before I realized you had to do each panel on a different call.. 1 Link to comment Share on other sites More sharing options...
d'Hinnisdaël Posted January 14, 2020 Author Share Posted January 14, 2020 1 hour ago, Jens Martsch - dotnetic said: Right now, it seems, that I have to use $panels->add for every single panel, is that correct? @Jens Martsch - dotnetic @Macrura Correct. The problem here is that the config object is an array, and the outer array is also an array. There's no way of telling if it's a config array or a collection of config arrays without it getting ugly. Luckily, WireArray has an import() method for that exact purpose. I added a release on GitHub that supports adding an array of panels via $panels->import([]); 2 Link to comment Share on other sites More sharing options...
d'Hinnisdaël Posted January 14, 2020 Author Share Posted January 14, 2020 @Jens Martsch - dotnetic @Macrura Come to think of it, I could check if the config array has numerical keys, and in that case treat them as an array of configs. 3 Link to comment Share on other sites More sharing options...
d'Hinnisdaël Posted January 14, 2020 Author Share Posted January 14, 2020 @Jens Martsch - dotnetic @Macrura Adding multiple panels via $panels->add([]) should work now. 3 Link to comment Share on other sites More sharing options...
gmclelland Posted January 15, 2020 Share Posted January 15, 2020 4 hours ago, d'Hinnisdaël said: I do have an at-a-glance/counter panel on the roadmap, but I'm not sure how to exactly build that since ProcessWire — as opposed to Wordpress — doesn't have any pre-configured content types, so I would have to make it a bit more configurable. Couldn't you loop over all templates(excluding system templates) and use the template's name along with a count? For example: Basic Page (55) Calendar Postings (77) Job Postings (88) community-event (55) <- this one doesn't have a friendly template name, the others above do Total Pages (400) It would probably be helpful to show file information as well. Like: Documents (1,000) Images (2,000) Audio (30) Videos (40) Total Files (3,000) The number of users would be helpful per role Editors (20) Contributors (25) Vendors (22) System Admins (2) Total Users (60) All of that would probably need to be cached so isn't too taxing on the server. Maybe only displayed to admins as well? I thought I remembered a module that already provides similar counts? I can't remember the name. Maybe I'll remember it later? 3 Link to comment Share on other sites More sharing options...
zoeck Posted January 15, 2020 Share Posted January 15, 2020 15 hours ago, d'Hinnisdaël said: @zoeck I implemented modal editing for the collection panels. See the latest release. You can set the mode to modal or blank for edit or view links. The modal auto-closes on page save and the panel reloads via AJAX when an edit modal closes. /* Open edit links in modal, view links in new tab */ $panels->add([ 'panel' => 'collection', 'data' => [ 'editMode' => 'modal', 'viewMode' => 'blank', ], ]); This does not work directly, only after I have written the following code into the admin.php file wire('modules')->get('JqueryUI')->use('modal'); But after that, it work likes a charm 😉 Thanks! and I still have a few ideas for the PageList: open collapsed edit in modal, too 😉 and one little design bug in the PageList: showRootPage => false -> no margin/padding left/right/bottom Link to comment Share on other sites More sharing options...
d'Hinnisdaël Posted January 15, 2020 Author Share Posted January 15, 2020 @gmclelland I can see this getting a bit out of hand with a CMF like ProcessWire that doesn't set any boundaries on the shape content can take. The most versatile solution would be to create an at-a-glance panel, but to rely on the programmer to supply the counts that are relevant to their site. I can see the template and role counts working the way you suggested. Still, not all templates are meaningful units of content, e.g. a `country` template for populating forms is really not that interesting to site editors. The role naming / pluralization would only work in English here (e.g. vendor becomes Vendors), so there'd need to be a way of naming them in other languages. The documents and images are a bit more complicated, however. ProcessWire doesn't have a central media or file library to get a count from. So you need to run a cronjob to scan the site for images across all pages. You'd also need to figure out which images are meaningful content (photos) and which are e.g. system-created QR codes for event invitations. How do you count videos? I have a file field called videos, and a repeater field with a video_url field. There's no way of counting that without doing it yourself. Don't get me wrong, I like the idea, but I don't think automating it is feasible or the right solution in ProcessWire. I'll be happy to be convinced otherwise 🌝 1 Link to comment Share on other sites More sharing options...
d'Hinnisdaël Posted January 15, 2020 Author Share Posted January 15, 2020 6 minutes ago, zoeck said: This does not work directly, only after I have written the following code into the admin.php file wire('modules')->get('JqueryUI')->use('modal'); Strange. I added that to the module itself and it only worked for me after I added it: protected function includeModalScripts() { $this->modules->get('JqueryUI')->use('modal'); } /* And then later */ if ($modal) { $this->includeModalScripts(); $button->class .= ' pw-modal pw-modal-large'; } Link to comment Share on other sites More sharing options...
zoeck Posted January 15, 2020 Share Posted January 15, 2020 24 minutes ago, d'Hinnisdaël said: Strange. I added that to the module itself and it only worked for me after I added it: protected function includeModalScripts() { $this->modules->get('JqueryUI')->use('modal'); } /* And then later */ if ($modal) { $this->includeModalScripts(); $button->class .= ' pw-modal pw-modal-large'; } You Added it to "renderButton" in the "DashboardPanel" Class, but the Modal is used in the "renderPageActions" Function in the "DashboardPanelCollection.module" (The renderButton/renderFooterButton isn't used in the Collection) When you add "$this->includeModalScripts();" to "if (self::windowModeModal === $mode) {" (Line 300) it works 😄 2 Link to comment Share on other sites More sharing options...
d'Hinnisdaël Posted January 15, 2020 Author Share Posted January 15, 2020 1 hour ago, zoeck said: When you add "$this->includeModalScripts();" to "if (self::windowModeModal === $mode) {" (Line 300) it works 😄 You're right of course 👽 I have a custom panel that already includes the modal script, so I never noticed. I pushed a fix that should work. Thanks for debugging! 3 Link to comment Share on other sites More sharing options...
d'Hinnisdaël Posted January 15, 2020 Author Share Posted January 15, 2020 @zoeck Slow day in the office — I added the editMode and viewMode options to the PageList panel as well. See the latest release. $panels->add([ 'panel' => 'page-list', 'title' => 'Information', 'data' => [ 'parent' => 'template=basic-page, name=info', 'editMode' => 'modal', 'viewMode' => 'blank', ], ]); 2 Link to comment Share on other sites More sharing options...
matjazp Posted January 15, 2020 Share Posted January 15, 2020 When I add 'editMode' => 'modal' to the collection panel, this pops up: PHP Notice: Undefined index: host in ...\Dashboard\DashboardPanel.class.php:329 Perhaps you could use isset? if (isset($info['host'])) When modal is closed, there is an error in the console: Uncaught ReferenceError: UIkit is not defined Dashboard.js?v=0.5.0-1579071638:2 Can't debug this as js is minified. Link to comment Share on other sites More sharing options...
d'Hinnisdaël Posted January 15, 2020 Author Share Posted January 15, 2020 @matjazp I added fixes for both issues you're describing. Check out the latest commit on the develop branch. These will be part of the next release. 3 Link to comment Share on other sites More sharing options...
matjazp Posted January 15, 2020 Share Posted January 15, 2020 I guess "Add dashboard page to user dropdown navigation" isn't supported in AdminThemeDefault? Link to comment Share on other sites More sharing options...
d'Hinnisdaël Posted January 15, 2020 Author Share Posted January 15, 2020 19 minutes ago, matjazp said: I guess "Add dashboard page to user dropdown navigation" isn't supported in AdminThemeDefault? I'm using the standard AdminThemeFramework::getUserNavArray hook. Looks like that's a newer addition and not available on default. Any particular reason you're still using the default theme? I switched all of my client sites over to UiKit and I don't regret it. The old one looks so... old. 3 Link to comment Share on other sites More sharing options...
quickjeff Posted January 16, 2020 Share Posted January 16, 2020 This is amazing. Going to try this one out this week. I’m excited to see google analytics in the road map. Keep up the great work!!!!!! Link to comment Share on other sites More sharing options...
matjazp Posted January 16, 2020 Share Posted January 16, 2020 (edited) Some encoding problems, this is how it looks when dashboard is empty: Learn how to add and configure panels reading the <a href="https://github.com/philippdaun/processwire-dashboard" target="_blank">documentation</a>. I guess documentation should be a link. EDIT: I see now it's multilanguage issue, Edited January 16, 2020 by matjazp Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now