2014-08-12 14:10:52 +00:00
<!doctype html>
< html xmlns:ng = "http://angularjs.org" ng-app = "matrixWebClient" ng-controller = "MatrixWebClientController" >
< head >
< title > [matrix]< / title >
2014-08-23 19:45:00 +00:00
2014-08-12 14:10:52 +00:00
< link rel = "stylesheet" href = "app.css" >
2014-08-30 23:40:42 +00:00
< link rel = "stylesheet" href = "mobile.css" >
2014-10-27 16:28:33 +00:00
< link rel = "stylesheet" href = "bootstrap.css" >
2014-08-30 23:40:42 +00:00
2014-08-12 14:10:52 +00:00
< link rel = "icon" href = "favicon.ico" >
2014-08-15 16:42:02 +00:00
2014-08-23 19:45:00 +00:00
< meta name = "viewport" content = "width=device-width" >
2014-09-05 20:31:47 +00:00
< script type = 'text/javascript' src = 'js/jquery-1.8.3.min.js' > < / script >
2014-09-06 16:47:30 +00:00
< script type = "text/javascript" src = "https://www.google.com/recaptcha/api/js/recaptcha_ajax.js" > < / script >
2014-10-31 16:22:15 +00:00
< script src = "js/angular.js" > < / script >
2014-08-16 21:09:42 +00:00
< script src = "js/angular-route.min.js" > < / script >
2014-08-16 21:21:52 +00:00
< script src = "js/angular-sanitize.min.js" > < / script >
2014-11-11 04:39:16 +00:00
< script src = "js/jquery.peity.min.js" > < / script >
< script src = "js/angular-peity.js" > < / script >
2014-10-27 16:28:33 +00:00
< script type = 'text/javascript' src = "js/ui-bootstrap-tpls-0.11.2.js" > < / script >
2014-08-15 16:42:02 +00:00
< script type = 'text/javascript' src = 'js/ng-infinite-scroll-matrix.js' > < / script >
2014-09-11 13:07:44 +00:00
< script type = 'text/javascript' src = 'js/autofill-event.js' > < / script >
2014-10-30 16:21:27 +00:00
< script type = 'text/javascript' src = 'js/elastic.js' > < / script >
2014-08-12 14:10:52 +00:00
< script src = "app.js" > < / script >
2014-09-06 00:36:09 +00:00
< script src = "config.js" > < / script >
2014-08-12 14:10:52 +00:00
< script src = "app-controller.js" > < / script >
2014-08-20 09:28:36 +00:00
< script src = "app-directive.js" > < / script >
< script src = "app-filter.js" > < / script >
2014-08-22 16:08:03 +00:00
< script src = "home/home-controller.js" > < / script >
2014-08-12 14:10:52 +00:00
< script src = "login/login-controller.js" > < / script >
2014-08-30 23:40:42 +00:00
< script src = "login/register-controller.js" > < / script >
2014-08-27 13:09:16 +00:00
< script src = "recents/recents-controller.js" > < / script >
2014-08-27 13:50:07 +00:00
< script src = "recents/recents-filter.js" > < / script >
2014-08-12 14:10:52 +00:00
< script src = "room/room-controller.js" > < / script >
2014-08-20 09:28:36 +00:00
< script src = "room/room-directive.js" > < / script >
2014-08-22 15:11:39 +00:00
< script src = "settings/settings-controller.js" > < / script >
2014-08-18 16:05:42 +00:00
< script src = "user/user-controller.js" > < / script >
2014-08-12 14:10:52 +00:00
< script src = "components/matrix/matrix-service.js" > < / script >
2014-09-04 09:19:28 +00:00
< script src = "components/matrix/matrix-filter.js" > < / script >
2014-08-27 17:57:54 +00:00
< script src = "components/matrix/matrix-call.js" > < / script >
< script src = "components/matrix/matrix-phone-service.js" > < / script >
2014-08-15 09:20:14 +00:00
< script src = "components/matrix/event-stream-service.js" > < / script >
2014-08-15 10:31:13 +00:00
< script src = "components/matrix/event-handler-service.js" > < / script >
2014-10-31 11:20:07 +00:00
< script src = "components/matrix/notification-service.js" > < / script >
2014-11-12 14:55:57 +00:00
< script src = "components/matrix/recents-service.js" > < / script >
2014-11-13 11:55:02 +00:00
< script src = "components/matrix/commands-service.js" > < / script >
2014-10-31 14:26:51 +00:00
< script src = "components/matrix/model-service.js" > < / script >
2014-08-26 14:25:27 +00:00
< script src = "components/matrix/presence-service.js" > < / script >
2014-08-14 09:36:11 +00:00
< script src = "components/fileInput/file-input-directive.js" > < / script >
2014-08-14 16:39:23 +00:00
< script src = "components/fileUpload/file-upload-service.js" > < / script >
2014-08-20 14:18:50 +00:00
< script src = "components/utilities/utilities-service.js" > < / script >
2014-08-12 14:10:52 +00:00
< / head >
< body >
2014-09-18 14:51:30 +00:00
< div id = "videoBackground" ng-class = "videoMode" >
< div id = "videoContainer" ng-class = "videoMode" >
2014-09-19 15:18:15 +00:00
< div id = "videoContainerPadding" > < / div >
2014-11-07 17:56:28 +00:00
< div ng-class = "[videoMode, currentCall.state]" ng-show = "currentCall && currentCall.type == 'video' && (currentCall.state == 'connected' || currentCall.state == 'connecting' || currentCall.state == 'invite_sent' || currentCall.state == 'ended')" > < video id = "localVideo" > < / video > < / div >
< div ng-class = "[videoMode, currentCall.state]" ng-show = "currentCall && currentCall.type == 'video' && (currentCall.state == 'connected' || (currentCall.state == 'ended' && currentCall.didConnect))" > < video id = "remoteVideo" > < / video > < / div >
2014-09-18 14:51:30 +00:00
< / div >
< / div >
2014-08-12 14:10:52 +00:00
2014-08-30 23:40:42 +00:00
< div id = "header" >
2014-08-12 14:10:52 +00:00
<!-- Do not show buttons on the login page -->
2014-08-30 23:40:42 +00:00
< div id = "headerContent" ng-hide = "'/login' == location || '/register' == location" >
2014-09-05 23:14:02 +00:00
< div id = "callBar" ng-show = "currentCall" >
< img id = "callPeerImage" ng-show = "currentCall.userProfile.avatar_url" ngSrc = "{{ currentCall.userProfile.avatar_url }}" / >
2014-11-13 14:34:03 +00:00
< img class = "callIcon" src = "img/green_phone.png" ng-show = "!!currentCall" ng-class = "currentCall.state" / >
2014-09-05 23:14:02 +00:00
< div id = "callPeerNameAndState" >
< span id = "callPeerName" > {{ currentCall.userProfile.displayname }}< / span >
< br / >
< span id = "callState" >
< span ng-show = "currentCall.state == 'invite_sent'" > Calling...< / span >
2014-09-18 14:51:30 +00:00
< span ng-show = "currentCall.state == 'ringing' && currentCall && currentCall.type == 'video'" > Incoming Video Call< / span >
< span ng-show = "currentCall.state == 'ringing' && currentCall && currentCall.type == 'voice'" > Incoming Voice Call< / span >
2014-09-05 23:14:02 +00:00
< span ng-show = "currentCall.state == 'connecting'" > Call Connecting...< / span >
< span ng-show = "currentCall.state == 'connected'" > Call Connected< / span >
2014-09-25 10:13:32 +00:00
< span ng-show = "currentCall.state == 'ended' && currentCall.hangupReason == 'ice_failed'" > Media Connection Failed{{ haveTurn ? "" : " (VoIP relaying unsupported by Home Server)" }}< / span >
2014-09-22 09:54:14 +00:00
< span ng-show = "currentCall.state == 'ended' && !currentCall.hangupReason && !currentCall.didConnect && currentCall.direction == 'outbound' && currentCall.hangupParty == 'remote'" > Call Rejected< / span >
< span ng-show = "currentCall.state == 'ended' && !currentCall.hangupReason && !currentCall.didConnect && currentCall.direction == 'outbound' && currentCall.hangupParty == 'local'" > Call Canceled< / span >
< span ng-show = "currentCall.state == 'ended' && currentCall.hangupReason == 'invite_timeout' && !currentCall.didConnect && currentCall.direction == 'outbound' && currentCall.hangupParty == 'local'" > User Not Responding< / span >
< span ng-show = "currentCall.state == 'ended' && !currentCall.hangupReason && currentCall.didConnect && currentCall.direction == 'outbound'" > Call Ended< / span >
< span ng-show = "currentCall.state == 'ended' && !currentCall.hangupReason && !currentCall.didConnect && currentCall.direction == 'inbound'" > Call Canceled< / span >
< span ng-show = "currentCall.state == 'ended' && !currentCall.hangupReason && currentCall.didConnect && currentCall.direction == 'inbound'" > Call Ended< / span >
2014-09-05 23:14:02 +00:00
< span ng-show = "currentCall.state == 'wait_local_media'" > Waiting for media permission...< / span >
< / span >
2014-09-01 16:15:26 +00:00
< / div >
2014-09-05 23:14:02 +00:00
< span ng-show = "currentCall.state == 'ringing'" >
2014-11-06 16:48:01 +00:00
< button ng-click = "answerCall()" ng-disabled = "!isWebRTCSupported()" title = "{{isWebRTCSupported() ? '' : 'Your browser does not support VoIP' }}" > Answer {{ currentCall.type }} call< / button >
2014-09-05 23:14:02 +00:00
< button ng-click = "hangupCall()" > Reject< / button >
< / span >
2014-09-01 16:15:26 +00:00
< button ng-click = "hangupCall()" ng-show = "currentCall && currentCall.state != 'ringing' && currentCall.state != 'ended' && currentCall.state != 'fledgling'" > Hang up< / button >
2014-09-08 15:10:36 +00:00
< audio id = "ringAudio" loop >
< source src = "media/ring.ogg" type = "audio/ogg" / >
< source src = "media/ring.mp3" type = "audio/mpeg" / >
< / audio >
< audio id = "ringbackAudio" loop >
< source src = "media/ringback.ogg" type = "audio/ogg" / >
< source src = "media/ringback.mp3" type = "audio/mpeg" / >
< / audio >
< audio id = "callendAudio" >
< source src = "media/callend.ogg" type = "audio/ogg" / >
< source src = "media/callend.mp3" type = "audio/mpeg" / >
< / audio >
< audio id = "busyAudio" >
< source src = "media/busy.ogg" type = "audio/ogg" / >
< source src = "media/busy.mp3" type = "audio/mpeg" / >
< / audio >
2014-09-01 16:15:26 +00:00
< / div >
2014-09-17 15:26:35 +00:00
2014-08-30 23:40:42 +00:00
< a href id = "headerUserId" ng-click = 'goToUserPage(user_id)' > {{ user_id }}< / a >
2014-08-29 23:44:56 +00:00
< button ng-click = 'goToPage("/")' > Home< / button >
2014-08-27 08:25:27 +00:00
< button ng-click = 'goToPage("settings")' > Settings< / button >
2014-08-12 14:10:52 +00:00
< button ng-click = "logout()" > Log out< / button >
< / div >
2014-08-30 23:40:42 +00:00
< / div >
2014-08-12 14:10:52 +00:00
2014-09-19 13:18:30 +00:00
< div class = "page" ng-hide = "unsupportedBrowser" ng-view > < / div >
2014-08-12 14:10:52 +00:00
2014-09-19 13:18:30 +00:00
< div class = "page" ng-show = "unsupportedBrowser" >
< div id = "unsupportedBrowser" ng-show = "unsupportedBrowser" >
Sorry, your browser is not supported. < br / >
Reason: {{ unsupportedBrowser.reason }}
< br / > < br / >
Your browser: < br / >
{{ unsupportedBrowser.browser }}
< / div >
< / div >
< div id = "footer" ng-hide = "location.indexOf('/room') === 0" >
2014-08-30 23:40:42 +00:00
< div id = "footerContent" >
2014-09-01 15:22:57 +00:00
© 2014 Matrix.org
2014-08-30 23:40:42 +00:00
< / div >
< / div >
2014-08-12 14:10:52 +00:00
< / body >
< / html >