Browse Source

users-articles

slavailchenko35 6 năm trước cách đây
commit
cd6cd2d374
100 tập tin đã thay đổi với 72855 bổ sung0 xóa
  1. 49 0
      aaa.html
  2. 7 0
      app/app.config.js
  3. 10 0
      app/app.module.js
  4. 28 0
      app/app.routes.js
  5. 3 0
      app/constants/webApi.constants.js
  6. 66 0
      app/controllers/articles-users.controller.js
  7. 6 0
      app/controllers/globalMap.controller.js
  8. 34 0
      app/controllers/header.controller.js
  9. 24 0
      app/controllers/login.controller.js
  10. 6 0
      app/controllers/map/country/swiss.controller.js
  11. 27 0
      app/controllers/map/europe.controller.js
  12. 28 0
      app/controllers/map/globalMap.controller.js
  13. 23 0
      app/controllers/registration.controller.js
  14. 117 0
      app/controllers/userAccount.controller.js
  15. 14 0
      app/modal/login.template.html
  16. 18 0
      app/modal/registration.template.html
  17. 18 0
      app/services/account.factory.js
  18. 13 0
      app/services/articles.factory.js
  19. 45 0
      app/views/articles-users.template.html
  20. 21 0
      app/views/globalMap.template.html
  21. 21 0
      app/views/header.template.html
  22. 11 0
      app/views/homePage.template.html
  23. 34 0
      app/views/map/country/swissMap.template.html
  24. 58 0
      app/views/map/europMap.template.html
  25. 20 0
      app/views/map/globalMap.template.html
  26. 75 0
      app/views/userAccount.template.html
  27. 413 0
      css/style.css
  28. 101 0
      css/styleGlobalMap.css
  29. 34 0
      fonts/fontawesome/LICENSE.txt
  30. 5 0
      fonts/fontawesome/css/all.css
  31. 5 0
      fonts/fontawesome/css/brands.css
  32. 5 0
      fonts/fontawesome/css/fontawesome.css
  33. 5 0
      fonts/fontawesome/css/regular.css
  34. 5 0
      fonts/fontawesome/css/solid.css
  35. 5 0
      fonts/fontawesome/css/svg-with-js.css
  36. 2170 0
      fonts/fontawesome/css/v4-shims.css
  37. 5 0
      fonts/fontawesome/css/v4-shims.min.css
  38. 5 0
      fonts/fontawesome/js/all.js
  39. 5 0
      fonts/fontawesome/js/brands.js
  40. 5 0
      fonts/fontawesome/js/fontawesome.js
  41. 5 0
      fonts/fontawesome/js/regular.js
  42. 5 0
      fonts/fontawesome/js/solid.js
  43. 5 0
      fonts/fontawesome/js/v4-shims.js
  44. 19 0
      fonts/fontawesome/less/_animated.less
  45. 16 0
      fonts/fontawesome/less/_bordered-pulled.less
  46. 12 0
      fonts/fontawesome/less/_core.less
  47. 6 0
      fonts/fontawesome/less/_fixed-width.less
  48. 1114 0
      fonts/fontawesome/less/_icons.less
  49. 27 0
      fonts/fontawesome/less/_larger.less
  50. 18 0
      fonts/fontawesome/less/_list.less
  51. 57 0
      fonts/fontawesome/less/_mixins.less
  52. 23 0
      fonts/fontawesome/less/_rotated-flipped.less
  53. 5 0
      fonts/fontawesome/less/_screen-reader.less
  54. 2066 0
      fonts/fontawesome/less/_shims.less
  55. 22 0
      fonts/fontawesome/less/_stacked.less
  56. 1123 0
      fonts/fontawesome/less/_variables.less
  57. 17 0
      fonts/fontawesome/less/fa-brands.less
  58. 18 0
      fonts/fontawesome/less/fa-regular.less
  59. 19 0
      fonts/fontawesome/less/fa-solid.less
  60. 16 0
      fonts/fontawesome/less/fontawesome.less
  61. 6 0
      fonts/fontawesome/less/v4-shims.less
  62. 1501 0
      fonts/fontawesome/metadata/categories.yml
  63. 37518 0
      fonts/fontawesome/metadata/icons.json
  64. 12796 0
      fonts/fontawesome/metadata/icons.yml
  65. 2307 0
      fonts/fontawesome/metadata/shims.json
  66. 295 0
      fonts/fontawesome/metadata/shims.yml
  67. 561 0
      fonts/fontawesome/metadata/sponsors.yml
  68. 20 0
      fonts/fontawesome/scss/_animated.scss
  69. 20 0
      fonts/fontawesome/scss/_bordered-pulled.scss
  70. 16 0
      fonts/fontawesome/scss/_core.scss
  71. 6 0
      fonts/fontawesome/scss/_fixed-width.scss
  72. 1114 0
      fonts/fontawesome/scss/_icons.scss
  73. 23 0
      fonts/fontawesome/scss/_larger.scss
  74. 18 0
      fonts/fontawesome/scss/_list.scss
  75. 57 0
      fonts/fontawesome/scss/_mixins.scss
  76. 23 0
      fonts/fontawesome/scss/_rotated-flipped.scss
  77. 5 0
      fonts/fontawesome/scss/_screen-reader.scss
  78. 2066 0
      fonts/fontawesome/scss/_shims.scss
  79. 31 0
      fonts/fontawesome/scss/_stacked.scss
  80. 1127 0
      fonts/fontawesome/scss/_variables.scss
  81. 17 0
      fonts/fontawesome/scss/fa-brands.scss
  82. 18 0
      fonts/fontawesome/scss/fa-regular.scss
  83. 19 0
      fonts/fontawesome/scss/fa-solid.scss
  84. 16 0
      fonts/fontawesome/scss/fontawesome.scss
  85. 6 0
      fonts/fontawesome/scss/v4-shims.scss
  86. 1495 0
      fonts/fontawesome/sprites/brands.svg
  87. 615 0
      fonts/fontawesome/sprites/regular.svg
  88. 2967 0
      fonts/fontawesome/sprites/solid.svg
  89. 5 0
      fonts/fontawesome/svgs/brands/500px.svg
  90. 5 0
      fonts/fontawesome/svgs/brands/accessible-icon.svg
  91. 5 0
      fonts/fontawesome/svgs/brands/accusoft.svg
  92. 5 0
      fonts/fontawesome/svgs/brands/adn.svg
  93. 5 0
      fonts/fontawesome/svgs/brands/adversal.svg
  94. 5 0
      fonts/fontawesome/svgs/brands/affiliatetheme.svg
  95. 5 0
      fonts/fontawesome/svgs/brands/algolia.svg
  96. 5 0
      fonts/fontawesome/svgs/brands/amazon-pay.svg
  97. 5 0
      fonts/fontawesome/svgs/brands/amazon.svg
  98. 5 0
      fonts/fontawesome/svgs/brands/amilia.svg
  99. 5 0
      fonts/fontawesome/svgs/brands/android.svg
  100. 0 0
      fonts/fontawesome/svgs/brands/angellist.svg

+ 49 - 0
aaa.html

@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>Document</title>
+	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/>
+</head>
+<body>
+	<style type="text/css">
+		span {
+			cursor: move;
+		}
+	</style>
+	<ol id="items" style="display: inline-block;">
+		<li><span class="glyphicon glyphicon-move" aria-hidden="true">text 1</span></li>
+		<li><span class="glyphicon glyphicon-move" aria-hidden="true">text 2</span></li>
+		<li><span class="glyphicon glyphicon-move" aria-hidden="true">text 3</span></li>
+		<li><span class="glyphicon glyphicon-move" aria-hidden="true">text 4</span></li>
+		<li><span class="glyphicon glyphicon-move" aria-hidden="true">text 5</span></li>
+	</ol>
+	<ol id="items2" style="display: inline-block;">
+		<li><span class="glyphicon glyphicon-move" aria-hidden="true">text 11</span></li>
+		<li><span class="glyphicon glyphicon-move" aria-hidden="true">text 22</span></li>
+		<li><span class="glyphicon glyphicon-move" aria-hidden="true">text 33</span></li>
+		<li><span class="glyphicon glyphicon-move" aria-hidden="true">text 44</span></li>
+		<li><span class="glyphicon glyphicon-move" aria-hidden="true">text 55</span></li>
+	</ol>
+
+
+	<script type="text/javascript" src="./node_modules/sortablejs/Sortable.js"></script>
+
+	<script type="text/javascript">
+		var el = document.getElementById('items');
+		var sortable = Sortable.create(el, {
+			group: "list",
+			handle: '.glyphicon-move',
+			animation: 150
+		});
+
+		var el2 = document.getElementById('items2');
+		var sortable2 = Sortable.create(el2, {
+			group: "list",
+			handle: '.glyphicon-move',
+			animation: 150
+		});
+	</script>
+	
+</body>
+</html>

+ 7 - 0
app/app.config.js

@@ -0,0 +1,7 @@
+app.run(function($rootScope) {
+    $rootScope.$on("$locationChangeStart", function(event, next, current) {
+    	console.log(event); 
+    	console.log(current); 
+        // handle route changes     
+    });
+});

+ 10 - 0
app/app.module.js

@@ -0,0 +1,10 @@
+var app = angular.module('GuideApp', ['ngRoute', 'ui.bootstrap', 'uiGmapgoogle-maps', 'nemLogging', 'ngAnimate', 'ngTouch'])
+.config(
+    ['uiGmapGoogleMapApiProvider', function(GoogleMapApiProviders) {
+        GoogleMapApiProviders.configure({
+            china: true,
+            v: '3.17'
+        });
+    }]
+);
+

+ 28 - 0
app/app.routes.js

@@ -0,0 +1,28 @@
+app.config(function($routeProvider,$locationProvider){
+    $locationProvider.hashPrefix('');
+    $routeProvider
+                .when('/global_map',{
+                    templateUrl: 'app/views/map/globalMap.template.html',
+                    controller: 'GlobalMap'
+                })
+                .when('/global_map/europe',{
+                    templateUrl: 'app/views/map/europMap.template.html',
+                    controller: 'Europe' 
+                })
+                .when('/global_map/europe/swiss',{
+                    templateUrl: 'app/views/map/country/swissMap.template.html',
+                    controller: 'Swiss'
+                })
+                .when('/',{
+                    templateUrl: 'app/views/homePage.template.html',
+                    controller: ''
+                })
+                .when('/articles-users', {
+                templateUrl: 'app/views/articles-users.template.html',
+                controller: 'ArticlesUsers'
+                })
+                .when('/user-account', {
+                templateUrl: 'app/views/userAccount.template.html',
+                controller: 'UserAccount'
+                })
+})

