kongondo

Dynamic Selects (Commercial Module)

Recommended Posts

Dynamic Selects

Released 27 July 2016

Dynamic Selects is a commercial module that enables the creation of dynamically related/dependent ajax-driven chained dropdown lists (aka cascading selects) for display and storage of multiple types of data. The module can be used both in the front- (display only) and backend (display and storage of data).

Setting up Dynamic Selects is very easy. With minimal effort, site developers can set up simple or complex chained selects. By making a selection in a trigger dropdown, via ajax, values are fetched and dynamically populate options in the dependent select. In turn, making a selection in the now populated select triggers the same action further down in a dependent select. The module only uses/stores ID references to selected options in the selects meaning the most current/up-to-date data will always be displayed in the selects. 

Currently only ProcessWire managed data are supported. If there is enough demand, we may incorporate external data sources (typically JSON). 

The module consists of 4 modules

  1. ProcessDynamicSelects
  2. MarkupDynamicSelects
  3. FieldtypeDynamicSelects
  4. InputfieldDynamicSelects

Video Demohttps://youtu.be/wkhx8xQ5ue4

Documentationhttp://dynamicselects.kongondo.com/

Shophttps://processwireshop.pw/plugins/dynamic-selects/

Requires: ProcessWire 2.5 or newer and jQuery if using the frontend module (MarkupDynamicSelects)

Features

  • Easily create powerful ajax-driven cascading/chained selects/dropdowns
  • Unlimited number of select dropdowns per field
  • Data-mapping made easy thanks to multiple possible combinations of data relationships, triggers and sources
  • Mutlipe data relationships to chose from
  • ID-based data referencing ensures your data values always stay fresh
  • Remote and local caching to speed up data access and reduce ajax-requests to server
  • User-friendly, intuitive and easy to set up

IMPORTANT

Before using this module in the frontend, you will need to thoroughly read the security section in the documentation.
 

  • Like 20

Share this post


Link to post
Share on other sites

Cool module!

A couple of ideas/dreams for a future update:

1. It would be great to have thumbnails in the select dropdown for image fields.

2. Could there be an option for the last select in the chain to be a select multiple?

  • Like 1

Share this post


Link to post
Share on other sites

Nice module.  

Just a suggestion...

Maybe you could add an option to also hide all but the first select input?  When someone selects the first option it could show the next select field as so on?

  • Like 1

Share this post


Link to post
Share on other sites
9 hours ago, gmclelland said:

Just a suggestion...

Maybe you could add an option to also hide all but the first select input?  When someone selects the first option it could show the next select field as so on?

Thanks for the suggestion. Done!

hide-empty-selects.gif

  • Like 11

Share this post


Link to post
Share on other sites
2 hours ago, Torsten Baldes said:

...Is or will it be possible to use this as a frontend module?

 

On 27/07/2016 at 10:21 PM, kongondo said:

..... A MarkupDynamicSelects for use in the frontend is planned if there is enough demand for it.

:)

  • Like 2

Share this post


Link to post
Share on other sites

i allso will need the 

$demand++

Thanks!

On 28/7/2016 at 0:21 AM, kongondo said:

..... A MarkupDynamicSelects for use in the frontend is planned if there is enough demand for it.

  • Like 1

Share this post


Link to post
Share on other sites
On 7/27/2016 at 10:21 PM, kongondo said:

The module consists of a FieldtypeDynamicSelects and InputfieldDynamicSelects. A MarkupDynamicSelects for use in the frontend is planned if there is enough demand for it.

$demand++

  • Like 1

Share this post


Link to post
Share on other sites

Thanks for the interest guys. I'll have to consider a few potential security issues first then make a decision. No ETA for now...

  • Like 1

Share this post


Link to post
Share on other sites

Hi all,

I'm going to be away for the next couple of weeks (4-5 weeks possibly) with little if any access to the internet. I will deal with any queries on my return.

Thanks

  • Like 1

Share this post


Link to post
Share on other sites

So this field requires more than one input/set of options? A base + a dependent? Is there an option to select from fields? like fields from a selected template?

Share this post


Link to post
Share on other sites

Yes, you need at least two selects: a trigger and its dependent select. You can select from fields, but not directly from templates themselves. Rather, select from fields attached to a page. In other words, the following (and more) are currently possible:

  1. base/trigger select for #2: display templates
  2. dependent select for #1 and also base/trigger select for #3: displays pages using a template selected in #1
  3. dependent select for #2: display fields present in (the template of) a page selected in #2

Share this post


Link to post
Share on other sites

Quick update guys. Frontend module is ready. I have to update the docs first before releasing it though as with anything frontend, there are security implications if the module is not properly set up. Hence, the need to first prep the docs. Will talk more about how it works later but setting up the selects is quite easy. These are defined in a process module in the backend (think Menu Builder) with caching and validation right out of the box. Hope to release next week.

  • Like 4

Share this post


Link to post
Share on other sites

Dynamic Selects version 003  (released (27/11/2016))

Happy to announce that the latest release of Dynamic Selects is now available for Download/Purchase.

