 Rydw i ts yn cynghorol i'r cyllid. Yn cael cair hwnnw i'r ymdrwyddo. Rydw i ymdrwyddo i'n cael cair hwnnw i'r cair hwnnw i'r ymdrwyddo. Rydw i'n cair hwnnw i dweud y Llyfriddor Tysgol. Rydw i'n cychydrach i'r Llyfriddor Tysgol i'r Llyfriddor Tysgol i'r Llyfriddor. Rydw i'n cychydrach i'r lwfriddor i'r llai Gwydw i fan. Mae yna i ddod wneud oedd yma. No... Mae llawer dda. Dyna o'r ysg datblygu. Dwi'n meddwl i'w ffrindio. The notary phob. Felly, dwi'n gofal yn myffon. Ond iawn, yn myffon o'r cyd-fazor. Felly, nid yw'n cyd-fazor i'r ffynol. Felly, eu gweld sawd i'w myffon o'r clywed o'r cydd, a chwnwch i'r ffynol i'n gweld yn myf knightwyr, mae'r bydd gweithr Shellogwr. fydd y ffordd a ffrwng hwnnw, ar hyn y mawr ffawr, ac mae'r ffordd, Cystyn Cwp Majestyau a Llywodraeth. Felly, mwyn fydd hwnnw ddim, ma'en ddweydeddiadnau gweld yng Nghymru. Felly, efallai ffafaf, Yn wych chi'n gweithio bwg erbyn y 7. Felly, yn llôl, felly y pwglu yna hwnnw yn uned o ran gritio losio. So AAA obviously released November 2015 but it didn't look like there was any AAA version of the web form for quite some time. Then there's a product called YammerForm came along and that seemed to fit the bill as a web form solution. I only heard about it in November last year. I don't know if I can tell you, on the triple con, Dublin. But it just happened that they were already in talks then to put that module into web form. oherwydd y gwasanaeth iawn y ffordd yma yma yma yn y gweinwyr mewn yma yma yma yn y gwasanaeth iawn. Felly, mae'r ddyn ni, oherwydd mae'n gwasanaeth iawn yma, mae'n cael ei ddysgu'n ei gwneud o'r ddyn ni. Ond mae wedi cael ei gwneud bod yma eich modiwn. Mae'r ddyn ni, o'r 60000 o'r ddyn ni, oherwydd mae'r modiwn yn y 2 yma yma, mae'n gweithio'n gweithio'n gweithio'n gweithio'n gweithio'n gweithio. Yn y ddod rhywun rai cwrwg. Mae ystod yn gwiciffod SCSW ond peithio yn y gydag. Mae'r gweithfwrn yn lag rydych chi ble yw'n fyddor i gweithfwrnod mewn gweithfwrnod. Yndewch, mae'r gweithfwrnod UIAs yn thaww'r UIA, mae'r ffild UIA yn ei gwyrmaidd. A rydych chi'n cynhau ar yr awndig i gwrth i ddod. Fyddech chi'n ziwg allan. Mae'r gweithfwrn yn ystod yn ei wneud. gyda'i'n gwylltad o grathion? Mae sy'n llawer o mi i gael i'r byd i gael i'r byd i gael i'r byd. Ieithdo'r cwm iawn iddynt. Ydynt i'r bwysig o gwylltad iddynt. Felly mae'r cy roofsig ei wath o'r bwysig wedi bod yn gilydd. Mae'r teimlo yn fwy arno'r mewn ffordd, boi wernod o gwahanol o'r cyhoeddfa этиis. Yliadw'r cwm iawn o'r brwyddon pedf Banana yn gweithio'r cwymiaeth. mae'r cwntet form yn ei wneud yn edrych yn disgwyl. Mae'n ogynodd lleiwch fel moddan fathr. Ond mae'r moddan fathr yn eistedd â'r newydd, mae'r newydd yn cael fathr, yn y llyfydd yn ymgyrchfaith bwysig. Efallai mae'r rhaid i amser hwn o nifernau yn y ddafodol. Mae'n cefnol rhaid i cefnol i'r moddan. Da'n gwneud o ddifwm, mae'n bwysig o gyda'r bwysig o'r ddim yn y bwysig o'r ddim. byddo'n gwneud o ddifwm, mae'n bwysig o ddifwm. Rwy'n meddwl yw'r pwysig o'r brwyngo, mae'n bwysig o ddifwm yn y bwysig o ddifwm. Rydym yn ddifwm. Mae'r ddifwm ddifwm sydd wedi'u gynhyrchu'r ddim yn ddeunydd. Pwysig o ddifwm. Ynny'n gwneud yn fawr, gallwn ar y dda, ych�fodol fawr hir i'r pot yn oedwar. A ydw i ddim yn fawr modeth, i ffwrdd gyda bwydur yn fawr hir. Mae'r fawr maen fawr hir i'r wneud yn dda. Ond mae'n cael ei fawr o dda, felly ar yr ardal pwyswn iawn, yna dwygoedd dwygoedd yn fawr y pwylo gyda a i ddim yn fawr o'r aw democr causalau a dda, fel yw ar-fer. Some er mwyn gynnwys 60 o'r fawr hir, Erddwch yn y flwyddynol, mae'n rhannu llwy oedd leiswyr, felly mae'r felw yw'r llwy o'r teulod yn y tro eucaf, mae'r lleol o'r collidiaeth, felch varlน yr unrhyw o'r wlad, pan yna'r griforth i'r llw. Pryddo gynych i rhai nifer o'r llwy o'r llwy o'r llwy o'r llw o'r llwy o'r llw, Let's say you've got your dresses. You've also got postcode and your dressfields, they will form a composite element, a multitude of different elements. I didn't think there was too much to go on here. Containers basically contain elements. They're like field sets basically. They're slight and sort of hide and show them. So some basic examples here. You've got the text field or text area. And, email, for example, they are basic elements. The spot at the bottom here is a composite element. It's an email confirmed field, which basically validates the two same. You can even go crazy, so there's a selection of box. There's a rating element there. Mae'r cyfwng yn ffath. Mae'n bwysig i fan chi, mae'n ffath. Rwy'r cyfwng yn gweld cyfwng hynny'n ddau'r cyfwng. Mae'r cyfwng yn ddegwyd yma. Mae'r cyfwng yn ddegwyd yma. Mae'r cyfwng eich ymdell ac mae'r cyfwng ymdell. ysgol iawn ac i'n cael chyfroedd o'r newydd, gan y wneud y gwnaeth, yn ei ddweud hwn yn hyn, mae'r model yw ddweud yw amser, ac mae'r bwysig arall eich gwaith arall yMR, dyma'r cyfan ynghylch ymlaen o y meddwl yw'r ysgol iawn, mae'r cwrdd yn unrhyw, mae'n oed i'r cyfforgion cynillu, os yw'r werthfawr hyn y dyma. Oherwydd mae'n rhoi ymlaen o'r hyfforth gweld rathbwynt y maes ddaf yn y cyfnod dros cyfwtu'r dwylo'r dweud sy'n ystod fel hyn yn cael ei barwch. That's there, the password confirm and things. This is kind of interesting, so you've got a text box that you can, a picture element you can draw in, that gets saved as a submission. It's quite good as well that they've put in these issues, so if there aren't any films that have bugs next to them, can just check this out for reference about what bugs exist. You said you have only got half a thing at this form. There's tons of stuff. It's definitely a good way of reference guide to figure out how to build your waveforms. Validation, so each of the fields element has its own validation. Byddwch chi'n bwysig y tuad iddyn nhw'n rhagorol i'r rhan o'r wladig, i ddweud â'r rhan o'r cyfnodau, ac ddweud i'r rhan o'i cyfrannu cyfrannu, oherwydd mae'r cyfrannu cyfrannu i'r maximaidd. Mae'r cyfrannu i'r rhan o'r cyfrannu i'r rhagorol i'r llwyffan. If I try to submit that, it'll tell me if I forgot to fill it in, and this will... It's a little JavaScript component that will decrement as I type in, so that's quite cool. Each field has conditional logic built in, so you can reference different fields within the thing. What I'm doing here is saying that if the name element is filled in, then make this element, which is in this field, visible. So what it's doing here is basically, as I enter the text into that box, it pops the email address in. So you can see some builds and quite nice logic there. They also have input masks as well, so that a text element, you can set to be an input mask. So there's some examples down here, or you can make your own. You can see the custom at the bottom, and you get your own input mask to put in. So this is validation on a national insurance number, which is a UK thing. But basically I'm saying it needs to be a letter, a letter, six numbers and a letter. So you can see you can build up quite complicated validation just from the word form interface. We're talking about multi-step forms, so on the administration page you get this add a page button. That gives you the option to add a page. You get a title, but what that does is it looks kind of like this. This is a two-page form, which is cut off on the end, that's great. I've got a page one with a name field in it, a page two with an email field in it. That kind of looks like this. So this top screen is page one, and as I progress through the form, the progress bar fills in, and this is all baked in, so I haven't had to do much any coding at all to get this working. This wizard at the top is actually quite configurable, so there's loads of different settings inside the word form to say what this looks like as well. You can do a percentage complete or something like that. It's not just the steps there. Talking of word form settings. So if you're familiar with word form in Drupal 7, there's a bunch of different things you could do. So I thought at least some of the things that are new or improved to Drupal 8. So you could close down a word form before in Drupal 7. You can still do that in Drupal 8, but you can give people access to their own submissions here based on access permissions. You can disable some of the client-side stuff, so if you want to test your server-side validation or turn it off completely, you can set that in settings. You can allow your user to save drafts, so instead of the submit button at the bottom, it would be a save draft button, and you can allow users to come back to that form of a late date. You can restrict the actual global number of submissions to word form as well, so if you want to have only 50 submissions, for example, then you can set that up. Control action of the form event is interesting, so you can say instead of submitting and saving this as I normally would, just change the action of the form and post it somewhere else. So you can set up search boxes that interact with different sites and things. You can also add and basically customize completely the JavaScript and style sheets that are printed off on the page, which means you don't have to put files on the site. You can put the code straight into the form. There are a few settings. Each of these fieldsets opens up into multiple options, so well worth having a look through. This is the access panel, so you can give access to different roles based on what you want them to do on the submission handlers. Fucking handlers. So in word form in 777 you had this settings where you could say once I've completed this form, the email goes to this place. That's been replaced by this handler section, which is probably the most interesting part of the new word form sections. So what I've done here is set up two handlers that send emails to different people based on the submissions there. But there are some custom handlers, so there's one baked in where you can get the word form to submit to an API endpoint. So it'll just send the request across the internet to a different service. But you can build your own and I'll go through building your own. But this is interesting because it basically means you can tie in to everything that word form is doing in your submissions. So submissions are entity-based, so what word form does is it generates a submission entity and saves that in your database, and you get this sort of admin screen. And basically you can inspect the submissions as you would normally in Drupal 7, along with all this metadata at the top, and you can download them as you normally would. And there's a ton of settings and features to do webform submission exports. So some advanced stuff. Because the elements in the webform are built on the form API, you can use hookform alter to alter those elements. If you're familiar with Drupal 7's version of webform, they built this proprietary form API inside webform. So what they've done is basically start again with the Drupal tools and form handlers. So this is me just changing the name of a form element, but you can see that you can tie in to the normal way, the Drupal way of doing things. If you're feeling brave, there is this YAML source handler thing. So you can edit the form in YAML, which seems mad, but if you don't want to click around the site and configure things, and you're familiar with this in fact, you can edit this. But this means that it's also CMI exportable. So all the webforms you have on your site are exportable by CMI. And this section here is actually just this little section down the bottom. And because webforms are now CMI exportable, you can deploy them as parts of your configuration. And I have done this with great success actually. We built a fairly complicated multi-step form, submitted it into the configuration, put it on the production site, and boarded the config, and there it was. We didn't have to do anything. It just worked quite nicely. Great little feature this, because I know the pain of porting webforms between platforms in Drupal 7, so this is really hungry. So a little bit on custom components. So you can build custom elements. So, as I said, Drupal, that webform builds on form API, it does need a little bit of boilerplate code to sort of handle things like the validation handlers and the submission handlers that webform likes. But basically you're going to look at two different types of forms. You've got that field, so you've got your basic, which is like your text fields and your select lists, and then your composite, which is more advanced stuff. Basically anything with multiple items in it. So to create a... This is creating an element in Drupal 8. So basically this doesn't do much, but you can't see the... But this extends the text field class and basically gives you a text field. So what you do then is you go into your module and you make a plug-in at webform element. And there's a lot on the screen here, but basically this annotation is what helps webform understand what's going on. And what I've done is extended here the text field, which is part of the webform module. So the webform has its own... it dumps a bunch of stuff on top of text field and you extend on that. So these two elements work together to produce your custom element. Custom handlers, which is probably where you're going to spend most of your time. If you're doing custom stuff. So there are four handlers inside Drupal 8's webform libraries. Broken webform handlers just a catch class, and if you break one of your handlers, it'll fall back onto that so it doesn't crash the site. Debug form handler just prints a message when the form is submitted. Webform handler is... Sorry, email webform handler. That's what it says, it sends an email when you submit a regressed. And there's a remote post which I mentioned before, but that will submit your submission to a different endpoint. And you can set up what endpoint you want these things to go to. So to make your own webform handler, it's actually surprisingly easy. You just need to make this plug-in. And you're plugging in webform handler inside your module, extending the webform handler base. And the annotation basically tells webform what that should be doing. Sorry, what to call it. There are things like cardinality, so you can say this is cardinality and loaded, which means I can add multiple instances of this handler to the same webform. So cardinality single would be... I can only add one thing to that webform at a time. And then there's a few different ways of getting the results out. But basically what you want to do is add in some handlers inside that, so these form functions. So the post save handler is called after the submission is saved. And all I'm doing here is printing out messages that says, I've been called in this class at this function. So there's a number of different events that you couldn't sort of react to. You're probably using post save much at most, because that makes sense. There's a thing saved into a database. You then do things with the submission. But it might be anything from, you know, you can create entities, so custom entities, based on the user's submissions, or you can replace your registration functions and produce a user entity out of that handler. So there's some real power coming into this module. Definitely. So I just wanted a few conclusions. So webform is obviously compatible with the form API, which gives you all that base-level functionality going on. Nicely extensible. I haven't had to write a lot of codes to get custom elements and handlers in there. It's somewhat... It's not quite complete yet, but at least it's tested in some respect. We've been using it for a couple of months at Access, and we haven't seen that many problems. There's been some minor edge cases here and there, but it's been really useful. And yeah, powerful. It's definitely up there and one of the best webform things that I've used. So webform is currently at beta 7 release. There are some bugs left, but plenty to help out with. So if you want to go on and help, there's this roadmap that shows you what sort of features are incoming in the future. And yeah, have a look at the webform page and let the issue list see where you can help out. There are a couple of alternatives. Be remiss, meet not, to mention. So in Drupalake Hall you have this contact module, which basically gives you contact form, which sends an email. So there's a contact storage module, which will save the submissions on the contact form into the database. We've had some problems with this at Access. What tends to happen is the core module will get some feature that the contact storage is already doing and they're fighting against each other quite a lot. So not completely robust at the moment, but still a good solution. E-form is basically the entity form to generate its entities, but it does it in a different way, basically. So you understand where your entity is going to and what they're doing and things. But it still uses Drupalake concepts. It's an interesting alternative, but it has nowhere near as much feature sets as the wordform module. So thanks. Any questions on that? You have to build your own handlers and code the handlers at the moment. But there's a feature set there for a new module that will generate entities based on a matrix. You feed in the submission and feed in the form the entity fields on the other side and generate your entities. That shouldn't be too difficult using the Drupalake tools that you've already got. We've been doing it for... So we had a system where we generated quotes, which are both from a third-party API, but basically we were saving that quote as an entity and giving the user a user account as well. So we create a couple of entities off the back of it. And that wasn't an awful art code, really. So it was pretty easy to do. And certainly more understandable than what rules tends to do because I have troubles with rules. So, yeah. I think the guy at the back was first. Is there any understanding of the submission? Yeah, I mean, because it's all... they're all for use at the moment. You can tweak things. So, I mean, there's the backend. But obviously, if you can give the user a token where they can look at their own submission based on... and it sort of sits in the form that they submitted it. So that's kind of nicer. But, yeah, you're still looking at this admin panel, I guess. What are you looking for in terms of... Not that I know of. But because they're entities, you can create your own view, and put that wherever you like, and give it its own spin on things, you know? Yeah, of course, similar things to the partitions. Yeah, I mean, you could probably get 90% of the way with what's built in with form anyway. Yeah, I mean, I had to have built a custom element to do PCA predict, which is the new post-convenient thing for address validation, basically. And most of my time was spent building it in the actual element itself. The actual web form thing was, like, 10 lines of code done. So, yeah. What about saving? Do you have much saving? We have. Our front-end, so UX says it's terrible, but he's quite affiliated. But you can get it sort of to seem different. Like, for a multi-step form, you can do it in different pages in different ways and give it a different interface. In fact, if I edit this, so, not only have you got, you can inject custom CSS and JavaScript into the page itself. You can also, in here, form attributes. Yeah, you can put web form, you want CSS classes and stuff directly into the page, so you can sort of make your CSS to adapt to your page content. Probably do that with some of the container classes. Probably do it. I think that I saw that you can have, like, if this element is empty, then something else happened with another form element. Does that use as a group of forest API? And the reason that I'm asking is, like, I have had occasions where I have a field and based on, like, that field, you can take two rows, you know. And then this set of fields required. But if you watch the other option, I want the other one to be required. But, like, with the state API, I would be able to sort that out, just like state API. I think it's built into state API. But, yeah. I don't know to be honest. I'd have to play with what you need to get a good bit, yeah. So, yeah, that's me. We are hiring at the moment, so if you fancy getting a work in a work form for a bit, by all means, get in touch. But that's it.