{"id":714,"date":"2018-08-15T11:41:34","date_gmt":"2018-08-15T11:41:34","guid":{"rendered":"http:\/\/blogs.magicjudges.org\/judgeapps\/?p=714"},"modified":"2019-05-05T12:13:04","modified_gmt":"2019-05-05T19:13:04","slug":"judgeapps-updates-july-2018","status":"publish","type":"post","link":"https:\/\/blogs.magicjudges.org\/judgeapps\/2018\/08\/15\/judgeapps-updates-july-2018\/","title":{"rendered":"JudgeApps Updates \u2013 July 2018"},"content":{"rendered":"<p><span style=\"font-weight: 400\">This is going to be another short update. Just like reviews and exams in the past, most of the work went into a new feature that isn\u2019t ready to be public yet (but it\u2019s being tested and will probably be announced relatively soon). We\u2019ll wrap this one quick. It\u2019s summer! Stop being in front of your screen and go enjoy the beach or something (sorry, Southern Hemisphere).<\/span><\/p>\n<h1><span style=\"font-weight: 400\">Notifications<\/span><\/h1>\n<p><span style=\"font-weight: 400\">We made some changes in the way we handle emails and notifications. Most of the changes are subtle or behind the scenes, so you probably didn\u2019t notice.<\/span><\/p>\n<p><span style=\"font-weight: 400\">The first change is in the way we generate all those notifications and emails. Until now, notifications were created all over the place. Someone added a comment? Create a notification. A judge level was updated? Create a notification\u2026 If any developer wanted to change anything about a notification, they had to go looking for the place where that notification was created. The new system is template based: choose a notification type, provide the relevant details, and the notification or email\u2019s header and content are created. Want to fix a typo or make a message clearer? Go to the template folder and find the template with the name you\u2019re looking for. Life is good.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Another change was to remove leading and trailing whitespaces from emails and notifications. For those of you who don\u2019t know, \u201cwhitespaces\u201d are all the characters in a text that are there, but you can\u2019t see them. These include, but are not limited to, spaces, tabs and new lines. So if you used to get a bunch of unnoticeable extra spaces at the end of an email, they\u2019re now gone. Just so you know.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Lastly, we changed the header of the email you get when there\u2019s a new comment about an application for an event you manage to include the event\u2019s name. Now it\u2019s easier for you to sort out all the comments if you manage several events at the same time.<\/span><\/p>\n<h1><span style=\"font-weight: 400\">Event CSVs<\/span><\/h1>\n<p><span style=\"font-weight: 400\">CSVs, or Comma Separated Values files, are used to easily transfer information by creating a simple table in which each line in a file is a row, and the columns are values separated by commas. JudgeApps has all kinds of CSV files available, so you can download and use them. If, for example, you want to do some <\/span><a href=\"https:\/\/blogs.magicjudges.org\/europeeast\/2017\/04\/11\/exemplar-metrics-europe-east\/\"><span style=\"font-weight: 400\">statistics about the Exemplar program<\/span><\/a><span style=\"font-weight: 400\">, you can download a CSV file and open it in any spreadsheet application to review the data.<\/span><\/p>\n<p><span style=\"font-weight: 400\">This month we improved the CSVs for events. We sped up event application CSVs with pre-fetching: we start getting the data needed for them before you ask for it, so once you do, it\u2019s already there. We also fixed a bug when there are some special characters in an event\u2019s name. These characters are not supported by HTTP (the main internet communication protocol), so asking for a CSV file for an event with a non-English name could create an erroneous link that would make the CSV file unavailable. We now translate those characters to a different standard. People using CSV files for events with Chinese, Japanese, and Hebrew names rejoice!<\/span><\/p>\n<h1><span style=\"font-weight: 400\">Reviews<\/span><\/h1>\n<p><span style=\"font-weight: 400\">Remember the times when reviews on JudgeApps were new, and each update article was mostly about reviews? Reviews are no longer new and shiny, but we still love them, which is why we added new options for review search. Up until now you could search reviews mostly by the people involved, but we figured out that maybe you\u2019d want to see all the reviews you entered about judges in a specific event or maybe see the improvement in your GP career, so now you can filter the reviews by an event type or even by a specific event. Cool, ah?<\/span><\/p>\n<h1><span style=\"font-weight: 400\">Security<\/span><\/h1>\n<p><span style=\"font-weight: 400\">In the patched security vulnerabilities corner we fixed an issue with the way we handle exam questions and translations. Text entered in the questions\u2019 fields or translations was marked as safe, even though its safety wasn\u2019t checked, so a user with permissions to edit questions could, in theory, enter code as a question, answer or explanation, and have that code execute unwanted commands. The good news are that people with such permissions are all judges we trust with exam content, so they\u2019re trustworthy, and all the text now goes through some cleanup before it is marked as safe.<\/span><\/p>\n<hr \/>\n<p><span style=\"font-weight: 400\">That\u2019s if for this installment of the JudgeApps Updates. If you want to share ideas with us (that\u2019s where most new features and bug fixes come from), or if you would like to learn more about the technical mechanisms behind JudgeApps, please <\/span><a href=\"https:\/\/apps.magicjudges.org\/feedback\/\"><span style=\"font-weight: 400\">let us know<\/span><\/a><span style=\"font-weight: 400\">!<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this issue of the JudgeApps Updates we take a moment to talk not only about what new things you can expect from JudgeApps, but also about its inner workings, and explain some basic technologies we use to make the magic happen.<\/p>\n","protected":false},"author":368,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[9],"tags":[],"language":[11],"class_list":["post-714","post","type-post","status-publish","format-standard","hentry","category-updates","language-en"],"_links":{"self":[{"href":"https:\/\/blogs.magicjudges.org\/judgeapps\/wp-json\/wp\/v2\/posts\/714","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.magicjudges.org\/judgeapps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.magicjudges.org\/judgeapps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.magicjudges.org\/judgeapps\/wp-json\/wp\/v2\/users\/368"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.magicjudges.org\/judgeapps\/wp-json\/wp\/v2\/comments?post=714"}],"version-history":[{"count":2,"href":"https:\/\/blogs.magicjudges.org\/judgeapps\/wp-json\/wp\/v2\/posts\/714\/revisions"}],"predecessor-version":[{"id":716,"href":"https:\/\/blogs.magicjudges.org\/judgeapps\/wp-json\/wp\/v2\/posts\/714\/revisions\/716"}],"wp:attachment":[{"href":"https:\/\/blogs.magicjudges.org\/judgeapps\/wp-json\/wp\/v2\/media?parent=714"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.magicjudges.org\/judgeapps\/wp-json\/wp\/v2\/categories?post=714"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.magicjudges.org\/judgeapps\/wp-json\/wp\/v2\/tags?post=714"},{"taxonomy":"language","embeddable":true,"href":"https:\/\/blogs.magicjudges.org\/judgeapps\/wp-json\/wp\/v2\/language?post=714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}