<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
h2
        {mso-style-priority:9;
        mso-style-link:"Otsikko 2 Char";
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:18.0pt;
        font-family:"Times New Roman",serif;
        font-weight:bold;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.Shkpostityyli17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.Otsikko2Char
        {mso-style-name:"Otsikko 2 Char";
        mso-style-priority:9;
        mso-style-link:"Otsikko 2";
        font-family:"Times New Roman",serif;
        mso-fareast-language:FI;
        font-weight:bold;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 2.0cm 70.85pt 2.0cm;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:429938573;
        mso-list-template-ids:440421150;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1
        {mso-list-id:1088887041;
        mso-list-template-ids:-459241428;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="FI" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">As promised we squeezed out the hotfix this week and it’s now available in GitHub, oskari.org download and the Maven repository. Here’s the list of changes:
<a href="https://github.com/oskariorg/oskari-server/blob/master/ReleaseNotes.md">
https://github.com/oskariorg/oskari-server/blob/master/ReleaseNotes.md</a> and <a href="https://github.com/oskariorg/oskari-frontend/blob/master/ReleaseNotes.md">
https://github.com/oskariorg/oskari-frontend/blob/master/ReleaseNotes.md</a> <o:p>
</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid #EAECEF 1.0pt;padding:0cm 0cm 4.0pt 0cm">
<h2 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;border:none;padding:0cm">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#24292E">Frontend<o:p></o:p></span></h2>
</div>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#24292E">For a full list of changes see: </span><span style="font-family:"Segoe UI",sans-serif;color:#24292E"><a href="https://github.com/oskariorg/oskari-frontend/milestone/10?closed=1"><span lang="EN-US" style="color:#0366D6">https://github.com/oskariorg/oskari-frontend/milestone/10?closed=1</span></a></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#24292E"><o:p></o:p></span></p>
<ul type="disc">
<li class="MsoNormal" style="color:#24292E;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Layer loading API has been changed from having the layers inside group structure (and possibly multiple times/layer) to a flat array beside the group structure. The groups will still have layers array
 in the internal runtime data structure, but instead of the JSON presentation the array items are instances of Oskari.mapframework.domain.AbstractLayer like any other layer references returned by the service.<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Iframe snippet in publisher now includes 'allow="geolocation"' because: </span><span style="font-family:"Segoe UI",sans-serif"><a href="https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-permissions-in-cross-origin-iframes"><span lang="EN-US" style="color:#0366D6">https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-permissions-in-cross-origin-iframes</span></a></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Line width style setting for userlayer/dataset import works properly now on import<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Statistical map now resets when the regionset layer is removed from selected layers<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Statistical map now resets properly when the reset button is hit<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">UI fixes for statistical map legend and classification form<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Reverse colors control in statistical map classification form now works instead of doing nothing<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Sandbox.removeMapLayer() was deprecated as unused and Sandbox.getMap().removeLayer() is the drop-in replacement for it.<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Some variable leaking (to global scope) issues fixed.<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Timeseries UI is no longer shown if the layer with timeseries isn't shown to the user (due to being hidden or incompatible CRS)<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Group and organization is now properly removed from the admin UI when deleted from the database.<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Oskari.urls.getRoute() default value changed from 'N/A' to '/action?' as it's the default for Oskari-server<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Oskari.urls.getLocation() default value changed from 'N/A' to undefined so developers don't need to know the default value for checking if it's configured<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Personaldata, analyse and publisher2 bundles now support Oskari.urls.getLocation('login') and Oskari.urls.getLocation('register') for url configuration. Bundle-specific config is still available and
 used as priority.<o:p></o:p></span></li></ul>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid #EAECEF 1.0pt;padding:0cm 0cm 4.0pt 0cm">
<h2 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;border:none;padding:0cm">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#24292E">Server<o:p></o:p></span></h2>
</div>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#24292E">For a full list of changes see: </span><span style="font-family:"Segoe UI",sans-serif;color:#24292E"><a href="https://github.com/oskariorg/oskari-server/milestone/9?closed=1"><span lang="EN-US" style="color:#0366D6">https://github.com/oskariorg/oskari-server/milestone/9?closed=1</span></a></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#24292E"><o:p></o:p></span></p>
<ul type="disc">
<li class="MsoNormal" style="color:#24292E;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Fixed secure flag so unsecure services (e.g. WMS) are proxied like before on secured Oskari instances<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">GetHierarchicalMapLayerGroups action route response changed to return layers as a flat array beside the groups structure<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Layers can now belong to multiple groups (previously caused layer listing to fail)<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Userlayer/dataset import extent information is now properly transformed so coverage area can be sent for the frontend<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Appsetups without mapfull.conf.mapOptions (relying on defaults) couldn't be used to publish maps.
</span><span style="font-family:"Segoe UI",sans-serif">MapOptions config is now optional for publishing.<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Fixed multiple issues for adding, editing and deleting dataprovider/groups via the admin user interface (both hierarchichal admin and the classical one work now).<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Layer ids are now always used in layer JSON sent to the frontend (previously it could be an "external id" when configured)<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">oskari_maplayer no longer has the external_id column. It has been moved to another table, made unique and only the mapLayers URL-parameter handling cares about it anymore. Migration for database have
 been provided to replace external ids in mapfull.state.selectedLayers and configs for BackgroundLayerSelectionPlugin and LayerSelectionPlugin.<o:p></o:p></span></li><li class="MsoNormal" style="color:#24292E;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1;box-sizing: border-box">
<span lang="EN-US" style="font-family:"Segoe UI",sans-serif">PermissionService changed to return permissions as a Set instead of a List<o:p></o:p></span></li></ul>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:FI"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:FI"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:FI">Best regards and have a nice weekend,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:FI">          Sami</span><o:p></o:p></p>
</div>
</body>
</html>