From 13f9b0801c7dcef316ed189668d9698d3cb97d7f Mon Sep 17 00:00:00 2001
From: "Eduardo L. Buratti" <elb09@c3sl.ufpr.br>
Date: Wed, 13 Nov 2013 09:42:22 -0200
Subject: [PATCH] web: Add login modal

Signed-off-by: Eduardo L. Buratti <elb09@c3sl.ufpr.br>
---
 web/app/img/saving.gif       | Bin 0 -> 7784 bytes
 web/app/partials/header.html |   9 +++++---
 web/app/partials/login.html  |  29 +++++++++++++++++++++++++
 web/assets/js/app.js         |  41 +++++++++++++++++++++++++++++++++--
 web/assets/less/main.less    |  13 +++++++++++
 5 files changed, 87 insertions(+), 5 deletions(-)
 create mode 100644 web/app/img/saving.gif
 create mode 100644 web/app/partials/login.html

diff --git a/web/app/img/saving.gif b/web/app/img/saving.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5a84f4a319437b93aa8598fcd548319da4cb352b
GIT binary patch
literal 7784
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

literal 0
HcmV?d00001

diff --git a/web/app/partials/header.html b/web/app/partials/header.html
index 1ff3e1c..d664e23 100644
--- a/web/app/partials/header.html
+++ b/web/app/partials/header.html
@@ -3,12 +3,13 @@
         <li><a href="">Pular para o conteúdo</a></li>
         <li><a href="">Ouvidoria</a></li>
         <li><a href="">Mapa do site</a></li>
+        <li><a href="" ng-click="login.show()">Acesso Restrito</a></li>
     </ul>
 
     <div class="header-font-size">
-        <a class="dec" href="#" title="Diminuir fonte">A-</a>
-        <a class="reset" href="#" title="Tamanho normal da fonte">A&nbsp;</a>
-        <a class="inc" href="#" title="Aumentar fonte">A+</a>
+        <a class="dec" href="" title="Diminuir fonte">A-</a>
+        <a class="reset" href="" title="Tamanho normal da fonte">A&nbsp;</a>
+        <a class="inc" href="" title="Aumentar fonte">A+</a>
     </div>
 
     <div class="header-title">
@@ -30,6 +31,8 @@
     </div>
 </div>
 
+<div ng-include="login.includeUrl"></div>
+
 <div class="container">
     <div ng-show="bigButtons.collapsed">
         <div ng-include="'partials/breadcrumb.html'"></div>
diff --git a/web/app/partials/login.html b/web/app/partials/login.html
new file mode 100644
index 0000000..fa8651a
--- /dev/null
+++ b/web/app/partials/login.html
@@ -0,0 +1,29 @@
+<div class="modal-backdrop fade in"></div>
+<div class="modal">
+    <div class="modal-dialog">
+        <div class="modal-content">
+            <form role="form" ng-submit="login.submit()">
+                <div class="modal-header">
+                    <h4 class="modal-title">Acesso Restrito</h4>
+                </div>
+                <div class="modal-body">
+                    <div class="alert alert-danger" ng-show="login.error"><strong>Erro!</strong> {{ login.error }}</div>
+                    <div class="form-group">
+                        <label for="username">Usuário:</label>
+                        <input type="text" class="form-control" id="username" ng-model="login.username" autofocus>
+                    </div>
+                    <div class="form-group">
+                        <label for="password">Senha:</label>
+                        <input type="password" class="form-control" id="password" ng-model="login.password">
+                    </div>
+                </div>
+                <div class="modal-footer">
+                    <button class="btn btn-default" ng-click="login.cancel()">Cancelar</button>
+                    <button type="submit" class="btn btn-primary">
+                        Login <i class="saving" ng-show="login.loading"></i>
+                    </button>
+                </div>
+            </form>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/web/assets/js/app.js b/web/assets/js/app.js
index 2b349dd..ad4238d 100644
--- a/web/assets/js/app.js
+++ b/web/assets/js/app.js
@@ -63,7 +63,44 @@ angular.module('datasid', ['ngResource', 'ui.router', 'datasid.install', 'datasi
                     active: false
                 },
             ],
-        }
+        };
+
+        $scope.login = {
+            includeUrl: '',
+            error: null,
+            loading: false,
+            username: '',
+            password: '',
+            show: function () {
+                this.includeUrl = 'partials/login.html';
+            },
+            hide: function () {
+                this.includeUrl = '';
+            },
+            submit: function () {
+                this.loading = true;
+
+                setTimeout(function () {
+                    $scope.$apply(function () {
+                        $scope.login.loading = false;
+
+                        if (($scope.login.username === 'admin') && ($scope.login.password === '123mudar')) {
+                            $scope.login.hide();
+                        }
+                        else {
+                            $scope.login.error = 'Usuário ou senha inválidos.';
+                        }
+                    });
+                }, 1000);
+            },
+            cancel: function () {
+                this.error = null;
+                this.loading = false;
+                this.username = '';
+                this.password = '';
+                this.hide();
+            }
+        };
 
         $scope.$on("$stateChangeSuccess", function(event, toState, toParams, fromState, fromParams) {
             if (typeof $state.current === "undefined")
@@ -85,5 +122,5 @@ angular.module('datasid', ['ngResource', 'ui.router', 'datasid.install', 'datasi
                     }
                 });
             }
-        })
+        });
     });
\ No newline at end of file
diff --git a/web/assets/less/main.less b/web/assets/less/main.less
index 914e053..100593d 100644
--- a/web/assets/less/main.less
+++ b/web/assets/less/main.less
@@ -146,3 +146,16 @@ p.note {
      padding: 14px 20px;
      mc-auto-number-format: '{b}Note: {/b}';
 }
+
+.modal {
+    display: block;
+}
+
+.saving {
+  display: inline-block;
+  width: 16px;
+  height: 16px;
+  margin: 0px -4px -3px 4px;
+  background-image: url("../img/saving.gif");
+  background-repeat: no-repeat;
+}
\ No newline at end of file
-- 
GitLab