+ 3 - 0
app/constants/webApi.constants.js

@@ -0,0 +1,3 @@
+app.constant('webApi', {
+	DOMAIN: 'http://node3.fe.a-level.com.ua'
+});

+ 66 - 0
app/controllers/articles-users.controller.js

@@ -0,0 +1,66 @@
+/* (function(){
+    'use strict'
+    app.controller('ArticlesUsers', ['$scope',  function($scope){
+    	console.log ('articles-users');
+		
+		$scope.articles = [
+		{
+			id: 0,
+			title: "Header1",
+			user_id: "User1",
+			country_travel: 'Швейцария',
+			location_travel: "loc1-loc2-loc3",
+			image: "image/noname.png",
+			annotation: "Lorem lorem lorem",
+			month_travel: "Aug",
+			year_travel: "2017",
+			count_likes: 4,
+			count_comment: 5,
+		},
+		{
+			id: 0,
+			title: "Header2",
+			user_id: "User1",
+			country_travel: 'Швейцария',
+			location_travel: "loc1-loc2-loc3",
+			image: "image/noname.png",
+			annotation: "Lorem lorem lorem",
+			month_travel: "May",
+			year_travel: "2017",
+			count_likes: 2,
+			count_comment: 3,
+		},
+		{
+			id: 0,
+			title: "Header3",
+			user_id: "User2",
+			country_travel: 'Франция',
+			location_travel: "loc1-loc2-loc3",
+			image: "image/noname.png",
+			annotation: "Lorem lorem lorem",
+			month_travel: "Sep",
+			year_travel: "2017",
+			count_likes: 5,
+			count_comment: 2,
+		}
+		];
+
+console.log ($scope);
+    }])
+})()*/
+
+(function(){
+    'use strict'
+    app.controller('ArticlesUsers', ['$scope', 'articles.repository', 
+    	function($scope, articlesRepository){
+    	console.log ('articles-users');
+		
+	articlesRepository.getArticles().then(function(response) {
+		$scope.articles = response.data;
+	}, function(error) {});
+
+
+console.log ($scope);
+console.log ($scope.articles);
+    }])
+})()

+ 6 - 0
app/controllers/globalMap.controller.js

@@ -0,0 +1,6 @@
+(function(){
+    'use strict'
+    app.controller('GlobalMap', function($scope){
+
+    })
+})()

+ 34 - 0
app/controllers/header.controller.js

@@ -0,0 +1,34 @@
+(function(){
+    'use strict';
+
+    app.controller('Header', [
+    	'$scope',
+    	'$uibModal',
+        '$location',
+    	function($scope, $uibModal, $location) {
+    		$scope.registration = function() { console.log("asdasd");
+    			var modal = $uibModal.open({
+    				templateUrl: 'app/modal/registration.template.html',
+    				controller: 'Registration',
+    				size: 'md'
+    			});
+    		}
+
+            $scope.login = function() {
+                var modal = $uibModal.open({
+                    templateUrl: 'app/modal/login.template.html',
+                    controller: 'Login',
+                    size: 'md'
+                });
+            }
+
+            $scope.logOut = function() {
+                localStorage.removeItem('authToken');
+                $location.path('');
+            }
+
+            $scope.isLogged = function() {
+                return localStorage.getItem('authToken') ? true: false;
+            }
+    }]);
+})()

+ 24 - 0
app/controllers/login.controller.js

@@ -0,0 +1,24 @@
+(function() {
+	'use strict';
+
+	app.controller('Login', [
+		'$scope',
+		'account.repository',
+		'$location',
+		'$uibModalInstance',
+		function($scope, accountRepository, $location, $uibModalInstance) {
+			$scope.user = {
+				"login": "",
+				"password": ""
+			};
+
+			$scope.submitLogin = function() { 
+				accountRepository.login($scope.user).then(function(response) {
+					console.log(response);
+					$location.path($location.url());
+					localStorage.setItem('authToken', response.data.authToken);
+					$uibModalInstance.close(true);
+				}, function(error) {});
+			}
+		}]);
+})();

+ 6 - 0
app/controllers/map/country/swiss.controller.js

@@ -0,0 +1,6 @@
+(function(){
+    'use strict',
+    app.controller('Swiss', ['$scope', function($scope){
+        
+    }])
+})()

+ 27 - 0
app/controllers/map/europe.controller.js

@@ -0,0 +1,27 @@
+(function(){
+    'use strict'
+    app.controller('Europe', [ '$scope', '$location', function($scope, $location){   
+        $scope.style = {
+            dasharray: 0,
+            // dashoffset: 0
+            fill: 'white',
+        }
+        
+        setInterval(function(){
+            if($scope.style.dasharray < 3000){
+                $scope.style.dasharray += 50;
+            }else {
+                $scope.style.fill = 'white';
+            }
+            // $scope.style.dashoffset -= 0;
+            $scope.$apply();
+
+            return $scope.style;
+
+        }, 100)
+        $scope.showCountry = function(country){
+            var x = String(country)
+            $location.path($location.path() + '/' + x)
+        }
+     }])
+})()

+ 28 - 0
app/controllers/map/globalMap.controller.js

@@ -0,0 +1,28 @@
+(function(){
+    'use strict'
+    app.controller('GlobalMap', [ '$scope', '$location', function($scope, $location){
+        $scope.style = {
+            dasharray: 0,
+            // dashoffset: 0
+            fill: 'none',
+            stroke: 'black',
+        }
+        
+        setInterval(function(){
+            if($scope.style.dasharray < 2800){
+                $scope.style.dasharray += 50;
+            }else {
+                $scope.style.fill = 'white';
+            }
+            // $scope.style.dashoffset -= 0;
+            $scope.$apply();
+
+            return $scope.style;
+
+        }, 100)
+        $scope.showEurop = function(){
+            $location.path($location.url() + '/europe');
+        }
+
+    }])
+})()

+ 23 - 0
app/controllers/registration.controller.js

@@ -0,0 +1,23 @@
+(function() {
+	'use strict';
+
+	app.controller('Registration', [
+		'$scope',
+		'account.repository',
+		'$uibModalInstance',
+		function($scope, accountRepository, $uibModalInstance) {
+			$scope.user = {
+				login: '',
+				email: '',
+				password: ''
+			};
+
+			$scope.submitRegistration = function() {
+				accountRepository.registration($scope.user).then(function(response) {
+					console.log('response', response);
+
+					$uibModalInstance.close(true);
+				}, function(error) {});
+			}
+		}]);
+})();

+ 117 - 0
app/controllers/userAccount.controller.js

@@ -0,0 +1,117 @@
+(function(){
+    'use strict';
+
+    app.controller('UserAccount', ['$scope', function($scope){
+    	$scope.check = "trip";
+        $scope.userName = "setTimeout";
+        $scope.userNameClick = true;
+        $scope.tripName = "Название";
+        $scope.tripNameClick = true;
+
+        $scope.gallery = [
+            {src: './image/users-photos/image-1.png', desc: 'Image 01'},
+            {src: './image/users-photos/image-2.png', desc: 'Image 02'},
+            {src: './image/users-photos/image-3.png', desc: 'Image 03'},
+            {src: './image/users-photos/image-4.png', desc: 'Image 04'},
+            {src: './image/users-photos/image-5.png', desc: 'Image 05'},
+            {src: './image/users-photos/image-6.png', desc: 'Image 06'},
+            {src: './image/users-photos/image-7.png', desc: 'Image 07'}
+        ];
+
+        $scope._Index = 0;
+
+        $scope.isActive = function(index) {
+            return $scope._Index === index;
+        };
+
+        $scope.showPrev = function() {
+            $scope._Index = ($scope._Index > 0) ? --$scope._Index : $scope.gallery.length - 1; 
+        };
+
+        $scope.showNext = function() {
+            $scope._Index = ($scope._Index < $scope.gallery.length - 1) ? ++$scope._Index : 0;
+        };
+
+        $scope.showPhoto = function(index) {
+            $scope._Index = index;
+        };
+
+
+
+        $scope.userNameClickHandler_1 = function() {
+            $scope.userNameClick = false;
+        };
+
+        $scope.userNameClickHandler_2 = function(keyEvent) {
+            if (keyEvent.which === 13) {
+                $scope.userNameClick = true;
+            }
+        };
+
+        $scope.tripNameClickHandler_1 = function() {
+            $scope.tripNameClick = false;
+        };
+
+        $scope.tripNameClickHandler_2 = function(keyEvent) {
+            if (keyEvent.which === 13) {
+                $scope.tripNameClick = true;
+            }
+        };
+
+        setTimeout(function() {
+            var list1 = document.getElementById('plane-trip-list1');
+            var sortableList1 = Sortable.create(list1, {
+                group: 'plane-trip-group',
+                animation: 300
+            });
+
+            var list2 = document.getElementById('plane-trip-list2');
+            var sortableList2 = Sortable.create(list2, {
+                group: 'plane-trip-group',
+                animation: 300
+            });
+        }, 1000);
+
+       	$scope.planeTrip = function() {
+    		if ($scope.check == "" || $scope.check == "article") {
+    			$scope.check = "trip";
+
+               	return;
+    		}
+    		$scope.check = "";
+    		return;
+    	};
+
+    	$scope.writeArticle = function() {
+    		if ($scope.check == "" || $scope.check == "trip") {
+    			$scope.check = "article";
+    			return;
+    		}
+    		$scope.check = "";
+    		return;
+    	};
+
+        $scope.map = { 
+            center: { 
+                latitude: 45, 
+                longitude: -73 
+            }, 
+            zoom: 10 
+        };
+
+        $scope.bd = {
+            northeast: {
+                latitude: 51.219053,
+                longitude: 4.404418
+            },
+            southwest: {
+                latitude: -51.219053,
+                longitude: -4.404418
+            }
+        };
+
+
+    }]);
+
+})()
+

