Browse Source

Added public page.

Signed-off-by: Ivan Sein <ivan@nextcloud.com>
pull/117/head
Ivan Sein 9 years ago
parent
commit
f7d5f4c42b
  1. 60
      js/app.js
  2. 4
      lib/Controller/ApiController.php
  3. 13
      lib/Controller/PageController.php
  4. 54
      templates/index-public.php

60
js/app.js

@ -25,7 +25,8 @@
OCA.SpreedMe = OCA.SpreedMe || {};
var roomChannel = Backbone.Radio.channel('rooms');
var roomChannel = Backbone.Radio.channel('rooms'),
currentUser = oc_current_user;
var App = Marionette.Application.extend({
/** @property {OCA.SpreedMe.Models.RoomCollection} _rooms */
@ -227,23 +228,31 @@
* @param {int} roomId
*/
_setRoomActive: function(roomId) {
this._rooms.forEach(function(room) {
room.set('active', room.get('id') === roomId);
});
if (currentUser) {
this._rooms.forEach(function(room) {
room.set('active', room.get('id') === roomId);
});
}
},
syncRooms: function() {
this._rooms.fetch();
if (currentUser) {
this._rooms.fetch();
}
},
syncAndSetActiveRoom: function(roomId) {
this._rooms.fetch({
success: function() {
roomChannel.trigger('active', roomId);
}
});
if (currentUser) {
this._rooms.fetch({
success: function() {
roomChannel.trigger('active', roomId);
}
});
}
},
initialize: function() {
this._rooms = new OCA.SpreedMe.Models.RoomCollection();
this.listenTo(roomChannel, 'active', this._setRoomActive);
if (currentUser) {
this._rooms = new OCA.SpreedMe.Models.RoomCollection();
this.listenTo(roomChannel, 'active', this._setRoomActive);
}
$(document).on('click', this.onDocumentClick);
},
@ -252,8 +261,12 @@
var self = this;
OCA.SpreedMe.initWebRTC();
OCA.SpreedMe.initRooms();
OCA.SpreedMe.Rooms.leaveAllRooms();
if (currentUser) {
OCA.SpreedMe.initRooms();
OCA.SpreedMe.Rooms.leaveAllRooms();
}
this._registerPageEvents();
var roomId = parseInt($('#app').attr('data-roomId'), 10);
if (roomId) {
@ -261,15 +274,18 @@
}
OCA.SpreedMe.Rooms.showCamera();
this._showRoomList();
this._rooms.fetch({
success: function() {
$('#app-navigation').removeClass('icon-loading');
self._roomsView.render();
}
});
if (currentUser) {
this._showRoomList();
this._rooms.fetch({
success: function() {
$('#app-navigation').removeClass('icon-loading');
self._roomsView.render();
}
});
this._pollForRoomChanges();
}
this._pollForRoomChanges();
this._startPing();
// disable by default and enable once we get a stream from the webcam

4
lib/Controller/ApiController.php

@ -127,7 +127,7 @@ class ApiController extends Controller {
*/
public function getRoom($roomId) {
try {
$room = $this->manager->getRoomForParticipant($roomId, $this->userId);
$room = $this->manager->getRoomById($roomId);
return new JSONResponse($this->formatRoom($room));
} catch (RoomNotFoundException $e) {
return new JSONResponse([], Http::STATUS_NOT_FOUND);
@ -460,7 +460,7 @@ class ApiController extends Controller {
*/
public function ping($roomId) {
try {
$room = $this->manager->getRoomForParticipant($roomId, $this->userId);
$room = $this->manager->getRoomById($roomId);
} catch (RoomNotFoundException $e) {
return new JSONResponse([], Http::STATUS_NOT_FOUND);
}

13
lib/Controller/PageController.php

@ -35,6 +35,7 @@ use OCP\IDBConnection;
use OCP\IL10N;
use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\Security\ISecureRandom;
class PageController extends Controller {
/** @var string */
@ -47,6 +48,8 @@ class PageController extends Controller {
private $l10n;
/** @var Manager */
private $manager;
/** @var ISecureRandom */
private $secureRandom;
/**
* @param string $appName
@ -56,6 +59,7 @@ class PageController extends Controller {
* @param IURLGenerator $url
* @param IL10N $l10n
* @param Manager $manager
* @param ISecureRandom $secureRandom
*/
public function __construct($appName,
IRequest $request,
@ -63,13 +67,15 @@ class PageController extends Controller {
IDBConnection $dbConnection,
IURLGenerator $url,
IL10N $l10n,
Manager $manager) {
Manager $manager,
ISecureRandom $secureRandom) {
parent::__construct($appName, $request);
$this->userId = $UserId;
$this->dbConnection = $dbConnection;
$this->url = $url;
$this->l10n = $l10n;
$this->manager = $manager;
$this->secureRandom = $secureRandom;
}
/**
@ -128,11 +134,12 @@ class PageController extends Controller {
throw new HintException($this->l10n->t('The room does not exist.'));
}
$newSessionId = $this->secureRandom->generate(255);
$params = [
'sessionId' => 'lukas-fix-rand',
'sessionId' => $newSessionId,
'roomId' => $roomId,
];
$response = new TemplateResponse($this->appName, 'index', $params, 'blank');
$response = new TemplateResponse($this->appName, 'index-public', $params, 'base');
$csp = new ContentSecurityPolicy();
$csp->addAllowedConnectDomain('*');
$csp->addAllowedMediaDomain('blob:');

54
templates/index-public.php

@ -0,0 +1,54 @@
<?php
/** @var \OCP\IL10N $l */
/** @var array $_ */
vendor_script('select2/select2');
vendor_style('select2/select2');
style('spreed', 'style');
script(
'spreed',
[
'vendor/backbone.radio/build/backbone.radio.min',
'vendor/backbone.marionette/lib/backbone.marionette.min',
'models/room',
'models/roomcollection',
'views/roomlistview',
'simplewebrtc',
'webrtc',
'xhrconnection',
'rooms',
'app',
'init',
]
);
?>
<div id="app" data-roomId="<?php p($_['roomId']) ?>">
<div id="app-content" class="participants-1">
<div id="video-speaking">
</div>
<div id="videos">
<div class="videoView videoContainer hidden" id="localVideoContainer">
<video id="localVideo"></video>
<div class="avatar-container hidden">
<div class="avatar"></div>
</div>
<div class="nameIndicator">
<button id="mute" class="icon-audio-white" data-title="<?php p($l->t('Mute audio')) ?>"></button>
<button id="hideVideo" class="icon-video-white" data-title="<?php p($l->t('Pause video')) ?>"></button>
<button id="video-fullscreen" class="icon-fullscreen-white" data-title="<?php p($l->t('Fullscreen')) ?>"></button>
</div>
</div>
</div>
<div id="emptycontent">
<div class="icon-video"></div>
<h2><?php p($l->t('Looking great today! :)')) ?></h2>
<p class="uploadmessage"><?php p($l->t('Time to call your friends')) ?></p>
</div>
</div>
</div>
Loading…
Cancel
Save