Add policyLink configuration to piwik

Also:
 - Make CookieBar ES6 class
 - Alter phrasing on CookieBar
 - Conditionaly display longer "...(See our ++cookie and privacy
   policies++)." if policy link is configured.
This commit is contained in:
Luke Barnard 2018-05-16 15:49:23 +01:00
parent 4e6594d64b
commit d15051a635
3 changed files with 35 additions and 28 deletions

View file

@ -355,7 +355,8 @@ const LoggedInView = React.createClass({
let topBar; let topBar;
const isGuest = this.props.matrixClient.isGuest(); const isGuest = this.props.matrixClient.isGuest();
if (this.props.showCookieBar) { if (this.props.showCookieBar) {
topBar = <CookieBar />; const policyUrl = this.props.config.piwik ? (this.props.config.piwik.policyUrl || null) : null;
topBar = <CookieBar policyUrl={policyUrl} />;
} else if (this.props.hasNewVersion) { } else if (this.props.hasNewVersion) {
topBar = <NewVersionBar version={this.props.version} newVersion={this.props.newVersion} topBar = <NewVersionBar version={this.props.version} newVersion={this.props.newVersion}
releaseNotes={this.props.newVersionReleaseNotes} releaseNotes={this.props.newVersionReleaseNotes}

View file

@ -15,59 +15,64 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import dis from '../../../dispatcher'; import dis from '../../../dispatcher';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
import sdk from '../../../index'; import sdk from '../../../index';
const makeLink = (href) => (sub) => export default class CookieBar extends React.Component {
<a static propTypes = {
className="mx_MatrixToolbar_link" policyUrl: PropTypes.string,
target="_blank" }
href={href}
>
{ sub }
</a>;
export default React.createClass({ constructor() {
onAccept: function() { super();
}
onAccept() {
dis.dispatch({ dis.dispatch({
action: 'accept_cookies', action: 'accept_cookies',
}); });
}, }
onReject: function() { onReject() {
dis.dispatch({ dis.dispatch({
action: 'reject_cookies', action: 'reject_cookies',
}); });
}, }
render: function() { render() {
const AccessibleButton = sdk.getComponent('elements.AccessibleButton'); const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
const toolbarClasses = "mx_MatrixToolbar"; const toolbarClasses = "mx_MatrixToolbar";
return ( return (
<div className={toolbarClasses}> <div className={toolbarClasses}>
<img className="mx_MatrixToolbar_warning" src="img/warning.svg" width="24" height="23" alt="Warning" /> <img className="mx_MatrixToolbar_warning" src="img/warning.svg" width="24" height="23" alt="Warning" />
<div className="mx_MatrixToolbar_content"> <div className="mx_MatrixToolbar_content">
{ _t( { this.props.policyUrl ? _t(
"Help us improve Riot by sending usage data. " + "Help improve Riot by sending usage data? " +
"This will use a cookie " + "This will use a cookie. " +
"(see our <CookieLink>cookie</CookieLink> and " + "(See our <PolicyLink>cookie and privacy policies</PolicyLink>).",
"<PrivacyLink>privacy</PrivacyLink> policies)",
{}, {},
{ {
// XXX: We need to link to the page that explains our cookies // XXX: We need to link to the page that explains our cookies
'CookieLink': makeLink("https://riot.im/privacy"), 'PolicyLink': (sub) => <a
'PrivacyLink': makeLink("https://riot.im/privacy"), className="mx_MatrixToolbar_link"
target="_blank"
href={this.props.policyUrl}
>
{ sub }
</a>
,
}, },
) } ) : _t("Help improve Riot by sending usage data? This will use a cookie.") }
</div> </div>
<AccessibleButton element='button' className="mx_MatrixToolbar_action" onClick={this.onAccept}> <AccessibleButton element='button' className="mx_MatrixToolbar_action" onClick={this.onAccept}>
{ _t("Send usage data") } { _t("Yes please") }
</AccessibleButton> </AccessibleButton>
<AccessibleButton className="mx_MatrixToolbar_close" onClick={this.onReject}> <AccessibleButton className="mx_MatrixToolbar_close" onClick={this.onReject}>
<img src="img/cancel.svg" width="18" height="18" /> <img src="img/cancel.svg" width="18" height="18" />
</AccessibleButton> </AccessibleButton>
</div> </div>
); );
}, }
}); }

View file

@ -634,8 +634,9 @@
"Something went wrong when trying to get your communities.": "Something went wrong when trying to get your communities.", "Something went wrong when trying to get your communities.": "Something went wrong when trying to get your communities.",
"Display your community flair in rooms configured to show it.": "Display your community flair in rooms configured to show it.", "Display your community flair in rooms configured to show it.": "Display your community flair in rooms configured to show it.",
"You're not currently a member of any communities.": "You're not currently a member of any communities.", "You're not currently a member of any communities.": "You're not currently a member of any communities.",
"Help us improve Riot by sending usage data. This will use a cookie (see our <CookieLink>cookie</CookieLink> and <PrivacyLink>privacy</PrivacyLink> policies)": "Help us improve Riot by sending usage data. This will use a cookie (see our <CookieLink>cookie</CookieLink> and <PrivacyLink>privacy</PrivacyLink> policies)", "Help improve Riot by sending usage data? This will use a cookie. (See our <PolicyLink>cookie and privacy policies</PolicyLink>).": "Help improve Riot by sending usage data? This will use a cookie. (See our <PolicyLink>cookie and privacy policies</PolicyLink>).",
"Send usage data": "Send usage data", "Help improve Riot by sending usage data? This will use a cookie.": "Help improve Riot by sending usage data? This will use a cookie.",
"Yes please": "Yes please",
"You are not receiving desktop notifications": "You are not receiving desktop notifications", "You are not receiving desktop notifications": "You are not receiving desktop notifications",
"Enable them now": "Enable them now", "Enable them now": "Enable them now",
"What's New": "What's New", "What's New": "What's New",