2014-08-12 16:10:52 +02:00
<!doctype html>
< html xmlns:ng = "http://angularjs.org" ng-app = "matrixWebClient" ng-controller = "MatrixWebClientController" >
< head >
< title > [matrix]< / title >
2014-08-23 21:45:00 +02:00
2014-08-12 16:10:52 +02:00
< link rel = "stylesheet" href = "app.css" >
2014-08-31 01:40:42 +02:00
< link rel = "stylesheet" href = "mobile.css" >
2014-10-27 17:28:33 +01:00
< link rel = "stylesheet" href = "bootstrap.css" >
2014-08-31 01:40:42 +02:00
2014-08-12 16:10:52 +02:00
< link rel = "icon" href = "favicon.ico" >
2014-08-15 18:42:02 +02:00
2014-08-23 21:45:00 +02:00
< meta name = "viewport" content = "width=device-width" >
2014-09-05 22:31:47 +02:00
< script type = 'text/javascript' src = 'js/jquery-1.8.3.min.js' > < / script >
2014-09-06 18:47:30 +02:00
< script type = "text/javascript" src = "https://www.google.com/recaptcha/api/js/recaptcha_ajax.js" > < / script >
2014-08-16 23:09:42 +02:00
< script src = "js/angular.min.js" > < / script >
< script src = "js/angular-route.min.js" > < / script >
2014-08-16 23:21:52 +02:00
< script src = "js/angular-sanitize.min.js" > < / script >
2014-09-10 16:45:09 +02:00
< script src = "js/angular-animate.min.js" > < / script >
2014-10-27 17:28:33 +01:00
< script type = 'text/javascript' src = "js/ui-bootstrap-tpls-0.11.2.js" > < / script >
2014-08-15 18:42:02 +02:00
< script type = 'text/javascript' src = 'js/ng-infinite-scroll-matrix.js' > < / script >
2014-09-11 15:07:44 +02:00
< script type = 'text/javascript' src = 'js/autofill-event.js' > < / script >
2014-10-30 17:21:27 +01:00
< script type = 'text/javascript' src = 'js/elastic.js' > < / script >
2014-08-12 16:10:52 +02:00
< script src = "app.js" > < / script >
2014-09-06 02:36:09 +02:00
< script src = "config.js" > < / script >
2014-08-12 16:10:52 +02:00
< script src = "app-controller.js" > < / script >
2014-08-20 11:28:36 +02:00
< script src = "app-directive.js" > < / script >
< script src = "app-filter.js" > < / script >
2014-08-22 18:08:03 +02:00
< script src = "home/home-controller.js" > < / script >
2014-08-12 16:10:52 +02:00
< script src = "login/login-controller.js" > < / script >
2014-08-31 01:40:42 +02:00
< script src = "login/register-controller.js" > < / script >
2014-08-27 15:09:16 +02:00
< script src = "recents/recents-controller.js" > < / script >
2014-08-27 15:50:07 +02:00
< script src = "recents/recents-filter.js" > < / script >
2014-08-12 16:10:52 +02:00
< script src = "room/room-controller.js" > < / script >
2014-08-20 11:28:36 +02:00
< script src = "room/room-directive.js" > < / script >
2014-08-22 17:11:39 +02:00
< script src = "settings/settings-controller.js" > < / script >
2014-08-18 18:05:42 +02:00
< script src = "user/user-controller.js" > < / script >
2014-08-12 16:10:52 +02:00
< script src = "components/matrix/matrix-service.js" > < / script >
2014-09-04 11:19:28 +02:00
< script src = "components/matrix/matrix-filter.js" > < / script >
2014-08-27 19:57:54 +02:00
< script src = "components/matrix/matrix-call.js" > < / script >
< script src = "components/matrix/matrix-phone-service.js" > < / script >
2014-08-15 11:20:14 +02:00
< script src = "components/matrix/event-stream-service.js" > < / script >
2014-08-15 12:31:13 +02:00
< script src = "components/matrix/event-handler-service.js" > < / script >
2014-10-31 12:20:07 +01:00
< script src = "components/matrix/notification-service.js" > < / script >
2014-08-26 16:25:27 +02:00
< script src = "components/matrix/presence-service.js" > < / script >
2014-08-14 11:36:11 +02:00
< script src = "components/fileInput/file-input-directive.js" > < / script >
2014-08-14 18:39:23 +02:00
< script src = "components/fileUpload/file-upload-service.js" > < / script >
2014-08-20 16:18:50 +02:00
< script src = "components/utilities/utilities-service.js" > < / script >
2014-08-12 16:10:52 +02:00
< / head >
< body >
2014-09-18 16:51:30 +02:00
< div id = "videoBackground" ng-class = "videoMode" >
< div id = "videoContainer" ng-class = "videoMode" >
2014-09-19 17:18:15 +02:00
< div id = "videoContainerPadding" > < / div >
2014-09-18 16:51:30 +02:00
< video id = "localVideo" 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 >
2014-09-19 17:18:15 +02:00
< video id = "remoteVideo" ng-class = "[videoMode, currentCall.state]" ng-show = "currentCall && currentCall.type == 'video' && (currentCall.state == 'connected' || (currentCall.state == 'ended' && currentCall.didConnect))" > < / video >
2014-09-18 16:51:30 +02:00
< / div >
< / div >
2014-08-12 16:10:52 +02:00
2014-08-31 01:40:42 +02:00
< div id = "header" >
2014-08-12 16:10:52 +02:00
<!-- Do not show buttons on the login page -->
2014-08-31 01:40:42 +02:00
< div id = "headerContent" ng-hide = "'/login' == location || '/register' == location" >
2014-09-06 01:14:02 +02:00
< div id = "callBar" ng-show = "currentCall" >
< img id = "callPeerImage" ng-show = "currentCall.userProfile.avatar_url" ngSrc = "{{ currentCall.userProfile.avatar_url }}" / >
< img class = "callIcon" src = "img/green_phone.png" ng-show = "currentCall.state != 'ended'" / >
< img class = "callIcon" id = "callEndedIcon" src = "img/red_phone.png" ng-show = "currentCall.state == 'ended'" / >
< 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 16:51:30 +02: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-06 01:14:02 +02:00
< span ng-show = "currentCall.state == 'connecting'" > Call Connecting...< / span >
< span ng-show = "currentCall.state == 'connected'" > Call Connected< / span >
2014-09-25 12:13:32 +02: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 11:54:14 +02: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-06 01:14:02 +02:00
< span ng-show = "currentCall.state == 'wait_local_media'" > Waiting for media permission...< / span >
< / span >
2014-09-01 18:15:26 +02:00
< / div >
2014-09-06 01:14:02 +02:00
< span ng-show = "currentCall.state == 'ringing'" >
2014-09-19 19:22:14 +02:00
< button ng-click = "answerCall()" ng-disabled = "!isWebRTCSupported" title = "{{isWebRTCSupported ? '' : 'Your browser does not support VoIP' }}" > Answer {{ currentCall.type }} call< / button >
2014-09-06 01:14:02 +02:00
< button ng-click = "hangupCall()" > Reject< / button >
< / span >
2014-09-01 18:15:26 +02:00
< button ng-click = "hangupCall()" ng-show = "currentCall && currentCall.state != 'ringing' && currentCall.state != 'ended' && currentCall.state != 'fledgling'" > Hang up< / button >
2014-09-08 17:10:36 +02: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 18:15:26 +02:00
< / div >
2014-09-17 17:26:35 +02:00
2014-08-31 01:40:42 +02:00
< a href id = "headerUserId" ng-click = 'goToUserPage(user_id)' > {{ user_id }}< / a >
2014-08-30 01:44:56 +02:00
< button ng-click = 'goToPage("/")' > Home< / button >
2014-08-27 10:25:27 +02:00
< button ng-click = 'goToPage("settings")' > Settings< / button >
2014-08-12 16:10:52 +02:00
< button ng-click = "logout()" > Log out< / button >
< / div >
2014-08-31 01:40:42 +02:00
< / div >
2014-08-12 16:10:52 +02:00
2014-09-19 15:18:30 +02:00
< div class = "page" ng-hide = "unsupportedBrowser" ng-view > < / div >
2014-08-12 16:10:52 +02:00
2014-09-19 15:18:30 +02: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-31 01:40:42 +02:00
< div id = "footerContent" >
2014-09-01 17:22:57 +02:00
© 2014 Matrix.org
2014-08-31 01:40:42 +02:00
< / div >
< / div >
2014-08-12 16:10:52 +02:00
< / body >
< / html >