Jump to content

All Activity

This stream auto-updates

  1. Last week
  2. I know we have Paul's excellent Exam Timetables widget, but I've just been helping a school who couldn't get it to work. They're using SIMS Exam system for another purpose, and needed to display the PDFs to students. I don't know the Exam timetabler all that well, but the school in question had a single PDF produced with 500 students on it. They'd already begun the process of saving the individual pages as separate documents, so I suggested we use the File Drop widget to hold them and show only the matching PDF to the student: <div class="File_PDF"></div> <script> var File_PDF = arguments[0].find('.File_PDF'); var baseURL = Frog.Utilities.getBaseUrl(); var fileDropUUID = 'FILE_DROP_UUID'; var user = FrogOS.getUser(); Frog.Model.api('users.getDataInCategory', { user_uuid: user.uuid, uuid: '60A77B2B2004CAF8CA73CFFA7491B80E180635BCDD1AEDB7' // Users app category for additional information, where the roll number is stored }).done(function(response) { var data = response.data.fields; var MISID = ''; $.each(data, function(index, field) { if (field.label == 'roll_number') { MISID = field.value; Frog.Model.api('filedrop.get', { filedrop: fileDropUUID }).done(function(fileResponse) { var files = fileResponse.data.resources; $.each(files, function(ind,file) { if (file.deleted == 0) { if (file.file.name.indexOf('-'+MISID+'-') > -1) { File_PDF.append( '<embed src="'+baseURL+'/app/file/resource/'+file.file.uuid+'" width="100%" height="1500px" />' ); } } }) }).fail(function(e) { console.log("failed to get file drop"); }); } }); }).fail(function(e) { console.log("failed to get Roll Number"); }); </script>
  3. @Graham Quince Thank you so much.
  4. Earlier
  5. Hi @Sue Busher I've made the change to your staff dashboard, this works: <style> div[data-content-uuid="WIDGET_UUID"] .countdown_section:nth-child(2), div[data-content-uuid="WIDGET_UUID"] .countdown_section:nth-child(3), div[data-content-uuid="WIDGET_UUID"] .countdown_section:nth-child(4) { display: none !important; } </style> Graham
  6. Here's a bit of code if you don't want free periods labeled as free <style> div[data-content-uuid="WIDGET_UUID"] .free .subject:before { content: 'Study Period \a'; white-space: pre; } div[data-content-uuid="WIDGET_UUID"] .free .subject { height: 20px !important; overflow: hidden !important; } </style>
  7. gbligh

    Flashcards

    I have been using these recently. When I tried the Google Sheet option, it says Google sheet not found. I have published the shared the link correctly. Any ideas? @pconkie @ADT @Graham Quince
  8. After the last couple of years of uncertainty and a fresh wave of remote learning requirements, we reached out to one of our schools to find out why online learning is beneficial for them. View the full article
  9. @Graham Quince Apparently the second countdown is freaking staff and pupils out. Can you help me amend the code so I it just shows days?
  10. ADT

    Remove form option

    Long time no speak Conkie!!! Hope you and yours are well!!! πŸ‘
  11. Haven't tested this! These lines might need slight tweaks... $(this).find("option[value='"+selectedoption+"']").remove(); doStuff(this.val());
  12. Place a html widget on the page below the form. Add the script tag <script></script> Within the script tag place some JavaScript this gets a handle on the current site : $site = this.element.closest(".sites-site-content"); this gets the form on the same site as this code : $form = $site.find("div[data-name='Widget.Forms']"); this adds a listener to any selection list on the form: $form.on("change", "select", function() { dostuff() }); because frog forms pull in their data after the form is rendered you may need to wait to set these $site and $form variables then you can put your logic in dostuff() <script> //variables needed var $form, $site; var that = this; //2 second delay (2000ms) should do it. setTimeout(function() { var $site = that.element.closest(".sites-site-content"); $form = $site.find("div[data-name='Widget.Forms']"); //can remove this once working or leave - can get issues switching edit/live modes without //this wont be issue for users other than you though! $form.off("select"); $form.on("change", "select", function() { doStuff(this.val()); }); }, 2000); function doStuff(selectedoption) { $form.find("select").each(function() { $(this).find("option[value='"+selectedoption+"']").remove(); }); } </script>
  13. Sorry, I've been away at a trade show. Umm, I think we're getting into quite complicated territory here - you'd need code to listen to the form for a click response, then make changes to other dropdowns - it could easily get messed up. It might be simpler to create a form in an HTML widget, include these features then on submission submit it using the Form API. Simpler, but a bit time consuming.
  14. No, I mean once a student has selected it in their form it disappears from the other drop downs in that form.
  15. ADT

    Remove form option

    Do you mean like once that option is full remove that option?
  16. Is there a way to remove an option from a dropdown/radio button, within a form, once it has been selected? @Graham Quince
  17. We know that many schools are once again organising out of school trips, whether that’s at home or abroad, for a day or a longer period. View the full article
  18. Thanks Quincey! 😜
  19. For those modal pop-ups, especially with forms, sometimes you just want a bit more width. Dropping this code into an HTML widget will expand ALL modals, so I'm tempted to suggest you don't use it on staff dashboards, as things like the assignment pop-up and share wizard look a little weird: .modal-body { max-height: 560px !important; } .modal { width: 70% !important; left: 30% !important; } Fortunately the Image Carousel's gallery mode pop-up has an extra class: <style> .image_carousel_modal .modal-body { max-height: 600px !important; height: auto !important; } .image_carousel_modal { max-width: 80% !important; } </style>
  20. How many hidden field!?! 🀯 Here you go, it's a bit "belt-and-braces" but it works: <style> div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(14), div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(15), div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(16), div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(17), div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(18), div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(19), div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(20), div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(21), div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(22), div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(23), div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(24), div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(25), div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(26), div[data-content-uuid="FORM_UUID"] .form-body .row-fluid:nth-child(27) { height: 0px !important; max-height: 0px !important; overflow: hidden !important; border-top: 0px !important; margin: 0px !important; padding: 0px !important; } </style>
  21. That might hide the lines.... but not get rid of the gap!!
  22. Lots of variations are possible here, just open an HTML widget and... This will hide all lines: <style> .form-body .row-fluid { border-top: 0px !important; } </style> Or this will hide specific lines: <style> .form-body .row-fluid:nth-child(3), .form-body .row-fluid:nth-child(4) { border-top: 0px !important; } </style> Or this will hide lines only on a specified form: <style> div[data-content-uuid="FORM_UUID"] .form-body .row-fluid { border-top: 0px !important; } </style>
  23. I am playing around with a form we may use for appraisals. I have a few hidden fields, but is there any way I can hide the lines on the form which separate them? It looks a bit odd at the end of the form!
  24. The difference is there is a budget for this new role..... so quote away!! Don't forget the mate's rates!! 😜
  25. The Form Register stores the data in a form on the same site, so you'll be able to export attendance, correct entries, search for students etc... using a data viewer. For staff to add students, as above, we'd need to build a widget to allow that to happen. So today.... you could do it with you being the middleman (adding students to groups), and in theory a FrogCode widget could sort it out what you need. I could offer to estimate it for you, but I think we both know the answer.
  26. Yep so I want them to be able to add but not remove.... and I also what it as easy as possible without giving them access to the Groups and Policy App. Good knows what they could break if they had access to that!! Obviously swapping from SIMs groups to Frog groups is dead easy.....and the Form Resister was something I looked at. I know that will email but does it also store the data? I've used the join group before to add staff and students to a group... the bit I need to work out is how staff can search for a student like in the user picker and then hit add to join their group!!
  27. Now that's a tricky one. You're wanting staff to be able to add users to a group, without being able to remove other users from a group? Currently the Groups & Policies role to add users to a group is linked to being able to remove users. They don't have access to add or remove features anyway. And MIS groups are fixed, so they can't alter those users. The Join Club FrogCode widget does allow students to add themselves to a group, as it uses the groups.amendMembers API. So it would be probably be possible for a teacher to search for a student and add them using similar code: Frog.Model.api('groups.amendMembers', { group_uuid: /*GROUP_UUID*/, users: JSON.stringify([{uuid: /*UUID_OF_USER_TO_BE_ADDED*/, leader: false}]) },{type: "POST"}).done(function(response) { // Success }).fail(function(e) { // Report Error }); Alternatively, the Form Register uses a form, so there is the ability to add an individual manually via that form. This form's widget could be set to email the club coordinator (or you) and when you get that email, they (you) could add the new student to the group - so that next time, the register needs to be taken, they will be there - assuming someone has had time to update the club.
  1. Load more activity
×
×
  • Create New...