Jump to content

Modules Manager 2 beta - easily download, install, update, uninstall and configure ProcessWire modules


dotnetic
 Share

Recommended Posts

Modules Manager 2 provides an easy to use interface to download, update, install, uninstall and configure modules.
It is meant to provide an optimized alternative to the core ProcessModule dashboard.

Maybe @ryan agrees to merge it to the core at some point when it is finished and polished.

Features:

  • Seamlessly download, update, install, uninstall or delete modules
  • Live-Search (aka find as you type) for module names
  • Live-Search (aka find as you type) for categories
  • Browse new and unkown modules from the modules directory on modules.processwire.com
  • Choose your favorite layout (cards, reduced cards, table)
  • Modern UIKit design (therefore only works with AdminThemeUikit)
  • Caches the module list from modules.processwire.com directory locally.

What is Modules Manager 2?

 

 

 

Why a new module manager?

Some people including myself think that the actual module installation in ProcessWire could be improved in some places.

  • Make it easy for ProcessWire beginners and power users
  • Offer better discoverbility to find the right module
  • Make it easier and faster for powerusers to manage modules

A manager that list all official modules is a feature, that many other frameworks/CMS's like ModX, WordPress or PrestaShop have by default.

What are the disadvantages of the actual core module interface?

  • Installation of a module is not very user-friendly: You have to be aware where to get new modules, search for a module, copy or remember the module name or URL, go back to your ProcessWire installation, paste the module name(URL, click on "get module info" and finally install the module
  • It only displays installed modules, not the ones that are available in the modules directory
  • Uninstalling a module requires you to go to the module detail page, click a checkbox and then submit the change. After that you have to go back to the module overview page.
  • It only displays installed modules, not the ones that are available in the modules directory, so it makes discovering modules hard

BETA software

Use this module at your own risk. I am not responsible for any damage or unexpected behaviour. Some things might not work fully, please see the TODO list for details.

I need your feedback and help

This module is still in development and I am happy to discuss with you and get some feedback.
What do you like? What is missing? What could make the process even easier?

Ask, suggest or provide pull requests.

You can download the module at https://modules.processwire.com/modules/modules-manager2/ 
or from Github: https://github.com/jmartsch/processwire-modules-manager2

  • Like 31
  • Thanks 1
Link to comment
Share on other sites

Hi @jens.martsch,

This looks awesome! Even without the todo list, this is a huge improvement to the current way of installing and searching for modules. I really like the listing of modules. Some quick questions:

  1. Why call it Modules Manager 2? Why not just ModulesManager?
  2. I might have missed it; Is it possible to read/find modules that have been moved physically to the modules folder on one's site but have not yet been installed? This will cater for modules that are not online in ProcessWire's module's directory

Great work!

 

PS: Nice overview video, btw!

Edited by kongondo
  • Like 1
Link to comment
Share on other sites

2 minutes ago, kongondo said:

Why call it Modules Manager 2? Why not just ModulesManager?

Because Soma's module is called ModulesManager. This module is meant as a successor to ModulesManager.

Regarding question two:  Yes this is possible. The option to download a module from a URL will be added also.

 

Link to comment
Share on other sites

5 minutes ago, jens.martsch said:

Because Soma's module is called ModulesManager.

My bad. I thought his was ModuleManager ?.

6 minutes ago, jens.martsch said:

Regarding question two:  Yes this is possible. The option to download a module from a URL will be added also.

Great!

  • Like 1
Link to comment
Share on other sites

Hey Peter, 

feedback can be provided here, so everyone is on the same page and can discuss together. I am sure you guys will find some more things to talk about, as soon as I publish the module.

There is a thing that I am not really happy with, but have to find a better solution:  The vue template is embedded right in the module's php, and I would like to change that, so an external automatically genererated (vue-cli) HTML file will be included. Maybe some of you are experienced with this and can help me out.

I hope to find time at the weekend to publish the current state of the module.

Link to comment
Share on other sites

Possible concern about including the module in the core:
The module depends on vue.js which adds a new library to the ProcessWire ecosystem. I am biased about using vue.js as it allows two-way-data-binding. So when something changes in the module JSON file, changes can be reflected instantly without reloading or rerendering the whole view.

It also allows to quickly filter modules, much quicker than it was possible with HTML which is in the DOM.

Link to comment
Share on other sites

Ok my feedback is mainly just UX/UI

1. I love the cards layout and how much info is presented. It's informative without being crowded. I think a list view is also needed too and a user should be able to flick between two. Particularly when viewing modules with an update, I want to quickly scan down a compact list and see what might require an update. 

2. On the filters for 'Show only installed', 'Show only uninstalled', 'Show only updateable, 'Show most recommended', 'Picked', 

I wonder if these could be a little more compact and less wordy.

IE a simple dropdown with a title of Display and then 4 shorter options of 

  • Installed
  • Uninstalled
  • Updatable
  • Most recommended
  • Picked

Happy to do a quick mockup/wireframe if that's any use to you.

3. Will 'Show only uninstalled' display modules I have installed and subsequently uninstalled or display everything that's not installed? Might be a better label for this?

 

  • Like 2
Link to comment
Share on other sites

@Peter Knight The filters for installed uninstalled could be also seen as a category and I think I will integrate them into the category select.

"Show only uninstalled" are modules that are already downloaded but not yet installed. I am not even sure if this option makes any sense.

Picked, is not an option. It was just a demo, which of the filter I selected.

  • Like 1
Link to comment
Share on other sites

@louisstephens I had this discussion in the inital topic "Revamped module install interface" and @kongondo replied

Quote

I think let's stick to convention. ProcessWire has always used installed ?. For me, it means the module is installed in the ProcessWire system. A module that is present on the disk but not yet installed just means it is not yet part of the ProcessWire system.

but I am still not convinced and think active and inactive would be better labels. What do you other guys think?

Link to comment
Share on other sites

On 9/16/2019 at 10:43 PM, Jens Martsch - dotnetic said:
  • You have to be aware where to get new modules, search for a module, copy or remember the module name or URL, go back to your ProcessWire installation, paste the module name , or URL, click on "get module info" and finally install the module
  • It only displays installed modules, not the ones that are available in the modules directory, so it makes discovering modules hard.

I really feel this is a good thing that it's still only working that way. I get that there's no great way to discover modules, but I also feel that "discovering modules" is a totally different tasks to "managing modules on the system", which is what the current modules section in processwire is about. The ability to install just by name from the modules directory is imho a nice to have convenience  and not an unfinished start of integrating the modules directory as the source for modules. The modules directory is just one source for modules, possibly the biggest at least for open sourced modules, but not the only one.

This is not to say though that a module filling the gap of "discovering modules" isn't useful and what you created seems like a very nice way to browse the directory and move a module from being listed there to actually being downloaded/installed. I'd personally wouldn't like to see the current module section replaced though.

On 9/17/2019 at 12:12 PM, Peter Knight said:

I love the cards layout and how much info is presented. It's informative without being crowded. I think a list view is also needed too and a user should be able to flick between two. Particularly when viewing modules with an update, I want to quickly scan down a compact list and see what might require an update. 

This hint's at the reasons for the above. Browsing the modules directory is great with a cards view. Maintaining installed modules is a totally different task. It needs modules to be quickly scanable - table layouts are way better at that -, it needs to highlight different data - a version is more important than a lengthy description of what the module does, or how many hearts it got - and I'll also hardly switch rapidly between browsing and maintenance so it doesn't need to be co-located in the interface.

On 9/16/2019 at 10:43 PM, Jens Martsch - dotnetic said:

Integrate the Readme or changelog of a module

That part I'd like to see in the core (a bit depending on how it's implemented though). This is an improvement to the "maintaining modules" part of having installed modules, but rather nice to have when browsing modules.