+ 14 - 0
app/modal/login.template.html

@@ -0,0 +1,14 @@
+<div class="login-form modal-body">
+	<form ng-submit="submitLogin()">
+		<div class="form-group">
+			Login: <input type="text" placeholder="Login" class="form-control" ng-model="user.login" required>
+		</div>
+
+		<div class="form-group">
+			Password: <input type="text" class="form-control" ng-model="user.password" required>
+		</div>
+		<div>
+			<button type="submit">Войти</button>
+		</div>
+	</form>
+</div>

+ 18 - 0
app/modal/registration.template.html

@@ -0,0 +1,18 @@
+<div class="modal-body">
+	<form ng-submit="submitRegistration()">
+		<div class="form-group">
+			Login: <input type="text" placeholder="Login" class="form-control" ng-model="user.login" required>
+		</div>
+
+		<div class="form-group">
+			Email: <input type="email" placeholder="Your email" class="form-control" ng-model="user.email" required>
+		</div>
+
+		<div class="form-group">
+			Password: <input type="text" class="form-control" ng-model="user.password" required>
+		</div>
+		<div>
+			<button type="submit">Зарегаться</button>
+		</div>
+	</form>
+</div>

+ 18 - 0
app/services/account.factory.js

@@ -0,0 +1,18 @@
+(function() {
+	'use strict';
+
+	app.factory('account.repository', function(webApi, $http) {
+		return {
+			login: _login,
+			registration: _registration
+		};
+
+		function _registration(data) {
+			return $http.post(webApi.DOMAIN + '/api/v1/account/register', data);
+		}
+
+		function _login(data) {
+			return $http.post(webApi.DOMAIN + '/api/v1/account/login', data);
+		}
+	})
+})()

+ 13 - 0
app/services/articles.factory.js

@@ -0,0 +1,13 @@
+(function() {
+'use strict';
+app.factory('articles.repository', ['webApi', '$http', function(webApi, $http) {
+	return {
+		getArticles: _getArticles,
+	};
+	
+	function _getArticles () {
+		return $http.get(webApi.DOMAIN + '/api/v1/articles');
+	}
+	
+}]);
+})();

+ 45 - 0
app/views/articles-users.template.html

@@ -0,0 +1,45 @@
+<div class="container-fluid articles-users">
+	<h2>Статьи пользователей</h2>
+	<button type="button" class="btn btn-primary pull-right" ng-click="addArticle()">Добавить статью</button>
+  <div class="row articles">
+     <div class="col-xs-2 col-md-2 aside">
+      <div class="row form-group">
+
+          <label>Выберите страну</label>
+          <input type="text" placeholder="Страна" class="form-control" ng-model="searchString">
+
+      </div>
+    </div>
+  	  	
+  		<div class="col-md-10 col-md-offset-2" ng-repeat="article in articles | filter: searchString track by $index ">
+  		
+        <div class="text-right user">
+          <span class="glyphicon glyphicon-user"></span>
+          <em>{{article.user_id}}</em>
+        </div>
+        
+        <div class='block-left'>
+          <img src='image/noname.png' class="img-circle">
+          <div class="count">
+            <span class='glyphicon glyphicon-heart-empty countlikes'>{{article.count_likes}}</span>
+            <span class='glyphicon glyphicon-comment countcomment'>{{article.count_comment}}</span>
+            <span class="glyphicon glyphicon-plane pull-right datetravel">{{article.month_travel}}
+               {{article.year_travel}}
+            </span>
+          </div>
+          
+        </div>
+  			
+        <div class="block-article">
+         <span class="lead title">{{article.title}}</span>
+          <div class="location"><small><span class='glyphicon glyphicon-map-marker'> {{article.location_travel}}</span></small></div>
+          <div class="annotation">{{article.annotation}}</div>
+        </div>
+  			<div class="text-right">
+            <a href="#/articles/{{article.id}}" class="btn btn-info">Подробнее</a>
+        </div>		 		      
+  		</div>
+  	</div>
+  	
+
+</div>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 21 - 0
app/views/globalMap.template.html


+ 21 - 0
app/views/header.template.html

@@ -0,0 +1,21 @@
+
+<header ng-controller="Header">
+     <nav class="main-menu">
+        <div class="logo">LOGO</div>
+        <ul>
+            <li><a href="#/">Home</a></li>
+            <li><a href="#/global_map">Map</a></li>
+            <li><a href="#/articles-users">Users articles</a></li>
+            <li><a>Forum</a></li>
+            <div class="btn-group" ng-if="!isLogged()">
+                <button ng-click="login()">Войти</button>
+                <button ng-click="registration()">Зарегаться</button>
+            </div>
+            <div class="btn-group account" ng-if="isLogged()">
+                <li><a href="#/user-account">Личный кабинет</a></li>
+                <button ng-click="logOut()">Выйти</button>
+            </div>
+
+        </ul>
+    </nav>
+</header>

+ 11 - 0
app/views/homePage.template.html

@@ -0,0 +1,11 @@
+<video playsinline autoplay muted loop>
+    <source src="./video/IMG_0704.mp4" type="video/mp4">
+</video>
+
+<div class="container">
+   
+    <div class="siteName">
+        <h1>Tourist Guide</h1>
+        <h3>You don't know where to go? We will help you!</h3>
+    </div>
+</div>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 34 - 0
app/views/map/country/swissMap.template.html


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 58 - 0
app/views/map/europMap.template.html


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 20 - 0
app/views/map/globalMap.template.html


+ 75 - 0
app/views/userAccount.template.html

@@ -0,0 +1,75 @@
+<div class="container">
+	<div class="first-row row">
+		<div class="col-lg-3">
+			<input type="file" id="img" multiple accept="image/*" name="img"/>
+			<img class="user-photo" src="./image/unknown.png">
+		</div>
+		<div class="user-name col-lg-5">
+			<div>
+				<span ng-show="userNameClick" ng-click="userNameClickHandler_1()">{{userName}}</span>
+				<input type="text" ng-hide="userNameClick" ng-model="userName" ng-keypress="userNameClickHandler_2($event)">
+			</div>
+		</div>
+		<div class="user-socials col-lg-4">
+			<span>Follow me</span>
+			<ul>
+				<li class="facebook"><i class="fab fa-facebook-f"></i></li>
+				<li class="twitter"><i class="fab fa-twitter"></i></li>
+				<li class="instagram"><i class="fab fa-instagram"></i></li>
+			</ul>
+		</div>
+	</div>
+
+	<div class="user-account-buttons">
+		<button class="plane-trip" ng-click="planeTrip()">Спланировать поездку</button>
+		<button class="write-article" ng-click="writeArticle()">Написать статью</button>
+		<div class="button-content">
+
+			<div class="plane-trip-menu row" ng-if="check == 'trip'">
+				<div class="col-md-4 col-md-offset-2">
+					<h3>
+						<span ng-show="tripNameClick" ng-click="tripNameClickHandler_1()" >{{tripName}}</span>
+						<input type="text" ng-hide="tripNameClick" ng-model="tripName" ng-keypress="tripNameClickHandler_2($event)">
+					</h3>
+					<!-- <input type="text" placeholder="поиск"> -->
+					<ol id="plane-trip-list1"></ol>
+				</div>
+				<div class="favourites col-md-4">
+					<h3>Избранное</h3>
+					<ol id="plane-trip-list2">
+						<li>Пункт назначения 1</li>
+						<li>Пункт назначения 2</li>
+						<li>Пункт назначения 3</li>
+						<li>Пункт назначения 4</li>
+					</ol>
+				</div>
+				<div><button>Сохранить</button></div>
+			</div>
+
+			<div class="write-article-menu row" ng-if="check == 'article'">
+				<input type="text" placeholder="Название статьи">
+				<br />
+				<textarea rows="20" cols="100"></textarea>
+			</div>
+
+		</div>
+	</div>
+
+	<div>
+		<h3>Мои поездки</h3>
+	</div>
+
+	<ui-gmap-google-map center='map.center' zoom='map.zoom'></ui-gmap-google-map>
+
+	<div class="container slider">
+		<img ng-repeat="photo in gallery" class="slide" ng-swipe-right="showPrev()" ng-swipe-left="showNext()" ng-show="isActive($index)" ng-src="{{photo.src}}">
+		<a class="arrow prev" href="" ng-click="showPrev()"></a>
+		<a class="arrow next" href="" ng-click="showNext()"></a>
+		<ul class="nav">
+        	<li ng-repeat="photo in gallery" ng-class="{'active':isActive($index)}">
+               <img ng-src="{{photo.src}}" alt="{{photo.desc}}" title="{{photo.desc}}" ng-click="showPhoto($index)"/>
+        </ul>
+	</div>
+	
+
+</div>

+ 413 - 0
css/style.css

