parent
9c6d6e4f00
commit
9d1d664b02
@ -1,3 +1,17 @@
|
|||||||
|
.navbar-nav > li {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.tg_page_head .navbar > .container .navbar-brand {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
.navbar-header {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.navbar-right {
|
||||||
|
float: right;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
/** initial setup **/
|
/** initial setup **/
|
||||||
.nano {
|
.nano {
|
||||||
position : relative;
|
position : relative;
|
||||||
@ -117,10 +131,17 @@ a.footer_lang_link {
|
|||||||
a.footer_lang_link.active {
|
a.footer_lang_link.active {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
a.footer_link {
|
||||||
|
color: #9cacb9;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 0 3px;
|
||||||
|
}
|
||||||
.footer_brand:hover,
|
.footer_brand:hover,
|
||||||
.footer_brand:active,
|
.footer_brand:active,
|
||||||
a.footer_lang_link.active:hover,
|
a.footer_lang_link.active:hover,
|
||||||
a.footer_lang_link.active:active {
|
a.footer_lang_link.active:active,
|
||||||
|
a.footer_link.active:hover,
|
||||||
|
a.footer_link.active:active {
|
||||||
color: #8499aa;
|
color: #8499aa;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
@ -751,6 +772,18 @@ div.im_panel_own_photo {
|
|||||||
.settings_version {
|
.settings_version {
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
.modal_section_body dl.settings_modal_language {
|
||||||
|
margin: 3px 0;
|
||||||
|
}
|
||||||
|
.modal_section_body dl.settings_modal_language dt {
|
||||||
|
padding-top: 2px;
|
||||||
|
}
|
||||||
|
.settings_modal_language_select {
|
||||||
|
font-size: 12px;
|
||||||
|
height: 21px;
|
||||||
|
line-height: 21px;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
.icon-volume-outer {
|
.icon-volume-outer {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
background: #c7c7c7;
|
background: #c7c7c7;
|
||||||
|
@ -114,6 +114,7 @@ html {
|
|||||||
|
|
||||||
.tg_page_head .navbar-quick-nav {
|
.tg_page_head .navbar-quick-nav {
|
||||||
display: block;
|
display: block;
|
||||||
|
float: none;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
.tg_page_head .navbar-quick-nav li {
|
.tg_page_head .navbar-quick-nav li {
|
||||||
@ -382,6 +383,10 @@ html {
|
|||||||
width: auto;
|
width: auto;
|
||||||
max-width: 250px;
|
max-width: 250px;
|
||||||
}
|
}
|
||||||
|
.im_message_video {
|
||||||
|
width: auto;
|
||||||
|
max-width: 250px;
|
||||||
|
}
|
||||||
.im_message_document {
|
.im_message_document {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
@ -798,7 +803,7 @@ a.im_message_fwd_author {
|
|||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
.mobile_modal .modal-dialog {
|
.mobile_modal .modal-dialog {
|
||||||
margin: 0;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
.mobile_modal .modal-content .modal-body {
|
.mobile_modal .modal-content .modal-body {
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
angular.module('myApp.controllers', ['myApp.i18n'])
|
angular.module('myApp.controllers', ['myApp.i18n'])
|
||||||
|
|
||||||
.controller('AppWelcomeController', function($scope, $location, MtpApiManager, ErrorService, ChangelogNotifyService) {
|
.controller('AppWelcomeController', function($scope, $location, MtpApiManager, ErrorService, ChangelogNotifyService, LayoutSwitchService) {
|
||||||
MtpApiManager.getUserID().then(function (id) {
|
MtpApiManager.getUserID().then(function (id) {
|
||||||
if (id) {
|
if (id) {
|
||||||
$location.url('/im');
|
$location.url('/im');
|
||||||
@ -21,9 +21,10 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
});
|
});
|
||||||
|
|
||||||
ChangelogNotifyService.checkUpdate();
|
ChangelogNotifyService.checkUpdate();
|
||||||
|
LayoutSwitchService.start();
|
||||||
})
|
})
|
||||||
|
|
||||||
.controller('AppLoginController', function ($scope, $rootScope, $location, $timeout, $modal, $modalStack, MtpApiManager, ErrorService, NotificationsManager, ChangelogNotifyService, IdleManager, _) {
|
.controller('AppLoginController', function ($scope, $rootScope, $location, $timeout, $modal, $modalStack, MtpApiManager, ErrorService, NotificationsManager, ChangelogNotifyService, IdleManager, LayoutSwitchService, _) {
|
||||||
|
|
||||||
$modalStack.dismissAll();
|
$modalStack.dismissAll();
|
||||||
IdleManager.start();
|
IdleManager.start();
|
||||||
@ -298,9 +299,10 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
};
|
};
|
||||||
|
|
||||||
ChangelogNotifyService.checkUpdate();
|
ChangelogNotifyService.checkUpdate();
|
||||||
|
LayoutSwitchService.start();
|
||||||
})
|
})
|
||||||
|
|
||||||
.controller('AppIMController', function ($scope, $location, $routeParams, $modal, $rootScope, $modalStack, MtpApiManager, AppUsersManager, AppChatsManager, ContactsSelectService, ChangelogNotifyService, ErrorService, AppRuntimeManager, HttpsMigrateService) {
|
.controller('AppIMController', function ($scope, $location, $routeParams, $modal, $rootScope, $modalStack, MtpApiManager, AppUsersManager, AppChatsManager, ContactsSelectService, ChangelogNotifyService, ErrorService, AppRuntimeManager, HttpsMigrateService, LayoutSwitchService) {
|
||||||
|
|
||||||
$scope.$on('$routeUpdate', updateCurDialog);
|
$scope.$on('$routeUpdate', updateCurDialog);
|
||||||
|
|
||||||
@ -429,6 +431,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
|
|
||||||
ChangelogNotifyService.checkUpdate();
|
ChangelogNotifyService.checkUpdate();
|
||||||
HttpsMigrateService.start();
|
HttpsMigrateService.start();
|
||||||
|
LayoutSwitchService.start();
|
||||||
})
|
})
|
||||||
|
|
||||||
.controller('AppImDialogsController', function ($scope, $location, $q, $timeout, $routeParams, MtpApiManager, AppUsersManager, AppChatsManager, AppMessagesManager, AppPeersManager, PhonebookContactsService, ErrorService) {
|
.controller('AppImDialogsController', function ($scope, $location, $q, $timeout, $routeParams, MtpApiManager, AppUsersManager, AppChatsManager, AppMessagesManager, AppPeersManager, PhonebookContactsService, ErrorService) {
|
||||||
@ -1482,6 +1485,12 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
|
.controller('AppFooterController', function ($scope, LayoutSwitchService) {
|
||||||
|
$scope.switchLayout = function (mobile) {
|
||||||
|
LayoutSwitchService.switchLayout(mobile);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
.controller('PhotoModalController', function ($q, $scope, $rootScope, $modalInstance, AppPhotosManager, AppMessagesManager, AppPeersManager, PeersSelectService, ErrorService) {
|
.controller('PhotoModalController', function ($q, $scope, $rootScope, $modalInstance, AppPhotosManager, AppMessagesManager, AppPeersManager, PeersSelectService, ErrorService) {
|
||||||
|
|
||||||
$scope.photo = AppPhotosManager.wrapForFull($scope.photoID);
|
$scope.photo = AppPhotosManager.wrapForFull($scope.photoID);
|
||||||
|
@ -26,6 +26,13 @@ angular.module('myApp.directives', ['myApp.filters'])
|
|||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
|
.directive('myFooter', function() {
|
||||||
|
return {
|
||||||
|
restrict: 'AE',
|
||||||
|
templateUrl: templateUrl('footer')
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
.directive('myDialog', function() {
|
.directive('myDialog', function() {
|
||||||
return {
|
return {
|
||||||
restrict: 'AE',
|
restrict: 'AE',
|
||||||
|
@ -129,6 +129,8 @@
|
|||||||
"confirm_modal_share_file_peer": "Share with {peer}?",
|
"confirm_modal_share_file_peer": "Share with {peer}?",
|
||||||
"confirm_modal_apply_lang_with_reload_md": "Reload the App to apply language?",
|
"confirm_modal_apply_lang_with_reload_md": "Reload the App to apply language?",
|
||||||
"confirm_modal_migrate_to_https_md": "Telegram Web now supports additional SSL encryption. Would you like to switch to HTTPS?\nThe HTTP version will be disabled soon.",
|
"confirm_modal_migrate_to_https_md": "Telegram Web now supports additional SSL encryption. Would you like to switch to HTTPS?\nThe HTTP version will be disabled soon.",
|
||||||
|
"confirm_modal_resize_desktop_md": "Would you like to switch to desktop version?",
|
||||||
|
"confirm_modal_resize_mobile_md": "Would you like to switch to mobile version?",
|
||||||
"confirm_modal_are_u_sure": "Are you sure?",
|
"confirm_modal_are_u_sure": "Are you sure?",
|
||||||
|
|
||||||
"confirm_modal_logout_submit": "Log Out",
|
"confirm_modal_logout_submit": "Log Out",
|
||||||
@ -255,6 +257,9 @@
|
|||||||
"head_retry": "Retry",
|
"head_retry": "Retry",
|
||||||
"head_connecting": "Connecting",
|
"head_connecting": "Connecting",
|
||||||
|
|
||||||
|
"footer_twitter": "Twitter",
|
||||||
|
|
||||||
|
|
||||||
"im_new_group": "New Group",
|
"im_new_group": "New Group",
|
||||||
"im_new_contact": "New Contact",
|
"im_new_contact": "New Contact",
|
||||||
"im_contacts": "Contacts",
|
"im_contacts": "Contacts",
|
||||||
|
@ -3922,3 +3922,69 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
|
|||||||
check: check
|
check: check
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
.service('LayoutSwitchService', function (ErrorService, Storage, AppRuntimeManager, $window) {
|
||||||
|
|
||||||
|
var started = false;
|
||||||
|
var resizeLayoutSplit = 480;
|
||||||
|
var layoutSplitMaxMobile = 600;
|
||||||
|
var layoutSplitMinMobile = 500;
|
||||||
|
var confirmShown = false;
|
||||||
|
|
||||||
|
function switchLayout(mobile) {
|
||||||
|
Storage.set({
|
||||||
|
current_layout: mobile ? 'mobile' : 'desktop',
|
||||||
|
layout_confirmed: {width: $(window).width(), mobile: mobile}
|
||||||
|
}).then(function () {
|
||||||
|
AppRuntimeManager.reload();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function layoutCheck (e) {
|
||||||
|
if (confirmShown) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var width = $(window).width();
|
||||||
|
if (!e && Config.Mobile && width <= 800) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var newMobile = width < 480;
|
||||||
|
if (newMobile != Config.Mobile) {
|
||||||
|
Storage.get('layout_confirmed').then(function (result) {
|
||||||
|
if (result &&
|
||||||
|
(result.mobile
|
||||||
|
? width <= result.width
|
||||||
|
: width >= result.width
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
confirmShown = true;
|
||||||
|
ErrorService.confirm({
|
||||||
|
type: newMobile ? 'SWITCH_MOBILE_VERSION' : 'SWITCH_DESKTOP_VERSION'
|
||||||
|
}).then(function () {
|
||||||
|
Storage.remove('layout_confirmed');
|
||||||
|
switchLayout(newMobile);
|
||||||
|
}, function () {
|
||||||
|
Storage.set({layout_confirmed: {width: width, mobile: Config.Mobile}});
|
||||||
|
confirmShown = false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function start () {
|
||||||
|
if (started || Config.Navigator.mobile) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
started = true;
|
||||||
|
layoutCheck();
|
||||||
|
$($window).on('resize', layoutCheck);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
start: start,
|
||||||
|
switchLayout: switchLayout
|
||||||
|
}
|
||||||
|
})
|
||||||
|
@ -37,6 +37,8 @@
|
|||||||
</my-i18n>
|
</my-i18n>
|
||||||
<div ng-switch-when="APPLY_LANG_WITH_RELOAD" my-i18n="confirm_modal_apply_lang_with_reload_md"></div>
|
<div ng-switch-when="APPLY_LANG_WITH_RELOAD" my-i18n="confirm_modal_apply_lang_with_reload_md"></div>
|
||||||
<div ng-switch-when="MIGRATE_TO_HTTPS" my-i18n="confirm_modal_migrate_to_https_md"></div>
|
<div ng-switch-when="MIGRATE_TO_HTTPS" my-i18n="confirm_modal_migrate_to_https_md"></div>
|
||||||
|
<div ng-switch-when="SWITCH_DESKTOP_VERSION" my-i18n="confirm_modal_resize_desktop_md"></div>
|
||||||
|
<div ng-switch-when="SWITCH_MOBILE_VERSION" my-i18n="confirm_modal_resize_mobile_md"></div>
|
||||||
<span ng-switch-default ng-switch="message.length > 0">
|
<span ng-switch-default ng-switch="message.length > 0">
|
||||||
<span ng-switch-when="true" ng-bind="message"></span>
|
<span ng-switch-when="true" ng-bind="message"></span>
|
||||||
<span ng-switch-default my-i18n="confirm_modal_are_u_sure"></span>
|
<span ng-switch-default my-i18n="confirm_modal_are_u_sure"></span>
|
||||||
|
5
app/partials/desktop/footer.html
Normal file
5
app/partials/desktop/footer.html
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<div class="footer_wrap" ng-controller="AppFooterController">
|
||||||
|
<a class="footer_link" href="https://telegram.org" target="_blank" my-i18n="head_about"></a>
|
||||||
|
<a class="footer_link" ng-click="openSettings()" my-i18n="im_settings"></a>
|
||||||
|
<a class="footer_link" href="https://twitter.com/telegram_web" target="_blank" my-i18n="footer_twitter"></a>
|
||||||
|
</div>
|
@ -285,4 +285,4 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div my-lang-footer></div>
|
<div my-footer></div>
|
@ -71,6 +71,15 @@
|
|||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
|
<dl class="settings_modal_language" ng-controller="AppLangSelectController">
|
||||||
|
<dt><my-i18n msgid="settings_modal_language"></my-i18n>:</dt>
|
||||||
|
<dd>
|
||||||
|
<select class="form-control settings_modal_language_select" ng-change="localeSelect()" ng-model="form.locale">
|
||||||
|
<option ng-repeat="locale in ::supportedLocales" value="{{locale}}" ng-bind="langNames[locale]" ng-selected="locale == curLocale"></option>
|
||||||
|
</select>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user