Release 2019.005 - HL Vanilla Community
<main> <article class="userContent"> <p><em>Vanilla 2019.005 was first deployed on April 11, 2019.</em></p><h2 data-id="features">Features</h2><h3 data-id="rich-editor">Rich Editor</h3><p>Rich Editor saw a number of enhancements in this release.</p><h4 data-id="new-paragraph-level-formatting-menu">New paragraph level formatting menu</h4><p>We've added a new paragraph level formatting menu in order to surface more formatting options.</p><div class="embedExternal embedImage display-large float-none"> <div class="embedExternal-content"> <a class="embedImage-link" href="https://user-images.githubusercontent.com/1770056/55188112-fb8cb380-5170-11e9-8165-a16c2f28f83d.png" rel="nofollow noreferrer noopener ugc" target="_blank"> <img class="embedImage-img" src="https://user-images.githubusercontent.com/1770056/55188112-fb8cb380-5170-11e9-8165-a16c2f28f83d.png" alt="image" height="180" width="320" loading="lazy" data-display-size="large" data-float="none"></img></a> </div> </div> <p><br></p><p>Currently it is broken down into 4 categories.</p><ul><li>Heading Formats (Displays 4 possible levels of headings).</li><li>List Formats (Numbered List, Bulleted List, Indented & Outdent).</li><li>Special Formats (Quote, Code Block, Spoiler).</li><li>Standard Format</li></ul><h4 data-id="new-rich-editor-formats">New Rich Editor formats</h4><p>Along with the paragraph formatting menu, we've added support for</p><ul><li>Additional levels of heading (2, 3, 4, 5). Previously only levels 2 & 3 were available.</li><li>Support for nested lists. Lists can now be nested up to 4 levels deep.</li></ul><h4 data-id="improved-pasting-robustness">Improved Pasting Robustness</h4><p>This iteration of Rich Editor see much improved ability to paste content into the editor.</p><h3 data-id="image-upload-limits">Image Upload Limits</h3><p>It is now possible to limit maximum image upload dimensions through and enhanced dashboard posting page. Any images uploaded above this limit will be resized (while preserving aspect ratio) to fit within the configured dimensions.</p><p>These dimensions will be respected in Rich Editor, Advanced Editor, and the <code class="code codeInline" spellcheck="false" tabindex="0">/api/v2/media</code> endpoint.</p><div class="embedExternal embedImage display-large float-none"> <div class="embedExternal-content"> <a class="embedImage-link" href="https://user-images.githubusercontent.com/1770056/55846249-f6394c80-5b12-11e9-9b1b-e29287a82edd.png" rel="nofollow noreferrer noopener ugc" target="_blank"> <img class="embedImage-img" src="https://user-images.githubusercontent.com/1770056/55846249-f6394c80-5b12-11e9-9b1b-e29287a82edd.png" alt="image" height="180" width="320" loading="lazy" data-display-size="large" data-float="none"></img></a> </div> </div> <p><br></p><p>The following may now be pasted from other web pages</p><ul><li>Images (multiple at a time, including with mixed content).</li><li>Lists (Including nested lists).</li></ul><h3 data-id="new-or-expanded-api-endpoints">New or Expanded API endpoints</h3><h4 data-id="set-the-canonical-url-of-a-discussion">Set the canonical URL of a discussion</h4><ul><li><code class="code codeInline" spellcheck="false" tabindex="0">PUT /api/v2/discussions/:id/canonical-url</code></li><li><code class="code codeInline" spellcheck="false" tabindex="0">DELETE /api/v2/discussions/:id/canonical-url</code></li></ul><h4 data-id="expand-accepted-answer-ids">Expand accepted answer IDs</h4><p>The <code class="code codeInline" spellcheck="false" tabindex="0">GET /api/v2/discussions/:id</code> endpoint not offers an expand parameter <code class="code codeInline" spellcheck="false" tabindex="0">acceptedAnswers</code>. When set the commentID & rendered text of the accepted answer will be included in the response.</p><h4 data-id="current-user-endpoints">Current user endpoints</h4><ul><li><code class="code codeInline" spellcheck="false" tabindex="0">GET /api/v2/users/me</code></li><li><code class="code codeInline" spellcheck="false" tabindex="0">GET /api/v2/users/me-counts</code></li></ul><p>These 2 endpoints may be used to fetch information about the currently signed in user.</p><h4 data-id="record-a-page-view">Record a page view</h4><ul><li><code class="code codeInline" spellcheck="false" tabindex="0">POST /tick</code></li></ul><h2 data-id="knowledge-base-features">Knowledge Base Features</h2><h3 data-id="community-knowledge-base-integration">Community & Knowledge Base Integration</h3><p>Discussions & Questions may now be converted into knowledge base articles with the new menu item <code class="code codeInline" spellcheck="false" tabindex="0">Convert to article</code>.</p><div class="embedExternal embedImage display-large float-none"> <div class="embedExternal-content"> <a class="embedImage-link" href="https://user-images.githubusercontent.com/1770056/55188441-cd5ba380-5171-11e9-9660-e8060c66c6db.png" rel="nofollow noreferrer noopener ugc" target="_blank"> <img class="embedImage-img" src="https://user-images.githubusercontent.com/1770056/55188441-cd5ba380-5171-11e9-9660-e8060c66c6db.png" alt="image" height="180" width="320" loading="lazy" data-display-size="large" data-float="none"></img></a> </div> </div> <p><br></p><p>Using this prompt will create a new article draft including the contents of the discussion/question as well as any accepted answers.</p><p>After publishing the draft the discussion will be linked to the new article. This is a non-destructive action. After publishing that draft the the community post and the article will be linked together.</p><p>This will be reflected on the original discussion by setting the canonical URL of the discussions pages to point to the article. Additionally a notice will displayed to the user indicating the link.</p><div class="embedExternal embedImage display-large float-none"> <div class="embedExternal-content"> <a class="embedImage-link" href="https://user-images.githubusercontent.com/1770056/55844936-aa37d900-5b0d-11e9-8555-1f4be2635708.png" rel="nofollow noreferrer noopener ugc" target="_blank"> <img class="embedImage-img" src="https://user-images.githubusercontent.com/1770056/55844936-aa37d900-5b0d-11e9-8555-1f4be2635708.png" alt="image" height="180" width="320" loading="lazy" data-display-size="large" data-float="none"></img></a> </div> </div> <p><br></p><h3 data-id="knowledge-base-sitemaps">Knowledge Base Sitemaps</h3><p>Sites making use of the Sitemaps plugin will now offer an index of all knowledge base articles for search engines.</p><h3 data-id="filter-by-knowledge-base-or-community-category-in-search">Filter by Knowledge Base or Community Category in Search</h3><p>The <code class="code codeInline" spellcheck="false" tabindex="0">/kb/search</code> page now include the ability to filter by a single knowledge base while searching knowledge base content and the ability to filter by a category while searching the community.</p><div class="embedExternal embedImage display-large float-none"> <div class="embedExternal-content"> <a class="embedImage-link" href="https://user-images.githubusercontent.com/1770056/55845613-9772d380-5b10-11e9-8b8b-3bc6b60d0127.png" rel="nofollow noreferrer noopener ugc" target="_blank"> <img class="embedImage-img" src="https://user-images.githubusercontent.com/1770056/55845613-9772d380-5b10-11e9-8b8b-3bc6b60d0127.png" alt="image" height="180" width="320" loading="lazy" data-display-size="large" data-float="none"></img></a> </div> </div> <p><br></p><h3 data-id="improved-security-with-csp">Improved Security with CSP</h3><p>Knowledge base pages now implement <code class="code codeInline" spellcheck="false" tabindex="0">Content-Security-Policy</code> headers. These headers prevent the loading of scripts from unauthorized script sources. Some domains (such as the site's own domain) are whitelisted by default.</p><p>Additional domains may be whitelisted by extending the <code class="code codeInline" spellcheck="false" tabindex="0">ContentSecurityPolicy.ScriptSrc.AllowedDomains</code> array or implementing a <code class="code codeInline" spellcheck="false" tabindex="0">ContentSecurityPolicyProviderInterface</code> and registering it with <code class="code codeInline" spellcheck="false" tabindex="0">ContentSecurityPolicyModel</code>.</p><h3 data-id="improved-help-center-home-page">Improved Help Center home page</h3><p>The home page for Help Center type knowledge bases has been redesigned to make better use of screen space and improve user experience.</p><div class="embedExternal embedImage display-large float-none"> <div class="embedExternal-content"> <a class="embedImage-link" href="https://user-images.githubusercontent.com/1770056/55845961-f422be00-5b11-11e9-9b65-2e2e34e6ece2.png" rel="nofollow noreferrer noopener ugc" target="_blank"> <img class="embedImage-img" src="https://user-images.githubusercontent.com/1770056/55845961-f422be00-5b11-11e9-9b65-2e2e34e6ece2.png" alt="image" height="180" width="320" loading="lazy" data-display-size="large" data-float="none"></img></a> </div> </div> <p><br></p><h3 data-id="improved-knowledge-base-editor">Improved Knowledge Base Editor</h3><p>The knowledge base editor now includes an improved text editor UI, that collapses when scrolling to leave more space for content.</p><div class="embedExternal embedImage display-large float-none"> <div class="embedExternal-content"> <a class="embedImage-link" href="https://user-images.githubusercontent.com/1770056/55846050-4d8aed00-5b12-11e9-8300-eba0bdf8b4ba.png" rel="nofollow noreferrer noopener ugc" target="_blank"> <img class="embedImage-img" src="https://user-images.githubusercontent.com/1770056/55846050-4d8aed00-5b12-11e9-8300-eba0bdf8b4ba.png" alt="image" height="180" width="320" loading="lazy" data-display-size="large" data-float="none"></img></a> </div> </div> <p><br></p><h3 data-id="improved-ui-cohesiveness">Improved UI Cohesiveness</h3><p>This release saw numerous improvements to overall UI cohesiveness and polish. Areas of significant improvement include</p><ul><li>Form inputs</li><li>Buttons</li><li>Modals</li><li>General text-alignment & metrics</li></ul><h3 data-id="google-sign-in">Google Sign In</h3><p>Due to the fact that <a href="https://support.google.com/plus/answer/9217723?hl=en" rel="nofollow noreferrer ugc"><strong>Google is sunsetting Google+ Sign In</strong></a> method we are adding Google Sign In. Forums that are using Google+ now are strongly recommended to create an OpenID OAuth 2.0 application at Google and turn on the Google Sign In plugin.</p><p>For more information about the user authentication workflow that is being implemented <a href="https://developers.google.com/identity/protocols/OpenIDConnect" rel="nofollow noreferrer ugc">please read this documentation on Google.com</a>. For instructions on how to set up the plugin see <a href="https://docs.vanillaforums.com/help/sso/social-connect/#google" rel="nofollow noreferrer ugc">Vanilla user docs for Google Sign In</a></p><div class="embedExternal embedImage display-large float-none"> <div class="embedExternal-content"> <a class="embedImage-link" href="https://user-images.githubusercontent.com/2651070/55909483-30096200-5baa-11e9-8c2c-d11a9118c13d.png" rel="nofollow noreferrer noopener ugc" target="_blank"> <img class="embedImage-img" src="https://user-images.githubusercontent.com/2651070/55909483-30096200-5baa-11e9-8c2c-d11a9118c13d.png" alt="image" height="180" width="320" loading="lazy" data-display-size="large" data-float="none"></img></a> </div> </div> <p>;</p><h2 data-id="developer-notes">Developer Notes</h2><h3 data-id="other-fixes">Other Fixes</h3><h4 data-id="security">Security</h4><ul><li>Harden permissions to block the Categories API endpoint from returning the names of Categories for which the user does not have permissions to view.</li><li>Add permission check before allowing Users to follow a Category.</li><li>Fix bug where Private Messages with recipients went to every user that did not have a user name.</li></ul><h4 data-id="rich-editor-1">Rich Editor</h4><ul><li>Fix image embeds from i.imgur.com in the Rich Editor. </li></ul><h4 data-id="groups">Groups</h4><ul><li>Fix unwanted behaviour when announcing a Discussion in a Social Group. The announcement should only affect the Social Group (the Discussion should not be announded in Recent Discussions outside of the Group). </li></ul><h4 data-id="reactions">Reactions</h4><ul><li>Fix Javascript bug that stopped Admins from enabling Down Voting on a Category. </li></ul><h3 data-id="breaking-changes">Breaking Changes</h3><p><strong><em>Starting with this release Vanilla requires a minimum version of PHP </em></strong><strong><em><code class="code codeInline" spellcheck="false" tabindex="0">7.1</code></em></strong><strong><em>.</em></strong> <em>Starting with this release Vanilla's automated test suite now runs on PHP versions </em><em><code class="code codeInline" spellcheck="false" tabindex="0">7.1</code></em><em> - </em><em><code class="code codeInline" spellcheck="false" tabindex="0">7.3</code></em><em>.</em></p><h3 data-id="deprecations">Deprecations</h3><p>Beginning in this release the following classes are now deprecated.</p><ul><li><code class="code codeInline" spellcheck="false" tabindex="0">\Gdn_ApplicationManager</code></li><li><code class="code codeInline" spellcheck="false" tabindex="0">\Gdn_ThemeManager</code></li><li><code class="code codeInline" spellcheck="false" tabindex="0">\Gdn_PluginManager</code></li><li><code class="code codeInline" spellcheck="false" tabindex="0">\Gdn_Pluggable</code></li></ul><p>Additionally the following methods are now deprecated.</p><ul><li><code class="code codeInline" spellcheck="false" tabindex="0">\Gdn::applicationManager()</code></li><li><code class="code codeInline" spellcheck="false" tabindex="0">\Gdn::pluginManager()</code></li><li><code class="code codeInline" spellcheck="false" tabindex="0">\Gdn::themeManager()</code></li><li><code class="code codeInline" spellcheck="false" tabindex="0">\PagerModule::rel()</code></li></ul><p>If you are using any of these methods please see their inline documentation for their newer alternatives.</p><h3 data-id="database-updates">Database Updates</h3><p><em>This release contains no required database updates</em>.</p> </article> </main>