@@ -0,0 +1,413 @@
+a, a:hover, a:focus {
+    text-decoration: none;
+    color: inherit;
+}
+
+a:hover{
+    cursor: pointer;
+}
+
+video {
+    position: fixed;
+    width: 100%;
+    
+    z-index: -100;
+    filter: grayscale(100%)
+}
+
+body{
+    margin: 0;
+}
+
+.container {
+    padding-top: 20px;
+}
+
+.siteName{
+    text-align: center;
+    color: yellow;
+    padding-top: 250px;
+}
+
+h1 {
+    font-size: 80px;
+}
+
+h3 {
+    font-size: 30px;
+}
+
+
+/*HEADER*/
+
+header {
+    background: navy;
+    height: 100%;
+    padding-top: 20px;
+    position: fixed;
+    width: 330px;
+    color: white;
+    left: -280px;
+    transition: 0.5s;
+    z-index: 9999;
+}
+
+header:hover {
+    left: 0;
+}
+
+.logo {
+    color: red;
+    font-size: 30px;
+    text-align: center;
+}
+
+ul {
+    list-style-type: none;
+    padding-left: 20px;
+}
+
+.main-menu li {
+    color: white;
+    font-size: 24px;
+    padding: 30px 0;
+    text-transform: uppercase;
+    text-align: center;
+}
+
+.main-menu .account {
+    padding-left: 45px;
+}
+
+nav button {
+    background: none;
+    font-size: 15px;
+    color: red;
+    border: 1px solid red;
+    border-radius: 5px;
+    float: right;
+    margin-top: 10px;
+}
+
+
+
+
+ /*USERS ACCOUNT styles*/
+
+ .first-row {
+    padding-top: 30px;
+ }
+
+ .user-photo {
+    width: 200px;
+    height: 265px;
+    border-radius: 100px;
+ }
+
+ .user-name {
+    padding-top: 50px;
+ }
+
+ .user-name div:first-child {
+    font-size: 40px;
+ }
+
+ .user-name div:last-child {
+    font-size: 15px;
+ }
+
+ .user-socials ul li {
+    font-size: 35px;
+    width: 50px;
+    height: 50px;
+    display: inline-block;
+    margin: 0 20px;
+    cursor: pointer;
+    transition: 0.3s;
+    color: grey;
+    border-radius: 25px;
+    border: 1px solid grey;
+    position: relative;
+ }
+
+ .user-socials ul li i {
+    position: absolute;
+    top: 5px;
+ }
+
+ .user-socials .facebook i {
+    left: 14px;
+ }
+
+ .user-socials .twitter i {
+    left: 7px;
+ }
+
+ .user-socials .instagram i {
+    left: 9px;
+ }
+
+ .user-socials .facebook:hover {
+    background:  #3b5998;
+    color: #fff;
+    border: 1px solid #3b5998;
+ }
+ 
+
+ .user-socials .twitter:hover {
+    background:  #55acee;
+    color: #fff;
+    border: 1px solid #55acee;
+ }
+
+ .user-socials .instagram:hover {
+    background:  radial-gradient(circle at 20% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%,#d6249f 60%,#285AEB 90%);
+    color: #fff;
+    border: 1px solid transparent;
+ }
+ 
+ .user-account-buttons {
+    text-align: center;
+    padding-top: 50px;
+ }
+
+ .plane-trip, .write-article {
+    border: none;
+    padding: 10px;
+    background: #FFD700;
+    margin: 0 200px;
+    outline: none;
+ }
+
+ .plane-trip:hover, .write-article:hover {
+    background: #DAA520;
+ }
+
+ .user-map {
+    padding-top: 50px;
+ }
+
+ .plane-trip-menu ol {
+    padding-bottom: 20px;
+    min-height: 20px;
+    vertical-align: top;
+    background: #DCDCDC;
+ }
+
+ .plane-trip-menu ol li  {
+    cursor: move;
+    text-align: left;
+ }
+
+ .angular-google-map-container { 
+    height: 600px;
+    margin-bottom: 50px;
+ }
+
+
+
+ /*SLIDER Styles*/
+ .arrow {
+    cursor: pointer;
+    display: block;
+    height: 64px;
+    margin-top: -35px;
+    outline: medium none;
+    position: absolute;
+    top: 50%;
+    width: 64px;
+    z-index: 5;
+}
+
+.arrow.prev {
+    background-image: url("../image/prev.png");
+    left: 20px;
+    opacity: 0.2;
+    transition: all 0.2s linear 0s;
+}
+
+.arrow.next {
+    background-image: url("../image/next.png");
+    opacity: 0.2;
+    right: 20px;
+    transition: all 0.2s linear 0s;
+}
+
+.arrow.prev:hover{
+    opacity:1;
+}
+
+.arrow.next:hover{
+    opacity:1;
+}
+
+.nav {
+    bottom: -4px;
+    display: block;
+    height: 48px;
+    left: 0;
+    margin: 0 auto;
+    padding: 1em 0 0.8em;
+    position: absolute;
+    right: 0;
+    text-align: center;
+    width: 100%;
+    z-index: 5;
+}
+
+.nav li {
+    border: 5px solid #AAAAAA;
+    border-radius: 5px;
+    cursor: pointer;
+    display: inline-block;
+    height: 30px;
+    margin: 0 8px;
+    position: relative;
+    width: 50px;
+}
+
+.nav li.active {
+    border: 5px solid #FFFFFF;
+}
+
+.nav li img {
+    width: 100%;
+}
+
+.slider {
+    border: 15px solid #FFFFFF;
+    border-radius: 5px;
+    height: 500px;
+    margin: 20px auto;
+    position: relative;
+    width: 800px;
+    -webkit-perspective: 1000px;
+    -moz-perspective: 1000px;
+    -ms-perspective: 1000px;
+    -o-perspective: 1000px;
+    perspective: 1000px;
+    -webkit-transform-style: preserve-3d;
+    -moz-transform-style: preserve-3d;
+    -ms-transform-style: preserve-3d;
+    -o-transform-style: preserve-3d;
+    transform-style: preserve-3d;
+}
+
+.slide {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.slider img {
+    width: 100%;
+}
+
+.slide.ng-hide-add {
+    opacity:1;
+    -webkit-transition:1s linear all;
+    -moz-transition:1s linear all;
+    -o-transition:1s linear all;
+    transition:1s linear all;
+    -webkit-transform: rotateX(50deg) rotateY(30deg);
+    -moz-transform: rotateX(50deg) rotateY(30deg);
+    -ms-transform: rotateX(50deg) rotateY(30deg);
+    -o-transform: rotateX(50deg) rotateY(30deg);
+    transform: rotateX(50deg) rotateY(30deg);
+    -webkit-transform-origin: right top 0;
+    -moz-transform-origin: right top 0;
+    -ms-transform-origin: right top 0;
+    -o-transform-origin: right top 0;
+    transform-origin: right top 0;
+}
+
+.slide.ng-hide-add.ng-hide-add-active {
+    opacity:0;
+}
+
+.slide.ng-hide-remove {
+    -webkit-transition:1s linear all;
+    -moz-transition:1s linear all;
+    -o-transition:1s linear all;
+    transition:1s linear all;
+    display:block!important;
+    opacity:0;
+}
+
+.slide, .slide.ng-hide-remove.ng-hide-remove-active {
+    opacity:1;
+}
+
+
+
+
+/* LOGIN form styles */
+
+.login-form {
+
+}
+
+/* Users Articles*/
+
+.articles-users .aside {
+    background: beige;
+    padding: 10px;
+    top: 90px;
+    border-radius: 10px;
+}
+
+.block-left {
+    float: left;
+    margin-right: 20px;
+}
+
+.block-left img {
+    width: 90%;
+    border: 1px solid;
+}
+
+.block-article .annotation {
+    padding-top: 30px;
+}
+
+.col-md-10 .col-md-offset-2 img {
+    border: 1px solid;
+    width: 20%;
+}
+
+.col-md-10.col-md-offset-2 {
+    background: #8080801a;
+    border-radius: 10px;
+    margin-bottom: 40px;
+    padding:10px;
+    left: 10px;
+    
+}
+
+.articles-users {
+    margin: 25px;
+}
+
+.count {
+    margin: 5px;
+}
+
+.countlikes {
+    padding-left: 50px;
+}
+
+.countcomment {
+    padding-left: 30px;
+}
+
+.articles-users .btn {
+    margin-bottom: 0;
+}
+
+.text-right .btn {
+    margin-top: 52px;
+}
+
+.row {
+    margin:0;
+}

+ 101 - 0
css/styleGlobalMap.css

@@ -0,0 +1,101 @@
+.global-map {
+    stroke: black;
+    stroke-width: 3px;
+    fill: none;
+}
+.southAmerica{
+    stroke-dasharray: 990;
+    -webkit-animation: southAmerica 3s linear forwards;
+    fill: black;
+    fill-opacity: 0;
+}
+@-webkit-keyframes southAmerica {
+    0%{
+        stroke-dashoffset: 977;
+    } 50% {
+        stroke-dashoffset: 0;
+        fill-opacity: 0;
+    } 100% {
+        fill-opacity: 1;
+    }
+}
+.northAmerica{
+    stroke-dasharray: 2117;
+    -webkit-animation: northAmerica 3s linear forwards;
+    fill: black;
+    fill-opacity: 0; 
+}
+@-webkit-keyframes northAmerica {
+    0%{
+        stroke-dashoffset: 2112;
+    } 50% {
+        stroke-dashoffset: 0;
+        fill-opacity: 0;
+    } 100% {
+        fill-opacity: 1;
+    }
+}
+.africa{
+    stroke-dasharray: 1079;
+    -webkit-animation: africa 3s linear forwards;
+    fill: black;
+    fill-opacity: 0; 
+}
+@-webkit-keyframes africa {
+    0%{
+        stroke-dashoffset: 1079;
+    } 50% {
+        stroke-dashoffset: 0;
+        fill-opacity: 0;
+    } 100% {
+        fill-opacity: 1;
+    }
+}
+.europa{
+    stroke-dasharray: 1438;
+    -webkit-animation: europa 3s linear forwards;
+    fill: black;
+    fill-opacity: 0; 
+}
+@-webkit-keyframes europa {
+    0%{
+        stroke-dashoffset: 1432;
+    } 50% {
+        stroke-dashoffset: 0;
+        fill-opacity: 0;
+    } 100% {
+        fill-opacity: 1;
+    }
+}
+.asia{
+    stroke-dasharray: 3350;
+    -webkit-animation: asia 3s linear forwards;
+    fill: black;
+    fill-opacity: 0; 
+}
+@-webkit-keyframes asia {
+    0%{
+        stroke-dashoffset: 3350;
+    } 50% {
+        stroke-dashoffset: 0;
+        fill-opacity: 0;
+    } 100% {
+        fill-opacity: 1;
+    }
+}
+.australia{
+    stroke-dasharray: 650;
+    -webkit-animation: australia 3s linear forwards;
+    fill: black;
+    fill-opacity: 0; 
+}
+@-webkit-keyframes australia {
+    0% {
+        stroke-dashoffset: 650;
+    } 50% {
+        stroke-dashoffset: 0;
+        fill-opacity: 0;
+    } 100% {
+        fill-opacity: 1;
+    }
+}

+ 34 - 0
fonts/fontawesome/LICENSE.txt

@@ -0,0 +1,34 @@
+Font Awesome Free License
+-------------------------
+
+Font Awesome Free is free, open source, and GPL friendly. You can use it for
+commercial projects, open source projects, or really almost whatever you want.
+Full Font Awesome Free license: https://fontawesome.com/license.
+
+# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
+In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
+packaged as SVG and JS file types.
+
+# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
+In the Font Awesome Free download, the SIL OLF license applies to all icons
+packaged as web and desktop font files.
+
+# Code: MIT License (https://opensource.org/licenses/MIT)
+In the Font Awesome Free download, the MIT license applies to all non-font and
+non-icon files.
+
+# Attribution
+Attribution is required by MIT, SIL OLF, and CC BY licenses. Downloaded Font
+Awesome Free files already contain embedded comments with sufficient
+attribution, so you shouldn't need to do anything additional when using these
+files normally.
+
+We've kept attribution comments terse, so we ask that you do not actively work
+to remove them from files, especially code. They're a great way for folks to 
+learn about Font Awesome.
+
+# Brand Icons
+All brand icons are trademarks of their respective owners. The use of these
+trademarks does not indicate endorsement of the trademark holder by Font
+Awesome, nor vice versa. **Please do not use brand logos for any purpose except
+to represent the company, product, or service to which they refer.**

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/css/all.css


+ 5 - 0
fonts/fontawesome/css/brands.css

@@ -0,0 +1,5 @@
+/*!
+ * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/css/fontawesome.css


+ 5 - 0
fonts/fontawesome/css/regular.css

@@ -0,0 +1,5 @@
+/*!
+ * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400}

+ 5 - 0
fonts/fontawesome/css/solid.css

@@ -0,0 +1,5 @@
+/*!
+ * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/css/svg-with-js.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 2170 - 0
fonts/fontawesome/css/v4-shims.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/css/v4-shims.min.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/js/all.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/js/brands.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/js/fontawesome.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/js/regular.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/js/solid.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/js/v4-shims.js


+ 19 - 0
fonts/fontawesome/less/_animated.less

@@ -0,0 +1,19 @@
+// Animated Icons
+// --------------------------
+
+.@{fa-css-prefix}-spin {
+  animation: fa-spin 2s infinite linear;
+}
+
+.@{fa-css-prefix}-pulse {
+  animation: fa-spin 1s infinite steps(8);
+}
+
+@keyframes fa-spin {
+  0% {
+    transform: rotate(0deg);
+  }
+  100% {
+    transform: rotate(360deg);
+  }
+}

+ 16 - 0
fonts/fontawesome/less/_bordered-pulled.less

@@ -0,0 +1,16 @@
+// Bordered & Pulled
+// -------------------------
+
+.@{fa-css-prefix}-border {
+  border-radius: .1em;
+  border: solid .08em @fa-border-color;
+  padding: .2em .25em .15em;
+}
+
+.@{fa-css-prefix}-pull-left { float: left; }
+.@{fa-css-prefix}-pull-right { float: right; }
+
+.@{fa-css-prefix}, .fas, .far, .fal, .fab {
+  &.@{fa-css-prefix}-pull-left { margin-right: .3em; }
+  &.@{fa-css-prefix}-pull-right { margin-left: .3em; }
+}

+ 12 - 0
fonts/fontawesome/less/_core.less

@@ -0,0 +1,12 @@
+// Base Class Definition
+// -------------------------
+
+.@{fa-css-prefix}, .fas, .far, .fal, .fab {
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-font-smoothing: antialiased;
+  display: inline-block;
+  font-style: normal;
+  font-variant: normal;
+  text-rendering: auto;
+  line-height: 1;
+}

+ 6 - 0
fonts/fontawesome/less/_fixed-width.less

@@ -0,0 +1,6 @@
+// Fixed Width Icons
+// -------------------------
+.@{fa-css-prefix}-fw {
+  text-align: center;
+  width: (20em / 16);
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1114 - 0
fonts/fontawesome/less/_icons.less


+ 27 - 0
fonts/fontawesome/less/_larger.less

@@ -0,0 +1,27 @@
+// Icon Sizes
+// -------------------------
+
+.larger(@factor) when (@factor > 0) {
+  .larger((@factor - 1));
+
+  .@{fa-css-prefix}-@{factor}x {
+    font-size: (@factor * 1em);
+  }
+}
+
+/* makes the font 33% larger relative to the icon container */
+.@{fa-css-prefix}-lg {
+  font-size: (4em / 3);
+  line-height: (3em / 4);
+  vertical-align: -.0667em;
+}
+
+.@{fa-css-prefix}-xs {
+  font-size: .75em;
+}
+
+.@{fa-css-prefix}-sm {
+  font-size: .875em;
+}
+
+.larger(10);

+ 18 - 0
fonts/fontawesome/less/_list.less

@@ -0,0 +1,18 @@
+// List Icons
+// -------------------------
+
+.@{fa-css-prefix}-ul {
+  list-style-type: none;
+  margin-left: @fa-li-width * 5/4;
+  padding-left: 0;
+
+  > li { position: relative; }
+}
+
+.@{fa-css-prefix}-li {
+  left: -@fa-li-width;
+  position: absolute;
+  text-align: center;
+  width: @fa-li-width;
+  line-height: inherit;
+}

+ 57 - 0
fonts/fontawesome/less/_mixins.less

@@ -0,0 +1,57 @@
+// Mixins
+// --------------------------
+
+.fa-icon() {
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-font-smoothing: antialiased;
+  display: inline-block;
+  font-style: normal;
+  font-variant: normal;
+  font-weight: normal;
+  line-height: 1;
+  vertical-align: -.125em;
+}
+
+.fa-icon-rotate(@degrees, @rotation) {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})";
+  transform: rotate(@degrees);
+}
+
+.fa-icon-flip(@horiz, @vert, @rotation) {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)";
+  transform: scale(@horiz, @vert);
+}
+
+
+// Only display content to screen readers. A la Bootstrap 4.
+//
+// See: http://a11yproject.com/posts/how-to-hide-content/
+
+.sr-only() {
+  border: 0;
+  clip: rect(0,0,0,0);
+  height: 1px;
+  margin: -1px;
+  overflow: hidden;
+  padding: 0;
+  position: absolute;
+  width: 1px;
+}
+
+// Use in conjunction with .sr-only to only display content when it's focused.
+//
+// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
+//
+// Credit: HTML5 Boilerplate
+
+.sr-only-focusable() {
+  &:active,
+  &:focus {
+    clip: auto;
+    height: auto;
+    margin: 0;
+    overflow: visible;
+    position: static;
+    width: auto;
+  }
+}