To summarise:
I really like the problems you're tackling with your module, but personally I'd like to see the efforts split up. The part about "discovery" is great, but certainly not essential to processwire and should in my opinion be either not in the core or at least not installed by default. The part about better maintenance of modules and maybe touching up the UX of the current modules section by lessening the clicks to handle certain usecases is something anyone would benefit from.

  • Like 2
Link to comment
Share on other sites

Here is a little update.

Not much to see on the frontend side, but I added a whole build setup which generates the JavaScripts and stylesheets from a .vue file.
These files will later be embedded into the module. This step allows me to develop quicker with hot media reloading and better debugging possibilities for vue.
I don't even need a ProcessWire environment to make updates to the view, so this enables others to quickly jump in on this and help me with development.

Added functions that remember the category or the module name. So you can even provide links for users, to guide them to a special module or category like so: http://localhost:8080/processwire/module/edit/?module=process404-logger

Added a switch to switch between card and table layout. This is even remembered and restored after you close your tab or browser. The table layout is something that I plan to integrate at a later point when the main functions work correctly. As I am very busy right now with customer requests I don't have an official date for releasing the module yet.

I hope that I can work on the weekend on it.

 

  • Like 1
Link to comment
Share on other sites

Thanks for the feedback so far and even mentioning me in the pw.weekly issue ?

On 9/19/2019 at 10:16 AM, LostKobrakai said:

The ability to install just by name from the modules directory is imho a nice to have convenience  and not an unfinished start of integrating the modules directory as the source for modules. The modules directory is just one source for modules, possibly the biggest at least for open sourced modules, but not the only one.

In the standard ProcessModules section is also an input for entering the name of the module, which would download this module from the modules.processwire.com directory. ModulesManager2 simplifies and optimizes this process by providing the modules names in an autocomplete.

I know that the modules directory is just ONE source, but that's how the standard in PW always was and I think we should have an official repository for modules. Think of it like the npm registry which is the main source for npm packages. Maybe in the future we could also add alternative module registries like in npm or other package managers, but I really don't know if this is needed. 
Options to upload a module zip file or provide a download URL like in the original ProcessModules will also be added soon.

