Jump to content

Graham Quince

Administrators
  • Posts

    2,046
  • Joined

  • Last visited

Everything posted by Graham Quince

  1. The release notes from Christie cover this: https://www.frogcommunity.com/app/os#!christie/learn/users-application---student-photos-improvement It is a tool the Service Desk use, they'll talk you through where to upload the images in bulk. Students should not be able to view others photos - as each image is renamed with a UUID and that identifier is then associated to the students' UUID.
  2. I think a lot of primary schools use it with their students. @Theres.Ilk was telling me their parents use it so that the children don’t have access to the internet.
  3. In case you missed my blog post: https://grahamquince.wordpress.com/2018/09/02/pitching-your-lessons-to-the-2018-generation/ Admittedly I haven’t written on my blog in ages, Frog has kept me too busy. But this seemed timely.
  4. I've had a few minutes to mess around with code and managed to get the recipient's user details to display on their ePortfolio site: <div class="siterecipient"></div> <script> var siteName = this.element.closest('.sites-site-content').data('site-name'), siteNameArray = siteName.split(' - '), recipientUsername = siteNameArray[2], siterecipient = this.element.find(".siterecipient"); Frog.Model.api('users.getSummary', { search: recipientUsername, direction: 'asc', group_types: 'registration|year', sortBy: 'surname' }).done(function(listResponse) { var userdeets = listResponse.data[0].details; siterecipient.append( 'Name: '+userdeets.forename+" "+ userdeets.surname+"<br>"+ 'Sex: '+userdeets.gender+"<br>"+ '<img src="'+userdeets.thumbnail+'">' ); }); </script> Loads more to investigate on this and the username needs to be part of the site's title. In this iteration, it actually has to be the last part of the title. I'll do more work around this and try to get time to turn it into a FrogCode widget, but thought I'd share in the meantime. Remember - the service desk can work with you to get student photos uploaded.
  5. Hi @pconkie, Unfortunately, the touch events are built into the codebase, but it is possible to bypass this with a custom theme. The code below is an earlier iteration of the mobile menus, which does not include touch events: <style> /* Navigation ----------------------------------------------- */ /* LARGE SCREEN - Navigation */ .ui-theme-mobilesmallbanner a.menu-icon { display: none; } .ui-theme-mobilesmallbanner .menu-action { position: static; -webkit-transition: all 0.3s linear; -moz-transition: all 0.3s linear; -ms-transition: all 0.3s linear; -o-transition: all 0.3s linear; transition: all 0.3s linear; } .ui-theme-mobilesmallbanner .main-menu { clear: both; display: block; text-align: right; width:100%; margin:0px auto; padding:0px; } .ui-theme-mobilesmallbanner .main-menu li, .ui-theme-mobilesmallbanner .main-menu a { margin: 0; padding: 0; border: 0; box-sizing: content-box; background: none; list-style: none; text-decoration: none; position: relative; display:inline-block; } .ui-theme-mobilesmallbanner .main-menu ul { display: block; list-style: none; margin: 0px; padding: 0px; width:100%; background: none; -webkit-transition: height .5s linear; -moz-transition: height .5s linear; -ms-transition: height .5s linear; -o-transition: height .5s linear; transition: height .5s linear; } .ui-theme-mobilesmallbanner .main-menu ul ul, .ui-theme-mobilesmallbanner .main-menu ul ul ul { margin: 0 0 0 0!important; padding: 0px 0 0px 0px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .ui-theme-mobilesmallbanner .main-menu ul { list-style: none; } .ui-theme-mobilesmallbanner .main-menu > ul { width: 100%; z-index: 99; } .ui-theme-mobilesmallbanner .main-menu > ul > li { } .ui-theme-mobilesmallbanner .main-menu > ul li:hover > ul { display: block; } .ui-theme-mobilesmallbanner .main-menu > ul li a { font-family: 'TitilliumWeb-Regular', Arial, "Gill Sans", "Gill Sans MT", Helvetica, "Myriad Pro", "DejaVu Sans Condensed", sans-serif; font-size: 14px; font-weight: normal; line-height: 15px; color: #ffffff; text-align:center; margin: 0px 15px 5px 0px; padding:20px 27px; border-style: solid; border-width: 0px 0px 2px 0px; border-color: rgba(255,255,255,0.2); } .ui-theme-mobilesmallbanner .main-menu ul li:hover > a, .ui-theme-mobilesmallbanner .main-menu ul li.parentselected > a, .ui-theme-mobilesmallbanner .main-menu ul li.selected > a { color:#ffffff; background-color: none; font-weight:bold; border-style: solid; border-width: 0px 0px 2px 0px; border-color: rgba(255,255,255,0.7); transition: border-color 0.7s ease; } .ui-theme-mobilesmallbanner .main-menu > ul li ul { display: none; position: absolute; width: 200px; top: 100%; left: 0; z-index: 99; border-bottom: none; } .ui-theme-mobilesmallbanner .main-menu > ul li ul li { display:block; } .ui-theme-mobilesmallbanner .main-menu > ul li ul li a { font-size: 13px; line-height: 14px; padding:13px 5px; margin:0px 5px; border:none; background: url('<%=DIR%>subdevider.png') center bottom no-repeat; border-radius: 5px 5px 5px 5px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px; } .ui-theme-mobilesmallbanner .main-menu ul ul a { width:calc(100% - 20px); } .ui-theme-mobilesmallbanner .main-menu ul ul { transition: background-color .5s ease-in-out; left:none; background-color: rgba(0, 0, 0, 0.45); display: none; border-radius: 5px 5px 5px 5px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px; z-index: 99; } .ui-theme-mobilesmallbanner .main-menu > ul li ul li:hover > a, .ui-theme-mobilesmallbanner .main-menu > ul li ul li.parentselected > a, .ui-theme-mobilesmallbanner .main-menu > ul li ul li.selected > a { color:#ffffff; border: none; font-weight:bold; border-style: solid; border-width: 0px 0px 1px 0px; border-color: rgba(255,255,255,0.6); border-radius: 0px 0px 0px 0px; -moz-border-radius: 0px 0px 0px 0px; -webkit-border-radius: 0px 0px 0px 0px; } .ui-theme-mobilesmallbanner .main-menu ul ul.ui-sortable > li:nth-last-child(2) { padding-bottom:5px; border-radius: 0px 0px 5px 5px; -moz-border-radius: 0px 0px 5px 5px; -webkit-border-radius: 0px 0px 5px 5px; } .ui-theme-mobilesmallbanner .main-menu ul ul.ui-sortable > li:last-child { padding-bottom:5px; border-radius: 0px 0px 5px 5px; -moz-border-radius: 0px 0px 5px 5px; -webkit-border-radius: 0px 0px 5px 5px; } .ui-theme-mobilesmallbanner .main-menu > ul li li:hover > ul { display: block; } .ui-theme-mobilesmallbanner .main-menu > ul li li ul { display: none; position: absolute; left: 100%; } .ui-theme-mobilesmallbanner .main-menu ul ul ul { left: 100%; top: 0px; } .ui-theme-mobilesmallbanner .main-menu > ul li li ul li:hover > a, .ui-theme-mobilesmallbanner .main-menu > ul li li ul li.selected > a { } .ui-theme-mobilesmallbanner .main-menu a { color: #ffffff; display: inline-block; padding: 15px 20px; text-decoration: none; } .ui-theme-mobilesmallbanner span.cnt { display: none; } /* SMALLER SCREEN CSS */ @media screen and (max-width: 800px) { .ui-theme-mobilesmallbanner-container { position: absolute; height: 100%; width: 100%; overflow: hidden; } .ui-theme-mobilesmallbanner a.menu-icon { height: 35px; width: 35px; background:url('<%=DIR%>menuopen.png') right top no-repeat; font-size:0; display: block; position: absolute; z-index: 99999; top: 25px; right: 35px; } .ui-theme-mobilesmallbanner .menu-icon.active { background:url('<%=DIR%>menuclose.png') right top no-repeat; } .ui-theme-mobilesmallbanner .menu-action { position: absolute; background-color: rgba(0, 0, 0, 0.75); right: -290px; width: 280px; top: 0; bottom: 0; z-index: 101; overflow-y: scroll; overflow-x: hidden; -webkit-overflow-scrolling: touch; -webkit-transition: all 0.3s linear; -moz-transition: all 0.3s linear; -ms-transition: all 0.3s linear; -o-transition: all 0.3s linear; transition: all 0.3s linear; } .ui-theme-mobilesmallbanner .menu-action.active { max-height: 100%; right: 0; } .ui-theme-mobilesmallbanner .menu-action .main-menu { top: 0; right: 0; bottom: 0; height: 100%; background-color: none; margin:0 0px 0 0px; padding:0px 0px 0px 0px; } .ui-theme-mobilesmallbanner .menu-action .main-menu .menu-level-1 { padding-top: 90px; padding-bottom: 45px; } .ui-theme-mobilesmallbanner .menu-action .main-menu ul, .ui-theme-mobilesmallbanner .menu-action .main-menu li, .ui-theme-mobilesmallbanner .menu-action .main-menu a { margin: 0; padding: 0; list-style: none; font-weight: normal; text-decoration: none; position: relative; } .ui-theme-mobilesmallbanner .menu-action .main-menu ul li { display: block; width:100%; -webkit-transition: height .5s linear; -moz-transition: height .5s linear; -ms-transition: height .5s linear; -o-transition: height .5s linear; transition: height .5s linear; } .ui-theme-mobilesmallbanner .menu-action .main-menu ul li:hover:after, .ui-theme-mobilesmallbanner .menu-action .main-menu ul li.selected:after { border: none; } .ui-theme-mobilesmallbanner .menu-action .main-menu ul li a { font-family: 'TitilliumWeb-Regular', Arial, "Gill Sans", "Gill Sans MT", Helvetica, "Myriad Pro", "DejaVu Sans Condensed", sans-serif; font-size: 14px; font-weight: normal; line-height: 15px; color: #ffffff; text-align:left; margin: 0px 10px 0px 10px; padding:10px 10px; border-style: solid; border-width: 0px 0px 2px 0px; border-color: rgba(255,255,255,0.2); background: none; display: block; width:calc(100% - 40px); } .ui-theme-mobilesmallbanner .menu-action .main-menu ul li:hover > a, .ui-theme-mobilesmallbanner .menu-action .main-menu ul li.parentselected > a, .ui-theme-mobilesmallbanner .menu-action .main-menu ul li.selected > a { color:#ffffff; background-color: none; font-weight:bold; border-style: solid; border-width: 0px 0px 2px 0px; border-color: rgba(255,255,255,0.7); transition: border-color 0.7s ease; } .ui-theme-mobilesmallbanner .menu-action .main-menu span.cnt { position: absolute; padding: 0; margin: 0; background: none; display: block; } .ui-theme-mobilesmallbanner .menu-action .main-menu ul ul { display: none; width: 100%; position: static; background-color: none!important; background: none!important; border-radius: 0px 0px 0px 0px!important; -moz-border-radius: 0px 0px 0px 0px!important; -webkit-border-radius: 0px 0px 0px 0px!important; } .ui-theme-mobilesmallbanner .menu-action .main-menu ul ul li { background-color: none!important; background: none!important; border-bottom: none; margin:0px 0px 0 0px; width:calc(100% - 15px); } .ui-theme-mobilesmallbanner .menu-action .main-menu ul ul li:hover > a, .ui-theme-mobilesmallbanner .menu-action .main-menu ul ul li.parentselected > a, .ui-theme-mobilesmallbanner .menu-action .main-menu ul ul li.selected > a { text-decoration: none; color:#ffffff; border: none; font-weight:bold; background:url('<%=DIR%>listicon20-o.png') left center no-repeat; border-style: solid; border-width: 0px 0px 1px 0px; border-color: rgba(255,255,255,0.6); border-radius: 0px 0px 0px 0px!important; -moz-border-radius: 0px 0px 0px 0px!important; -webkit-border-radius: 0px 0px 0px 0px!important; } .ui-theme-mobilesmallbanner .menu-action .main-menu ul ul li a { font-size: 13px; line-height: 14px; text-align: left; background:url('<%=DIR%>listicon20.png') left center no-repeat; color: #ffffff; padding: 10px 10px 10px 25px; margin:0px 10px 0 10px; display: block; border-style: solid; border-width: 0px 0px 1px 0px; border-color: rgba(255,255,255,0.2); border-radius: 0px 0px 0px 0px!important; -moz-border-radius: 0px 0px 0px 0px!important; -webkit-border-radius: 0px 0px 0px 0px!important; } .ui-theme-mobilesmallbanner .menu-action .main-menu ul ul.ui-sortable > li:nth-last-child(2) { padding-bottom:0px!important; border-radius: 0px 0px 0px 0px!important; -moz-border-radius: 0px 0px 0px 0px!important; -webkit-border-radius: 0px 0px 0px 0px!important; } .ui-theme-mobilesmallbanner .menu-action .main-menu ul ul.ui-sortable > li:last-child { padding-bottom:0px!important; border-radius: 0px 0px 0px 0px!important; -moz-border-radius: 0px 0px 0px 0px!important; -webkit-border-radius: 0px 0px 0px 0px!important; } .ui-theme-mobilesmallbanner .menu-action .main-menu ul ul ul { display: none; width: 100%; position: static; border-radius: 0px 0px 0px 0px!important; -moz-border-radius: 0px 0px 0px 0px!important; -webkit-border-radius: 0px 0px 0px 0px!important; } .ui-theme-mobilesmallbanner .menu-action .main-menu ul ul ul li { background: none; border-bottom: none; margin:0px 0px 0 0px; width: calc(100% - 10px); } .ui-theme-mobilesmallbanner .menu-action .main-menu ul ul ul li:hover > a, .ui-theme-mobilesmallbanner .menu-action .main-menu ul ul ul li.selected > a { background:url('<%=DIR%>listicon30-o.png') left center no-repeat; } .ui-theme-mobilesmallbanner .menu-action .main-menu ul ul ul li a { background:url('<%=DIR%>listicon30.png') left center no-repeat; padding: 10px 10px 10px 35px; } /* END MENU CSS - Navigation */ </style> /* MAIN CONTAINER NEEDS THE UNIQUE TAG <%= unique %>" AS SHOWN BELOW */ <div class="ui-theme-mobilesmallbanner-container theme-container <%= unique %>"> /* PLACE OTHE HTML WITHIN THIS AREA */ </div> /* End Main Container */ /* Menu HTML CSS */ <a class="menu-icon"></a> <div class="menu-nav menu-action"> <div data-attr="site-menu" data-level="full" class="main-menu"></div> </div><!-- /menu --> /* END MENU HTML CSS */ /* jAVASCRIPT NEEDED BELOW TO MAKE THE MENU WORK */ <% $(function() { var init, tryFindTheme = function() { var exists = !!$('.'+ unique + '.ui-theme-mobilesmallbanner-container').length; if (!exists) { setTimeout(function() { tryFindTheme(); }, 100); return; } init(); }; tryFindTheme(); init = function() { var handleLargeScreen, handleSmallScreen, smallScreenBoundary = 800, menu = $('.'+ unique + ' .main-menu'), length, parent, countWrapper = '<span class="cnt"></span>', item, submenu, themeWrapper = $('.'+ unique + '.ui-theme-mobilesmallbanner-container'); handleLargeScreen = function(){ }; handleSmallScreen = function(){ themeWrapper.delegate('a.menu-icon','click',function(ev){ $(this).toggleClass('active'); $(this).siblings('.menu-action').toggleClass('active'); }); }; setTimeout(function() { if( $(window).width() > smallScreenBoundary ) { handleLargeScreen(); } else { handleSmallScreen(); } $(window).resize(function(){ $('.'+ unique + '.ui-theme-mobilesmallbanner-container').undelegate('a.menu-icon','click'); if( $(window).width() > smallScreenBoundary ) { handleLargeScreen(); } else { handleSmallScreen(); } }); },100); } }); %>
  6. The lastest Digital First training course is now available: Administrator Training. https://www.frogeducation.com/community/courses/administratortraining
  7. @adamw or @Simon Law - is this possible? I know there's a command to determine how an app launches, but is it possible to control if a site opens maximized?
  8. Hey Chris Hopefully you know we always welcome feedback. This will be passed into our product team who will consider it as part of our product review process. Graham
  9. Hi @Chris Goluch Think there's been a misunderstanding - you can totally do this. Are you free for us to call you and talk you through it. Here's a video Tracy made a while ago, which talks you through the whole process:
  10. Hi Susanna, It's one of mine (FrogCode). I need to get it checked, then I'll share it on the community. Give me a week or two. Graham
  11. Actually some side work that is being done will allow you to view all the entries to a form, even when re-used. so your HR manager would only have to check in one place. I'll try and get a screenshot from @Ashton Taylor
  12. Hi Chris, It is the usual reason I'm afraid - there's so much we want to do, that schools want us to do and only finite resources. We'll get there. Graham
  13. Hi, Interesting idea to use a site per leave request. I've been working with some schools on this already and we were using a form rather than a site. Each team has their own form - all identical except that in the Advanced settings, a different person (line manager) is set to be emailed. On submission, the line manager is emailed and then in a new feature coming in the next release, the line manager can edit the entry using the data viewer widget. The HR manager then views the data viewer widget and sees which leave requests have been processed. There's a few new elements to this: The data viewer widget, can be set to only show your entries. Perfect for staff checking on their requests Each form element has a "hidden" checkbox. When checked, this means it does not show in the form itself, only in the data viewer. By being able to edit a row, the line manager can approve the request using this hidden field. So that's one way, but to answer your questions (if you want to build it today) There is a FrogCode widget - Adrian Tate uses it - its recently had a bug but @Simon Law was looking into it. If he gets it working, I'll add it to your platform and share it on the community I'd use Wall widgets - that way you can set the "topics" to be filled out. Not really, i think you'd need several buttons to present the possible answers.
  14. Graham Quince

    Email Class

    There's a couple of different ways you can do this. FrogLearn doesn't have a Frogmail function but we have groups and we have teachers in as the leaders of the groups. The first way would be to use HTML and check for a Group then list the Email addresses of each member of that group. I'm on a train at the moment, otherwise I'd post here. @Simon Law, @adamw - if you've got time.,,, Second option would be to create a form for a class and using the Email a copy to function in the Advanced settings, you could paste the class' email addresses. Then every time you submit the form, you'd send them an email.
  15. It keeps getting raised and we are looking at some new features for the assignments. Nothing you can take to the bank yet.
  16. I thought I'd share with you some screenshots for additional features being added to forms: Data Viewer widget - showing a new option to limit the results to only show for the current user. We're thinking this will be handy for behaviour reporting and IT helpdesks, where you can see your tickets logged, but not everyone else's. Edit entries - thinking of behaviour and IT helpdesks again, and bringing in that hidden field feature, you'll be able to edit an existing entry - to update it. Limit number of entries - from school suggestions, you can set a limit on number of entries - perfect for trip sign ups where its first come, first served.
  17. Here's the widget for the time being: https://www.frogeducation.com/community/tutorials/frogcode/frogcode-showcase/navigation
  18. Hi Chris, All valid points. I think its fair to say everything you mention is in the internal roadmap for FrogCode - but being honest, there is no development scheduled for FrogCode. While that might sound depressing, we're deliberately keeping the roadmap short these days so that we can be as responsive as possible. For me, the difference between the HTML widget and FrogCode is for the end user. @pconkie's Flash Cards is a great example of something a regular teacher would struggle to assemble in an HTML widget, whereas the awesome (and it is awesome) Secure Gateway widget will only be used by the admin setting up a page for SG. Of course, the other major benefit is that the widgets are easier to share than code. I'll do my best to keep you and the forums apprised with any development updates. Graham
  19. You can now also use the site timeline widget to bulk upload images
  20. @nward at the British School of Riyadh recently asked us to solve a problem for them. Almost all their teachers are also parents of children in the school and as they use FrogParent, they wanted to make it easier for their teacher-parents to see their child's information without having to search. With @adamw's help, we've put together a new widget - the Staff Parent Child Selector. This widget lists all children connected to the logged in user and on click triggers the parent widgets to update with that child's details. https://www.frogeducation.com/community/tutorials/frogcode/frogcode-showcase/parentchild-selector
  21. This CSS: <style> /* Hide the Assignment term in the Plus menu */ .os_plus .actions>.media:nth-child(2) .media-heading { height: 20px !important; overflow: hidden !important; } /* Set the text for the Assignment term in the plus menu */ .os_plus .actions>.media:nth-child(2) .media-heading::before { content: "Homework\A"; white-space: pre; } /* hide the name of the assignment wizard */ .frogui_modules_assignment_wizard_core .modal-header h4 { height: 20px !important; overflow: hidden !important; } /* Set the text for the assignment wizard */ .frogui_modules_assignment_wizard_core .modal-header h4::before { content: "New Homework\A"; white-space: pre; } /* hide name of assignment manager app*/ .assignmentreports_markbook_core .title-area h4 { height: 20px !important; overflow: hidden !important; } /* Set the text for theassignment manager */ .assignmentreports_markbook_core .title-area h4::before { content: "Homework Manager\A"; white-space: pre; } </style> ... changes the name of assignments in 3 places. If you add it to an HTML widget on the main dashboards the CSS will load up for all users.
  22. While we're on the subject and no promises, but there's some other terminology in the assignments system we're debating over changing. Any thoughts would be appreciated - but being realistic - i think being able to relabel these in System Preferences is probably not viable: Current Proposed new term Notes Close assignment Close assignment and show marks or Set assignment as closed Force hand-in Mark as handed in or Set handed-in status Return Assignment Send back to student for further work or Return to student and set as 'not handed-in' Skip Next Student or Next indivudual Next and Skip on their own imply next action rather than next in the list
×
×
  • Create New...