Jump to content

Graham Quince

Administrators
  • Posts

    2,046
  • Joined

  • Last visited

Everything posted by Graham Quince

  1. Had a chance to try this out, but I think it needs some real world testing before I publish it. A15F90222001B969D7685FA701B9700AED669B0C1E28AC30.tgz
  2. My mistake - when you said second data viewer, I took that to mean a second form. Unfortunately, I don't think there's any way to restrict the line manager's view so they don't see the hidden fields. Maybe you could implement a different workflow? If you did have a second form, the business manager could record the approved leave into that - which would email the line manager. I'll ask some other schools what they do. Anyone else reading this, feel free to chime in
  3. Hi @Matthew Snell - I just used a screenshot from the Academy's HR portal. All the contents of the second form will email the line manager. If you have notes you don't want them to see, it might be better if the Business Manager updates the original form. Can you post screenshots of both forms, it might help to better answer your question.
  4. We all know the File Drop is a handy way of uploading documents, but it's not too pretty - especially for things like a Policies page for a school website. I've just been having a play around with this older tutorial: https://schools.frogeducation.com/community/training/html-tutorials/file-drop And used the code and CSS from the Link to Internet widget, to create this: The File Drop is hidden by a rule so it only appears for logged-in Admins. But make sure you set the file drop to Group and not individual. The code uses the File Drop's API to return all the files, but then orders them by name instead of upload date. The File Drop has a tendency to add an underscore if the file bears the same name as one you have uploaded once already (even after deleting) the code splits the file name by underscores and only shows the first part. Finally - and slightly deviously - I've included a Form with just a text field (which allows the form to submit) and popped an email address in the Form's advanced settings. When set up, the code hides the form, but triggers the submit button every time a document is downloaded. (If you can imagine a situation where it would be good to know if someone was downloading all your statutory information in one quick visit). You can see it in action here: https://concept-demo.frogos.net/filedropdocs/documents-and-policies As with all this type of code, it's up to you to have a play around and adapt the code to your own liking. I'm happy to take a look if you get stuck. <style> .half_width { width: calc(50% - 32px); float: left; margin-left: 5px !important; margin-right: 5px !important; } </style> <div class="file_list"></div> <script type="text/javascript"> var forceDownload = '?mode=download'; // or //var forceDownload = ''; var fileList = arguments[0].find('.file_list'); var baseURL = Frog.Utilities.getBaseUrl(); var imagebank = baseURL+'/app/public/sprite/os-icon-ext/sprite.png?v=2106_0_15'; var fileDropUUID = 'FILE_DROP_UUID'; var formUUID = 'FORM_UUID'; fileList.append( '<style>'+ 'div[data-content-uuid="'+formUUID+'"] {'+ 'display: none !important;'+ '}'+ '</style>' ); Frog.Model.api('filedrop.get', { filedrop: fileDropUUID }).done(function(filesResponse) { var files = filesResponse.data.resources; files.sort((a, b) => (a.file.name > b.file.name) ? 1 : -1); $.each(files, function(index, file) { if (file.deleted == '0') { var nameToShowArray = file.file.name.split('_'); var nameToShow = nameToShowArray[0]; fileList.append( '<div data-name="'+nameToShow+'" data-filelink="'+file.file.uuid+'" class="half_width widget-content link-widget">'+ '<div class="content-wrapper">'+ '<div class="column link-info">'+ '<h2 class="os-ellipsis alone" title="'+nameToShow+'">'+ '<p class="link_text">'+nameToShow+'</p></h2>'+ '</div>'+ '</div>'+ '<div class="column widget-icon-wrapper">'+ '<div style="width: 42px; height: 55px; background-size: auto; background-image: url('+imagebank+')" class="widget-icon os-icon-ext-'+file.file.ext+' os-background-default">'+ '<a class="filedrop-preview os-icon-ext file-name"><span class="os-ellipsis file-name">'+file.file.ext+'</span></a>'+ '</div>'+ '</div></div>' ); } }) }); $(fileList).on('click', '.link-widget', function(el){ Frog.Utilities.download( baseURL+'/app/file/resource/'+el.currentTarget.dataset.filelink + forceDownload,true ); $('div[data-content-uuid="'+formUUID+'"]').find('.btn-success').click(); setTimeout(function(){ $('div[data-content-uuid="'+formUUID+'"]').find('.reset').click(); }, 1000); }); </script>
  5. Hi @Matthew Snell, I think if you put on the form User fields for Staff and Line Manager, you should be able to check the box to say "Send an email to the selected user". When the business manager updates the form, it will email them.
  6. Hi James I think this guide should help you: https://schools.frogeducation.com/community/training/homework/creatingamarkbook But in a nutshell, if you open the Assignment Menu and choose "Create and Add to Markbook" it will create a markbook and add all assignments which match the subject and class:
  7. Just had a thought about this: If someone were to take the Set Keyword and Email widget's code as a roadmap, and use the bit that adds a key word, instead of having it be a button push, the function which adds the keyword and refreshes the site could occur when the time matches the settings. Any widgets on the site with a Keyword Rule would then respond accordingly. Not sure what would happen to a dashboard of course. That might not work in the same way.
  8. Might be your browser? Are you running the latest version of Chrome?
  9. I've found the site you're showing, but it's working the usual way for me
  10. Due to how the Hotspot widget works: https://schools.frogeducation.com/community/training/widgetguides/g-m/hotspot It requires the user to be logged in to load the image. When built, the use on websites was never considered, which is a real shame because it's excellent for school tours, interactive maps or graphical menus. Unfortunately, most don't realise the hotspot will not work until they have already spent time setting it up. The Hotspot for Websites widget bypasses the restrictions to the image share by enabling you to upload a copy of the image to the website and then uses the original hotspot information to display all the same data. https://schools.frogeducation.com/community/training/frogcode/g-m/hotspot
  11. This widget makes use of your Frog calendar to store items for your To Do List. You can edit entries, set dates and mark them as done. You can set the terminology and date display. The widget also responds to the Select User widget. https://schools.frogeducation.com/community/training/frogcode/r-z/todo-list
  12. Hi Simon, I'm still waiting on a definitive answer, but I would have thought that if you set up ADFS for both Office365 and Frog, then you could take advantage of MFA in the ADFS setup. Graham
  13. Just had a request from a school wanting to hide the big black rectangle that is a media widget. I put this CSS together to, which I think makes a big difference visually: <style> .mejs__container { background: url('file/resource/UUID') !important; background-size: cover !important; } </style> If you have this code on your dashboard, all media widgets will pick this up. If you have media widgets on your website, you'll likely need this code in an HTML widget on every page that has a media widget, as people can link to any page.
  14. Here's alternative code, which displays the data in a table instead of bullet points, with the column headers added automatically: <div class="my_data"> <table class="table table-bordered hwData"> <tr class="hwheading"></tr> </table> </div> <script> var myDataDiv = arguments[0].find('.my_data'); var user = FrogOS ? FrogOS.getUser() : self.getUser(); var formUUID = 'C0B0354A2003E79464730F754D2A1504F1A45CECD3C9B419'; Frog.Model.api('dataviewer.gettable', { content_uuid: formUUID, current_user_only: 'false', form_uuid: formUUID, limit: 1, module: 'form', offset: '0', sort_dir: 'DESC', sort_field: 'date' }).done(function(response) { var personalData = response.data; $.each(personalData, function(index, entry) { var data = entry.fields[1].responses[0].response; //console.log(data); myDataDiv.find('.hwData').append('<tr class="row'+index+'"></tr>'); data = JSON.parse(data); $.each(data, function(index1, datum) { if (index == 0) { myDataDiv.find('.hwheading').append('<th class="'+index1+'">'+index1+'</th>'); } if (datum) { myDataDiv.find('.row'+index).append('<td class="pastel_'+index1+'">'+datum+'</td>'); } }) // end of data $.each }); // end of personalData $.each }); // end of API response </script>
  15. I've just been involved in transferring a lot of science content into Frog and every so often I needed a particular symbol or fraction. The WIRIS formula editor in the text widget (and elsewhere) is pretty good, but occasionally I struggled to find the right symbol, so I put this site together: https://concept-demo.frogos.net/fraction It's a simple form which assembles a fraction using super- and sub-script, but when you copy and paste it, it appears as a single character. I also started to need specific symbols so started assembling them into the table below. Same practice, just copy and paste. The site uses an HTML widget, so can't be shared on the FrogStore, you're welcome to use it in situ, but if you'd like to recreate it, here's the code: <style> .fraction { height: 50px; width: 100px; text-align: center; border: 1px solid #CCCCCC; border-radius: 5px; padding: 10px; color: #000000; font-size: 18pt; } .inputtext { text-align: center; width: 50px; } </style> Numerator : <input class="num inputtext" name="num" type="text"> / Denominator : <input class="denom inputtext" name="denom" type="text"> <br> <btn class="gen btn">Generate</btn> <br><br> <div class="fraction"></div> <script> var num = arguments[0].find('.num'); var denom = arguments[0].find('.denom'); var gen = arguments[0].find('.gen'); var fraction = arguments[0].find('.fraction'); gen.click(function(){ fraction.html( '<sup>'+num.val()+'</sup>&frasl;<sub>'+denom.val()+'</sub>' ); }); </script> Within minutes of posting, I remembered a second challenge I was having with word equations, so I've coded a second bit of HTML to create a table which can be copied-and-pasted directly into a text widget. You can create tables like this in a text widget, but the idea here is that this will be much quicker: <style> .wordfraction { height: 100px; text-align: center; border: 1px solid #CCCCCC; border-radius: 5px; padding: 10px; color: #000000; font-size: 18pt; width: 80%; margin-left: auto; margin-right: auto; margin-top: 10px; } .inputtext { width: 80% !important; text-align: center !important; } </style> <table class="table table-bordered" cellpadding="10" style="color: #000000;"> <tr> <td style="vertical-align: middle;" rowspan="2">Before:<br><input class="before inputtext" name="before" type="text"></td> <td style="border-bottom: 2px solid #000000; margin-bottom: 5px;">Top:<br><input class="top inputtext" name="top" type="text"></td> <td style="vertical-align: middle;" rowspan="2">After:<br><input class="after inputtext" name="after" type="text"></td> </tr> <tr> <td>Bottom:<br><input class="bottom inputtext" name="bottom" type="text"></td> </tr> </table> <btn class="gen btn">Generate</btn> <br> <div class="wordfraction"></div> <script> var before = arguments[0].find('.before'); var top = arguments[0].find('.top'); var bottom = arguments[0].find('.bottom'); var after = arguments[0].find('.after'); var gen = arguments[0].find('.gen'); var wordfraction = arguments[0].find('.wordfraction'); gen.click(function(){ wordfraction.html( '<table cellpadding="5px">'+ '<tr>'+ '<td rowspan="2">'+before.val()+'</td>'+ '<td style="border-bottom: 2px solid #000000; margin-bottom: 5px;">'+top.val()+'</td>'+ '<td rowspan="2">'+after.val()+'</td>'+ '</tr>'+ '<tr><td>'+bottom.val()+'</td></tr>'+ '<table>' ); }); </script>
  16. If you put your desktop browser into mobile emulation mode and open Frog, you'll find that most applications in Frog load, but then display a warning. I haven't tried the Quiz Assign wizard, but I have used CSS to hide the warnings in other parts of Frog.
  17. I know a few schools have made secure requests - the school I used to work at used PHP and a session cookie on Frog login to authenticate the user into the intranet environment. Every intranet page which loaded then checked the session cookie. I think @pconkie has also explored this too. If you can't get anywhere with direct authentication, I created the Data to Form widget to allow you to import any spreadsheet into one of our forms and use the form's Access Control to act asa secure db. https://schools.frogeducation.com/community/training/frogcode/a-f/data-to-form
  18. Are you wanting to create a "login via Frog" button for your website? I checked with one of our developers and you might be able to put something together by creating an app and intercepting the auth requests. Problem is we only currently support OAuth1 and not OAuth2. These two github pages might help: https://github.com/frogeducation/oauth-php-example https://github.com/frogeducation/oauth-js-example
  19. Falling snow with outline Hi @ann Try this variation: <script> /* snow flakes */ var wA = [], sA = [10,11,12], tA = [2,4,6,8,10,12,14], fA = ['&#10052;', '&#10053;', '&#10054;']; function r(a) {return a[Math.floor(Math.random() * a.length)]} for (var i = 0; i < $(window).innerWidth(); i++) {wA.push(i)} for (var i = 0; i < 15; i++) {$('<div class="s-fl" style="text-shadow: 2px 2px black; position: fixed; color: #fff; top: -20px; left: '+r(wA)+'px; font-size: 20px;">'+r(fA)+'</div>').appendTo(this.element.closest('.app-sites'))} $('.s-fl').each(function(){ var el = $(this) setTimeout(function(){ el.animate({'top' : '100%'}, r(sA) * 1000, function(){ $(this).css('top', -20); setInterval(function(){ el.animate({'top' : '100%'}, r(sA) * 1000, function(){ $(this).css('top', -20); })}, r(tA) * 1000); }) }, r(tA) * 1000); }); </script> I've added a text-shadow to each snow flake: text-shadow: 2px 2px black;
  20. Just had a quick look on your platform and I couldn't spot the code. Have you removed it?
  21. Hi @gbligh You need to change the theme name on the top line. change: .ui-theme-basicnavigation-wrapmain {overflow-x: hidden;} to this: .ui-theme-pageicon1-wrapmain {overflow-x: hidden;}
  22. I think all the included subjects have the same UUID across platforms, so this list might make things easier: Activity option[value="B939F08620031500DAB86FB96C4BA40D0D1B92EC7677D491"], Art and Design option[value="91364E8D20031F44E5244F062C65370F4736605C0C4B293B"], Chemistry option[value="CD762717200313840B86EF50FC38E601B5D6B6CC58F31D03"], Citizenship option[value="915A2B0620031C89E9285FE88413E90EE51BCC6CB0055C68"], Classics option[value="91364E9A200315B7F0258FCBBA46CC0686964E3C90F3007D"], Communication and Language option[value="915A2B0C20031111E9EA8FDA55AE020EE8B93A6C2A1B3B83"], Creative Development option[value="915A2B112003128D14F1CF3F351B3A045DEC1D2CDC49578E"], Critical thinking option[value="91364EA020031B8E8A2B1F70D3881D01CFCC93EC4EB30AC3"], Design and Technology option[value="91364EA52003124301368FBB9E1BA507F4637AAC99DFE21D"], Development Matters option[value="71172E6020031B664A668FE22D2EAC000E69577CBEDE8156"], Drama, Theatre and Dance option[value="91364EAA20031758394D2FD216679A0DB2E89F6C28890974"], Engineering option[value="91364EB920031267045DFF90CDE6D40C7DB6F28CF53DD93F"], English option[value="91364EAF20031403D0DDBF34E5065C0179757BCC6529343C"], Enrichment studies option[value="91364EB4200314FE2A43EF9E3B15A80650724EECF7C20C62"], Expressive Arts and Design option[value="330041332003118293577F8641DFC8097E9AD92C8868F6CC"], Food option[value="498BA13820031E4FFC516F33F72DD10BEF663A2C4D56601F"], French option[value="C541A6052003149A90BF5F69F03D7B0AF42C7DACE598665C"], Geography option[value="91364EBD20031714E63CCF67478DE90B537717AC3FF40642"], German option[value="C547CC8720031ACDD1828FE40D927203208F9D5C77880F42"], Government and Politics option[value="91364EC2200319876ECE3F589C8F6B071134BE0C28FA2A9F"], History option[value="91364EC720031934250A2F97CF3BD40F4596C49CA98D361E"], Hospitality &amp; Tourism option[value="9BAB2A03200317EC3A5D6F94C81917057113999CFEA7D7A5"], ICT option[value="915A2B2920031E70B3AC1F96FBEEDF0B2874743C42D1E95A"], Languages option[value="A70A9AD12003119ABF176F744DB98508D503D5CC1D97A207"], Latin option[value="91364ED620031CC91D128F788F86C9047F4E0DAC1503B330"], Law option[value="91364EDB20031B535809DF0BA64941011103089C80143E0D"], Literacy option[value="915A2B2E2003165CF1405FA75F99C008B8F30F6C0158C705"], Literacy & Numeracy (Functional Skills) option[value="91364EE020031FB6E898DFD3F0CAAC02C074502CED526516"], Mathematics option[value="91364EE520031CB80E753FE310D95207FE0C6B1CECB022E9"], Media option[value="91364EEA20031DC7FB24BF6E77DC690E25B80CAC6ADC9609"], Modern Foreign Languages (MFL) option[value="91364EEF200314315AA34F77CEA240007F2E21BC2A7A9462"], Music option[value="91364EF32003198650DEEFC3D3A685080A7F2DEC93937A52"], No Subject Selected option[value="736CB4D82003183B060EEFE86B52FF015FC320CC7689DB25"], Other option[value="91364EF8200315B9E2860F434EE3E1095264861C43D05233"], Personal, Social and Emotional Development (PSED) option[value="915A2B4720031B1C381E7FAFEEDAD10555CF820C29BC92F7"], Personal, Social Health and Economic Education (PSHE) option[value="91364F0C20031C9563355FC19480C60AD799839C8BC7AF1F"], Philosophy &amp; Ethics option[value="91364F0720031E29A7200FAEC904A1024EB1F51CD05050E4"], Physical Development option[value="B939F09820031844ED411F20FCFEFA0AA0354FCC33460AEB"], Physical Education option[value="91364F0220031EA4CC72EF5DED3B7303EE1B4DDC29ED6CC7"], Physics option[value="CD76271F2003168C0F573F726CE8DA0EC3E46F0C57AD3809"], Problem Solving, Reasoning and Numeracy (PSRN) option[value="915A2B5120031AC78A95BF7656C8BC06EFBACF7CCCEEB770"], PSHE and Citizenship option[value="2511BFEC20031075E7A8BF034B65C40006CEEA6CA07651E3"], Psychology option[value="91364EFD20031EED04EF2FB13DB3110E6811438C07740894"], Reading option[value="A6C4DB8F200316613650CF995B835C06B47CA22CDAAC2F62"], Religious Education option[value="91364F10200311CB5E9F8FA0E944FB023330F7FCF9E81997"], Science option[value="91364F1520031DB70162AFEE72134306E4B0D0CC582444B7"], Sociology option[value="91364F1A20031A1604F3AF34159F390B3DD468EC1F257E34"], Spanish option[value="C54D934620031A29E5707F5D32FD2E0E59752CAC2B3278D8"], Understanding the World option[value="915A2B602003141F09682FB6F9441D0B2EC6135C65FA04B9"], Vocational Studies option[value="91364F1F2003173A8E190FD8932DF20BAB9FC05C893524CD"], Writing option[value="A6C4DB9E200311439945EF32051D26058C06563C5CA2D536"],
  23. Just been helping a school who wanted help hiding a subject as it was causing confusion. As you know, the assignment wizard comes pre-populated with 45 subjects you cannot hide. I didn't think it was possible, but it is (or appears to be) to use CSS to hide the options. Drop this code onto your staff dashboard: <style> /* Hide Assignment Subject options*/ option[value="SUBJECT_UUID"], /* Bus&Economics */ option[value="SUBJECT_UUID"] /* Law */ { display: none !important; } </style> To get an option UUID, it's probably simplest to: right-click on the subject dropdown in the Assignment wizard and choose Inspect. Expand the line: <select class="input-fill" data-attr="subject"> Each subject will be listed with their UUID as the value I've only just tried this, let me know if it works or you run into any issues.
  24. Thanks George. Including the new requirement for second-hand?
  25. I saw on Schools Week that there's new guidance been released regarding uniforms: https://schoolsweek.co.uk/new-uniform-guidance-what-schools-need-to-know/ Including a requirement about second-hand clothes being made available. I started to think if this was something Frog could help with, maybe a site with a form, possibly some HTML to update the stock? Does anyone have a uniform site already? Is there anything else I should think of including?
×
×
  • Create New...