IMPORTANT

If you will be using this module in the frontend please FIRST READ at least the following topics in the documentation in their entirety.

  1. Security
  2. Settings
  3. Introduction to frontend use
  4. Example frontend use
  5. Debugging results in the frontend

I have spent a considerable amount of time developing and testing security features to make using MarkupDynamicSelects safe. If you believe you've come across a potential vulnerability, I would appreciate it if you could send me a PM/email about it, thanks.

@note:

Currently, the Excluded Templates + Included Pages combo does not work as expected if you use more than one range of IDs for either. In such cases, please stick to comma-separated values.

Changelog

  1. Frontend Dynamic Selects: Added Process- and MarkupDynamicSelects.
  2. Expanded included/excluded settings to cover templates and pages.
  • Like 2

Share this post


Link to post
Share on other sites

Dynamic Selects version 004  (released (30/11/2016))

Glad to announce that the latest release of Dynamic Selects is now available for Download/Purchase.

Changelog

  1. Dynamic Selects is now fully compatible with ProcessWire 2.8.x and ProcessWire 3.x. 
  • Like 1

Share this post


Link to post
Share on other sites
11 minutes ago, owzim said:

Hey @kongondo, does your awesome module also work with ASM selects?

No; they are just normal selects. Am curious, what's the case for using ASM selects? 

Share this post


Link to post
Share on other sites

@kongondo, at the end of the select chain one might want to select multiple things, like on regular page selects.

For example a list of employees:

Company > Location > Department > Jane Doe, John Doe and Max Mustermann

  • Like 2

Share this post


Link to post
Share on other sites

@owzim Ah. I see. For frontend, might be a bit easy to implement (not necessarily with ASM), For backend, a bit trickier since the Fieldtype exclusively stores (int) IDs. It would mean have to rethink the database schema...I'll have a think...

Share this post


Link to post
Share on other sites

Thanks, I am actually in need of that feature in a current project. So hurry :) ... jk

edit: As far as I know the page field stores multiple values just as comma separated ids

  • Like 1

Share this post