On 9/19/2019 at 10:16 AM, LostKobrakai said:

Maintaining installed modules is a totally different task. It needs modules to be quickly scanable - table layouts are way better at that -, it needs to highlight different data

Partly I agree with you, but every user is different and if you only want to update one module you can search for its name and click the update button.
I've been planning from the beginning, to also offer a table based view, or a view with reduced information to quickly scan the modules. As you can see in the latest update there is an example table layout (not even nearly finished) to showcase what is planned later.

Also we have buttons for filtering the cards or table view to show only modules which can be updated. I personally think that I would even use the card view for updating my modules, but that's just me.

On 9/19/2019 at 10:16 AM, LostKobrakai said:

and I'll also hardly switch rapidly between browsing and maintenance so it doesn't need to be co-located in the interface

That's your opinion, but others (including me) may see this differently. In the latest update the chosen layout mode is remembered so you don't have to switch. I am even thinking about providing a button to switch between compact and detailed information which would be available for the table and the card view. This would allow someone regardless of the layout to view all information or only the most important bits.
This is very easy to accomplish with vue. Maybe I hack something together, because I really like the idea.

On 9/19/2019 at 10:16 AM, LostKobrakai said:

The part about "discovery" is great, but certainly not essential to processwire and should in my opinion be either not in the core or at least not installed by default.

I have to disagree on this point with you. I think the "discovery" process is good for all users, even powerusers like us. Sometimes I just don't remember a module's name but with MM2 allows me, to search for a term, which might be in the description and I find my module. That's just one example. 
Another one is that users might not even be aware what great extensions exist and with the modules directory integration they can get an overview. This  is something that other CMS or ecommerce systems (like PrestaShop or Shopware) have integrated by default (not at least to earn money, but that's a different topic).

But however, if someone does not like the card view or detailed information, he can switch and forget about it. One doesn't need to use all the features.

I hope my reaction will not be seen as an offensive, because that is not my intention. Unfortunately, it can often seem that way when written.
And of course it is also the case that one can have different opinions on a topic. Whereby anybody can be right.

So you guys see, a lot of stuff is still planned, but before I integrate more and more stuff, I am working on the main features for the card view, then release the module and you guys can try it out, provide feedback or pull requests to make it even better.

  • Like 2
Link to comment
Share on other sites

  • 2 months later...

Guys, just to give you an update: I still want and have to work on this module before I can release it on github. I am changing a big part of the rendering of the actions, so they work either in card or in table view. Sadly I hadn't much time in the past, because I changed my company to a GmbH, had to design a new logo and website texts, and all that legal stuff that comes with changing your company. And don't forget about my customers, who also want their work done.

I hope to get some time in the next weeks, so maybe I can work after christmas on this, but no promises.

  • Like 6
Link to comment
Share on other sites

  • 1 month later...

I worked hard on the module the last days, and rewrote much of the core logic and added some more features.

I wanted to record a screencast yesterday, but my recording software ignored my mic. So I show you some annotated screenshots instead.
Since then, many things changed again. Right now I am working on downloading and installing a module via a URL,   

image.thumb.png.9bd7ff44e9d1429e6b4e47ce124becb9.png

and also making a transition to modal dialogs instead of panels, if applicable.

I moved the whole button logic from the PHP script to a vue component. So I am flexible how to display the buttons, and I can reuse them in the cards and in the table layout:

image.thumb.png.0e229fe4eeeba648578cb426ac5fdefe.png

I added a reduced card layout, which moves the description of a module into the "more information" accordion:

image.thumb.png.57829cb5dc0adb768b4148e57fe80c5b.png

Updated TODOs with much more features to come.

I will work on the module in the next 2 days and hope to make so much progress, that I can finally release the first version on github.

image.png

  • Like 7
  • Thanks 1
Link to comment
Share on other sites

Install from URL is implemented and almost working. Sadly the module can not be installed after the download, because I can't get the name of the module from the zip file.
Maybe I can find a way, but later.

Preview

 

  • Like 2
Link to comment
Share on other sites

I just released the beta version on github. Updated my first post with the download URL. A new video is coming soon, as many features have changed. For example panels are only being used for a module's settings. All other actions are executed via AJAX and show a notification on success. Happy testing, and have fun with it.

  • Like 4
Link to comment
Share on other sites

On 2/11/2020 at 2:52 AM, Jens Martsch - dotnetic said:

Sadly the module can not be installed after the download

Maybe you can find some useful code from the downloadAndInstall() method in my ModuleToolkit module: https://github.com/adrianbj/ProcessModuleToolkit/blob/09b437d888c270ffe01f3a80fc5dccab3136e42e/ProcessModuleToolkit.module#L1278

  • Like 4
Link to comment
Share on other sites

version 2.0.101 released
    
  * sanitize all class names for better security
  * optimize delete function to catch and display errors
  * unify methods a little bit more (same vars, etc)
  * remove some debug messages

  • Like 1
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...