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