Link to post
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

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Robin S
      Breadcrumb Dropdowns
      Adds dropdown menus of page edit links to the breadcrumbs in Page Edit.

      Installation
      Install the Breadcrumb Dropdowns module. The module requires ProcessWire >= v3.0.83 and AdminThemeUikit.
      There is a checkbox option in the module config that determines if the breadcrumb dropdowns will include pages that the user does not have permission to edit.
      Features/details
      The module adds an additional breadcrumb item at the end for the currently edited page. That's because I think it's more intuitive for the dropdown under each breadcrumb item to show the item's sibling pages rather than the item's child pages. In the dropdown menus the current page and the current page's parents are highlighted in a crimson colour to make it easier to quickly locate them in case you want to edit the next or previous sibling page. Unpublished and hidden pages are indicated in the dropdowns with similar styling to that used in Page List. If the option to include uneditable pages is selected then those pages are indicated by italics with a reduced text opacity and the "not-allowed" cursor is shown on hover. There is a limit of 25 pages per dropdown for performance reasons and to avoid the dropdown becoming unwieldy. If the current user is allowed to add new pages under the parent page an "Add New" link is shown at the bottom of the breadcrumb dropdown. If the currently edited page has children or the user may add children, a caret at the end of the breadcrumbs reveals a dropdown of up to the first 25 children and/or an "Add New" link. Overriding the listed siblings for a page
      If you want to override the siblings that are listed in the dropdowns you can hook the BreadcrumbDropdowns::getSiblingsmethod and change the returned PageArray. For most use cases this won't be necessary.
      Incompatibilities
      This module replaces the AdminThemeUikit::renderBreadcrumbs method so will potentially be incompatible with other modules that hook the same method.
       
      https://modules.processwire.com/modules/breadcrumb-dropdowns/
      https://github.com/Toutouwai/BreadcrumbDropdowns
    • By FrancisChung
      Hi,
      I was wondering if people have any recommendation or share their experiences with websites that either provide free or commercial website templates?

      Thanks in advance!
    • By Aleksey Popov
      Hello. My name is Alexey, I'm a designer.
      So it turned out that I got carried away by ProcessWire and made several sites (links below the post). I have a desire to make template sites for sale on various markets (where possible), as well as on my own site.
      I'm clear understand the difference between ProcessWire and WordPress and it's not about templates, but about simple, ready-made solutions that can been easily customized if necessary.
      I would like to discuss here the possibility of such activities in particular the rights of modules authors. Consider for example a hypothetical site: 
      A simple corporate site in which (commercial and non-commercial) modules are used:
      AdminTheme BatchChildEditor ClearCacheAdmin EmailNewUser FieldtypeColorPicker FieldtypeMatrix FieldtypeMultiplier FieldtypeRangeSlider FieldtypeRepeaterMatrix FieldtypeSelect FieldtypeTable FieldtypeTextareas FormBuilder ImportPagesCSV InputfieldCKEditor MarkupSimpleNavigation MarkupSitemapXML PageEditPerUser PageTreeAddNewChildsReverse ProcessCustomUploadNames ProcessDatabaseBackups ProcessExportProfile ProcessTemplateEditor ProcessWireUpgrade TextformatterAutoLinks TextformatterVideoEmbed  
      Obviously the use of commercial modules should be discussed with Cramer (or others) personally but can I use non-commercial ones in the similar projects? 
      In general maybe this has already been discussed?

      ——
      Some of my works of PW:
      http://www.twenty-studio.ru/
      http://ekaterinburg.guide/
      http://bonus.koriphey.ru/
      http://trustural.ru/
      bonus.koriphey.ru
      http://plus.koriphey.ru/
    • By kongondo
      Variations
      Released 29 May 2017
      Variations is a simple yet powerful commercial ProcessWire module that allows website editors to create attributes and their values and from those generate variations of any entity, most notably products.
      The module consists of  FieldtypeVariations and InputfieldVariations as well as a ProcessVariations for managing variations configurations and attributes.   Setting up the field is quite easy.   First, create a field of type Variations. Define some custom inputs that will need to be directly edited on the page containing the field, for instance a product price, SKU, etc.   Secondly, via the Inputfield, create a couple of attributes.   Thirdly, create a variations configuration and add the attributes and values you want in the configuration. Link that variations configuration to your page and the module will automatically generate all possible combinations (variations) of the attribute values in that configuration. These, together with the custom inputs you created when setting up the field will be displayed on the page (e.g. a product page), ready for editing. This makes this module quite unique; variations are defined at the page-level rather than at the field level. This presents lots of possibilities such as infinitely reusable attributes and variations configurations.    For those using Padloper, integration with the e-commerce platform is quite simple as demonstrated in this tutorial.  The module consists of 4 modules
      ProcessVariations FieldtypeVariations InputfieldVariations VariationsCustomTableManager (autoload module, working behind the scenes) Video Demo: https://youtu.be/T93nn96UL8o
      Documentation: https://variations.kongondo.com/
      Shop: https://processwireshop.pw/plugins/variations/
      Requires: ProcessWire 2.5 or newer
      Features
      Easily create variations of anything, including products for e-commerce websites, etc Create an attribute once, use it everywhere, multiple times, picking and choosing all or only the attribute values you want Bulk editing of variations configurations and attributes Reusable variations configurations Works with Padloper out-of-the-box with minimal coding User-friendly, intuitive and easy to set up
    • By kongondo
      Introducing Variations, an Input- and Fieldtype for product variations and their attributes.
      Product variations is a topic that has been coming up now and then, especially in the recent past.  This module seeks to fill this gap. Though it's in its early stages of development, it is already functional and can be used as is. I decided to make an early announcement (modules development forum) in order to get early feedback from potential users. 
      The module is an alternative take on how variations can be built for a product. Imagine the ubiquitous T-Shirt. The product could vary by ...Size, Colour, Material, etc...These variations could in turn have internal variations, i.e. attributes....so, Size [Small, Large], Colour [Red, Blue]...etc; you get the drift.
      The usual approaches to building variations have been either to use Multiple pages, Repeaters, Page Table, Table or Matrix (limited to 1x1 variations). In this module, we do it a bit differently.
      First, the variations occur not at the Field level (meaning all product pages would have the same variations and attributes for each template) but at the page level. Secondly, there are no multiple pages for each variation and/or attributes; a product is a single page. The variations and their attributes are defined by site editors at the page level. Once a variations configuration has been defined, it is applied to the page and all possible combinations are generated (i.e. the Red,Small,Cotton; Red,Large,Cotton, etc) in the Inputfield. There is no limit to the number of variations and attributes that can be defined, although you will be amazed at how quickly the combinations grow! Prices are entered for each combination when editing the page. Combinations without prices are not saved to the database. Please note that prices cannot themselves vary at the page-level. Meaning, you cannot have ONE variation configuration that has different price inputs per product in the same FieldtypeVariations field.
      The module ships with an API for outputting variation combinations in the frontend. Search, database and in-memory work as normal in the frontend. In the backend, DataTables provides a nice paginated, filterable table. Prices can be entered on any pages (of the table) without loss of data (meaning you can enter prices on page 1, scroll to page 10, enter more prices, filter or search the products table, enter more prices and finally save; no data will be lost).
      I still have a couple of ideas and plans pending but would love to hear from you, thanks.
      Below is a short video demo of the module in its current state. Things may/will change, both UI and features. Btw, the Fieldtype, although primarily targeted at commerce applications, is by no means limited to this. Other uses requiring combinations of whatever number of variables are very much within the remit of the module.
      Planned/Hoped for features
      Import/Export product variations and attributes (Excel, etc) Full integration with Padloper (I will have to  discuss with @apeisa) SKU fields for each product variation Add/Remove extra subfields, e.g. multi-currency prices (currently there is only 1 input for each product variations' price) Product variation images? Etc... Please not this module is not related to this other planned module (but it may eventually).
      Sneak Peek Demo