From 3f640139d240832d1bd1d49863096efa4f392bb7 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sun, 13 Nov 2016 14:10:33 +0000 Subject: [PATCH] quick and dirty support for custom welcome pages, with an example for geektime techfest --- home-geektime.html | 25 +++++++ src/component-index.js | 2 + src/components/structures/BottomLeftMenu.js | 27 +++++++ src/components/structures/HomePage.js | 66 ++++++++++++++++++ .../css/vector-web/structures/HomePage.css | 26 +++++++ .../css/vector-web/structures/LeftPanel.css | 3 + src/skins/vector/img/geektime/geektime.png | Bin 0 -> 32638 bytes src/skins/vector/img/icons-home.svg | 28 ++++++++ 8 files changed, 177 insertions(+) create mode 100644 home-geektime.html create mode 100644 src/components/structures/HomePage.js create mode 100644 src/skins/vector/css/vector-web/structures/HomePage.css create mode 100644 src/skins/vector/img/geektime/geektime.png create mode 100644 src/skins/vector/img/icons-home.svg diff --git a/home-geektime.html b/home-geektime.html new file mode 100644 index 00000000..cea2eac3 --- /dev/null +++ b/home-geektime.html @@ -0,0 +1,25 @@ +
+ + GeekTime Techfest! + +
+ +

+Welcome to the GeekTime Techfest Riot! +

+ +

+To get started, please join some chat rooms! +

+ + + +

+To explore other rooms available on Matrix, click here: Room Directory +

+ +

+To learn more about Matrix, head over to Matrix.org - and to better understand Riot, check out the official Riot Website. +

\ No newline at end of file diff --git a/src/component-index.js b/src/component-index.js index 3141087c..068ab061 100644 --- a/src/component-index.js +++ b/src/component-index.js @@ -34,6 +34,8 @@ import structures$LeftPanel from './components/structures/LeftPanel'; module.exports.components['structures.LeftPanel'] = structures$LeftPanel; import structures$RightPanel from './components/structures/RightPanel'; module.exports.components['structures.RightPanel'] = structures$RightPanel; +import structures$HomePage from './components/structures/HomePage'; +module.exports.components['structures.HomePage'] = structures$HomePage; import structures$RoomDirectory from './components/structures/RoomDirectory'; module.exports.components['structures.RoomDirectory'] = structures$RoomDirectory; import structures$RoomSubList from './components/structures/RoomSubList'; diff --git a/src/components/structures/BottomLeftMenu.js b/src/components/structures/BottomLeftMenu.js index 0ea35b4e..793f8405 100644 --- a/src/components/structures/BottomLeftMenu.js +++ b/src/components/structures/BottomLeftMenu.js @@ -20,6 +20,7 @@ var React = require('react'); var ReactDOM = require('react-dom'); var sdk = require('matrix-react-sdk') var dis = require('matrix-react-sdk/lib/dispatcher'); +var SdkConfig = require('matrix-react-sdk/lib/SdkConfig'); module.exports = React.createClass({ displayName: 'BottomLeftMenu', @@ -32,6 +33,7 @@ module.exports = React.createClass({ return({ directoryHover : false, roomsHover : false, + homeHover: false, peopleHover : false, settingsHover : false, }); @@ -62,6 +64,19 @@ module.exports = React.createClass({ this.setState({ roomsHover: false }); }, + // Home button events + onHomeClick: function() { + dis.dispatch({ action: 'view_home_page' }); + }, + + onHomeMouseEnter: function() { + this.setState({ homeHover: true }); + }, + + onHomeMouseLeave: function() { + this.setState({ homeHover: false }); + }, + // People events onPeopleClick: function() { dis.dispatch({ action: 'view_create_chat' }); @@ -98,9 +113,21 @@ module.exports = React.createClass({ render: function() { var TintableSvg = sdk.getComponent('elements.TintableSvg'); + + var homeButton; + if (SdkConfig.get().home_page) { + homeButton = ( +
+ + { this.getLabel("Welcome page", this.state.homeHover) } +
+ ); + } + return (
+ { homeButton }
{ this.getLabel("Start chat", this.state.peopleHover) } diff --git a/src/components/structures/HomePage.js b/src/components/structures/HomePage.js new file mode 100644 index 00000000..26bdf81e --- /dev/null +++ b/src/components/structures/HomePage.js @@ -0,0 +1,66 @@ +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +'use strict'; + +import 'isomorphic-fetch'; + +var React = require("react"); +var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); +var sdk = require('matrix-react-sdk'); + +module.exports = React.createClass({ + displayName: 'HomePage', + + propTypes: { + config: React.PropTypes.object.isRequired, + collapsedRhs: React.PropTypes.bool, + }, + + getInitialState: function() { + return { + page: "" + }; + }, + + componentWillMount: function() { + fetch(this.props.config.home_page).then( + (response)=>{ + return response.text(); + }, + (error)=>{ + console.log(error); + this.setState({ page: "Couldn't load home page" }); + } + ).then( + (body)=>{ + this.setState({ page: body }); + } + ); + }, + + render: function() { + // const SimpleRoomHeader = sdk.getComponent('rooms.SimpleRoomHeader'); + // + + return ( +
+
+
+
+ ); + } +}); diff --git a/src/skins/vector/css/vector-web/structures/HomePage.css b/src/skins/vector/css/vector-web/structures/HomePage.css new file mode 100644 index 00000000..0e2009a6 --- /dev/null +++ b/src/skins/vector/css/vector-web/structures/HomePage.css @@ -0,0 +1,26 @@ +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_HomePage { + max-width: 960px; + width: 100%; + margin-left: auto; + margin-right: auto; +} + +.mx_HomePage_body { + margin-left: 63px; +} \ No newline at end of file diff --git a/src/skins/vector/css/vector-web/structures/LeftPanel.css b/src/skins/vector/css/vector-web/structures/LeftPanel.css index 4e328171..35d3e22b 100644 --- a/src/skins/vector/css/vector-web/structures/LeftPanel.css +++ b/src/skins/vector/css/vector-web/structures/LeftPanel.css @@ -79,6 +79,7 @@ limitations under the License. pointer-events: none; } +.mx_LeftPanel .mx_BottomLeftMenu_homePage, .mx_LeftPanel .mx_BottomLeftMenu_directory, .mx_LeftPanel .mx_BottomLeftMenu_createRoom, .mx_LeftPanel .mx_BottomLeftMenu_people, @@ -87,6 +88,7 @@ limitations under the License. cursor: pointer; } +.collapsed .mx_BottomLeftMenu_homePage, .collapsed .mx_BottomLeftMenu_directory, .collapsed .mx_BottomLeftMenu_createRoom, .collapsed .mx_BottomLeftMenu_people, @@ -96,6 +98,7 @@ limitations under the License. padding-bottom: 3px ! important; } +.mx_LeftPanel .mx_BottomLeftMenu_homePage, .mx_LeftPanel .mx_BottomLeftMenu_directory, .mx_LeftPanel .mx_BottomLeftMenu_createRoom, .mx_LeftPanel .mx_BottomLeftMenu_people { diff --git a/src/skins/vector/img/geektime/geektime.png b/src/skins/vector/img/geektime/geektime.png new file mode 100644 index 0000000000000000000000000000000000000000..fcb7b01af0254b72963bf34ef5530f11193596b5 GIT binary patch literal 32638 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 + + + + + 81230A28-D944-4572-B5DB-C03CAA2B1FCA + Created with sketchtool. + + + + + + + + + + + + + + + + +