adrian Posted September 17, 2013 Share Posted September 17, 2013 This module provides a way to rapidly generate Page fields and the required templates and pages for use as a drop down select (or any other Page field type). This module will let you create a full page field setup in literally a few seconds To use, run Page Field Select Creator from the Setup Menu Enter a Field Title, eg: Room Types Select Options - These will become the child pages that will populate the page field select options. There are two different options. Option 1. TITLE FIELD ONLY - enter one option per line, eg: Single Double Suite Option 2. MULTIPLE FIELDS - the first line is used for the field names and the first field must be 'Title'. Subsequent lines are the values for the fields, eg: Title, Number of Beds, Number of People, Kitchen Facilities Single, 1, 1, Fridge Only Double, 2, 2, Fridge Only Suite, 3, 6, Full Kitchen Choose the parent where the page tree of options will be created, eg a hidden "Options" parent page Select a "Deference in API as" option depending on your needs Choose the input field type Check whether "Allow new pages to be created from field?" should be enabled. As an example, if you entered "Room Types" as the field title, you would end up with all of the following automatically created: a fully configured page field called: room_types MULTIPLE FIELDS OPTION - 3 additional fields - number_of_beds, number_of_people, kitchen a parent template called: room_types a child template called: room_types_items (with either just a title field, or with the 3 additional fields as well) a parent page called: Room Types a series of child pages named and titled based on the per line entries in the Select Options textarea The templates are configured such that the "room_types_items" child template can only have the main "room_types" template as a parent, and vice versa. Then all you have to do is add the newly created page field to any template you want and you're ready to go! You can grab it from: Modules directory: http://modules.processwire.com/modules/process-page-field-select-creator/ Github: https://github.com/adrianbj/ProcessPageFieldSelectCreator 21 Link to comment Share on other sites More sharing options...
kongondo Posted September 17, 2013 Share Posted September 17, 2013 Adrian's on fire! Thanks for this! 1 Link to comment Share on other sites More sharing options...
Martijn Geerts Posted September 17, 2013 Share Posted September 17, 2013 This is great Adrian, extremely handy! As this is a more advantaged tool I was thinking of: Select a template to use as child page ( with more fields in a template ) Say you select a child template with the fields: title, type & year. Then at Select Options: BMW, m3, 1987 Mazda, 323, 1986 VW, Golf, 2012 --- Even without this it's a real time saver !!! 1 Link to comment Share on other sites More sharing options...
diogo Posted September 17, 2013 Share Posted September 17, 2013 Very clever and useful. I'll use it for sure! 1 Link to comment Share on other sites More sharing options...
MatthewSchenker Posted September 17, 2013 Share Posted September 17, 2013 Greetings,Excellent concept! I just experimented with it briefly this morning. Will use it more later...One of the most common newcomer misunderstandings about ProcssWire is the "missing" dropdown field. Your module gets us closer to using the depth of ProcessWire pages as selects while being easier to set up.Thanks for doing this!Matthew 1 Link to comment Share on other sites More sharing options...
adrian Posted September 17, 2013 Author Share Posted September 17, 2013 Thanks for the positive feedback everyone. Matthew - that was definitely part of my reasoning for creating this. There are a few times I have wanted to set up a page field, but have gone with hani's fieldtype Select module to save time. I still think there are times when his module is more appropriate, but now I think I won't be making the decision because of the time/hassle of creating a page field setup. It is also why I chose to put "Select" in the name of the module - hopefully it will help newcomers find it more easily. Martijn - I like where you are headed with those ideas. I think rather than selecting an existing child template (which I think is what you are suggesting), how about I allow the Select Options field to also handle multiple fields if entered? I might take a stab at that and see how it goes - stay tuned! 3 Link to comment Share on other sites More sharing options...
Martijn Geerts Posted September 17, 2013 Share Posted September 17, 2013 <adrian>how about I allow the Select Options field to also handle multiple fields if entered? I might take a stab at that and see how it goes - stay tuned!</adrian> I didn't thought about that, but thats even better, thumbs up ! 1 Link to comment Share on other sites More sharing options...
dragan Posted September 17, 2013 Share Posted September 17, 2013 Excellent work, Adrian! Link to comment Share on other sites More sharing options...
adrian Posted September 17, 2013 Author Share Posted September 17, 2013 Hi everyone. The new functionality based on Martijn's suggestions for creating the select options with multiple fields is ready. I have updated the code on Github and modified the instructions in the first post above. Please test and let me know how it goes for you and whether there are any improvements I could make. 4 Link to comment Share on other sites More sharing options...
kongondo Posted September 17, 2013 Share Posted September 17, 2013 Adrian, thanks for the update! If possible, it would have been nice to have a before (original version) and after this update text and screenshots (I know could potentially lead to a long thread and not practical with every update). It helps to compare, follow progress, etc. Not a big deal though... Link to comment Share on other sites More sharing options...
Martijn Geerts Posted September 17, 2013 Share Posted September 17, 2013 Adrian I think you broke something in your latest commit. In the option with multiple fields The pagefield, doesn't store the Parent Page. ps, I'm smiling while using this Module (aside: People have to take care they're not creating a Hani amount of fields ) 1 Link to comment Share on other sites More sharing options...
adrian Posted September 17, 2013 Author Share Posted September 17, 2013 Oops - sorry about that - try v3 now on Github 1 Link to comment Share on other sites More sharing options...
Martijn Geerts Posted September 17, 2013 Share Posted September 17, 2013 Works ! $field->notes at Select Options contain a lot of text. Maybe move the to $field->desc. And use the $field->notes to echo out all compatible text based fields. ps, your implementation of my suggestion is way better then how I thought about it. Link to comment Share on other sites More sharing options...
adrian Posted September 17, 2013 Author Share Posted September 17, 2013 Glad to hear it's working again! I don't mind moving the examples for the Select Options field to the desc, but I am actually not sure what you mean by: "echo out all compatible text based fields" Do you mean all existing text fields from the entire site? I am not sure what would make them compatible or not. Remember that any new specified fields are created on the fly and added to the child template's fieldgroup - there is no need to have those fields already defined. Sorry, I think I am just not understanding what you mean Link to comment Share on other sites More sharing options...
Martijn Geerts Posted September 17, 2013 Share Posted September 17, 2013 <adrian>Do you mean all existing text fields from the entire site? I am not sure what would make them compatible or not</adrian> Yep that is what I meant. Reuse of existing fields makes sense, so it would be nice to see a list of all fields that extends from FieldtypeText. ( all compatible I think ) Link to comment Share on other sites More sharing options...
adrian Posted September 17, 2013 Author Share Posted September 17, 2013 Good point - v4 is now available and includes a list of available text fields that can be used instead of automatically creating new ones if appropriate. 1 Link to comment Share on other sites More sharing options...
Martijn Geerts Posted September 17, 2013 Share Posted September 17, 2013 (edited) Wil test tomorrow, thanks for all your effort! Did the testings this morning... simply love it. Thanks for bringing in my ideas ! Edited September 18, 2013 by Martijn Geerts 2 Link to comment Share on other sites More sharing options...
Martijn Geerts Posted September 18, 2013 Share Posted September 18, 2013 Hai Adrian, sorry bugging you again. What about making it __("multi language") ? Link to comment Share on other sites More sharing options...
adrian Posted September 18, 2013 Author Share Posted September 18, 2013 (edited) Hey, no worries - I was going to be working on another new module today, but may as well get this one perfected first What exactly do you think it needs and how do you see it working? I have played around with multi languages in PW a little, but since I don't really have a need, I am still not terribly literate with it yet. Am I correct in assuming that you wouldn't really need multi-language versions of the title of the Parent page? I am thinking you'd only need them for all fields of the child pages? So, would having separate "Select Options" textarea fields for each installed language cover everything needed? It would be great if you could detail out how you think it would work best so I don't go down a confusing path! Sorry for being an ignorant English speaker PS Go grab v6 from Github - some restructuring of the form - layout and instructions, fixing of a bug if the field already existed, and more friendly error reporting in general. Edited September 18, 2013 by adrian 1 Link to comment Share on other sites More sharing options...
Martijn Geerts Posted September 18, 2013 Share Posted September 18, 2013 All strings can be translated in PW. It is as easy as. $this->_("provide your english here") or __("provide your english here") instead of "provide your english here" Then If someone needs to translate your module the translatable strings are in there. The translator should go to /Setup/Languages/ Then to the language, say Dutch. There fill in the path of your module ProcessWire will detect all __('translatable strings') & $this->_('translatable strings') and present the translator with inputs. Then The translator can type in "vertaalbare tekst" go to the next, etc. translate them all. Save... Done $field->description = __("Fringilla Sollicitudin Consectetur"); or $field->description = _$this->_("Fringilla Sollicitudin Consectetur"); To make it more fancy, use the sprintf or printf printf(__("Created %d pages."), $count); example protected function buildForm1() { $f = $this->modules->get("InputfieldText"); $f->name = 'fieldTitle'; $f->label = __('Field Title'); $f->required = true; $f->description = __("The title of the page field to be created."); $f->notes = __("Use capitals, spaces etc."); $form->add($f); ..... } 2 Link to comment Share on other sites More sharing options...
adrian Posted September 18, 2013 Author Share Posted September 18, 2013 Ok, now I understand - I wasn't thinking about making the module's form translatable. I thought you meant having the option for creating the selectable child pages have multi-language fields. Thanks a lot for the detailed example - I'll take care of it now and hopefully you can let me know if I have missed anything. Should/can the name of the module itself be translatable? Link to comment Share on other sites More sharing options...
Martijn Geerts Posted September 18, 2013 Share Posted September 18, 2013 Don't think so. Name should be english... please :_) Link to comment Share on other sites More sharing options...
Wanze Posted September 18, 2013 Share Posted September 18, 2013 Just a little note to the translations: If you're in a class context (extending Wire), the way to translate strings is like this: $this->_('Your string to translate'); Whereas in templates, there's the following syntax to use: __('Translate me baby'); Great module 1 Link to comment Share on other sites More sharing options...
adrian Posted September 18, 2013 Author Share Posted September 18, 2013 OK, v7 now has translations support! Wanze - thanks for the translation info. I had just finished when your message came through. Everything seems to be working fine. Maybe you could take a look for me and let me know if I need to change any of them. One other question for you guys - wasn't quite sure the best way to handle multiline description fields. In the case of the "Select Options" field, I think I may have made the translation more complicated than it really needs to be. Perhaps it would be better to put all in one translatable field and require the translator to include these as required. Trouble is that the title and description on the translation page don't get formatted, so it is hard to see what the intended layout actually is. Do you have any advice? Anything I missed? Link to comment Share on other sites More sharing options...
adrian Posted September 18, 2013 Author Share Posted September 18, 2013 Hey guys, I have been playing around trying to better understand multi-language stuff and it seems to me that along with the module translation that I just set up, it would also make sense to be able to automatically fill in the alternate language(s) for the fields of the sub-pages - in my example, the values for: Title, Number of Beds, Number of People, Kitchen Facilities. So, if you had three languages installed you'd be given three "Select Options" fields, one for each language. Based on my standard example, you'd fill out something like this: English Title, Number of Beds, Number of People, Kitchen Facilities Single, 1, 1, Fridge Only Double, 2, 2, Fridge Only Suite, 3, 6, Full Kitchen Dutch Titel, aantal bedden, aantal personen, ingerichte keuken Alleenstaand, 1, 1, Koelkast Alleen Dubbel, 2, 2, Alleen Koelkast Vervolg, 3, 6, volledige keuken German Titel, Anzahl der Betten, Anzahl von Menschen, Küchen Einzel, 1, 1, Kühlschrank Nur Doppel, 2, 2, Kühlschrank Nur Weiterführung, 3, 6, komplett ausgestattete Küche Would this be useful, or is this not how you guys handle things for the content pages for a Page field. PS Excuse the dodgy google translations - no offense intended 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