diff --git a/bigbluebutton-html5/Gruntfile.js b/bigbluebutton-html5/Gruntfile.js
index 4ba47feb5e..969d6bc1ff 100755
--- a/bigbluebutton-html5/Gruntfile.js
+++ b/bigbluebutton-html5/Gruntfile.js
@@ -41,7 +41,7 @@ module.exports = function (grunt) {
shell: {
start_meteor: {
- command: 'HOME=/usr/share/meteor JASMINE_SERVER_UNIT=0 JASMINE_SERVER_INTEGRATION=0 JASMINE_CLIENT_INTEGRATION=0 JASMINE_BROWSER=PhantomJS JASMINE_MIRROR_PORT=3000 ROOT_URL=http://127.0.0.1/html5client meteor',
+ command: 'JASMINE_SERVER_UNIT=0 JASMINE_SERVER_INTEGRATION=0 JASMINE_CLIENT_INTEGRATION=0 JASMINE_BROWSER=PhantomJS JASMINE_MIRROR_PORT=3000 ROOT_URL=http://127.0.0.1/html5client meteor',
},
},
diff --git a/bigbluebutton-html5/imports/ui/shared/Svg.jsx b/bigbluebutton-html5/imports/ui/shared/Svg.jsx
new file mode 100755
index 0000000000..c394d993df
--- /dev/null
+++ b/bigbluebutton-html5/imports/ui/shared/Svg.jsx
@@ -0,0 +1,29 @@
+import React, { Component, PropTypes } from 'react';
+
+// import SVGDOMPropertyConfig from 'react/lib/SVGDOMPropertyConfig.js';
+
+export default class Svg extends Component {
+ render() {
+ return (
+
+ );
+ }
+}
+
+Svg.propTypes = {
+ children: function (props, propName, componentName) {
+ var error;
+ var prop = props[propName];
+ React.Children.forEach(prop, function (child) {
+ if (child.type !== 'Shape') {
+ error = new Error(
+ '`' + componentName + '` only accepts children of type `Shape`.'
+ );
+ }
+ });
+
+ return error;
+ },
+};
diff --git a/bigbluebutton-html5/imports/ui/whiteboard/SlideService.js b/bigbluebutton-html5/imports/ui/whiteboard/SlideService.js
new file mode 100755
index 0000000000..deea7e7f51
--- /dev/null
+++ b/bigbluebutton-html5/imports/ui/whiteboard/SlideService.js
@@ -0,0 +1,22 @@
+let getCurrentSlide = () => {
+ let currentPresentation, currentSlide, presentationId, shapes, ref;
+ currentPresentation = Meteor.Presentations.findOne({
+ 'presentation.current': true,
+ });
+ presentationId = currentPresentation != null ? (ref = currentPresentation.presentation) != null ? ref.id : void 0 : void 0;
+ currentSlide = Meteor.Slides.findOne({
+ presentationId: presentationId,
+ 'slide.current': true,
+ });
+ if (currentSlide != null) {
+ currentSlide.shapes = Meteor.Shapes.find({
+ whiteboardId: currentSlide.slide.id,
+ }).fetch();
+ }
+
+ return currentSlide;
+};
+
+export default {
+ getCurrentSlide,
+};
diff --git a/bigbluebutton-html5/imports/ui/whiteboard/Whiteboard.jsx b/bigbluebutton-html5/imports/ui/whiteboard/Whiteboard.jsx
index 0627e3b15d..99d8031aad 100755
--- a/bigbluebutton-html5/imports/ui/whiteboard/Whiteboard.jsx
+++ b/bigbluebutton-html5/imports/ui/whiteboard/Whiteboard.jsx
@@ -5,6 +5,7 @@ import { EmojiContainer } from './EmojiContainer.jsx';
import { Polling } from './Polling.jsx';
import { Button } from '../shared/Button.jsx';
import { WhiteboardControls } from './WhiteboardControls.jsx';
+import WhiteboardPaper from './whiteboard_marks/WhiteboardPaper.jsx';
export let Whiteboard = React.createClass({
mixins: [ReactMeteorData],
@@ -101,22 +102,22 @@ export let Whiteboard = React.createClass({
render() {
return (
-
-
-
-
+
+
+
+
{this.data.is_mobile ?
- : null }
-
-
+ : null }
+
+
{this.data.is_presenter ?
- : null }
+ : null }
{this.data.poll_started ?
- : null }
-
+ : null }
+
);
},
diff --git a/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/EllipseDrawComponent.jsx b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/EllipseDrawComponent.jsx
new file mode 100755
index 0000000000..acb25f5918
--- /dev/null
+++ b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/EllipseDrawComponent.jsx
@@ -0,0 +1,14 @@
+import React, { PropTypes } from 'react';
+
+export default class EllipseDrawComponent extends React.Component {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return (
+
+ );
+ }
+}
+
diff --git a/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/LineDrawComponent.jsx b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/LineDrawComponent.jsx
new file mode 100755
index 0000000000..142e7b577d
--- /dev/null
+++ b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/LineDrawComponent.jsx
@@ -0,0 +1,15 @@
+import React, { PropTypes } from 'react';
+
+export default class LineDrawComponent extends React.Component {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return (
+ //stroke and stroke-width might be inside of the style
+
+ );
+ }
+}
+
diff --git a/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/PollDrawComponent.jsx b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/PollDrawComponent.jsx
new file mode 100755
index 0000000000..bdef3dbacf
--- /dev/null
+++ b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/PollDrawComponent.jsx
@@ -0,0 +1,14 @@
+import React, { PropTypes } from 'react';
+
+export default class PollDrawComponent extends React.Component {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return (
+
+ );
+ }
+}
+
diff --git a/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/RectangleDrawComponent.jsx b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/RectangleDrawComponent.jsx
new file mode 100755
index 0000000000..bd2dff94a9
--- /dev/null
+++ b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/RectangleDrawComponent.jsx
@@ -0,0 +1,13 @@
+import React, { PropTypes } from 'react';
+
+export default class RectangleDrawComponent extends React.Component {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return (
+
+ );
+ }
+}
diff --git a/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/TextDrawComponent.jsx b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/TextDrawComponent.jsx
new file mode 100755
index 0000000000..cef1fbe89e
--- /dev/null
+++ b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/TextDrawComponent.jsx
@@ -0,0 +1,15 @@
+import React, { PropTypes } from 'react';
+
+export default class TextDrawComponent extends React.Component {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return (
+
+
+
+ );
+ }
+}
diff --git a/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/TriangleDrawComponent.jsx b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/TriangleDrawComponent.jsx
new file mode 100755
index 0000000000..580ec7c034
--- /dev/null
+++ b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/TriangleDrawComponent.jsx
@@ -0,0 +1,15 @@
+import React, { PropTypes } from 'react';
+
+export default class TriangleDrawComponent extends React.Component {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return (
+
+ );
+ }
+}
+
+
diff --git a/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/WhiteboardPaper.jsx b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/WhiteboardPaper.jsx
new file mode 100755
index 0000000000..e5e9c96c38
--- /dev/null
+++ b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/WhiteboardPaper.jsx
@@ -0,0 +1,84 @@
+import React, { PropTypes } from 'react';
+import Svg from '../../shared/Svg.jsx';
+
+export default class WhiteboardPaper extends React.Component {
+ constructor(props) {
+ super(props);
+ //var Component = allComponents['Svg'];
+ }
+
+ render() {
+ var allComponents = { 'Svg': Svg };
+ var test = 'Svg';
+ var Component = allComponents[test];
+ return (
+
+ );
+ }
+}
+
+WhiteboardPaper.defaultProps = {
+ svgProps: {
+ width:'1134',
+ height:'850.5',
+ preserveAspectRatio: 'xMinYMin slice',
+ viewBox:'0 0 1134 850.5',
+ },
+ svgStyle: {
+ overflow: 'hidden',
+ position: 'relative',
+ },
+};
+
+/*
+
+
+
+
+*/
+
+ /* getDefaultProps: function() {
+ return {
+ id: 'whiteboard-paper',
+ version: '1.1',
+ xmlns: 'http://www.w3.org/2000/svg',
+ width:'1134',
+ height:'850.5',
+ style: 'overflow: hidden; position: relative;',
+ preserveAspectRatio: 'xMinYMin slice',
+ viewBox:'0 0 1134 850.5'
+ };
+ },
+*/
+
+/*
+
+SvgContainer.propTypes = {
+ children: function (props, propName, componentName) {
+ var error;
+ var prop = props[propName];
+
+ React.Children.forEach(prop, function (child) {
+ if (child.type !== 'Shape') {
+ error = new Error(
+ '`' + componentName + '` only accepts children of type `Shape`.'
+ );
+ }
+ });
+ return error;
+ }
+ },,
+};
+*/
diff --git a/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/WhiteboardShapeModel.jsx b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/WhiteboardShapeModel.jsx
new file mode 100755
index 0000000000..02e7b22a59
--- /dev/null
+++ b/bigbluebutton-html5/imports/ui/whiteboard/whiteboard_marks/WhiteboardShapeModel.jsx
@@ -0,0 +1,25 @@
+import React, { PropTypes } from 'react';
+
+export default class WhiteboardShapeModel extends React.Component {
+ constructor(props) {
+ super(props);
+ }
+
+ render() {
+ return (
+
+
+ );
+ }
+}
+
+WhiteboardPaper.defaultProps = {
+ shapes: {
+ 'ellipse': Ellipse,
+ 'line': Line,
+ 'poll': Poll,
+ 'rectangle': Rectangle,
+ 'text': Text,
+ 'triangle': Triangle,
+ },
+};