+ 23 - 0
fonts/fontawesome/less/_rotated-flipped.less

@@ -0,0 +1,23 @@
+// Rotated & Flipped Icons
+// -------------------------
+
+.@{fa-css-prefix}-rotate-90  { .fa-icon-rotate(90deg, 1);  }
+.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
+.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
+
+.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
+.@{fa-css-prefix}-flip-vertical   { .fa-icon-flip(1, -1, 2); }
+.@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(-1, -1, 2); }
+
+// Hook for IE8-9
+// -------------------------
+
+:root {
+  .@{fa-css-prefix}-rotate-90,
+  .@{fa-css-prefix}-rotate-180,
+  .@{fa-css-prefix}-rotate-270,
+  .@{fa-css-prefix}-flip-horizontal,
+  .@{fa-css-prefix}-flip-vertical {
+    filter: none;
+  }
+}

+ 5 - 0
fonts/fontawesome/less/_screen-reader.less

@@ -0,0 +1,5 @@
+// Screen Readers
+// -------------------------
+
+.sr-only { .sr-only(); }
+.sr-only-focusable { .sr-only-focusable(); }

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 2066 - 0
fonts/fontawesome/less/_shims.less


+ 22 - 0
fonts/fontawesome/less/_stacked.less

@@ -0,0 +1,22 @@
+// Stacked Icons
+// -------------------------
+
+.@{fa-css-prefix}-stack {
+  display: inline-block;
+  height: 2em;
+  line-height: 2em;
+  position: relative;
+  vertical-align: middle;
+  width: 2em;
+}
+
+.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
+  left: 0;
+  position: absolute;
+  text-align: center;
+  width: 100%;
+}
+
+.@{fa-css-prefix}-stack-1x { line-height: inherit; }
+.@{fa-css-prefix}-stack-2x { font-size: 2em; }
+.@{fa-css-prefix}-inverse { color: @fa-inverse; }

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1123 - 0
fonts/fontawesome/less/_variables.less


+ 17 - 0
fonts/fontawesome/less/fa-brands.less

@@ -0,0 +1,17 @@
+@import "_variables.less";
+
+@font-face {
+  font-family: 'Font Awesome 5 Brands';
+  font-style: normal;
+  font-weight: normal;
+  src: url('@{fa-font-path}/fa-brands-400.eot');
+  src: url('@{fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),
+    url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'),
+    url('@{fa-font-path}/fa-brands-400.woff') format('woff'),
+    url('@{fa-font-path}/fa-brands-400.ttf') format('truetype'),
+    url('@{fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');
+}
+
+.fab {
+  font-family: 'Font Awesome 5 Brands';
+}

+ 18 - 0
fonts/fontawesome/less/fa-regular.less

@@ -0,0 +1,18 @@
+@import "_variables.less";
+
+@font-face {
+  font-family: 'Font Awesome 5 Free';
+  font-style: normal;
+  font-weight: 400;
+  src: url('@{fa-font-path}/fa-regular-400.eot');
+  src: url('@{fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),
+    url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'),
+    url('@{fa-font-path}/fa-regular-400.woff') format('woff'),
+    url('@{fa-font-path}/fa-regular-400.ttf') format('truetype'),
+    url('@{fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');
+}
+
+.far {
+  font-family: 'Font Awesome 5 Free';
+  font-weight: 400;
+}

+ 19 - 0
fonts/fontawesome/less/fa-solid.less

@@ -0,0 +1,19 @@
+@import "_variables.less";
+
+@font-face {
+  font-family: 'Font Awesome 5 Free';
+  font-style: normal;
+  font-weight: 900;
+  src: url('@{fa-font-path}/fa-solid-900.eot');
+  src: url('@{fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),
+    url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'),
+    url('@{fa-font-path}/fa-solid-900.woff') format('woff'),
+    url('@{fa-font-path}/fa-solid-900.ttf') format('truetype'),
+    url('@{fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');
+}
+
+.fa,
+.fas {
+  font-family: 'Font Awesome 5 Free';
+  font-weight: 900;
+}

+ 16 - 0
fonts/fontawesome/less/fontawesome.less

@@ -0,0 +1,16 @@
+/*!
+ * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+@import "_variables.less";
+@import "_mixins.less";
+@import "_core.less";
+@import "_larger.less";
+@import "_fixed-width.less";
+@import "_list.less";
+@import "_bordered-pulled.less";
+@import "_animated.less";
+@import "_rotated-flipped.less";
+@import "_stacked.less";
+@import "_icons.less";
+@import "_screen-reader.less";

+ 6 - 0
fonts/fontawesome/less/v4-shims.less

@@ -0,0 +1,6 @@
+/*!
+ * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+@import 'variables';
+@import 'shims';

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1501 - 0
fonts/fontawesome/metadata/categories.yml


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 37518 - 0
fonts/fontawesome/metadata/icons.json


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 12796 - 0
fonts/fontawesome/metadata/icons.yml


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 2307 - 0
fonts/fontawesome/metadata/shims.json


+ 295 - 0
fonts/fontawesome/metadata/shims.yml

@@ -0,0 +1,295 @@
+area-chart:
+  name: chart-area
+arrow-circle-o-down:
+  name: arrow-alt-circle-down
+  prefix: far
+arrow-circle-o-left:
+  name: arrow-alt-circle-left
+  prefix: far
+arrow-circle-o-right:
+  name: arrow-alt-circle-right
+  prefix: far
+arrow-circle-o-up:
+  name: arrow-alt-circle-up
+  prefix: far
+arrows:
+  name: arrows-alt
+arrows-alt:
+  name: expand-arrows-alt
+arrows-h:
+  name: arrows-alt-h
+arrows-v:
+  name: arrows-alt-v
+bar-chart:
+  name: chart-bar
+  prefix: far
+bitbucket-square:
+  name: bitbucket
+  prefix: fab
+calendar:
+  name: calendar-alt
+calendar-o:
+  name: calendar
+  prefix: far
+caret-square-o-down:
+  name: caret-square-down
+  prefix: far
+caret-square-o-left:
+  name: caret-square-left
+  prefix: far
+caret-square-o-right:
+  name: caret-square-right
+  prefix: far
+caret-square-o-up:
+  name: caret-square-up
+  prefix: far
+cc:
+  name: closed-captioning
+  prefix: far
+chain-broken:
+  name: unlink
+circle-o-notch:
+  name: circle-notch
+circle-thin:
+  name: circle
+  prefix: far
+clipboard:
+  prefix: far
+clone:
+  prefix: far
+cloud-download:
+  name: cloud-download-alt
+cloud-upload:
+  name: cloud-upload-alt
+code-fork:
+  name: code-branch
+comment-alt:
+  name: comment-dots
+  prefix: far
+commenting:
+  name: comment-dots
+  prefix: far
+compass:
+  prefix: far
+copyright:
+  prefix: far
+creative-commons:
+  prefix: fab
+credit-card:
+  prefix: far
+credit-card-alt:
+  name: credit-card
+cutlery:
+  name: utensils
+diamond:
+  name: gem
+  prefix: far
+eercast:
+  name: sellcast
+  prefix: fab
+eur:
+  name: euro-sign
+exchange:
+  name: exchange-alt
+external-link:
+  name: external-link-alt
+external-link-square:
+  name: external-link-square-alt
+eye:
+  prefix: far
+eye-dropper:
+  name: eye-dropper
+  prefix: far
+eye-slash:
+  prefix: far
+eyedropper:
+  name: eye-dropper
+facebook:
+  name: facebook-f
+  prefix: fab
+facebook-official:
+  name: facebook
+  prefix: fab
+file-text:
+  name: file-alt
+files-o:
+  name: copy
+  prefix: far
+floppy-o:
+  name: save
+  prefix: far
+gbp:
+  name: pound-sign
+glass:
+  name: glass-martini
+google-plus:
+  name: google-plus-g
+  prefix: fab
+google-plus-circle:
+  name: google-plus
+  prefix: fab
+google-plus-official:
+  name: google-plus
+  prefix: fab
+hand-o-down:
+  name: hand-point-down
+  prefix: far
+hand-o-left:
+  name: hand-point-left
+  prefix: far
+hand-o-right:
+  name: hand-point-right
+  prefix: far
+hand-o-up:
+  name: hand-point-up
+  prefix: far
+header:
+  name: heading
+id-badge:
+  prefix: far
+ils:
+  name: shekel-sign
+inr:
+  name: rupee-sign
+intersex:
+  name: transgender
+jpy:
+  name: yen-sign
+krw:
+  name: won-sign
+level-down:
+  name: level-down-alt
+level-up:
+  name: level-up-alt
+life-ring:
+  prefix: far
+line-chart:
+  name: chart-line
+linkedin:
+  name: linkedin-in
+  prefix: fab
+linkedin-square:
+  name: linkedin
+  prefix: fab
+list-alt:
+  prefix: far
+long-arrow-down:
+  name: long-arrow-alt-down
+long-arrow-left:
+  name: long-arrow-alt-left
+long-arrow-right:
+  name: long-arrow-alt-right
+long-arrow-up:
+  name: long-arrow-alt-up
+map-marker:
+  name: map-marker-alt
+meanpath:
+  name: font-awesome
+  prefix: fab
+mobile:
+  name: mobile-alt
+money:
+  name: money-bill-alt
+  prefix: far
+object-group:
+  prefix: far
+object-ungroup:
+  prefix: far
+paste:
+  prefix: far
+pencil:
+  name: pencil-alt
+pencil-square:
+  name: pen-square
+pencil-square-o:
+  name: edit
+  prefix: far
+picture:
+  name: image
+pie-chart:
+  name: chart-pie
+refresh:
+  name: sync
+registered:
+  prefix: far
+repeat:
+  name: redo
+rub:
+  name: ruble-sign
+scissors:
+  name: cut
+shield:
+  name: shield-alt
+sign-in:
+  name: sign-in-alt
+sign-out:
+  name: sign-out-alt
+sliders:
+  name: sliders-h
+sort-alpha-asc:
+  name: sort-alpha-down
+sort-alpha-desc:
+  name: sort-alpha-up
+sort-amount-asc:
+  name: sort-amount-down
+sort-amount-desc:
+  name: sort-amount-up
+sort-asc:
+  name: sort-up
+sort-desc:
+  name: sort-down
+sort-numeric-asc:
+  name: sort-numeric-down
+sort-numeric-desc:
+  name: sort-numeric-up
+spoon:
+  name: utensil-spoon
+star-half-empty:
+  name: star-half
+star-half-full:
+  name: star-half
+support:
+  name: life-ring
+  prefix: far
+tablet:
+  name: tablet-alt
+tachometer:
+  name: tachometer-alt
+television:
+  name: tv
+thumb-tack:
+  name: thumbtack
+thumbs-o-down:
+  name: thumbs-down
+  prefix: far
+thumbs-o-up:
+  name: thumbs-up
+  prefix: far
+ticket:
+  name: ticket-alt
+trash:
+  name: trash-alt
+trash-o:
+  name: trash-alt
+  prefix: far
+try:
+  name: lira-sign
+usd:
+  name: dollar-sign
+video-camera:
+  name: video
+vimeo:
+  name: vimeo-v
+  prefix: fab
+volume-control-phone:
+  name: phone-volume
+wheelchair-alt:
+  name: accessible-icon
+  prefix: fab
+window-maximize:
+  prefix: far
+window-restore:
+  prefix: far
+youtube-play:
+  name: youtube
+  prefix: fab

+ 561 - 0
fonts/fontawesome/metadata/sponsors.yml

@@ -0,0 +1,561 @@
+accusoft:
+  icons:
+    - accusoft
+  label: Accusoft
+  url: 'https://www.accusoft.com'
+administrator-technology:
+  icons:
+    - stream
+  label: Administrator Technology
+  url: 'https://administrator.de'
+adversal:
+  icons:
+    - adversal
+  label: Adversal
+  url: 'https://www.adversal.com'
+affiliatetheme:
+  icons:
+    - affiliatetheme
+  label: affiliatetheme
+  url: 'https://affiliatetheme.io/en'
+algolia:
+  icons:
+    - algolia
+  label: Algolia
+  url: 'http://www.algolia.com'
+amazon-web-services:
+  icons:
+    - aws
+  label: Amazon Web Services
+  url: 'https://aws.amazon.com'
+amilia:
+  icons:
+    - amilia
+  label: Amilia
+  url: 'http://www.amilia.com'
+angry-creative:
+  icons:
+    - angrycreative
+  label: Angry Creative
+  url: 'https://angrycreative.se'
+app-signal:
+  icons:
+    - stroopwafel
+  label: AppSignal
+  url: 'https://appsignal.com'
+apper-systems-ab:
+  icons:
+    - apper
+  label: Apper Systems AB
+  url: 'http://www.apper.com'
+'asymmetrik,ltd':
+  icons:
+    - asymmetrik
+  label: 'Asymmetrik, Ltd.'
+  url: 'http://asymmetrik.com'
+avianex:
+  icons:
+    - avianex
+  label: avianex
+  url: 'https://www.avianex.de'
+bi-mobject:
+  icons:
+    - bimobject
+  label: BIMobject
+  url: 'http://bimobject.com'
+bity:
+  icons:
+    - bity
+  label: Bity
+  url: 'http://bity.com'
+blissbook:
+  icons:
+    - pen-fancy
+  label: Blissbook
+  url: 'https://blissbook.com'
+büromöbel-experte-gmb-h &co-kg:
+  icons:
+    - buromobelexperte
+  label: Büromöbel-Experte GmbH & Co. KG.
+  url: 'https://www.bueromoebel-experte.de'
+c-panel:
+  icons:
+    - cpanel
+  label: cPanel
+  url: 'http://cpanel.com'
+centercode:
+  icons:
+    - centercode
+  label: Centercode
+  url: 'https://www.centercode.com'
+cibltd:
+  icons:
+    - drum-steelpan
+  label: Comprehensive Insurance Brokers Limited
+  url: 'http://www.cibltd.com'
+clear-blue-technologies:
+  icons:
+    - solar-panel
+  label: Clear Blue Technologies
+  url: 'http://www.clearbluetechnologies.com'
+cloudscale-ch:
+  icons:
+    - cloudscale
+  label: cloudscale.ch
+  url: 'https://www.cloudscale.ch'
+cloudsmith:
+  icons:
+    - cloudsmith
+  label: Cloudsmith
+  url: 'https://cloudsmith.io'
+cloudversify:
+  icons:
+    - cloudversify
+  label: cloudversify
+  url: 'https://www.cloudversify.com'
+cuttlefish:
+  icons:
+    - cuttlefish
+  label: Cuttlefish
+  url: 'http://wearecuttlefish.com'
+darren-wiebe:
+  icons:
+    - church
+  label: Darren Wiebe
+deploy-dog:
+  icons:
+    - deploydog
+  label: deploy.dog
+  url: 'http://deploy.dog'
+deskpro:
+  icons:
+    - deskpro
+  label: Deskpro
+  url: 'http://www.deskpro.com'
+discourse:
+  icons:
+    - discourse
+  label: Discourse
+  url: 'https://discourse.org'
+doc-hub:
+  icons:
+    - dochub
+  label: DocHub
+  url: 'https://dochub.com'
+draft2-digital:
+  icons:
+    - draft2digital
+  label: Draft2Digital
+  url: 'http://draft2digital.com'
+dyalog-apl:
+  icons:
+    - dyalog
+  label: Dyalog APL
+  url: 'http://www.dyalog.com'
+firstdraft:
+  icons:
+    - firstdraft
+  label: firstdraft
+  url: 'http://www.firstdraft.com'
+fleetplan:
+  icons:
+    - helicopter
+  label: FLEETPLAN
+  url: 'https://www.fleetplan.net'
+getaroom:
+  icons:
+    - archway
+    - dumbbell
+    - hotel
+    - map-marked
+    - map-marked-alt
+    - monument
+    - spa
+    - swimmer
+    - swimming-pool
+  label: getaroom
+  url: 'https://www.getaroom.com'
+git-kraken:
+  icons:
+    - gitkraken
+  label: GitKraken
+  url: 'https://www.gitkraken.com'
+gofore:
+  icons:
+    - gofore
+  label: Gofore
+  url: 'http://gofore.com'
+'gripfire,inc':
+  icons:
+    - gripfire
+  label: 'Gripfire, Inc.'
+  url: 'http://gripfire.io'
+harvard-medical-school:
+  icons:
+    - allergies
+    - ambulance
+    - band-aid
+    - briefcase-medical
+    - burn
+    - capsules
+    - diagnoses
+    - dna
+    - file-medical
+    - file-medical-alt
+    - first-aid
+    - heart
+    - heartbeat
+    - hospital
+    - hospital-alt
+    - hospital-symbol
+    - id-card-alt
+    - notes-medical
+    - pills
+    - plus
+    - prescription-bottle
+    - prescription-bottle-alt
+    - procedures
+    - smoking
+    - stethoscope
+    - syringe
+    - tablets
+    - thermometer
+    - user-md
+    - vial
+    - vials
+    - weight
+    - x-ray
+  label: Harvard Medical School
+  url: 'https://hms.harvard.edu'
+hips:
+  icons:
+    - hips
+  label: Hips
+  url: 'https://hips.com'
+hire-a-helper:
+  icons:
+    - archive
+    - box-open
+    - couch
+    - dolly
+    - people-carry
+    - sign
+    - suitcase
+    - tape
+    - truck-loading
+    - truck-moving
+    - wine-glass
+  label: HireAHelper
+  url: 'https://www.hireahelper.com'
+hornbill:
+  icons:
+    - hornbill
+  label: Hornbill
+  url: 'https://www.hornbill.com'
+hotjar:
+  icons:
+    - hotjar
+  label: Hotjar
+  url: 'https://www.hotjar.com'
+hub-spot:
+  icons:
+    - hubspot
+  label: HubSpot
+  url: 'http://www.HubSpot.com'
+in-site-systems:
+  icons:
+    - toolbox
+  label: InSite Systems
+  url: 'https://www.insitesystems.com'
+joget:
+  icons:
+    - joget
+  label: Joget
+  url: 'http://www.joget.org'
+jon-galloway:
+  icons:
+    - crow
+  label: Jon Galloway
+kevin-barone:
+  icons:
+    - file-contract
+  label: Kevin Barone
+key-cdn:
+  icons:
+    - keycdn
+  label: KeyCDN
+  url: 'https://www.keycdn.com'
+korvue:
+  icons:
+    - korvue
+  label: Korvue
+  url: 'https://korvue.com'
+max-elman:
+  icons:
+    - frog
+  label: Max Elman
+med-apps:
+  icons:
+    - medapps
+  label: MedApps
+  url: 'http://medapps.com.au'
+megaport:
+  icons:
+    - megaport
+  label: Megaport
+  url: 'https://www.megaport.com'
+mix:
+  icons:
+    - mix
+  label: Mix
+  url: 'http://mix.com'
+mizuni:
+  icons:
+    - mizuni
+  label: Mizuni
+  url: 'http://www.mizuni.com'
+mrt:
+  icons:
+    - medrt
+  label: MRT
+  url: 'https://medrt.co.jp'
+mylogin-info:
+  icons:
+    - user-shield
+  label: mylogin.info
+  url: 'https://www.mylogin.info'
+napster:
+  icons:
+    - napster
+  label: Napster
+  url: 'http://www.napster.com'
+nimblr:
+  icons:
+    - nimblr
+  label: Nimblr
+  url: 'https://nimblr.ai'
+ns8:
+  icons:
+    - ns8
+  label: NS8
+  url: 'https://www.ns8.com'
+nutritionix:
+  icons:
+    - nutritionix
+  label: Nutritionix
+  url: 'http://www.nutritionix.com'
+page4-corporation:
+  icons:
+    - page4
+  label: page4 Corporation
+  url: 'https://en.page4.com'
+pal-fed:
+  icons:
+    - palfed
+  label: PalFed
+  url: 'https://www.palfed.com'
+phabricator:
+  icons:
+    - phabricator
+  label: Phabricator
+  url: 'http://phacility.com'
+purely-interactive:
+  icons:
+    - kiwi-bird
+  label: Purely Interactive
+  url: 'https://www.purelyinteractive.ca'
+pushed:
+  icons:
+    - pushed
+  label: Pushed
+  url: 'https://pushed.co'
+quin-scape:
+  icons:
+    - quinscape
+  label: QuinScape
+  url: 'https://www.quinscape.de'
+readme-io:
+  icons:
+    - readme
+  label: Readme.io
+  url: 'http://readme.io'
+red-river:
+  icons:
+    - red-river
+  label: red river
+  url: 'https://river.red'
+rendact:
+  icons:
+    - rendact
+  label: Rendact
+  url: 'https://rendact.com'
+replyd:
+  icons:
+    - replyd
+  label: replyd
+resolving:
+  icons:
+    - resolving
+  label: Resolving
+  url: 'https://resolving.com'
+rock-rms:
+  icons:
+    - rockrms
+  label: Rock RMS
+  url: 'http://rockrms.com'
+rocket-chat:
+  icons:
+    - comment
+    - comment-alt
+    - comment-dots
+    - comment-slash
+    - comments
+    - frown
+    - meh
+    - phone
+    - phone-slash
+    - poo
+    - quote-left
+    - quote-right
+    - smile
+    - video
+    - video-slash
+  label: Rocket.Chat
+  url: 'https://rocket.chat'
+schlix:
+  icons:
+    - schlix
+  label: SCHLIX
+  url: 'http://schlix.com'
+search-eng-in:
+  icons:
+    - searchengin
+  label: SearchEng.in
+  url: 'http://searcheng.in'
+service-stack:
+  icons:
+    - servicestack
+  label: ServiceStack
+  url: 'https://servicestack.net'
+shopware:
+  icons:
+    - shopware
+  label: Shopware
+  url: 'https://shopware.de'
+shp:
+  icons:
+    - school
+  label: SHP
+  url: 'http://shp.com'
+silicon-barn-inc:
+  icons:
+    - project-diagram
+  label: Silicon Barn Inc
+  url: 'https://siliconbarn.com'
+sistrix:
+  icons:
+    - sistrix
+  label: SISTRIX
+  url: 'https://www.sistrix.de'
+smup:
+  icons:
+    - shoe-prints
+  label: Smup
+  url: 'https://www.atomsoftware.com.au'
+speakap:
+  icons:
+    - speakap
+  label: Speakap
+  url: 'https://speakap.com'
+stay-linked:
+  icons:
+    - box
+    - boxes
+    - clipboard-check
+    - clipboard-list
+    - dolly
+    - dolly-flatbed
+    - pallet
+    - shipping-fast
+    - truck
+    - warehouse
+  label: StayLinked
+  url: 'https://www.staylinked.com'
+sticker-mule:
+  icons:
+    - sticker-mule
+  label: Sticker Mule
+  url: 'https://stickermule.com'
+studio-vinari:
+  icons:
+    - studiovinari
+  label: Studio Vinari
+  url: 'https://studiovinari.com'
+supple:
+  icons:
+    - supple
+  label: Supple
+  url: 'https://supple.com.au'
+the-us-sunnah-foundation:
+  icons:
+    - dollar-sign
+    - donate
+    - dove
+    - gift
+    - globe
+    - hand-holding-heart
+    - hand-holding-usd
+    - hands-helping
+    - handshake
+    - heart
+    - leaf
+    - parachute-box
+    - piggy-bank
+    - ribbon
+    - seedling
+  label: The us-Sunnah Foundation
+  url: 'https://www.ussunnah.org'
+themeco:
+  icons:
+    - themeco
+  label: Themeco
+  url: 'https://theme.co'
+typo3:
+  icons:
+    - typo3
+  label: Typo3
+  url: 'https://typo3.org'
+uniregistry:
+  icons:
+    - uniregistry
+  label: Uniregistry
+  url: 'https://uniregistry.com'
+us-sunnah-foundation:
+  icons:
+    - ussunnah
+  label: us-Sunnah Foundation
+  url: 'https://www.ussunnah.org'
+vaadin:
+  icons:
+    - vaadin
+  label: Vaadin
+  url: 'http://vaadin.com'
+vnv:
+  icons:
+    - vnv
+  label: VNV
+  url: 'https://www.vnv.ch'
+weedable:
+  icons:
+    - bong
+    - cannabis
+    - joint
+    - mortar-pestle
+    - prescription
+  label: Weedable
+  url: 'https://www.weedable.com'
+whmcs:
+  icons:
+    - whmcs
+  label: WHMCS
+  url: 'https://www.whmcs.com'

+ 20 - 0
fonts/fontawesome/scss/_animated.scss

@@ -0,0 +1,20 @@
+// Animated Icons
+// --------------------------
+
+.#{$fa-css-prefix}-spin {
+  animation: fa-spin 2s infinite linear;
+}
+
+.#{$fa-css-prefix}-pulse {
+  animation: fa-spin 1s infinite steps(8);
+}
+
+@keyframes fa-spin {
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+}

+ 20 - 0
fonts/fontawesome/scss/_bordered-pulled.scss

@@ -0,0 +1,20 @@
+// Bordered & Pulled
+// -------------------------
+
+.#{$fa-css-prefix}-border {
+  border: solid .08em $fa-border-color;
+  border-radius: .1em;
+  padding: .2em .25em .15em;
+}
+
+.#{$fa-css-prefix}-pull-left { float: left; }
+.#{$fa-css-prefix}-pull-right { float: right; }
+
+.#{$fa-css-prefix},
+.fas,
+.far,
+.fal,
+.fab {
+  &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
+  &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
+}

+ 16 - 0
fonts/fontawesome/scss/_core.scss

@@ -0,0 +1,16 @@
+// Base Class Definition
+// -------------------------
+
+.#{$fa-css-prefix},
+.fas,
+.far,
+.fal,
+.fab {
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-font-smoothing: antialiased;
+  display: inline-block;
+  font-style: normal;
+  font-variant: normal;
+  text-rendering: auto;
+  line-height: 1;
+}

+ 6 - 0
fonts/fontawesome/scss/_fixed-width.scss

@@ -0,0 +1,6 @@
+// Fixed Width Icons
+// -------------------------
+.#{$fa-css-prefix}-fw {
+  text-align: center;
+  width: (20em / 16);
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1114 - 0
fonts/fontawesome/scss/_icons.scss


+ 23 - 0
fonts/fontawesome/scss/_larger.scss

@@ -0,0 +1,23 @@
+// Icon Sizes
+// -------------------------
+
+// makes the font 33% larger relative to the icon container
+.#{$fa-css-prefix}-lg {
+  font-size: (4em / 3);
+  line-height: (3em / 4);
+  vertical-align: -.0667em;
+}
+
+.#{$fa-css-prefix}-xs {
+  font-size: .75em;
+}
+
+.#{$fa-css-prefix}-sm {
+  font-size: .875em;
+}
+
+@for $i from 1 through 10 {
+  .#{$fa-css-prefix}-#{$i}x {
+    font-size: $i * 1em;
+  }
+}

+ 18 - 0
fonts/fontawesome/scss/_list.scss

@@ -0,0 +1,18 @@
+// List Icons
+// -------------------------
+
+.#{$fa-css-prefix}-ul {
+  list-style-type: none;
+  margin-left: $fa-li-width * 5/4;
+  padding-left: 0;
+
+  > li { position: relative; }
+}
+
+.#{$fa-css-prefix}-li {
+  left: -$fa-li-width;
+  position: absolute;
+  text-align: center;
+  width: $fa-li-width;
+  line-height: inherit;
+}

+ 57 - 0
fonts/fontawesome/scss/_mixins.scss

@@ -0,0 +1,57 @@
+// Mixins
+// --------------------------
+
+@mixin fa-icon {
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  display: inline-block;
+  font-style: normal;
+  font-variant: normal;
+  font-weight: normal;
+  line-height: 1;
+  vertical-align: -.125em;
+}
+
+@mixin fa-icon-rotate($degrees, $rotation) {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})";
+  transform: rotate($degrees);
+}
+
+@mixin fa-icon-flip($horiz, $vert, $rotation) {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)";
+  transform: scale($horiz, $vert);
+}
+
+
+// Only display content to screen readers. A la Bootstrap 4.
+//
+// See: http://a11yproject.com/posts/how-to-hide-content/
+
+@mixin sr-only {
+  border: 0;
+  clip: rect(0, 0, 0, 0);
+  height: 1px;
+  margin: -1px;
+  overflow: hidden;
+  padding: 0;
+  position: absolute;
+  width: 1px;
+}
+
+// Use in conjunction with .sr-only to only display content when it's focused.
+//
+// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
+//
+// Credit: HTML5 Boilerplate
+
+@mixin sr-only-focusable {
+  &:active,
+  &:focus {
+    clip: auto;
+    height: auto;
+    margin: 0;
+    overflow: visible;
+    position: static;
+    width: auto;
+  }
+}

+ 23 - 0
fonts/fontawesome/scss/_rotated-flipped.scss

@@ -0,0 +1,23 @@
+// Rotated & Flipped Icons
+// -------------------------
+
+.#{$fa-css-prefix}-rotate-90  { @include fa-icon-rotate(90deg, 1);  }
+.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
+.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
+
+.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
+.#{$fa-css-prefix}-flip-vertical   { @include fa-icon-flip(1, -1, 2); }
+.#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(-1, -1, 2); }
+
+// Hook for IE8-9
+// -------------------------
+
+:root {
+  .#{$fa-css-prefix}-rotate-90,
+  .#{$fa-css-prefix}-rotate-180,
+  .#{$fa-css-prefix}-rotate-270,
+  .#{$fa-css-prefix}-flip-horizontal,
+  .#{$fa-css-prefix}-flip-vertical {
+    filter: none;
+  }
+}

+ 5 - 0
fonts/fontawesome/scss/_screen-reader.scss

@@ -0,0 +1,5 @@
+// Screen Readers
+// -------------------------
+
+.sr-only { @include sr-only; }
+.sr-only-focusable { @include sr-only-focusable; }

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 2066 - 0
fonts/fontawesome/scss/_shims.scss


+ 31 - 0
fonts/fontawesome/scss/_stacked.scss

@@ -0,0 +1,31 @@
+// Stacked Icons
+// -------------------------
+
+.#{$fa-css-prefix}-stack {
+  display: inline-block;
+  height: 2em;
+  line-height: 2em;
+  position: relative;
+  vertical-align: middle;
+  width: 2em;
+}
+
+.#{$fa-css-prefix}-stack-1x,
+.#{$fa-css-prefix}-stack-2x {
+  left: 0;
+  position: absolute;
+  text-align: center;
+  width: 100%;
+}
+
+.#{$fa-css-prefix}-stack-1x {
+  line-height: inherit;
+}
+
+.#{$fa-css-prefix}-stack-2x {
+  font-size: 2em;
+}
+
+.#{$fa-css-prefix}-inverse {
+  color: $fa-inverse;
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1127 - 0
fonts/fontawesome/scss/_variables.scss


+ 17 - 0
fonts/fontawesome/scss/fa-brands.scss

@@ -0,0 +1,17 @@
+@import 'variables';
+
+@font-face {
+  font-family: 'Font Awesome 5 Brands';
+  font-style: normal;
+  font-weight: normal;
+  src: url('#{$fa-font-path}/fa-brands-400.eot');
+  src: url('#{$fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),
+  url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'),
+  url('#{$fa-font-path}/fa-brands-400.woff') format('woff'),
+  url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'),
+  url('#{$fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');
+}
+
+.fab {
+  font-family: 'Font Awesome 5 Brands';
+}

+ 18 - 0
fonts/fontawesome/scss/fa-regular.scss

@@ -0,0 +1,18 @@
+@import 'variables';
+
+@font-face {
+  font-family: 'Font Awesome 5 Free';
+  font-style: normal;
+  font-weight: 400;
+  src: url('#{$fa-font-path}/fa-regular-400.eot');
+  src: url('#{$fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),
+  url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'),
+  url('#{$fa-font-path}/fa-regular-400.woff') format('woff'),
+  url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'),
+  url('#{$fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');
+}
+
+.far {
+  font-family: 'Font Awesome 5 Free';
+  font-weight: 400;
+}

+ 19 - 0
fonts/fontawesome/scss/fa-solid.scss

@@ -0,0 +1,19 @@
+@import 'variables';
+
+@font-face {
+  font-family: 'Font Awesome 5 Free';
+  font-style: normal;
+  font-weight: 900;
+  src: url('#{$fa-font-path}/fa-solid-900.eot');
+  src: url('#{$fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),
+  url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'),
+  url('#{$fa-font-path}/fa-solid-900.woff') format('woff'),
+  url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'),
+  url('#{$fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');
+}
+
+.fa,
+.fas {
+  font-family: 'Font Awesome 5 Free';
+  font-weight: 900;
+}

+ 16 - 0
fonts/fontawesome/scss/fontawesome.scss

@@ -0,0 +1,16 @@
+/*!
+ * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+@import 'variables';
+@import 'mixins';
+@import 'core';
+@import 'larger';
+@import 'fixed-width';
+@import 'list';
+@import 'bordered-pulled';
+@import 'animated';
+@import 'rotated-flipped';
+@import 'stacked';
+@import 'icons';
+@import 'screen-reader';

+ 6 - 0
fonts/fontawesome/scss/v4-shims.scss

@@ -0,0 +1,6 @@
+/*!
+ * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+@import 'variables';
+@import 'shims';

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1495 - 0
fonts/fontawesome/sprites/brands.svg


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 615 - 0
fonts/fontawesome/sprites/regular.svg


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 2967 - 0
fonts/fontawesome/sprites/solid.svg


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/svgs/brands/500px.svg


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/svgs/brands/accessible-icon.svg


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/svgs/brands/accusoft.svg


+ 5 - 0
fonts/fontawesome/svgs/brands/adn.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path d="M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z"/></svg>
+<!--
+Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com
+License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+-->

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/svgs/brands/adversal.svg


+ 5 - 0
fonts/fontawesome/svgs/brands/affiliatetheme.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z"/></svg>
+<!--
+Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com
+License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+-->

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/svgs/brands/algolia.svg


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/svgs/brands/amazon-pay.svg


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/svgs/brands/amazon.svg


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/svgs/brands/amilia.svg


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 5 - 0
fonts/fontawesome/svgs/brands/android.svg


+ 0 - 0
fonts/fontawesome/svgs/brands/angellist.svg


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác