prepare to pypi packaging
This commit is contained in:
parent
86de78348a
commit
9c33110879
24 changed files with 415 additions and 4088 deletions
|
@ -17,12 +17,11 @@ class ControllerAdministrators:
|
||||||
:param status:
|
:param status:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
result = models.Admins.select().\
|
result = models.Admins.select().where(
|
||||||
where(
|
|
||||||
models.Admins.email == email,
|
models.Admins.email == email,
|
||||||
models.Admins.password == md5(password).hexdigest(),
|
models.Admins.password == md5(password).hexdigest(),
|
||||||
models.Admins.status == status
|
models.Admins.status == status
|
||||||
).count()
|
).count()
|
||||||
|
|
||||||
if result == 0:
|
if result == 0:
|
||||||
return False
|
return False
|
||||||
|
|
|
@ -4,21 +4,50 @@ from SWSCloudCore import models
|
||||||
|
|
||||||
|
|
||||||
class ControllerBilling:
|
class ControllerBilling:
|
||||||
|
"""
|
||||||
|
Класс работы с деньгами
|
||||||
|
"""
|
||||||
def get(self, user_id):
|
def get(self, user_id):
|
||||||
return models.UsersBalance.select(
|
"""
|
||||||
|
Выбираем состояние баланса выбранного пользователя
|
||||||
|
"""
|
||||||
|
x = models.UsersBalance.select(
|
||||||
models.UsersBalance.balance
|
models.UsersBalance.balance
|
||||||
).where(
|
).where(
|
||||||
models.UsersBalance.user == user_id
|
models.UsersBalance.user == user_id
|
||||||
)[0].balance
|
).get()
|
||||||
|
return x.balance
|
||||||
|
|
||||||
def update(self, user_id):
|
def update(self, user_id):
|
||||||
|
"""
|
||||||
|
Обновление баланса
|
||||||
|
"""
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def exists(self, user_id):
|
def exists(self, user_id):
|
||||||
if models.UsersBalance.select().where(models.UsersBalance.user == user_id).count() == 0:
|
"""
|
||||||
|
Проверяет наличие записи в таблице балансов
|
||||||
|
"""
|
||||||
|
cnt = models.UsersBalance.select().where(
|
||||||
|
models.UsersBalance.user == user_id
|
||||||
|
).count()
|
||||||
|
if cnt == 0:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def create(self, user_id, balance=0):
|
def create(self, user_id, balance=0):
|
||||||
|
"""
|
||||||
|
Создание записи в таблице
|
||||||
|
"""
|
||||||
models.UsersBalance.create(user=user_id, balance=balance)
|
models.UsersBalance.create(user=user_id, balance=balance)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def transactions_get(self, user_id):
|
||||||
|
transactions = dict()
|
||||||
|
transactions['total'] = models.UsersBalanceTransactions.select().where(
|
||||||
|
models.UsersBalanceTransactions.user == user_id
|
||||||
|
).count()
|
||||||
|
transactions['items'] = models.UsersBalanceTransactions.select().where(
|
||||||
|
models.UsersBalanceTransactions.user == user_id
|
||||||
|
)
|
||||||
|
return transactions
|
||||||
|
|
|
@ -22,7 +22,7 @@ class ControllerContainers:
|
||||||
status=status
|
status=status
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# todo: write to log
|
# TODO: write to log
|
||||||
print e
|
print e
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
@ -65,7 +65,7 @@ class ControllerContainers:
|
||||||
return models.Containers.select().where(
|
return models.Containers.select().where(
|
||||||
models.Containers.user == self.user_id,
|
models.Containers.user == self.user_id,
|
||||||
models.Containers.id == container_id
|
models.Containers.id == container_id
|
||||||
).limit(1)[0]
|
).get()
|
||||||
|
|
||||||
def set_status(self, rule_id, status=0):
|
def set_status(self, rule_id, status=0):
|
||||||
# Устанавливаем статус в самом правиле
|
# Устанавливаем статус в самом правиле
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# coding: utf-8
|
||||||
|
|
||||||
from SWSCloudCore import models
|
from SWSCloudCore import models
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ class ControllerIps:
|
||||||
# select IP
|
# select IP
|
||||||
return models.Ips.select().where(
|
return models.Ips.select().where(
|
||||||
models.Ips.datacenter == datacenter_id and models.Ips.status == 0
|
models.Ips.datacenter == datacenter_id and models.Ips.status == 0
|
||||||
)[0]
|
).get()
|
||||||
|
|
||||||
def setbusy(self, ip_id):
|
def setbusy(self, ip_id):
|
||||||
# mark ip as busy (taken)
|
# mark ip as busy (taken)
|
||||||
|
|
|
@ -21,18 +21,25 @@ class ControllerUsers:
|
||||||
def user_id_by_email(self, email):
|
def user_id_by_email(self, email):
|
||||||
return models.Users.get(models.Users.email == email).id
|
return models.Users.get(models.Users.email == email).id
|
||||||
|
|
||||||
|
def get_id_by_email(self, email):
|
||||||
|
return models.Users.get(models.Users.email == email).id
|
||||||
|
|
||||||
def user_exists_by_email(self, email):
|
def user_exists_by_email(self, email):
|
||||||
if models.Users.select().where(models.Users.email == email).count() == 0:
|
cnt = models.Users.select().where(models.Users.email == email).count()
|
||||||
|
if cnt == 0:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
return models.Users.select().where(models.Users.id == self.user_id).limit(1)[0]
|
return models.Users.select().where(models.Users.id == self.user_id).get()
|
||||||
|
|
||||||
def update(self, user_id, **kwargs):
|
def update(self, user_id, **kwargs):
|
||||||
if 'password' in kwargs:
|
if 'password' in kwargs:
|
||||||
x = models.Users.update(password=md5(kwargs['password']).hexdigest()).where(
|
x = models.Users.update(
|
||||||
models.Users.id == user_id)
|
password=md5(kwargs['password']).hexdigest()
|
||||||
|
).where(
|
||||||
|
models.Users.id == user_id
|
||||||
|
)
|
||||||
x.execute()
|
x.execute()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -63,12 +70,11 @@ class ControllerUsers:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
password_hash = md5(password).hexdigest()
|
password_hash = md5(password).hexdigest()
|
||||||
result = models.Users.select().\
|
result = models.Users.select().where(
|
||||||
where(
|
|
||||||
models.Users.email == email,
|
models.Users.email == email,
|
||||||
models.Users.password == password_hash,
|
models.Users.password == password_hash,
|
||||||
models.Users.status == status
|
models.Users.status == status
|
||||||
).count()
|
).count()
|
||||||
if result == 0:
|
if result == 0:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
@ -82,7 +88,7 @@ class ControllerUsers:
|
||||||
"""
|
"""
|
||||||
password_hash = md5(password).hexdigest()
|
password_hash = md5(password).hexdigest()
|
||||||
user_id = uuid.uuid4()
|
user_id = uuid.uuid4()
|
||||||
# todo: add date registration and update of date - =datetime.datetime.now()
|
# TODO: add date registration and update of date - =datetime.datetime.now()
|
||||||
user = models.Users.create(id=user_id, email=email, password=password_hash, status=1)
|
user = models.Users.create(id=user_id, email=email, password=password_hash, status=1)
|
||||||
if user.id:
|
if user.id:
|
||||||
return True
|
return True
|
||||||
|
@ -95,10 +101,6 @@ class ControllerUsers:
|
||||||
u.save()
|
u.save()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def get_id_by_email(self, email):
|
|
||||||
user = models.Users.select(models.Users.id).where(models.Users.email == email).limit(1)
|
|
||||||
return user[0].id
|
|
||||||
|
|
||||||
|
|
||||||
class ControllerUsersRecoveryCodes():
|
class ControllerUsersRecoveryCodes():
|
||||||
def create(self, user_id, code):
|
def create(self, user_id, code):
|
||||||
|
|
|
@ -26,6 +26,9 @@ class PgSQLModel(Model):
|
||||||
|
|
||||||
|
|
||||||
class DataCenters(PgSQLModel):
|
class DataCenters(PgSQLModel):
|
||||||
|
"""
|
||||||
|
Модель датацентров
|
||||||
|
"""
|
||||||
id = UUIDField(unique=True, primary_key=True, null=False)
|
id = UUIDField(unique=True, primary_key=True, null=False)
|
||||||
code = CharField(unique=True)
|
code = CharField(unique=True)
|
||||||
name = CharField(unique=True)
|
name = CharField(unique=True)
|
||||||
|
@ -36,7 +39,7 @@ class DataCenters(PgSQLModel):
|
||||||
|
|
||||||
class Servers(PgSQLModel):
|
class Servers(PgSQLModel):
|
||||||
id = UUIDField(unique=True, primary_key=True)
|
id = UUIDField(unique=True, primary_key=True)
|
||||||
datacenter = ForeignKeyField(DataCenters, related_name='dcsservers')
|
datacenter = ForeignKeyField(DataCenters)
|
||||||
secret = CharField()
|
secret = CharField()
|
||||||
created = DateTimeField(default=datetime.datetime.now())
|
created = DateTimeField(default=datetime.datetime.now())
|
||||||
status = IntegerField()
|
status = IntegerField()
|
||||||
|
@ -57,8 +60,7 @@ class Ips(PgSQLModel):
|
||||||
ipv6 = CharField()
|
ipv6 = CharField()
|
||||||
ipv4_gateway = CharField()
|
ipv4_gateway = CharField()
|
||||||
ipv6_gateway = CharField()
|
ipv6_gateway = CharField()
|
||||||
# 0 - free
|
# 0: free, 1: used
|
||||||
# 1 - used
|
|
||||||
status = IntegerField()
|
status = IntegerField()
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,17 +68,18 @@ class Users(PgSQLModel):
|
||||||
id = UUIDField(primary_key=True, unique=True)
|
id = UUIDField(primary_key=True, unique=True)
|
||||||
email = CharField(unique=True, null=False)
|
email = CharField(unique=True, null=False)
|
||||||
password = CharField()
|
password = CharField()
|
||||||
|
created = DateTimeField(default=datetime.datetime.now)
|
||||||
status = IntegerField()
|
status = IntegerField()
|
||||||
|
|
||||||
|
|
||||||
class UsersRecoveryCodes(PgSQLModel):
|
class UsersRecoveryCodes(PgSQLModel):
|
||||||
user = ForeignKeyField(Users, related_name='usersrecoverycodes')
|
user = ForeignKeyField(Users)
|
||||||
recovery_code = CharField(null=False)
|
recovery_code = CharField(null=False)
|
||||||
created = DateTimeField(default=datetime.datetime.now)
|
created = DateTimeField(default=datetime.datetime.now)
|
||||||
|
|
||||||
|
|
||||||
class UsersSecrets(PgSQLModel):
|
class UsersSecrets(PgSQLModel):
|
||||||
user = ForeignKeyField(Users, related_name='userssecrets')
|
user = ForeignKeyField(Users)
|
||||||
# 4f235008-a9bd-11e5-a24e-28d244e159e9
|
# 4f235008-a9bd-11e5-a24e-28d244e159e9
|
||||||
secret = CharField(unique=True, null=False)
|
secret = CharField(unique=True, null=False)
|
||||||
# 1.1.1.1,1.2.3.4
|
# 1.1.1.1,1.2.3.4
|
||||||
|
@ -87,24 +90,29 @@ class UsersSecrets(PgSQLModel):
|
||||||
|
|
||||||
|
|
||||||
class UsersDetails(PgSQLModel):
|
class UsersDetails(PgSQLModel):
|
||||||
user = ForeignKeyField(Users, related_name='usersdetails')
|
user = ForeignKeyField(Users)
|
||||||
fname = CharField(null=True)
|
fname = CharField(null=True, default='')
|
||||||
lname = CharField(null=True)
|
lname = CharField(null=True, default='')
|
||||||
address = CharField(null=True)
|
address = CharField(null=True, default='')
|
||||||
city = CharField(null=True)
|
city = CharField(null=True, default='')
|
||||||
country = CharField(null=True)
|
country = CharField(null=True, default='')
|
||||||
state = CharField(null=True)
|
state = CharField(null=True, default='')
|
||||||
zipcode = IntegerField(null=True)
|
zipcode = IntegerField(null=True, default='')
|
||||||
|
|
||||||
|
|
||||||
class UsersBalance(PgSQLModel):
|
class UsersBalance(PgSQLModel):
|
||||||
user = ForeignKeyField(Users, related_name='usersbalance')
|
"""
|
||||||
|
Текущий баланс пользователей
|
||||||
|
"""
|
||||||
|
user = ForeignKeyField(Users)
|
||||||
balance = FloatField(default=0, null=False)
|
balance = FloatField(default=0, null=False)
|
||||||
|
|
||||||
|
|
||||||
class UsersBalanceTransactions(PgSQLModel):
|
class UsersBalanceTransactions(PgSQLModel):
|
||||||
id = IntegerField(primary_key=True, null=False, sequence='nextval')
|
"""
|
||||||
user = ForeignKeyField(Users, related_name='usersbalancetransaction')
|
Транзакции
|
||||||
|
"""
|
||||||
|
user = ForeignKeyField(Users)
|
||||||
amount = FloatField(default=0, null=False)
|
amount = FloatField(default=0, null=False)
|
||||||
created = DateTimeField(default=datetime.datetime.now)
|
created = DateTimeField(default=datetime.datetime.now)
|
||||||
notified = IntegerField(null=False, default=0)
|
notified = IntegerField(null=False, default=0)
|
||||||
|
@ -117,6 +125,10 @@ class UsersBalanceTransactions(PgSQLModel):
|
||||||
class SSHKeys(PgSQLModel):
|
class SSHKeys(PgSQLModel):
|
||||||
user = ForeignKeyField(Users)
|
user = ForeignKeyField(Users)
|
||||||
sshkey = TextField(null=True)
|
sshkey = TextField(null=True)
|
||||||
|
# с какого ip был добавлен ключ
|
||||||
|
remote = TextField(null=True)
|
||||||
|
# когда был добавлен ключ
|
||||||
|
created = DateTimeField(default=datetime.datetime.now)
|
||||||
|
|
||||||
|
|
||||||
class Containers(PgSQLModel):
|
class Containers(PgSQLModel):
|
||||||
|
@ -126,12 +138,7 @@ class Containers(PgSQLModel):
|
||||||
user = ForeignKeyField(Users)
|
user = ForeignKeyField(Users)
|
||||||
ipv4 = CharField()
|
ipv4 = CharField()
|
||||||
ipv6 = CharField()
|
ipv6 = CharField()
|
||||||
# 0
|
# 0: inactive, 1: active, 2: ..., 3: ..., 4: ..., 5: ...
|
||||||
# 1
|
|
||||||
# 2
|
|
||||||
# 3
|
|
||||||
# 4
|
|
||||||
# 5
|
|
||||||
status = IntegerField()
|
status = IntegerField()
|
||||||
|
|
||||||
|
|
||||||
|
@ -159,9 +166,9 @@ class ContainersStatisticsState(PgSQLModel):
|
||||||
|
|
||||||
class Tasks(PgSQLModel):
|
class Tasks(PgSQLModel):
|
||||||
id = UUIDField(primary_key=True, unique=True)
|
id = UUIDField(primary_key=True, unique=True)
|
||||||
datacenter = ForeignKeyField(DataCenters, related_name='dcstasks')
|
datacenter = ForeignKeyField(DataCenters)
|
||||||
server = ForeignKeyField(Servers, related_name='serverstasks')
|
server = ForeignKeyField(Servers)
|
||||||
user = ForeignKeyField(Users, related_name='userstasks')
|
user = ForeignKeyField(Users)
|
||||||
created = DateTimeField(default=datetime.datetime.now)
|
created = DateTimeField(default=datetime.datetime.now)
|
||||||
task = CharField(null=False)
|
task = CharField(null=False)
|
||||||
# 0 - new
|
# 0 - new
|
||||||
|
@ -172,6 +179,9 @@ class Tasks(PgSQLModel):
|
||||||
|
|
||||||
|
|
||||||
class Settings(PgSQLModel):
|
class Settings(PgSQLModel):
|
||||||
|
"""
|
||||||
|
Модель настроек
|
||||||
|
"""
|
||||||
key = TextField(unique=True, null=False)
|
key = TextField(unique=True, null=False)
|
||||||
val = TextField(null=True)
|
val = TextField(null=True)
|
||||||
|
|
||||||
|
|
|
@ -1,233 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="author" content="">
|
|
||||||
|
|
||||||
<title>SB Admin - Bootstrap Admin Template</title>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core CSS -->
|
|
||||||
<link href="css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom CSS -->
|
|
||||||
<link href="css/sb-admin.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom Fonts -->
|
|
||||||
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
|
||||||
|
|
||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div id="wrapper">
|
|
||||||
|
|
||||||
<!-- Navigation -->
|
|
||||||
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
|
||||||
<!-- Brand and toggle get grouped for better mobile display -->
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="index.html">SB Admin</a>
|
|
||||||
</div>
|
|
||||||
<!-- Top Menu Items -->
|
|
||||||
<ul class="nav navbar-right top-nav">
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-envelope"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu message-dropdown">
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading">
|
|
||||||
<strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading">
|
|
||||||
<strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading">
|
|
||||||
<strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-footer">
|
|
||||||
<a href="#">Read All New Messages</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-bell"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu alert-dropdown">
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-default">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-primary">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-success">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-info">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-warning">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-danger">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#">View All</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> John Smith <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-user"></i> Profile</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-envelope"></i> Inbox</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-power-off"></i> Log Out</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
|
|
||||||
<div class="collapse navbar-collapse navbar-ex1-collapse">
|
|
||||||
<ul class="nav navbar-nav side-nav">
|
|
||||||
<li>
|
|
||||||
<a href="index.html"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="charts.html"><i class="fa fa-fw fa-bar-chart-o"></i> Charts</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="tables.html"><i class="fa fa-fw fa-table"></i> Tables</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="forms.html"><i class="fa fa-fw fa-edit"></i> Forms</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-elements.html"><i class="fa fa-fw fa-desktop"></i> Bootstrap Elements</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-grid.html"><i class="fa fa-fw fa-wrench"></i> Bootstrap Grid</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="javascript:;" data-toggle="collapse" data-target="#demo"><i class="fa fa-fw fa-arrows-v"></i> Dropdown <i class="fa fa-fw fa-caret-down"></i></a>
|
|
||||||
<ul id="demo" class="collapse">
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<a href="blank-page.html"><i class="fa fa-fw fa-file"></i> Blank Page</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="index-rtl.html"><i class="fa fa-fw fa-dashboard"></i> RTL Dashboard</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<!-- /.navbar-collapse -->
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div id="page-wrapper">
|
|
||||||
|
|
||||||
<div class="container-fluid">
|
|
||||||
|
|
||||||
<!-- Page Heading -->
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h1 class="page-header">
|
|
||||||
Blank Page
|
|
||||||
<small>Subheading</small>
|
|
||||||
</h1>
|
|
||||||
<ol class="breadcrumb">
|
|
||||||
<li>
|
|
||||||
<i class="fa fa-dashboard"></i> <a href="index.html">Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<i class="fa fa-file"></i> Blank Page
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /.container-fluid -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#page-wrapper -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#wrapper -->
|
|
||||||
|
|
||||||
<!-- jQuery -->
|
|
||||||
<script src="js/jquery.js"></script>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core JavaScript -->
|
|
||||||
<script src="js/bootstrap.min.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
|
@ -1,584 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="author" content="">
|
|
||||||
|
|
||||||
<title>SB Admin - Bootstrap Admin Template</title>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core CSS -->
|
|
||||||
<link href="css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom CSS -->
|
|
||||||
<link href="css/sb-admin.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom Fonts -->
|
|
||||||
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
|
||||||
|
|
||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div id="wrapper">
|
|
||||||
|
|
||||||
<!-- Navigation -->
|
|
||||||
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
|
||||||
<!-- Brand and toggle get grouped for better mobile display -->
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="index.html">SB Admin</a>
|
|
||||||
</div>
|
|
||||||
<!-- Top Menu Items -->
|
|
||||||
<ul class="nav navbar-right top-nav">
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-envelope"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu message-dropdown">
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-footer">
|
|
||||||
<a href="#">Read All New Messages</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-bell"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu alert-dropdown">
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-default">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-primary">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-success">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-info">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-warning">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-danger">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#">View All</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> John Smith <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-user"></i> Profile</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-envelope"></i> Inbox</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-power-off"></i> Log Out</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
|
|
||||||
<div class="collapse navbar-collapse navbar-ex1-collapse">
|
|
||||||
<ul class="nav navbar-nav side-nav">
|
|
||||||
<li>
|
|
||||||
<a href="index.html"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="charts.html"><i class="fa fa-fw fa-bar-chart-o"></i> Charts</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="tables.html"><i class="fa fa-fw fa-table"></i> Tables</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="forms.html"><i class="fa fa-fw fa-edit"></i> Forms</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<a href="bootstrap-elements.html"><i class="fa fa-fw fa-desktop"></i> Bootstrap Elements</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-grid.html"><i class="fa fa-fw fa-wrench"></i> Bootstrap Grid</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="javascript:;" data-toggle="collapse" data-target="#demo"><i class="fa fa-fw fa-arrows-v"></i> Dropdown <i class="fa fa-fw fa-caret-down"></i></a>
|
|
||||||
<ul id="demo" class="collapse">
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="blank-page.html"><i class="fa fa-fw fa-file"></i> Blank Page</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="index-rtl.html"><i class="fa fa-fw fa-dashboard"></i> RTL Dashboard</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<!-- /.navbar-collapse -->
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div id="page-wrapper">
|
|
||||||
|
|
||||||
<div class="container-fluid">
|
|
||||||
|
|
||||||
<!-- Page Heading -->
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h1 class="page-header">
|
|
||||||
Bootstrap Elements
|
|
||||||
</h1>
|
|
||||||
<ol class="breadcrumb">
|
|
||||||
<li>
|
|
||||||
<i class="fa fa-dashboard"></i> <a href="index.html">Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<i class="fa fa-desktop"></i> Bootstrap Elements
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<!-- Main jumbotron for a primary marketing message or call to action -->
|
|
||||||
<div class="jumbotron">
|
|
||||||
<h1>Hello, world!</h1>
|
|
||||||
<p>This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
|
|
||||||
<p><a href="#" class="btn btn-primary btn-lg" role="button">Learn more »</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="page-header">
|
|
||||||
<h1>Buttons</h1>
|
|
||||||
</div>
|
|
||||||
<p>
|
|
||||||
<button type="button" class="btn btn-lg btn-default">Default</button>
|
|
||||||
<button type="button" class="btn btn-lg btn-primary">Primary</button>
|
|
||||||
<button type="button" class="btn btn-lg btn-success">Success</button>
|
|
||||||
<button type="button" class="btn btn-lg btn-info">Info</button>
|
|
||||||
<button type="button" class="btn btn-lg btn-warning">Warning</button>
|
|
||||||
<button type="button" class="btn btn-lg btn-danger">Danger</button>
|
|
||||||
<button type="button" class="btn btn-lg btn-link">Link</button>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<button type="button" class="btn btn-default">Default</button>
|
|
||||||
<button type="button" class="btn btn-primary">Primary</button>
|
|
||||||
<button type="button" class="btn btn-success">Success</button>
|
|
||||||
<button type="button" class="btn btn-info">Info</button>
|
|
||||||
<button type="button" class="btn btn-warning">Warning</button>
|
|
||||||
<button type="button" class="btn btn-danger">Danger</button>
|
|
||||||
<button type="button" class="btn btn-link">Link</button>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<button type="button" class="btn btn-sm btn-default">Default</button>
|
|
||||||
<button type="button" class="btn btn-sm btn-primary">Primary</button>
|
|
||||||
<button type="button" class="btn btn-sm btn-success">Success</button>
|
|
||||||
<button type="button" class="btn btn-sm btn-info">Info</button>
|
|
||||||
<button type="button" class="btn btn-sm btn-warning">Warning</button>
|
|
||||||
<button type="button" class="btn btn-sm btn-danger">Danger</button>
|
|
||||||
<button type="button" class="btn btn-sm btn-link">Link</button>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<button type="button" class="btn btn-xs btn-default">Default</button>
|
|
||||||
<button type="button" class="btn btn-xs btn-primary">Primary</button>
|
|
||||||
<button type="button" class="btn btn-xs btn-success">Success</button>
|
|
||||||
<button type="button" class="btn btn-xs btn-info">Info</button>
|
|
||||||
<button type="button" class="btn btn-xs btn-warning">Warning</button>
|
|
||||||
<button type="button" class="btn btn-xs btn-danger">Danger</button>
|
|
||||||
<button type="button" class="btn btn-xs btn-link">Link</button>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div class="page-header">
|
|
||||||
<h1>Thumbnails</h1>
|
|
||||||
</div>
|
|
||||||
<img class="img-thumbnail" src="http://placehold.it/400x400" alt="">
|
|
||||||
|
|
||||||
<div class="page-header">
|
|
||||||
<h1>Dropdown menus</h1>
|
|
||||||
</div>
|
|
||||||
<div class="dropdown theme-dropdown clearfix">
|
|
||||||
<a id="dropdownMenu1" href="#" role="button" class="sr-only dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
|
|
||||||
<li class="active" role="presentation"><a role="menuitem" tabindex="-1" href="#">Action</a>
|
|
||||||
</li>
|
|
||||||
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Another action</a>
|
|
||||||
</li>
|
|
||||||
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Something else here</a>
|
|
||||||
</li>
|
|
||||||
<li role="presentation" class="divider"></li>
|
|
||||||
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Separated link</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="page-header">
|
|
||||||
<h1>Navbars</h1>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="navbar navbar-default">
|
|
||||||
<div class="container">
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="#">Project name</a>
|
|
||||||
</div>
|
|
||||||
<div class="navbar-collapse collapse">
|
|
||||||
<ul class="nav navbar-nav">
|
|
||||||
<li class="active"><a href="#">Home</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="#about">About</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="#contact">Contact</a>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a href="#">Action</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="#">Another action</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="#">Something else here</a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li class="dropdown-header">Nav header</li>
|
|
||||||
<li><a href="#">Separated link</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="#">One more separated link</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<!--/.nav-collapse -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="navbar navbar-inverse">
|
|
||||||
<div class="container">
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="#">Project name</a>
|
|
||||||
</div>
|
|
||||||
<div class="navbar-collapse collapse">
|
|
||||||
<ul class="nav navbar-nav">
|
|
||||||
<li class="active"><a href="#">Home</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="#about">About</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="#contact">Contact</a>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a href="#">Action</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="#">Another action</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="#">Something else here</a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li class="dropdown-header">Nav header</li>
|
|
||||||
<li><a href="#">Separated link</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="#">One more separated link</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<!--/.nav-collapse -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="page-header">
|
|
||||||
<h1>Alerts</h1>
|
|
||||||
</div>
|
|
||||||
<div class="alert alert-success">
|
|
||||||
<strong>Well done!</strong> You successfully read this important alert message.
|
|
||||||
</div>
|
|
||||||
<div class="alert alert-info">
|
|
||||||
<strong>Heads up!</strong> This alert needs your attention, but it's not super important.
|
|
||||||
</div>
|
|
||||||
<div class="alert alert-warning">
|
|
||||||
<strong>Warning!</strong> Best check yo self, you're not looking too good.
|
|
||||||
</div>
|
|
||||||
<div class="alert alert-danger">
|
|
||||||
<strong>Oh snap!</strong> Change a few things up and try submitting again.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="page-header">
|
|
||||||
<h1>Progress bars</h1>
|
|
||||||
</div>
|
|
||||||
<div class="progress">
|
|
||||||
<div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;"><span class="sr-only">60% Complete</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="progress">
|
|
||||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 40%"><span class="sr-only">40% Complete (success)</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="progress">
|
|
||||||
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: 20%"><span class="sr-only">20% Complete</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="progress">
|
|
||||||
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%"><span class="sr-only">60% Complete (warning)</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="progress">
|
|
||||||
<div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%"><span class="sr-only">80% Complete (danger)</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="progress">
|
|
||||||
<div class="progress-bar progress-bar-success" style="width: 35%"><span class="sr-only">35% Complete (success)</span>
|
|
||||||
</div>
|
|
||||||
<div class="progress-bar progress-bar-warning" style="width: 20%"><span class="sr-only">20% Complete (warning)</span>
|
|
||||||
</div>
|
|
||||||
<div class="progress-bar progress-bar-danger" style="width: 10%"><span class='sr-only'>10% Complete (danger)</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="page-header">
|
|
||||||
<h1>List groups</h1>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<ul class="list-group">
|
|
||||||
<li class="list-group-item">Cras justo odio</li>
|
|
||||||
<li class="list-group-item">Dapibus ac facilisis in</li>
|
|
||||||
<li class="list-group-item">Morbi leo risus</li>
|
|
||||||
<li class="list-group-item">Porta ac consectetur ac</li>
|
|
||||||
<li class="list-group-item">Vestibulum at eros</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<!-- /.col-sm-4 -->
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<div class="list-group">
|
|
||||||
<a href="#" class="list-group-item active">Cras justo odio</a>
|
|
||||||
<a href="#" class="list-group-item">Dapibus ac facilisis in</a>
|
|
||||||
<a href="#" class="list-group-item">Morbi leo risus</a>
|
|
||||||
<a href="#" class="list-group-item">Porta ac consectetur ac</a>
|
|
||||||
<a href="#" class="list-group-item">Vestibulum at eros</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.col-sm-4 -->
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<div class="list-group">
|
|
||||||
<a href="#" class="list-group-item active">
|
|
||||||
<h4 class="list-group-item-heading">List group item heading</h4>
|
|
||||||
<p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<h4 class="list-group-item-heading">List group item heading</h4>
|
|
||||||
<p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<h4 class="list-group-item-heading">List group item heading</h4>
|
|
||||||
<p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.col-sm-4 -->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="page-header">
|
|
||||||
<h1>Panels</h1>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title">Panel title</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
Panel content
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="panel panel-primary">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title">Panel title</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
Panel content
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.col-sm-4 -->
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<div class="panel panel-success">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title">Panel title</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
Panel content
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="panel panel-info">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title">Panel title</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
Panel content
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.col-sm-4 -->
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<div class="panel panel-warning">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title">Panel title</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
Panel content
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="panel panel-danger">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title">Panel title</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
Panel content
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.col-sm-4 -->
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<div class="panel panel-green">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title">Panel title</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
Panel content
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.col-sm-4 -->
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<div class="panel panel-yellow">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title">Panel title</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
Panel content
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.col-sm-4 -->
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<div class="panel panel-red">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title">Panel title</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
Panel content
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.col-sm-4 -->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="page-header">
|
|
||||||
<h1>Wells</h1>
|
|
||||||
</div>
|
|
||||||
<div class="well">
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sed diam eget risus varius blandit sit amet non magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /.container-fluid -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#page-wrapper -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#wrapper -->
|
|
||||||
|
|
||||||
<!-- jQuery -->
|
|
||||||
<script src="js/jquery.js"></script>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core JavaScript -->
|
|
||||||
<script src="js/bootstrap.min.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
|
@ -1,494 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="author" content="">
|
|
||||||
|
|
||||||
<title>SB Admin - Bootstrap Admin Template</title>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core CSS -->
|
|
||||||
<link href="css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom CSS -->
|
|
||||||
<link href="css/sb-admin.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom Fonts -->
|
|
||||||
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
|
||||||
|
|
||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div id="wrapper">
|
|
||||||
|
|
||||||
<!-- Navigation -->
|
|
||||||
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
|
||||||
<!-- Brand and toggle get grouped for better mobile display -->
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="index.html">SB Admin</a>
|
|
||||||
</div>
|
|
||||||
<!-- Top Menu Items -->
|
|
||||||
<ul class="nav navbar-right top-nav">
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-envelope"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu message-dropdown">
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-footer">
|
|
||||||
<a href="#">Read All New Messages</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-bell"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu alert-dropdown">
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-default">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-primary">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-success">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-info">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-warning">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-danger">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#">View All</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> John Smith <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-user"></i> Profile</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-envelope"></i> Inbox</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-power-off"></i> Log Out</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
|
|
||||||
<div class="collapse navbar-collapse navbar-ex1-collapse">
|
|
||||||
<ul class="nav navbar-nav side-nav">
|
|
||||||
<li>
|
|
||||||
<a href="index.html"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="charts.html"><i class="fa fa-fw fa-bar-chart-o"></i> Charts</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="tables.html"><i class="fa fa-fw fa-table"></i> Tables</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="forms.html"><i class="fa fa-fw fa-edit"></i> Forms</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-elements.html"><i class="fa fa-fw fa-desktop"></i> Bootstrap Elements</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<a href="bootstrap-grid.html"><i class="fa fa-fw fa-wrench"></i> Bootstrap Grid</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="javascript:;" data-toggle="collapse" data-target="#demo"><i class="fa fa-fw fa-arrows-v"></i> Dropdown <i class="fa fa-fw fa-caret-down"></i></a>
|
|
||||||
<ul id="demo" class="collapse">
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="blank-page.html"><i class="fa fa-fw fa-file"></i> Blank Page</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="index-rtl.html"><i class="fa fa-fw fa-dashboard"></i> RTL Dashboard</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<!-- /.navbar-collapse -->
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div id="page-wrapper">
|
|
||||||
|
|
||||||
<div class="container-fluid">
|
|
||||||
|
|
||||||
<!-- Page Heading -->
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h1 class="page-header">
|
|
||||||
Bootstrap Grid
|
|
||||||
</h1>
|
|
||||||
<ol class="breadcrumb">
|
|
||||||
<li>
|
|
||||||
<i class="fa fa-dashboard"></i> <a href="index.html">Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<i class="fa fa-wrench"></i> Bootstrap Grid
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-12
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-6 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-6
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-6
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-4 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-4 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-4 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-3 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-3
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-3
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-3
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-3
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-2 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-2
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-2 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-2
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-2 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-2
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-2 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-2
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-2 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-2
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-2 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-2
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-1 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-1 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-1 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-1 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-1 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-1 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-1 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-1 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-1 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-1 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-1 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-1 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-1
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-8 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-8
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-4 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-3 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-3
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-6
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 text-center">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-body">
|
|
||||||
.col-lg-3
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /.container-fluid -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#page-wrapper -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#wrapper -->
|
|
||||||
|
|
||||||
<!-- jQuery -->
|
|
||||||
<script src="js/jquery.js"></script>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core JavaScript -->
|
|
||||||
<script src="js/bootstrap.min.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
|
@ -1,406 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="author" content="">
|
|
||||||
|
|
||||||
<title>SB Admin - Bootstrap Admin Template</title>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core CSS -->
|
|
||||||
<link href="css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom CSS -->
|
|
||||||
<link href="css/sb-admin.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Morris Charts CSS -->
|
|
||||||
<link href="css/plugins/morris.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom Fonts -->
|
|
||||||
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
|
||||||
|
|
||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div id="wrapper">
|
|
||||||
|
|
||||||
<!-- Navigation -->
|
|
||||||
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
|
||||||
<!-- Brand and toggle get grouped for better mobile display -->
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="index.html">SB Admin</a>
|
|
||||||
</div>
|
|
||||||
<!-- Top Menu Items -->
|
|
||||||
<ul class="nav navbar-right top-nav">
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-envelope"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu message-dropdown">
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-footer">
|
|
||||||
<a href="#">Read All New Messages</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-bell"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu alert-dropdown">
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-default">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-primary">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-success">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-info">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-warning">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-danger">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#">View All</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> John Smith <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-user"></i> Profile</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-envelope"></i> Inbox</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-power-off"></i> Log Out</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
|
|
||||||
<div class="collapse navbar-collapse navbar-ex1-collapse">
|
|
||||||
<ul class="nav navbar-nav side-nav">
|
|
||||||
<li>
|
|
||||||
<a href="index.html"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<a href="charts.html"><i class="fa fa-fw fa-bar-chart-o"></i> Charts</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="tables.html"><i class="fa fa-fw fa-table"></i> Tables</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="forms.html"><i class="fa fa-fw fa-edit"></i> Forms</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-elements.html"><i class="fa fa-fw fa-desktop"></i> Bootstrap Elements</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-grid.html"><i class="fa fa-fw fa-wrench"></i> Bootstrap Grid</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="javascript:;" data-toggle="collapse" data-target="#demo"><i class="fa fa-fw fa-arrows-v"></i> Dropdown <i class="fa fa-fw fa-caret-down"></i></a>
|
|
||||||
<ul id="demo" class="collapse">
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="blank-page.html"><i class="fa fa-fw fa-file"></i> Blank Page</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="index-rtl.html"><i class="fa fa-fw fa-dashboard"></i> RTL Dashboard</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<!-- /.navbar-collapse -->
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div id="page-wrapper">
|
|
||||||
|
|
||||||
<div class="container-fluid">
|
|
||||||
|
|
||||||
<!-- Page Heading -->
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h1 class="page-header">
|
|
||||||
Charts
|
|
||||||
</h1>
|
|
||||||
<ol class="breadcrumb">
|
|
||||||
<li>
|
|
||||||
<i class="fa fa-dashboard"></i> <a href="index.html">Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<i class="fa fa-bar-chart-o"></i> Charts
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<!-- Flot Charts -->
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h2 class="page-header">Flot Charts</h2>
|
|
||||||
<p class="lead">Flot is a pure JavaScript plotting library for jQuery, with a focus on simple usage, attractive looks and interactive features. For full usage instructions and documentation for Flot Charts, visit <a href="http://www.flotcharts.org/">http://www.flotcharts.org/</a>.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="panel panel-primary">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-bar-chart-o"></i> Line Graph Example with Tooltips</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="flot-chart">
|
|
||||||
<div class="flot-chart-content" id="flot-line-chart"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-4">
|
|
||||||
<div class="panel panel-green">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-long-arrow-right"></i> Pie Chart Example with Tooltips</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="flot-chart">
|
|
||||||
<div class="flot-chart-content" id="flot-pie-chart"></div>
|
|
||||||
</div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="#">View Details <i class="fa fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-8">
|
|
||||||
<div class="panel panel-yellow">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-long-arrow-right"></i> Multiple Axes Line Graph Example with Tooltips and Raw Data</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="flot-chart">
|
|
||||||
<div class="flot-chart-content" id="flot-multiple-axes-chart"></div>
|
|
||||||
</div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="#">View Details <i class="fa fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<div class="panel panel-red">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-long-arrow-right"></i> Moving Line Chart</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="flot-chart">
|
|
||||||
<div class="flot-chart-content" id="flot-moving-line-chart"></div>
|
|
||||||
</div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="#">View Details <i class="fa fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<div class="panel panel-primary">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-long-arrow-right"></i> Bar Graph with Tooltips</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="flot-chart">
|
|
||||||
<div class="flot-chart-content" id="flot-bar-chart"></div>
|
|
||||||
</div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="#">View Details <i class="fa fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<!-- Morris Charts -->
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h2 class="page-header">Morris Charts</h2>
|
|
||||||
<p class="lead">Morris.js is a very simple API for drawing line, bar, area and donut charts. For full usage instructions and documentation for Morris.js charts, visit <a href="http://morrisjs.github.io/morris.js/">http://morrisjs.github.io/morris.js/</a>.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="panel panel-green">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-bar-chart-o"></i> Area Line Graph Example with Tooltips</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div id="morris-area-chart"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-4">
|
|
||||||
<div class="panel panel-yellow">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-long-arrow-right"></i> Donut Chart Example</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div id="morris-donut-chart"></div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="#">View Details <i class="fa fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-4">
|
|
||||||
<div class="panel panel-red">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-long-arrow-right"></i> Line Graph Example with Tooltips</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div id="morris-line-chart"></div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="#">View Details <i class="fa fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-4">
|
|
||||||
<div class="panel panel-primary">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-long-arrow-right"></i> Bar Graph Example</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div id="morris-bar-chart"></div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="#">View Details <i class="fa fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /.container-fluid -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#page-wrapper -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#wrapper -->
|
|
||||||
|
|
||||||
<!-- jQuery -->
|
|
||||||
<script src="js/jquery.js"></script>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core JavaScript -->
|
|
||||||
<script src="js/bootstrap.min.js"></script>
|
|
||||||
|
|
||||||
<!-- Morris Charts JavaScript -->
|
|
||||||
<script src="js/plugins/morris/raphael.min.js"></script>
|
|
||||||
<script src="js/plugins/morris/morris.min.js"></script>
|
|
||||||
<script src="js/plugins/morris/morris-data.js"></script>
|
|
||||||
|
|
||||||
<!-- Flot Charts JavaScript -->
|
|
||||||
<!--[if lte IE 8]><script src="js/excanvas.min.js"></script><![endif]-->
|
|
||||||
<script src="js/plugins/flot/jquery.flot.js"></script>
|
|
||||||
<script src="js/plugins/flot/jquery.flot.tooltip.min.js"></script>
|
|
||||||
<script src="js/plugins/flot/jquery.flot.resize.js"></script>
|
|
||||||
<script src="js/plugins/flot/jquery.flot.pie.js"></script>
|
|
||||||
<script src="js/plugins/flot/flot-data.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
|
@ -1,444 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="author" content="">
|
|
||||||
|
|
||||||
<title>SB Admin - Bootstrap Admin Template</title>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core CSS -->
|
|
||||||
<link href="css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom CSS -->
|
|
||||||
<link href="css/sb-admin.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom Fonts -->
|
|
||||||
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
|
||||||
|
|
||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div id="wrapper">
|
|
||||||
|
|
||||||
<!-- Navigation -->
|
|
||||||
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
|
||||||
<!-- Brand and toggle get grouped for better mobile display -->
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="index.html">SB Admin</a>
|
|
||||||
</div>
|
|
||||||
<!-- Top Menu Items -->
|
|
||||||
<ul class="nav navbar-right top-nav">
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-envelope"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu message-dropdown">
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-footer">
|
|
||||||
<a href="#">Read All New Messages</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-bell"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu alert-dropdown">
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-default">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-primary">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-success">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-info">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-warning">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-danger">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#">View All</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> John Smith <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-user"></i> Profile</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-envelope"></i> Inbox</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-power-off"></i> Log Out</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
|
|
||||||
<div class="collapse navbar-collapse navbar-ex1-collapse">
|
|
||||||
<ul class="nav navbar-nav side-nav">
|
|
||||||
<li>
|
|
||||||
<a href="index.html"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="charts.html"><i class="fa fa-fw fa-bar-chart-o"></i> Charts</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="tables.html"><i class="fa fa-fw fa-table"></i> Tables</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<a href="forms.html"><i class="fa fa-fw fa-edit"></i> Forms</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-elements.html"><i class="fa fa-fw fa-desktop"></i> Bootstrap Elements</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-grid.html"><i class="fa fa-fw fa-wrench"></i> Bootstrap Grid</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="javascript:;" data-toggle="collapse" data-target="#demo"><i class="fa fa-fw fa-arrows-v"></i> Dropdown <i class="fa fa-fw fa-caret-down"></i></a>
|
|
||||||
<ul id="demo" class="collapse">
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="blank-page.html"><i class="fa fa-fw fa-file"></i> Blank Page</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="index-rtl.html"><i class="fa fa-fw fa-dashboard"></i> RTL Dashboard</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<!-- /.navbar-collapse -->
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div id="page-wrapper">
|
|
||||||
|
|
||||||
<div class="container-fluid">
|
|
||||||
|
|
||||||
<!-- Page Heading -->
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h1 class="page-header">
|
|
||||||
Forms
|
|
||||||
</h1>
|
|
||||||
<ol class="breadcrumb">
|
|
||||||
<li>
|
|
||||||
<i class="fa fa-dashboard"></i> <a href="index.html">Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<i class="fa fa-edit"></i> Forms
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-6">
|
|
||||||
|
|
||||||
<form role="form">
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Text Input</label>
|
|
||||||
<input class="form-control">
|
|
||||||
<p class="help-block">Example block-level help text here.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Text Input with Placeholder</label>
|
|
||||||
<input class="form-control" placeholder="Enter text">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Static Control</label>
|
|
||||||
<p class="form-control-static">email@example.com</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label>File input</label>
|
|
||||||
<input type="file">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Text area</label>
|
|
||||||
<textarea class="form-control" rows="3"></textarea>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Checkboxes</label>
|
|
||||||
<div class="checkbox">
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" value="">Checkbox 1
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="checkbox">
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" value="">Checkbox 2
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="checkbox">
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" value="">Checkbox 3
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Inline Checkboxes</label>
|
|
||||||
<label class="checkbox-inline">
|
|
||||||
<input type="checkbox">1
|
|
||||||
</label>
|
|
||||||
<label class="checkbox-inline">
|
|
||||||
<input type="checkbox">2
|
|
||||||
</label>
|
|
||||||
<label class="checkbox-inline">
|
|
||||||
<input type="checkbox">3
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Radio Buttons</label>
|
|
||||||
<div class="radio">
|
|
||||||
<label>
|
|
||||||
<input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>Radio 1
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="radio">
|
|
||||||
<label>
|
|
||||||
<input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">Radio 2
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="radio">
|
|
||||||
<label>
|
|
||||||
<input type="radio" name="optionsRadios" id="optionsRadios3" value="option3">Radio 3
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Inline Radio Buttons</label>
|
|
||||||
<label class="radio-inline">
|
|
||||||
<input type="radio" name="optionsRadiosInline" id="optionsRadiosInline1" value="option1" checked>1
|
|
||||||
</label>
|
|
||||||
<label class="radio-inline">
|
|
||||||
<input type="radio" name="optionsRadiosInline" id="optionsRadiosInline2" value="option2">2
|
|
||||||
</label>
|
|
||||||
<label class="radio-inline">
|
|
||||||
<input type="radio" name="optionsRadiosInline" id="optionsRadiosInline3" value="option3">3
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Selects</label>
|
|
||||||
<select class="form-control">
|
|
||||||
<option>1</option>
|
|
||||||
<option>2</option>
|
|
||||||
<option>3</option>
|
|
||||||
<option>4</option>
|
|
||||||
<option>5</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Multiple Selects</label>
|
|
||||||
<select multiple class="form-control">
|
|
||||||
<option>1</option>
|
|
||||||
<option>2</option>
|
|
||||||
<option>3</option>
|
|
||||||
<option>4</option>
|
|
||||||
<option>5</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<button type="submit" class="btn btn-default">Submit Button</button>
|
|
||||||
<button type="reset" class="btn btn-default">Reset Button</button>
|
|
||||||
|
|
||||||
</form>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<h1>Disabled Form States</h1>
|
|
||||||
|
|
||||||
<form role="form">
|
|
||||||
|
|
||||||
<fieldset disabled>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="disabledSelect">Disabled input</label>
|
|
||||||
<input class="form-control" id="disabledInput" type="text" placeholder="Disabled input" disabled>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="disabledSelect">Disabled select menu</label>
|
|
||||||
<select id="disabledSelect" class="form-control">
|
|
||||||
<option>Disabled select</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="checkbox">
|
|
||||||
<label>
|
|
||||||
<input type="checkbox">Disabled Checkbox
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<button type="submit" class="btn btn-primary">Disabled Button</button>
|
|
||||||
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<h1>Form Validation</h1>
|
|
||||||
|
|
||||||
<form role="form">
|
|
||||||
|
|
||||||
<div class="form-group has-success">
|
|
||||||
<label class="control-label" for="inputSuccess">Input with success</label>
|
|
||||||
<input type="text" class="form-control" id="inputSuccess">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group has-warning">
|
|
||||||
<label class="control-label" for="inputWarning">Input with warning</label>
|
|
||||||
<input type="text" class="form-control" id="inputWarning">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group has-error">
|
|
||||||
<label class="control-label" for="inputError">Input with error</label>
|
|
||||||
<input type="text" class="form-control" id="inputError">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<h1>Input Groups</h1>
|
|
||||||
|
|
||||||
<form role="form">
|
|
||||||
|
|
||||||
<div class="form-group input-group">
|
|
||||||
<span class="input-group-addon">@</span>
|
|
||||||
<input type="text" class="form-control" placeholder="Username">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group input-group">
|
|
||||||
<input type="text" class="form-control">
|
|
||||||
<span class="input-group-addon">.00</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group input-group">
|
|
||||||
<span class="input-group-addon"><i class="fa fa-eur"></i></span>
|
|
||||||
<input type="text" class="form-control" placeholder="Font Awesome Icon">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group input-group">
|
|
||||||
<span class="input-group-addon">$</span>
|
|
||||||
<input type="text" class="form-control">
|
|
||||||
<span class="input-group-addon">.00</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group input-group">
|
|
||||||
<input type="text" class="form-control">
|
|
||||||
<span class="input-group-btn"><button class="btn btn-default" type="button"><i class="fa fa-search"></i></button></span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<p>For complete documentation, please visit <a href="http://getbootstrap.com/css/#forms">Bootstrap's Form Documentation</a>.</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /.container-fluid -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#page-wrapper -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#wrapper -->
|
|
||||||
|
|
||||||
<!-- jQuery -->
|
|
||||||
<script src="js/jquery.js"></script>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core JavaScript -->
|
|
||||||
<script src="js/bootstrap.min.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
|
@ -1,493 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="author" content="">
|
|
||||||
|
|
||||||
<title>SB Admin - Bootstrap Admin Template</title>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core CSS -->
|
|
||||||
<link href="css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Bootstrap Core CSS RTL-->
|
|
||||||
<link href="css/bootstrap-rtl.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom CSS -->
|
|
||||||
<link href="css/sb-admin.css" rel="stylesheet">
|
|
||||||
<link href="css/sb-admin-rtl.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Morris Charts CSS -->
|
|
||||||
<link href="css/plugins/morris.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom Fonts -->
|
|
||||||
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
|
||||||
|
|
||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div id="wrapper">
|
|
||||||
|
|
||||||
<!-- Navigation -->
|
|
||||||
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
|
||||||
<!-- Brand and toggle get grouped for better mobile display -->
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="index.html">SB Admin</a>
|
|
||||||
</div>
|
|
||||||
<!-- Top Menu Items -->
|
|
||||||
<ul class="nav navbar-right top-nav">
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-envelope"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu message-dropdown">
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-footer">
|
|
||||||
<a href="#">Read All New Messages</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-bell"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu alert-dropdown">
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-default">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-primary">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-success">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-info">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-warning">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-danger">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#">View All</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> John Smith <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-user"></i> Profile</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-envelope"></i> Inbox</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-power-off"></i> Log Out</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
|
|
||||||
<div class="collapse navbar-collapse navbar-ex1-collapse">
|
|
||||||
<ul class="nav navbar-nav side-nav">
|
|
||||||
<li>
|
|
||||||
<a href="index.html"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="charts.html"><i class="fa fa-fw fa-bar-chart-o"></i> Charts</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="tables.html"><i class="fa fa-fw fa-table"></i> Tables</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="forms.html"><i class="fa fa-fw fa-edit"></i> Forms</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-elements.html"><i class="fa fa-fw fa-desktop"></i> Bootstrap Elements</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-grid.html"><i class="fa fa-fw fa-wrench"></i> Bootstrap Grid</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="javascript:;" data-toggle="collapse" data-target="#demo"><i class="fa fa-fw fa-arrows-v"></i> Dropdown <i class="fa fa-fw fa-caret-down"></i></a>
|
|
||||||
<ul id="demo" class="collapse">
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="blank-page.html"><i class="fa fa-fw fa-file"></i> Blank Page</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<a href="index-rtl.html"><i class="fa fa-fw fa-dashboard"></i> RTL Dashboard</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<!-- /.navbar-collapse -->
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div id="page-wrapper">
|
|
||||||
|
|
||||||
<div class="container-fluid">
|
|
||||||
|
|
||||||
<!-- Page Heading -->
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h1 class="page-header">
|
|
||||||
Dashboard <small>Statistics Overview</small>
|
|
||||||
</h1>
|
|
||||||
<ol class="breadcrumb">
|
|
||||||
<li class="active">
|
|
||||||
<i class="fa fa-dashboard"></i> Dashboard
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="alert alert-info alert-dismissable">
|
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
|
||||||
<i class="fa fa-info-circle"></i> <strong>Like SB Admin?</strong> Try out <a href="http://startbootstrap.com/template-overviews/sb-admin-2" class="alert-link">SB Admin 2</a> for additional features!
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-3 col-md-6">
|
|
||||||
<div class="panel panel-primary">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-3">
|
|
||||||
<i class="fa fa-comments fa-5x"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-9 text-right">
|
|
||||||
<div class="huge">26</div>
|
|
||||||
<div>New Comments!</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<a href="#">
|
|
||||||
<div class="panel-footer">
|
|
||||||
<span class="pull-left">View Details</span>
|
|
||||||
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 col-md-6">
|
|
||||||
<div class="panel panel-green">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-3">
|
|
||||||
<i class="fa fa-tasks fa-5x"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-9 text-right">
|
|
||||||
<div class="huge">12</div>
|
|
||||||
<div>New Tasks!</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<a href="#">
|
|
||||||
<div class="panel-footer">
|
|
||||||
<span class="pull-left">View Details</span>
|
|
||||||
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 col-md-6">
|
|
||||||
<div class="panel panel-yellow">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-3">
|
|
||||||
<i class="fa fa-shopping-cart fa-5x"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-9 text-right">
|
|
||||||
<div class="huge">124</div>
|
|
||||||
<div>New Orders!</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<a href="#">
|
|
||||||
<div class="panel-footer">
|
|
||||||
<span class="pull-left">View Details</span>
|
|
||||||
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 col-md-6">
|
|
||||||
<div class="panel panel-red">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-3">
|
|
||||||
<i class="fa fa-support fa-5x"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-9 text-right">
|
|
||||||
<div class="huge">13</div>
|
|
||||||
<div>Support Tickets!</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<a href="#">
|
|
||||||
<div class="panel-footer">
|
|
||||||
<span class="pull-left">View Details</span>
|
|
||||||
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-bar-chart-o fa-fw"></i> Area Chart</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div id="morris-area-chart"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-4">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-long-arrow-right fa-fw"></i> Donut Chart</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div id="morris-donut-chart"></div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="#">View Details <i class="fa fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-4">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-clock-o fa-fw"></i> Tasks Panel</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="list-group">
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">just now</span>
|
|
||||||
<i class="fa fa-fw fa-calendar"></i> Calendar updated
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">4 minutes ago</span>
|
|
||||||
<i class="fa fa-fw fa-comment"></i> Commented on a post
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">23 minutes ago</span>
|
|
||||||
<i class="fa fa-fw fa-truck"></i> Order 392 shipped
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">46 minutes ago</span>
|
|
||||||
<i class="fa fa-fw fa-money"></i> Invoice 653 has been paid
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">1 hour ago</span>
|
|
||||||
<i class="fa fa-fw fa-user"></i> A new user has been added
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">2 hours ago</span>
|
|
||||||
<i class="fa fa-fw fa-check"></i> Completed task: "pick up dry cleaning"
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">yesterday</span>
|
|
||||||
<i class="fa fa-fw fa-globe"></i> Saved the world
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">two days ago</span>
|
|
||||||
<i class="fa fa-fw fa-check"></i> Completed task: "fix error on sales page"
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="#">View All Activity <i class="fa fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-4">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-money fa-fw"></i> Transactions Panel</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-bordered table-hover table-striped">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Order #</th>
|
|
||||||
<th>Order Date</th>
|
|
||||||
<th>Order Time</th>
|
|
||||||
<th>Amount (USD)</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>3326</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>3:29 PM</td>
|
|
||||||
<td>$321.33</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3325</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>3:20 PM</td>
|
|
||||||
<td>$234.34</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3324</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>3:03 PM</td>
|
|
||||||
<td>$724.17</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3323</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>3:00 PM</td>
|
|
||||||
<td>$23.71</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3322</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>2:49 PM</td>
|
|
||||||
<td>$8345.23</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3321</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>2:23 PM</td>
|
|
||||||
<td>$245.12</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3320</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>2:15 PM</td>
|
|
||||||
<td>$5663.54</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3319</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>2:13 PM</td>
|
|
||||||
<td>$943.45</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="#">View All Transactions <i class="fa fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /.container-fluid -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#page-wrapper -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#wrapper -->
|
|
||||||
|
|
||||||
<!-- jQuery -->
|
|
||||||
<script src="js/jquery.js"></script>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core JavaScript -->
|
|
||||||
<script src="js/bootstrap.min.js"></script>
|
|
||||||
|
|
||||||
<!-- Morris Charts JavaScript -->
|
|
||||||
<script src="js/plugins/morris/raphael.min.js"></script>
|
|
||||||
<script src="js/plugins/morris/morris.min.js"></script>
|
|
||||||
<script src="js/plugins/morris/morris-data.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
|
@ -1,489 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="author" content="">
|
|
||||||
|
|
||||||
<title>SB Admin - Bootstrap Admin Template</title>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core CSS -->
|
|
||||||
<link href="css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom CSS -->
|
|
||||||
<link href="css/sb-admin.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Morris Charts CSS -->
|
|
||||||
<link href="css/plugins/morris.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom Fonts -->
|
|
||||||
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
|
||||||
|
|
||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div id="wrapper">
|
|
||||||
|
|
||||||
<!-- Navigation -->
|
|
||||||
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
|
||||||
<!-- Brand and toggle get grouped for better mobile display -->
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="index.html">SB Admin</a>
|
|
||||||
</div>
|
|
||||||
<!-- Top Menu Items -->
|
|
||||||
<ul class="nav navbar-right top-nav">
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-envelope"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu message-dropdown">
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-footer">
|
|
||||||
<a href="#">Read All New Messages</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-bell"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu alert-dropdown">
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-default">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-primary">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-success">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-info">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-warning">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-danger">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#">View All</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> John Smith <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-user"></i> Profile</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-envelope"></i> Inbox</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-power-off"></i> Log Out</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
|
|
||||||
<div class="collapse navbar-collapse navbar-ex1-collapse">
|
|
||||||
<ul class="nav navbar-nav side-nav">
|
|
||||||
<li class="active">
|
|
||||||
<a href="index.html"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="charts.html"><i class="fa fa-fw fa-bar-chart-o"></i> Charts</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="tables.html"><i class="fa fa-fw fa-table"></i> Tables</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="forms.html"><i class="fa fa-fw fa-edit"></i> Forms</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-elements.html"><i class="fa fa-fw fa-desktop"></i> Bootstrap Elements</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-grid.html"><i class="fa fa-fw fa-wrench"></i> Bootstrap Grid</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="javascript:;" data-toggle="collapse" data-target="#demo"><i class="fa fa-fw fa-arrows-v"></i> Dropdown <i class="fa fa-fw fa-caret-down"></i></a>
|
|
||||||
<ul id="demo" class="collapse">
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="blank-page.html"><i class="fa fa-fw fa-file"></i> Blank Page</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="index-rtl.html"><i class="fa fa-fw fa-dashboard"></i> RTL Dashboard</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<!-- /.navbar-collapse -->
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div id="page-wrapper">
|
|
||||||
|
|
||||||
<div class="container-fluid">
|
|
||||||
|
|
||||||
<!-- Page Heading -->
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h1 class="page-header">
|
|
||||||
Dashboard <small>Statistics Overview</small>
|
|
||||||
</h1>
|
|
||||||
<ol class="breadcrumb">
|
|
||||||
<li class="active">
|
|
||||||
<i class="fa fa-dashboard"></i> Dashboard
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="alert alert-info alert-dismissable">
|
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
|
||||||
<i class="fa fa-info-circle"></i> <strong>Like SB Admin?</strong> Try out <a href="http://startbootstrap.com/template-overviews/sb-admin-2" class="alert-link">SB Admin 2</a> for additional features!
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-3 col-md-6">
|
|
||||||
<div class="panel panel-primary">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-3">
|
|
||||||
<i class="fa fa-comments fa-5x"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-9 text-right">
|
|
||||||
<div class="huge">26</div>
|
|
||||||
<div>New Comments!</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<a href="#">
|
|
||||||
<div class="panel-footer">
|
|
||||||
<span class="pull-left">View Details</span>
|
|
||||||
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 col-md-6">
|
|
||||||
<div class="panel panel-green">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-3">
|
|
||||||
<i class="fa fa-tasks fa-5x"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-9 text-right">
|
|
||||||
<div class="huge">12</div>
|
|
||||||
<div>New Tasks!</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<a href="#">
|
|
||||||
<div class="panel-footer">
|
|
||||||
<span class="pull-left">View Details</span>
|
|
||||||
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 col-md-6">
|
|
||||||
<div class="panel panel-yellow">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-3">
|
|
||||||
<i class="fa fa-shopping-cart fa-5x"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-9 text-right">
|
|
||||||
<div class="huge">124</div>
|
|
||||||
<div>New Orders!</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<a href="#">
|
|
||||||
<div class="panel-footer">
|
|
||||||
<span class="pull-left">View Details</span>
|
|
||||||
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-3 col-md-6">
|
|
||||||
<div class="panel panel-red">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-xs-3">
|
|
||||||
<i class="fa fa-support fa-5x"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col-xs-9 text-right">
|
|
||||||
<div class="huge">13</div>
|
|
||||||
<div>Support Tickets!</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<a href="#">
|
|
||||||
<div class="panel-footer">
|
|
||||||
<span class="pull-left">View Details</span>
|
|
||||||
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-bar-chart-o fa-fw"></i> Area Chart</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div id="morris-area-chart"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-4">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-long-arrow-right fa-fw"></i> Donut Chart</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div id="morris-donut-chart"></div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="#">View Details <i class="fa fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-4">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-clock-o fa-fw"></i> Tasks Panel</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="list-group">
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">just now</span>
|
|
||||||
<i class="fa fa-fw fa-calendar"></i> Calendar updated
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">4 minutes ago</span>
|
|
||||||
<i class="fa fa-fw fa-comment"></i> Commented on a post
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">23 minutes ago</span>
|
|
||||||
<i class="fa fa-fw fa-truck"></i> Order 392 shipped
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">46 minutes ago</span>
|
|
||||||
<i class="fa fa-fw fa-money"></i> Invoice 653 has been paid
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">1 hour ago</span>
|
|
||||||
<i class="fa fa-fw fa-user"></i> A new user has been added
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">2 hours ago</span>
|
|
||||||
<i class="fa fa-fw fa-check"></i> Completed task: "pick up dry cleaning"
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">yesterday</span>
|
|
||||||
<i class="fa fa-fw fa-globe"></i> Saved the world
|
|
||||||
</a>
|
|
||||||
<a href="#" class="list-group-item">
|
|
||||||
<span class="badge">two days ago</span>
|
|
||||||
<i class="fa fa-fw fa-check"></i> Completed task: "fix error on sales page"
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="#">View All Activity <i class="fa fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-4">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><i class="fa fa-money fa-fw"></i> Transactions Panel</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-bordered table-hover table-striped">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Order #</th>
|
|
||||||
<th>Order Date</th>
|
|
||||||
<th>Order Time</th>
|
|
||||||
<th>Amount (USD)</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>3326</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>3:29 PM</td>
|
|
||||||
<td>$321.33</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3325</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>3:20 PM</td>
|
|
||||||
<td>$234.34</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3324</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>3:03 PM</td>
|
|
||||||
<td>$724.17</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3323</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>3:00 PM</td>
|
|
||||||
<td>$23.71</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3322</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>2:49 PM</td>
|
|
||||||
<td>$8345.23</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3321</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>2:23 PM</td>
|
|
||||||
<td>$245.12</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3320</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>2:15 PM</td>
|
|
||||||
<td>$5663.54</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>3319</td>
|
|
||||||
<td>10/21/2013</td>
|
|
||||||
<td>2:13 PM</td>
|
|
||||||
<td>$943.45</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="#">View All Transactions <i class="fa fa-arrow-circle-right"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /.container-fluid -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#page-wrapper -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#wrapper -->
|
|
||||||
|
|
||||||
<!-- jQuery -->
|
|
||||||
<script src="js/jquery.js"></script>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core JavaScript -->
|
|
||||||
<script src="js/bootstrap.min.js"></script>
|
|
||||||
|
|
||||||
<!-- Morris Charts JavaScript -->
|
|
||||||
<script src="js/plugins/morris/raphael.min.js"></script>
|
|
||||||
<script src="js/plugins/morris/morris.min.js"></script>
|
|
||||||
<script src="js/plugins/morris/morris-data.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
|
@ -1,542 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="author" content="">
|
|
||||||
|
|
||||||
<title>SB Admin - Bootstrap Admin Template</title>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core CSS -->
|
|
||||||
<link href="css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom CSS -->
|
|
||||||
<link href="css/sb-admin.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<!-- Custom Fonts -->
|
|
||||||
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
|
||||||
|
|
||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div id="wrapper">
|
|
||||||
|
|
||||||
<!-- Navigation -->
|
|
||||||
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
|
||||||
<!-- Brand and toggle get grouped for better mobile display -->
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="index.html">SB Admin</a>
|
|
||||||
</div>
|
|
||||||
<!-- Top Menu Items -->
|
|
||||||
<ul class="nav navbar-right top-nav">
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-envelope"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu message-dropdown">
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-preview">
|
|
||||||
<a href="#">
|
|
||||||
<div class="media">
|
|
||||||
<span class="pull-left">
|
|
||||||
<img class="media-object" src="http://placehold.it/50x50" alt="">
|
|
||||||
</span>
|
|
||||||
<div class="media-body">
|
|
||||||
<h5 class="media-heading"><strong>John Smith</strong>
|
|
||||||
</h5>
|
|
||||||
<p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
|
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="message-footer">
|
|
||||||
<a href="#">Read All New Messages</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-bell"></i> <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu alert-dropdown">
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-default">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-primary">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-success">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-info">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-warning">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Alert Name <span class="label label-danger">Alert Badge</span></a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#">View All</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> John Smith <b class="caret"></b></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-user"></i> Profile</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-envelope"></i> Inbox</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a>
|
|
||||||
</li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li>
|
|
||||||
<a href="#"><i class="fa fa-fw fa-power-off"></i> Log Out</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
|
|
||||||
<div class="collapse navbar-collapse navbar-ex1-collapse">
|
|
||||||
<ul class="nav navbar-nav side-nav">
|
|
||||||
<li>
|
|
||||||
<a href="index.html"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="charts.html"><i class="fa fa-fw fa-bar-chart-o"></i> Charts</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<a href="tables.html"><i class="fa fa-fw fa-table"></i> Tables</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="forms.html"><i class="fa fa-fw fa-edit"></i> Forms</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-elements.html"><i class="fa fa-fw fa-desktop"></i> Bootstrap Elements</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="bootstrap-grid.html"><i class="fa fa-fw fa-wrench"></i> Bootstrap Grid</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="javascript:;" data-toggle="collapse" data-target="#demo"><i class="fa fa-fw fa-arrows-v"></i> Dropdown <i class="fa fa-fw fa-caret-down"></i></a>
|
|
||||||
<ul id="demo" class="collapse">
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#">Dropdown Item</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="blank-page.html"><i class="fa fa-fw fa-file"></i> Blank Page</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="index-rtl.html"><i class="fa fa-fw fa-dashboard"></i> RTL Dashboard</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<!-- /.navbar-collapse -->
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div id="page-wrapper">
|
|
||||||
|
|
||||||
<div class="container-fluid">
|
|
||||||
|
|
||||||
<!-- Page Heading -->
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h1 class="page-header">
|
|
||||||
Tables
|
|
||||||
</h1>
|
|
||||||
<ol class="breadcrumb">
|
|
||||||
<li>
|
|
||||||
<i class="fa fa-dashboard"></i> <a href="index.html">Dashboard</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<i class="fa fa-table"></i> Tables
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<h2>Bordered Table</h2>
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-bordered table-hover">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Page</th>
|
|
||||||
<th>Visits</th>
|
|
||||||
<th>% New Visits</th>
|
|
||||||
<th>Revenue</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>/index.html</td>
|
|
||||||
<td>1265</td>
|
|
||||||
<td>32.3%</td>
|
|
||||||
<td>$321.33</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/about.html</td>
|
|
||||||
<td>261</td>
|
|
||||||
<td>33.3%</td>
|
|
||||||
<td>$234.12</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/sales.html</td>
|
|
||||||
<td>665</td>
|
|
||||||
<td>21.3%</td>
|
|
||||||
<td>$16.34</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/blog.html</td>
|
|
||||||
<td>9516</td>
|
|
||||||
<td>89.3%</td>
|
|
||||||
<td>$1644.43</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/404.html</td>
|
|
||||||
<td>23</td>
|
|
||||||
<td>34.3%</td>
|
|
||||||
<td>$23.52</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/services.html</td>
|
|
||||||
<td>421</td>
|
|
||||||
<td>60.3%</td>
|
|
||||||
<td>$724.32</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/blog/post.html</td>
|
|
||||||
<td>1233</td>
|
|
||||||
<td>93.2%</td>
|
|
||||||
<td>$126.34</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<h2>Bordered with Striped Rows</h2>
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-bordered table-hover table-striped">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Page</th>
|
|
||||||
<th>Visits</th>
|
|
||||||
<th>% New Visits</th>
|
|
||||||
<th>Revenue</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>/index.html</td>
|
|
||||||
<td>1265</td>
|
|
||||||
<td>32.3%</td>
|
|
||||||
<td>$321.33</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/about.html</td>
|
|
||||||
<td>261</td>
|
|
||||||
<td>33.3%</td>
|
|
||||||
<td>$234.12</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/sales.html</td>
|
|
||||||
<td>665</td>
|
|
||||||
<td>21.3%</td>
|
|
||||||
<td>$16.34</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/blog.html</td>
|
|
||||||
<td>9516</td>
|
|
||||||
<td>89.3%</td>
|
|
||||||
<td>$1644.43</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/404.html</td>
|
|
||||||
<td>23</td>
|
|
||||||
<td>34.3%</td>
|
|
||||||
<td>$23.52</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/services.html</td>
|
|
||||||
<td>421</td>
|
|
||||||
<td>60.3%</td>
|
|
||||||
<td>$724.32</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/blog/post.html</td>
|
|
||||||
<td>1233</td>
|
|
||||||
<td>93.2%</td>
|
|
||||||
<td>$126.34</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<h2>Basic Table</h2>
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-hover">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Page</th>
|
|
||||||
<th>Visits</th>
|
|
||||||
<th>% New Visits</th>
|
|
||||||
<th>Revenue</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>/index.html</td>
|
|
||||||
<td>1265</td>
|
|
||||||
<td>32.3%</td>
|
|
||||||
<td>$321.33</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/about.html</td>
|
|
||||||
<td>261</td>
|
|
||||||
<td>33.3%</td>
|
|
||||||
<td>$234.12</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/sales.html</td>
|
|
||||||
<td>665</td>
|
|
||||||
<td>21.3%</td>
|
|
||||||
<td>$16.34</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/blog.html</td>
|
|
||||||
<td>9516</td>
|
|
||||||
<td>89.3%</td>
|
|
||||||
<td>$1644.43</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/404.html</td>
|
|
||||||
<td>23</td>
|
|
||||||
<td>34.3%</td>
|
|
||||||
<td>$23.52</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/services.html</td>
|
|
||||||
<td>421</td>
|
|
||||||
<td>60.3%</td>
|
|
||||||
<td>$724.32</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/blog/post.html</td>
|
|
||||||
<td>1233</td>
|
|
||||||
<td>93.2%</td>
|
|
||||||
<td>$126.34</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<h2>Striped Rows</h2>
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-hover table-striped">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Page</th>
|
|
||||||
<th>Visits</th>
|
|
||||||
<th>% New Visits</th>
|
|
||||||
<th>Revenue</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>/index.html</td>
|
|
||||||
<td>1265</td>
|
|
||||||
<td>32.3%</td>
|
|
||||||
<td>$321.33</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/about.html</td>
|
|
||||||
<td>261</td>
|
|
||||||
<td>33.3%</td>
|
|
||||||
<td>$234.12</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/sales.html</td>
|
|
||||||
<td>665</td>
|
|
||||||
<td>21.3%</td>
|
|
||||||
<td>$16.34</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/blog.html</td>
|
|
||||||
<td>9516</td>
|
|
||||||
<td>89.3%</td>
|
|
||||||
<td>$1644.43</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/404.html</td>
|
|
||||||
<td>23</td>
|
|
||||||
<td>34.3%</td>
|
|
||||||
<td>$23.52</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/services.html</td>
|
|
||||||
<td>421</td>
|
|
||||||
<td>60.3%</td>
|
|
||||||
<td>$724.32</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/blog/post.html</td>
|
|
||||||
<td>1233</td>
|
|
||||||
<td>93.2%</td>
|
|
||||||
<td>$126.34</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<h2>Contextual Classes</h2>
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-bordered table-hover table-striped">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Page</th>
|
|
||||||
<th>Visits</th>
|
|
||||||
<th>% New Visits</th>
|
|
||||||
<th>Revenue</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr class="active">
|
|
||||||
<td>/index.html</td>
|
|
||||||
<td>1265</td>
|
|
||||||
<td>32.3%</td>
|
|
||||||
<td>$321.33</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="success">
|
|
||||||
<td>/about.html</td>
|
|
||||||
<td>261</td>
|
|
||||||
<td>33.3%</td>
|
|
||||||
<td>$234.12</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="warning">
|
|
||||||
<td>/sales.html</td>
|
|
||||||
<td>665</td>
|
|
||||||
<td>21.3%</td>
|
|
||||||
<td>$16.34</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="danger">
|
|
||||||
<td>/blog.html</td>
|
|
||||||
<td>9516</td>
|
|
||||||
<td>89.3%</td>
|
|
||||||
<td>$1644.43</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/404.html</td>
|
|
||||||
<td>23</td>
|
|
||||||
<td>34.3%</td>
|
|
||||||
<td>$23.52</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/services.html</td>
|
|
||||||
<td>421</td>
|
|
||||||
<td>60.3%</td>
|
|
||||||
<td>$724.32</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>/blog/post.html</td>
|
|
||||||
<td>1233</td>
|
|
||||||
<td>93.2%</td>
|
|
||||||
<td>$126.34</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<h2>Bootstrap Docs</h2>
|
|
||||||
<p>For complete documentation, please visit <a target="_blank" href="http://getbootstrap.com/css/#tables">Bootstrap's Tables Documentation</a>.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- /.row -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /.container-fluid -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#page-wrapper -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- /#wrapper -->
|
|
||||||
|
|
||||||
<!-- jQuery -->
|
|
||||||
<script src="js/jquery.js"></script>
|
|
||||||
|
|
||||||
<!-- Bootstrap Core JavaScript -->
|
|
||||||
<script src="js/bootstrap.min.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
|
@ -1,35 +0,0 @@
|
||||||
{% extends "default/_layout.html" %}
|
|
||||||
|
|
||||||
{% block title %}Новая зона{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<div class="row">
|
|
||||||
<div class="large-12 columns">
|
|
||||||
<h3>Новая зона</h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="large-12 columns">
|
|
||||||
{% if g.errors['total'] > 0 %}
|
|
||||||
<div class="alert-box alert">
|
|
||||||
<ul>
|
|
||||||
{% for error in g.errors['items'] %}
|
|
||||||
<li>{{ error }}</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<div class="row">
|
|
||||||
<form action="{{ url_for('cdn.create') }}" method="post" id="cdncreateform">
|
|
||||||
<div class="small-12 columns">
|
|
||||||
<label for="originurl">Имя</label>
|
|
||||||
<input name="originurl" id="originurl" value="">
|
|
||||||
</div>
|
|
||||||
<div class="small-12 columns">
|
|
||||||
<input type="submit" value="Создать контейнер" class="button success" id="submitform" />
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
|
@ -1,48 +0,0 @@
|
||||||
{% extends "default/_layout.html" %}
|
|
||||||
|
|
||||||
{% block title %}CDN{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<div class="row">
|
|
||||||
<div class="large-12 columns">
|
|
||||||
<h3>Список <a href="{{ url_for('cdn.create') }}">+</a></h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="large-12 columns">
|
|
||||||
<table id="zones" width="100%">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th width="5%">ID</th>
|
|
||||||
<th>Имя</th>
|
|
||||||
{#<th>Тип</th>#}
|
|
||||||
<th>URL зоны</th>
|
|
||||||
<th>URL источника</th>
|
|
||||||
<!-- th>Статус</th>
|
|
||||||
<th>SSL</th -->
|
|
||||||
<th width="10%">Действие</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% if zones|length == 0 %}
|
|
||||||
<tr>
|
|
||||||
<td>Нет ни одного контейнера. <a href="{{ url_for('cdn.create') }}">Добавить</a>.</td>
|
|
||||||
</tr>
|
|
||||||
{% else %}
|
|
||||||
{% for zone in zones %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ zone['id'] }}</td>
|
|
||||||
<td>{{ zone['name'] }}</td>
|
|
||||||
<td>{{ zone['name'] }}.procdn.ru</td>
|
|
||||||
<td nowrap="nowrap">{{ zone['originurl'] }}</td>
|
|
||||||
<td>
|
|
||||||
<a href="#">Настройки</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
|
@ -1,6 +1,8 @@
|
||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
|
|
||||||
from flask import Blueprint, g, render_template, session, redirect, url_for, request
|
import validators
|
||||||
|
from flask import Blueprint, g, render_template, session, redirect, url_for
|
||||||
|
from flask import request, flash
|
||||||
from sshpubkeys import SSHKey
|
from sshpubkeys import SSHKey
|
||||||
from SWSCloudCore.controllers.billing import ControllerBilling
|
from SWSCloudCore.controllers.billing import ControllerBilling
|
||||||
from SWSCloudCore.controllers.common import ControllerMessagesEmail
|
from SWSCloudCore.controllers.common import ControllerMessagesEmail
|
||||||
|
@ -25,58 +27,57 @@ def index():
|
||||||
return redirect(url_for("account.logout"))
|
return redirect(url_for("account.logout"))
|
||||||
|
|
||||||
cud = ControllerUsersDetails(session['user_id'])
|
cud = ControllerUsersDetails(session['user_id'])
|
||||||
user = cud.details_get()
|
|
||||||
|
|
||||||
# проверяем, есть ли запись в таблице usersdetails, чтобы небыло ошибок
|
# проверяем, есть ли запись в таблице usersdetails, чтобы небыло ошибок
|
||||||
if not cud.details_exists():
|
if not cud.details_exists():
|
||||||
# если нет, то делаем запись в таблицу, чтобы небыло ошибок
|
# если нет, то делаем запись в таблицу, чтобы небыло ошибок
|
||||||
cud.details_create()
|
cud.details_create()
|
||||||
|
|
||||||
# извлекаем из базы детали пользователя
|
|
||||||
user_details = cud.details_get()
|
|
||||||
|
|
||||||
return render_template(
|
return render_template(
|
||||||
'default/id/index.html',
|
'default/id/index.html',
|
||||||
user=user,
|
user=cud.details_get(),
|
||||||
user_details=user_details
|
user_details=cud.details_get()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@viewAccount.route('/edit', methods=['GET', 'POST'])
|
@viewAccount.route('/edit.html', methods=['GET', 'POST'])
|
||||||
def edit():
|
def edit():
|
||||||
|
cu = ControllerUsers()
|
||||||
# check session
|
# check session
|
||||||
if not ControllerUsers().check_session():
|
if not cu.check_session():
|
||||||
return redirect(url_for("account.logout"))
|
return redirect(url_for("account.logout"))
|
||||||
# auth user
|
# auth user
|
||||||
if not ControllerUsers().auth(session['email'], session['password']):
|
if not cu.auth(session['email'], session['password']):
|
||||||
return redirect(url_for("account.logout"))
|
return redirect(url_for("account.logout"))
|
||||||
|
|
||||||
cud = ControllerUsersDetails(session['user_id'])
|
cud = ControllerUsersDetails(session['user_id'])
|
||||||
user = cud.details_get()
|
|
||||||
|
|
||||||
|
# Проверяем есть ли детали пользователя.
|
||||||
if not cud.details_exists():
|
if not cud.details_exists():
|
||||||
|
# Если нет, то создаём
|
||||||
cud.details_create()
|
cud.details_create()
|
||||||
|
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
if not request.form['zipcode'].isdigit():
|
if not request.form['zipcode'].isdigit():
|
||||||
g.errors['items'].append(u'Индекс должен содержать только цифры')
|
flash(u'Индекс должен содержать только цифры')
|
||||||
g.errors['total'] += 1
|
|
||||||
|
|
||||||
if g.errors['total'] == 0:
|
|
||||||
cud.details_update(
|
|
||||||
fname=request.form['fname'],
|
|
||||||
lname=request.form['lname'],
|
|
||||||
address=request.form['address'],
|
|
||||||
city=request.form['city'],
|
|
||||||
country=request.form['country'],
|
|
||||||
state=request.form['state'],
|
|
||||||
zipcode=request.form['zipcode']
|
|
||||||
)
|
|
||||||
return redirect(url_for('account.edit'))
|
return redirect(url_for('account.edit'))
|
||||||
# get user details
|
|
||||||
user_details = cud.details_get()
|
|
||||||
|
|
||||||
return render_template('default/id/edit.html', user=user, user_details=user_details)
|
cud.details_update(
|
||||||
|
fname=request.form['fname'],
|
||||||
|
lname=request.form['lname'],
|
||||||
|
address=request.form['address'],
|
||||||
|
city=request.form['city'],
|
||||||
|
country=request.form['country'],
|
||||||
|
state=request.form['state'],
|
||||||
|
zipcode=request.form['zipcode']
|
||||||
|
)
|
||||||
|
return redirect(url_for('account.edit'))
|
||||||
|
|
||||||
|
return render_template(
|
||||||
|
'default/id/edit.html',
|
||||||
|
user=cud.details_get(),
|
||||||
|
user_details=cud.details_get()
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@viewAccount.route('/settings', methods=['GET', 'POST'])
|
@viewAccount.route('/settings', methods=['GET', 'POST'])
|
||||||
|
@ -87,10 +88,11 @@ def settings():
|
||||||
# auth user
|
# auth user
|
||||||
if not ControllerUsers().auth(session['email'], session['password']):
|
if not ControllerUsers().auth(session['email'], session['password']):
|
||||||
return redirect(url_for("account.logout"))
|
return redirect(url_for("account.logout"))
|
||||||
# get user data
|
|
||||||
user = ControllerUsers(session['user_id']).get()
|
|
||||||
|
|
||||||
return render_template('default/id/index.html', user_details=user)
|
return render_template(
|
||||||
|
'default/id/index.html',
|
||||||
|
user_details=ControllerUsers(session['user_id']).get()
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@viewAccount.route('/billing', methods=['GET', 'POST'])
|
@viewAccount.route('/billing', methods=['GET', 'POST'])
|
||||||
|
@ -103,109 +105,113 @@ def billing():
|
||||||
return redirect(url_for("account.logout"))
|
return redirect(url_for("account.logout"))
|
||||||
|
|
||||||
user_id = session['user_id']
|
user_id = session['user_id']
|
||||||
|
cub = ControllerBilling()
|
||||||
|
|
||||||
if models.UsersBalance.select().where(models.UsersBalance.user == user_id).count() == 0:
|
if not cub.exists(user_id):
|
||||||
models.UsersBalance.create(user=user_id, balance=10)
|
cub.create(user=user_id, balance=0)
|
||||||
user_balance = models.UsersBalance.select().where(models.UsersBalance.user == user_id).limit(1)[0].balance
|
|
||||||
|
|
||||||
user_details = models.Users.select().where(models.Users.id == session['user_id']).limit(1)[0]
|
# TODO: move to function
|
||||||
|
user_details = models.Users.select().where(
|
||||||
# выгрузка истории платежей
|
models.Users.id == session['user_id']
|
||||||
history = dict()
|
).get()
|
||||||
history['total'] = models.UsersBalanceTransactions.select().\
|
|
||||||
where(models.UsersBalanceTransactions.user == user_id).count()
|
|
||||||
history['items'] = models.UsersBalanceTransactions.select().\
|
|
||||||
where(models.UsersBalanceTransactions.user == user_id)
|
|
||||||
|
|
||||||
return render_template(
|
return render_template(
|
||||||
'default/id/balance.html',
|
'default/id/balance.html',
|
||||||
user_details=user_details,
|
user_details=user_details,
|
||||||
user_balance=user_balance,
|
user_balance=cub.get(user_id),
|
||||||
history=history
|
history=cub.transactions_get(user_id)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@viewAccount.route('/registration', methods=['GET', 'POST'])
|
@viewAccount.route('/registration.html', methods=['GET', 'POST'])
|
||||||
def registration():
|
def registration():
|
||||||
# check session
|
cu = ControllerUsers()
|
||||||
if ControllerUsers().check_session():
|
# Проверяем сессию, если все данные на месте,
|
||||||
|
# то перенаправляем пользователя на страницу со списком контейнеров
|
||||||
|
if cu.check_session():
|
||||||
return redirect(url_for("containers.index"))
|
return redirect(url_for("containers.index"))
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
check_password = False
|
email = request.form['email']
|
||||||
if request.form['password'] == request.form['password2']:
|
password = request.form['password']
|
||||||
check_password = True
|
password2 = request.form['password2']
|
||||||
|
|
||||||
if not special_match(request.form['email'], r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$")\
|
# Проверка введён ли проверочный пароль одинаково
|
||||||
or len(request.form['password']) < 5\
|
if password != password2:
|
||||||
or not check_password:
|
flash(u'Пароли не совпадают', 'error')
|
||||||
g.errors['items'].append('Invalid registration data.')
|
|
||||||
g.errors['total'] += 1
|
|
||||||
|
|
||||||
if g.errors['total'] == 0:
|
# Проверяем правильность адреса е-почты и
|
||||||
# count user with email and password
|
if not validators.email(email):
|
||||||
if models.Users.select().where(models.Users.email == request.form['email']).count():
|
flash(u'Неправильный адрес електронной почты', 'error')
|
||||||
g.errors['items'].append('Invalid registration. User already exists.')
|
return redirect(url_for('account.registration'))
|
||||||
g.errors['total'] += 1
|
|
||||||
else:
|
|
||||||
if ControllerUsers().registration(request.form['email'], request.form['password']):
|
|
||||||
user_id = ControllerUsers().get_id_by_email(request.form['email'])
|
|
||||||
|
|
||||||
ControllerUsersDetails(user_id).details_create()
|
# Проверяем зарегистрирован ли указанный адрес електронной почты
|
||||||
ControllerBilling().create(user_id, g.settings['bonus'])
|
if cu.user_exists_by_email(email):
|
||||||
# ControllerU
|
flash(u'Польщователь с указанным адресом уже зарегистрирован')
|
||||||
# send mail message with recovery code
|
return redirect(url_for('account.registration'))
|
||||||
message = u"""
|
|
||||||
Е-почта: %s
|
|
||||||
Пароль: %s
|
|
||||||
""" % (request.form['email'], request.form['password'])
|
|
||||||
subject = u'GoCloud.ru: Успешная регистрация'
|
|
||||||
lead = u"""
|
|
||||||
Поздравляем с успешной зарегистрацией.
|
|
||||||
"""
|
|
||||||
callout = u"""
|
|
||||||
Для входа в личный кабинет воспользуйтесь
|
|
||||||
<a href="https://gocloud.ru/account/login">страницей авторизации</a>.
|
|
||||||
"""
|
|
||||||
|
|
||||||
email = ControllerMessagesEmail()
|
# Регистрируем пользователя в системе
|
||||||
email.send(title=subject, to=request.form['email'], lead=lead, message=message, callout=callout)
|
if ControllerUsers().registration(email, password):
|
||||||
|
user_id = ControllerUsers().get_id_by_email(email)
|
||||||
|
|
||||||
# redirect to login page
|
ControllerUsersDetails(user_id).details_create()
|
||||||
return redirect(url_for('account.login'))
|
ControllerBilling().create(user_id, g.settings['bonus'])
|
||||||
else:
|
# ControllerU
|
||||||
g.errors['items'].append('Invalid registration. Try again.')
|
# send mail message with recovery code
|
||||||
g.errors['total'] += 1
|
message = u"""
|
||||||
|
Е-почта: %s
|
||||||
|
Пароль: %s
|
||||||
|
""" % (request.form['email'], request.form['password'])
|
||||||
|
subject = u'GoCloud.ru: Успешная регистрация'
|
||||||
|
lead = u"""
|
||||||
|
Поздравляем с успешной зарегистрацией.
|
||||||
|
"""
|
||||||
|
callout = u"""
|
||||||
|
Для входа в личный кабинет воспользуйтесь
|
||||||
|
<a href="https://gocloud.ru/account/login">страницей авторизации</a>.
|
||||||
|
"""
|
||||||
|
|
||||||
|
email = ControllerMessagesEmail()
|
||||||
|
email.send(title=subject, to=request.form['email'], lead=lead, message=message, callout=callout)
|
||||||
|
|
||||||
|
# redirect to login page
|
||||||
|
flash(u'Учетная запись успешно зарегистрирована.', 'success')
|
||||||
|
return redirect(url_for('account.login'))
|
||||||
|
else:
|
||||||
|
flash('Ошибка при регистрации, попробуйте снова', 'error')
|
||||||
|
return redirect(url_for('account.registration'))
|
||||||
return render_template('default/id/registration.html')
|
return render_template('default/id/registration.html')
|
||||||
|
|
||||||
|
|
||||||
@viewAccount.route('/login', methods=['GET', 'POST'])
|
@viewAccount.route('/login.html', methods=['GET', 'POST'])
|
||||||
def login():
|
def login():
|
||||||
|
cu = ControllerUsers()
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
# validation entered data
|
email = request.form['email']
|
||||||
if not special_match(request.form['email'], r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$")\
|
password = request.form['password']
|
||||||
or len(request.form['password']) < 5:
|
|
||||||
g.errors['items'].append('Invalid registration data.')
|
|
||||||
g.errors['total'] += 1
|
|
||||||
|
|
||||||
if g.errors['total'] == 0:
|
# validation entered data
|
||||||
# try auth only active users (with status code 1)
|
if not requests.email(email):
|
||||||
if ControllerUsers().auth(request.form['email'], request.form['password'], 1):
|
flash(u'Неправильный адрес електронной почты', 'error')
|
||||||
# get user_id
|
return redirect(url_for('account.login'))
|
||||||
user_id = ControllerUsers().get_id_by_email(request.form['email'])
|
|
||||||
# save user data to session
|
# try auth only active users (with status code 1)
|
||||||
session['user_id'] = user_id
|
if cu.auth(email, password, 1):
|
||||||
session['email'] = request.form['email']
|
# get user_id
|
||||||
session['password'] = request.form['password']
|
user_id = cu.get_id_by_email(email)
|
||||||
# redirect to rules list
|
# save user data to session
|
||||||
return redirect(url_for('containers.index'))
|
session['user_id'] = user_id
|
||||||
else:
|
session['email'] = email
|
||||||
g.errors['items'].append('Invalid login. Please try again.')
|
session['password'] = password
|
||||||
g.errors['total'] += 1
|
# redirect to rules list
|
||||||
|
return redirect(url_for('containers.index'))
|
||||||
|
else:
|
||||||
|
flash(u'Не авторизованы', 'error')
|
||||||
|
return redirect(url_for('account.login'))
|
||||||
return render_template("default/id/login.html")
|
return render_template("default/id/login.html")
|
||||||
|
|
||||||
|
|
||||||
@viewAccount.route('/logout')
|
@viewAccount.route('/logout.html')
|
||||||
def logout():
|
def logout():
|
||||||
session.pop('user_id', None)
|
session.pop('user_id', None)
|
||||||
session.pop('email', None)
|
session.pop('email', None)
|
||||||
|
@ -213,44 +219,53 @@ def logout():
|
||||||
return redirect(url_for('account.login'))
|
return redirect(url_for('account.login'))
|
||||||
|
|
||||||
|
|
||||||
@viewAccount.route("/password_reset", methods=['GET', 'POST'])
|
@viewAccount.route("/password_reset.html", methods=['GET', 'POST'])
|
||||||
def password_reset():
|
def password_reset():
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
|
cu = ControllerUsers()
|
||||||
|
curc = ControllerUsersRecoveryCodes()
|
||||||
|
email = request.form['email']
|
||||||
|
|
||||||
|
if not validators.email(email):
|
||||||
|
flash(u'Произошла ошибка. Введите корректный адрес е.почты.')
|
||||||
|
return redirect(url_for('account.password_reset'))
|
||||||
|
|
||||||
# check exists email
|
# check exists email
|
||||||
if ControllerUsers().user_exists_by_email(request.form['email']):
|
if not cu.user_exists_by_email(email):
|
||||||
# get user_id by email
|
flash(u'Произошла ошибка. Введите корректный адрес е.почты.')
|
||||||
user_id = str(ControllerUsers().user_id_by_email(request.form['email']))
|
return redirect(url_for('account.password_reset'))
|
||||||
|
|
||||||
# create recovery code
|
# get user_id by email
|
||||||
recovery_code = ControllerUsersRecoveryCodes().code_generate()
|
user_id = str(cu.user_id_by_email(email))
|
||||||
|
|
||||||
# remove old recovery codes for user
|
# create recovery code
|
||||||
ControllerUsersRecoveryCodes().delete(user_id)
|
recovery_code = curc.code_generate()
|
||||||
# write new recovery code to database
|
|
||||||
ControllerUsersRecoveryCodes().create(user_id, recovery_code)
|
|
||||||
|
|
||||||
# send mail message with recovery code
|
# remove old recovery codes for user
|
||||||
subject = u'GoCloud.ru: Код восстановления доступа'
|
curc.delete(user_id)
|
||||||
message = u'Код восстановления: %s' % recovery_code
|
# write new recovery code to database
|
||||||
lead = u"""
|
curc.create(user_id, recovery_code)
|
||||||
Данный код необходимо ввести на странице подтверждения
|
|
||||||
<a href="https://gocloud.ru/account/password_reset_step2">сброса пароля</a>.
|
|
||||||
"""
|
|
||||||
callout = u'Если вы не хотите сбрасывать пароль, то просто проигнорируйте (или удалите) данное письмо.'
|
|
||||||
# controllers.Mail().send(request.form['email'], subject, message)
|
|
||||||
|
|
||||||
email = ControllerMessagesEmail()
|
# send mail message with recovery code
|
||||||
email.send(title=subject, to=request.form['email'], lead=lead, message=message, callout=callout)
|
subject = u'GoCloud.ru: Код восстановления доступа'
|
||||||
|
message = u'Код восстановления: %s' % recovery_code
|
||||||
|
lead = u"""
|
||||||
|
Данный код необходимо ввести на странице подтверждения
|
||||||
|
<a href="https://gocloud.ru/account/password_reset_step2">сброса пароля</a>.
|
||||||
|
"""
|
||||||
|
callout = u'Если вы не хотите сбрасывать пароль, то просто проигнорируйте (или удалите) данное письмо.'
|
||||||
|
# controllers.Mail().send(request.form['email'], subject, message)
|
||||||
|
|
||||||
# redirect to step 2
|
email = ControllerMessagesEmail()
|
||||||
return redirect(url_for('account.password_reset_step2'))
|
email.send(title=subject, to=request.form['email'], lead=lead, message=message, callout=callout)
|
||||||
else:
|
|
||||||
g.errors['items'].append(u'Произошла ошибка. Введите корректный адрес е.почты.')
|
# redirect to step 2
|
||||||
g.errors['total'] += 1
|
flash(u'На указанный адрес был отправлен код подтверждения', 'info')
|
||||||
|
return redirect(url_for('account.password_reset_step2'))
|
||||||
return render_template('default/id/password_reset_step1.html')
|
return render_template('default/id/password_reset_step1.html')
|
||||||
|
|
||||||
|
|
||||||
@viewAccount.route("/password_reset_step2", methods=['GET', 'POST'])
|
@viewAccount.route("/password_reset_step2.html", methods=['GET', 'POST'])
|
||||||
def password_reset_step2():
|
def password_reset_step2():
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
# check exists email
|
# check exists email
|
||||||
|
|
0
SWSCloudCore/views/account/decorators.py
Normal file
0
SWSCloudCore/views/account/decorators.py
Normal file
|
@ -1,15 +1,8 @@
|
||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
|
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
import validators
|
||||||
|
|
||||||
from SWSCloudCore.controllers.administrators import ControllerAdministrators
|
|
||||||
from SWSCloudCore.controllers.billing import ControllerBilling
|
|
||||||
from SWSCloudCore.controllers.common import ControllerMessagesEmail
|
|
||||||
from SWSCloudCore.controllers.common import special_match
|
|
||||||
from SWSCloudCore.controllers.containers.manage import ControllerManageContainers
|
|
||||||
from SWSCloudCore.controllers.datacenters.manage import ControllerManageDatacenters
|
|
||||||
from SWSCloudCore.controllers.ips.manage import ControllerManageIPs
|
|
||||||
from SWSCloudCore.controllers.servers.manage import ControllerManageServer
|
|
||||||
from flask import Blueprint
|
from flask import Blueprint
|
||||||
from flask import g
|
from flask import g
|
||||||
from flask import jsonify
|
from flask import jsonify
|
||||||
|
@ -19,10 +12,17 @@ from flask import request
|
||||||
from flask import session
|
from flask import session
|
||||||
from flask import url_for
|
from flask import url_for
|
||||||
|
|
||||||
from SWSCloudCore import models
|
from SWSCloudCore.controllers.administrators import ControllerAdministrators
|
||||||
|
from SWSCloudCore.controllers.billing import ControllerBilling
|
||||||
|
from SWSCloudCore.controllers.common import ControllerMessagesEmail
|
||||||
|
from SWSCloudCore.controllers.containers.manage import ControllerManageContainers
|
||||||
|
from SWSCloudCore.controllers.datacenters.manage import ControllerManageDatacenters
|
||||||
|
from SWSCloudCore.controllers.ips.manage import ControllerManageIPs
|
||||||
|
from SWSCloudCore.controllers.servers.manage import ControllerManageServer
|
||||||
from SWSCloudCore.controllers.users.manage import ControllerManageUsers
|
from SWSCloudCore.controllers.users.manage import ControllerManageUsers
|
||||||
from SWSCloudCore.controllers.users.manage import ControllerManageUsersBalance
|
from SWSCloudCore.controllers.users.manage import ControllerManageUsersBalance
|
||||||
from SWSCloudCore.controllers.users.manage import ControllerManageUsersDetails
|
from SWSCloudCore.controllers.users.manage import ControllerManageUsersDetails
|
||||||
|
from SWSCloudCore import models
|
||||||
|
|
||||||
viewAdministrator = Blueprint('administrator', __name__, url_prefix='/administrator')
|
viewAdministrator = Blueprint('administrator', __name__, url_prefix='/administrator')
|
||||||
|
|
||||||
|
@ -34,27 +34,25 @@ def login():
|
||||||
admin_password = request.form['password'].encode('utf-8')
|
admin_password = request.form['password'].encode('utf-8')
|
||||||
|
|
||||||
# validation entered data
|
# validation entered data
|
||||||
if not special_match(admin_email, r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$")\
|
if not validators.email(admin_email):
|
||||||
or len(admin_password) < 5:
|
flash('Invalid registration data')
|
||||||
g.errors['items'].append('Invalid registration data.')
|
return redirect(url_for('administrator.login'))
|
||||||
g.errors['total'] += 1
|
|
||||||
# если ошибок нет, то продолжаем обработку
|
|
||||||
if g.errors['total'] == 0:
|
|
||||||
# try auth only active users (with status code 1)
|
|
||||||
if ControllerAdministrators().auth(admin_email, admin_password, 1):
|
|
||||||
# get user_id
|
|
||||||
user_id = ControllerAdministrators().get_id_by_email(admin_email)
|
|
||||||
|
|
||||||
# save user data to session
|
# try auth only active users (with status code 1)
|
||||||
session['admin_id'] = str(user_id)
|
if ControllerAdministrators().auth(admin_email, admin_password, 1):
|
||||||
session['admin_email'] = admin_email
|
# get user_id
|
||||||
session['admin_password'] = admin_password
|
user_id = ControllerAdministrators().get_id_by_email(admin_email)
|
||||||
|
|
||||||
# redirect to rules list
|
# save user data to session
|
||||||
return redirect(url_for('administrator.dashboard'))
|
session['admin_id'] = str(user_id)
|
||||||
else:
|
session['admin_email'] = admin_email
|
||||||
g.errors['items'].append('Invalid login. Please try again.')
|
session['admin_password'] = admin_password
|
||||||
g.errors['total'] += 1
|
|
||||||
|
# redirect to rules list
|
||||||
|
return redirect(url_for('administrator.dashboard'))
|
||||||
|
else:
|
||||||
|
flah('Invalid login. Please try again.')
|
||||||
|
return redirect('administrator.login')
|
||||||
return render_template('administrator/login.html')
|
return render_template('administrator/login.html')
|
||||||
|
|
||||||
|
|
||||||
|
@ -83,7 +81,10 @@ def dashboard():
|
||||||
'payments': models.UsersBalanceTransactions.select().count(),
|
'payments': models.UsersBalanceTransactions.select().count(),
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
return render_template('administrator/dashboard.html', stats=stats)
|
return render_template(
|
||||||
|
'administrator/dashboard.html',
|
||||||
|
stats=stats
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@viewAdministrator.route('/users/')
|
@viewAdministrator.route('/users/')
|
||||||
|
@ -151,7 +152,10 @@ def payments():
|
||||||
'total': models.UsersBalanceTransactions.select().count(),
|
'total': models.UsersBalanceTransactions.select().count(),
|
||||||
'items': models.UsersBalanceTransactions.select()
|
'items': models.UsersBalanceTransactions.select()
|
||||||
}
|
}
|
||||||
return render_template('administrator/payments.html', payments=payments_items)
|
return render_template(
|
||||||
|
'administrator/payments.html',
|
||||||
|
payments=payments_items
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@viewAdministrator.route('/datacenters')
|
@viewAdministrator.route('/datacenters')
|
||||||
|
@ -210,13 +214,13 @@ def datacenters_edit(dc_id):
|
||||||
# POST
|
# POST
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
# todo: ... update record for datacenter
|
# todo: ... update record for datacenter
|
||||||
return url_for('administrator.datacenters_edit', dc_id=dc_id)
|
return redirect(url_for('administrator.datacenters_edit', dc_id=dc_id))
|
||||||
|
|
||||||
datacenter = ControllerManageDatacenters().item_get(dc_id)
|
cmd = ControllerManageDatacenters()
|
||||||
|
|
||||||
return render_template(
|
return render_template(
|
||||||
'administrator/datacenters_edit.html',
|
'administrator/datacenters_edit.html',
|
||||||
datacenter=datacenter
|
datacenter=cmd.item_get(dc_id)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -229,9 +233,10 @@ def servers_index():
|
||||||
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']):
|
||||||
return redirect(url_for("administrator.logout"))
|
return redirect(url_for("administrator.logout"))
|
||||||
#
|
#
|
||||||
|
cms = ControllerManageServer()
|
||||||
return render_template(
|
return render_template(
|
||||||
'administrator/servers/index.html',
|
'administrator/servers/index.html',
|
||||||
servers=ControllerManageServer().items_get()
|
servers=cms.items_get()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
|
|
||||||
import uuid
|
import uuid
|
||||||
from flask import Blueprint, g, redirect, render_template, request, session, url_for
|
from flask import Blueprint, g, redirect, render_template, request, session
|
||||||
|
from flask import url_for
|
||||||
|
|
||||||
from SWSCloudCore.controllers.billing import ControllerBilling
|
from SWSCloudCore.controllers.billing import ControllerBilling
|
||||||
from SWSCloudCore.controllers.common import ControllerCommon
|
from SWSCloudCore.controllers.common import ControllerCommon
|
||||||
|
@ -49,94 +50,93 @@ def create():
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
# check user money
|
# check user money
|
||||||
if user_balance <= 0:
|
if user_balance <= 0:
|
||||||
g.errors['total'] += 1
|
flash(u'Недостаточно средств на аккаунте')
|
||||||
g.errors['items'].append(u'No money')
|
return redirect(url_for('containers.create'))
|
||||||
|
|
||||||
if g.errors['total'] == 0:
|
# select server from selected region with available ip-addresses
|
||||||
# select server from selected region with available ip-addresses
|
# select IP
|
||||||
# select IP
|
select_ip = ControllerIps().getfree(request.form['datacenter'])
|
||||||
select_ip = ControllerIps().getfree(request.form['datacenter'])
|
# mark ip as busy (taken)
|
||||||
# mark ip as busy (taken)
|
ControllerIps().setbusy(select_ip.id)
|
||||||
ControllerIps().setbusy(select_ip.id)
|
# generate password for container user
|
||||||
# generate password for container user
|
password = ControllerCommon().generate_password(size=14)
|
||||||
password = ControllerCommon().generate_password(size=14)
|
|
||||||
|
|
||||||
new_container = {
|
new_container = {
|
||||||
'container_id': str(uuid.uuid4()),
|
'container_id': str(uuid.uuid4()),
|
||||||
'datacenter_id': str(select_ip.datacenter.id),
|
'datacenter_id': str(select_ip.datacenter.id),
|
||||||
'server_id': str(select_ip.server.id),
|
'server_id': str(select_ip.server.id),
|
||||||
'ipv4': select_ip.ipv4,
|
'ipv4': select_ip.ipv4,
|
||||||
'ipv6': select_ip.ipv6,
|
'ipv6': select_ip.ipv6,
|
||||||
'ipv4_gateway': select_ip.ipv4_gateway,
|
'ipv4_gateway': select_ip.ipv4_gateway,
|
||||||
'ipv6_gateway': select_ip.ipv6_gateway,
|
'ipv6_gateway': select_ip.ipv6_gateway,
|
||||||
'username': 'ubuntu',
|
'username': 'ubuntu',
|
||||||
'password': password,
|
'password': password,
|
||||||
'ssh_key': None,
|
'ssh_key': None,
|
||||||
}
|
}
|
||||||
|
|
||||||
# sshkey
|
# sshkey
|
||||||
if user_ssh.check():
|
if user_ssh.check():
|
||||||
new_container['ssh_key'] = user_ssh.get()
|
new_container['ssh_key'] = user_ssh.get()
|
||||||
|
|
||||||
# create container record in database
|
# create container record in database
|
||||||
# status 4: creation
|
# status 4: creation
|
||||||
status = 4
|
status = 4
|
||||||
container_create = ControllerContainers(session['user_id']).create(
|
container_create = ControllerContainers(session['user_id']).create(
|
||||||
new_container['container_id'],
|
new_container['container_id'],
|
||||||
|
new_container['datacenter_id'],
|
||||||
|
new_container['server_id'],
|
||||||
|
new_container['ipv4'],
|
||||||
|
new_container['ipv6'],
|
||||||
|
status
|
||||||
|
)
|
||||||
|
# create default state data
|
||||||
|
ControllerContainersStatisticsState().set(new_container['container_id'], dict())
|
||||||
|
if container_create:
|
||||||
|
# create task for create new container
|
||||||
|
ControllerTasks(session['user_id']).create(
|
||||||
new_container['datacenter_id'],
|
new_container['datacenter_id'],
|
||||||
new_container['server_id'],
|
new_container['server_id'],
|
||||||
new_container['ipv4'],
|
'container_create',
|
||||||
new_container['ipv6'],
|
0,
|
||||||
status
|
container_id=new_container['container_id'],
|
||||||
|
ipv4=new_container['ipv4'],
|
||||||
|
ipv6=new_container['ipv6'],
|
||||||
|
ipv4_gateway=new_container['ipv4_gateway'],
|
||||||
|
ipv6_gateway=new_container['ipv6_gateway'],
|
||||||
|
username=new_container['username'],
|
||||||
|
password=new_container['password'],
|
||||||
|
ssh_key=new_container['ssh_key']
|
||||||
)
|
)
|
||||||
# create default state data
|
|
||||||
ControllerContainersStatisticsState().set(new_container['container_id'], dict())
|
|
||||||
if container_create:
|
|
||||||
# create task for create new container
|
|
||||||
ControllerTasks(session['user_id']).create(
|
|
||||||
new_container['datacenter_id'],
|
|
||||||
new_container['server_id'],
|
|
||||||
'container_create',
|
|
||||||
0,
|
|
||||||
container_id=new_container['container_id'],
|
|
||||||
ipv4=new_container['ipv4'],
|
|
||||||
ipv6=new_container['ipv6'],
|
|
||||||
ipv4_gateway=new_container['ipv4_gateway'],
|
|
||||||
ipv6_gateway=new_container['ipv6_gateway'],
|
|
||||||
username=new_container['username'],
|
|
||||||
password=new_container['password'],
|
|
||||||
ssh_key=new_container['ssh_key']
|
|
||||||
)
|
|
||||||
|
|
||||||
# send mail message with recovery code
|
# send mail message with recovery code
|
||||||
message_parts = []
|
message_parts = []
|
||||||
|
|
||||||
if new_container['ipv4']:
|
if new_container['ipv4']:
|
||||||
message_parts.append(u"IPv4: %s" % new_container['ipv4'])
|
message_parts.append(u"IPv4: %s" % new_container['ipv4'])
|
||||||
if new_container['ipv6']:
|
if new_container['ipv6']:
|
||||||
message_parts.append(u"IPv6: %s" % new_container['ipv6'])
|
message_parts.append(u"IPv6: %s" % new_container['ipv6'])
|
||||||
message_parts.append(u"Пользователь: %s" % new_container['username'])
|
message_parts.append(u"Пользователь: %s" % new_container['username'])
|
||||||
message_parts.append(u"Пароль: %s" % new_container['password'])
|
message_parts.append(u"Пароль: %s" % new_container['password'])
|
||||||
if new_container['ssh_key']:
|
if new_container['ssh_key']:
|
||||||
message_parts.append(u"SSH ключ: добавлен")
|
message_parts.append(u"SSH ключ: добавлен")
|
||||||
|
|
||||||
message = '<br/>\n'.join(message_parts)
|
message = '<br/>\n'.join(message_parts)
|
||||||
subject = u'GoCloud.ru: Новый контейнер'
|
subject = u'GoCloud.ru: Новый контейнер'
|
||||||
lead = u"""Поздравляем с новым контейнером."""
|
lead = u"""Поздравляем с новым контейнером."""
|
||||||
callout = u"""
|
callout = u"""
|
||||||
Для входа в личный кабинет воспользуйтесь
|
Для входа в личный кабинет воспользуйтесь
|
||||||
<a href="https://gocloud.ru/account/login">страницей авторизации</a>.
|
<a href="https://gocloud.ru/account/login">страницей авторизации</a>.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
user_data = ControllerUsers(session['user_id']).get()
|
user_data = ControllerUsers(session['user_id']).get()
|
||||||
|
|
||||||
email = ControllerMessagesEmail()
|
email = ControllerMessagesEmail()
|
||||||
email.send(title=subject, to=user_data.email, lead=lead, message=message, callout=callout)
|
email.send(title=subject, to=user_data.email, lead=lead, message=message, callout=callout)
|
||||||
|
|
||||||
return redirect(url_for('containers.index'))
|
return redirect(url_for('containers.index'))
|
||||||
else:
|
else:
|
||||||
# mark ip as free
|
# mark ip as free
|
||||||
ControllerIps().setfree(select_ip.id)
|
ControllerIps().setfree(select_ip.id)
|
||||||
# Get datacenters list
|
# Get datacenters list
|
||||||
datacenters = ControllerDataCenters().get()
|
datacenters = ControllerDataCenters().get()
|
||||||
#
|
#
|
||||||
|
@ -146,7 +146,7 @@ def create():
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@viewContainers.route('/delete/<uuid:container_id>', methods=['GET', 'POST'])
|
@viewContainers.route('/delete/<uuid:container_id>.html', methods=['GET', 'POST'])
|
||||||
def delete(container_id):
|
def delete(container_id):
|
||||||
# check session
|
# check session
|
||||||
if not ControllerUsers().check_session():
|
if not ControllerUsers().check_session():
|
||||||
|
@ -176,6 +176,7 @@ def delete(container_id):
|
||||||
)
|
)
|
||||||
# TODO: send email container was deleted about
|
# TODO: send email container was deleted about
|
||||||
# Редиректим на страницу со всеми правилами
|
# Редиректим на страницу со всеми правилами
|
||||||
|
flash(u'Контейнер был удалён')
|
||||||
return redirect(url_for('containers.index'))
|
return redirect(url_for('containers.index'))
|
||||||
return render_template(
|
return render_template(
|
||||||
'default/containers/delete.html',
|
'default/containers/delete.html',
|
||||||
|
@ -217,28 +218,30 @@ def settings(container_id):
|
||||||
return redirect(url_for('containers.settings', container_id=container_id))
|
return redirect(url_for('containers.settings', container_id=container_id))
|
||||||
|
|
||||||
if request.form['status'] == 'active':
|
if request.form['status'] == 'active':
|
||||||
balance = models.UsersBalance.select(models.UsersBalance.balance) \
|
balance = ControllerBilling().get(session['user_id'])
|
||||||
.where(models.UsersBalance.user == session['user_id'])[0].balance
|
|
||||||
|
|
||||||
if balance <= 0:
|
if balance <= 0:
|
||||||
g.errors['items'].append(u'Недостаточно средств на балансе.')
|
flash(u'Недостаточно средств на балансе.')
|
||||||
g.errors['total'] += 1
|
|
||||||
else:
|
|
||||||
containers.set_status(container_id, 2)
|
|
||||||
# Создание задания
|
|
||||||
ControllerTasks(session['user_id']).create(
|
|
||||||
container_details.datacenter.id,
|
|
||||||
container_details.server.id,
|
|
||||||
'container_start',
|
|
||||||
0,
|
|
||||||
container_id=container_details.id
|
|
||||||
)
|
|
||||||
return redirect(url_for('containers.settings', container_id=container_id))
|
return redirect(url_for('containers.settings', container_id=container_id))
|
||||||
|
|
||||||
return render_template('default/containers/settings.html', container=container_details)
|
containers.set_status(container_id, 2)
|
||||||
|
# Создание задания
|
||||||
|
ControllerTasks(session['user_id']).create(
|
||||||
|
container_details.datacenter.id,
|
||||||
|
container_details.server.id,
|
||||||
|
'container_start',
|
||||||
|
0,
|
||||||
|
container_id=container_details.id
|
||||||
|
)
|
||||||
|
return redirect(url_for('containers.settings', container_id=container_id))
|
||||||
|
|
||||||
|
return render_template(
|
||||||
|
'default/containers/settings.html',
|
||||||
|
container=container_details
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@viewContainers.route('/stats/<uuid:container_id>')
|
@viewContainers.route('/stats/<uuid:container_id>.html')
|
||||||
def stats(container_id):
|
def stats(container_id):
|
||||||
# check session
|
# check session
|
||||||
if not ControllerUsers().check_session():
|
if not ControllerUsers().check_session():
|
||||||
|
|
2
TODO
Normal file
2
TODO
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
[ ] Сделать вывод ошибок через flash
|
||||||
|
[ ] Избавиться от лишних методов в common
|
54
setup.py
54
setup.py
|
@ -51,28 +51,52 @@ setup(
|
||||||
'static/js/vendor/*.js',
|
'static/js/vendor/*.js',
|
||||||
#
|
#
|
||||||
'templates/*.html',
|
'templates/*.html',
|
||||||
'templates/account/*.html',
|
|
||||||
'templates/administrator/*.html',
|
'templates/administrator/*.html',
|
||||||
'templates/administrator/payments/*.html',
|
'templates/administrator/containers/*.html',
|
||||||
'templates/administrator/plans/*.html',
|
'templates/administrator/datacenters/*.html',
|
||||||
|
'templates/administrator/ips/*.html',
|
||||||
|
'templates/administrator/servers/*.html',
|
||||||
'templates/administrator/settings/*.html',
|
'templates/administrator/settings/*.html',
|
||||||
|
'templates/administrator/settings/messages/*.html',
|
||||||
'templates/administrator/users/*.html',
|
'templates/administrator/users/*.html',
|
||||||
'templates/administrator/zones/*.html',
|
# 'templates/administrator/payments/*.html',
|
||||||
'templates/billing/*.html',
|
'templates/administrator/wiki/*.html',
|
||||||
'templates/mail/default/*.html',
|
'templates/administrator/wiki/article/*.html',
|
||||||
'templates/mail/default/*.css',
|
'templates/administrator/wiki/category/*.html',
|
||||||
'templates/payment/robokassa/*.html',
|
'templates/default/*.html',
|
||||||
'templates/records/*.html',
|
'templates/default/containers/*.html',
|
||||||
'templates/support/*.html',
|
'templates/default/documents/*.html',
|
||||||
'templates/zones/*.html',
|
'templates/default/homepage/*.html',
|
||||||
|
'templates/default/id/*.html',
|
||||||
|
'templates/default/kb/*.html',
|
||||||
|
'templates/default/payment/*.html',
|
||||||
|
'templates/default/support/*.html',
|
||||||
|
'templates/default/tasks/*.html',
|
||||||
|
'templates/email/simple/*.html',
|
||||||
|
'templates/errors/*.html',
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
scripts=[
|
scripts=[
|
||||||
'swscloud-db-init.py',
|
'exec/swscloud-db-init.py',
|
||||||
'swscloud-runserver.py',
|
'exec/swscloud-settings-init.py',
|
||||||
|
'exec/swscloud-runserver.py',
|
||||||
|
# accounts
|
||||||
|
'exec/swscloud-admin-add.py',
|
||||||
|
# TODO: make it
|
||||||
|
# 'exec/swscloud-admin-delete.py',
|
||||||
|
'exec/swscloud-admin-ls.py',
|
||||||
|
'exec/swscloud-admin-passwd.py',
|
||||||
|
# datacenters
|
||||||
|
'exec/swscloud-dc-add.py',
|
||||||
|
'exec/swscloud-dc-ls.py',
|
||||||
|
# servers
|
||||||
|
'exec/swscloud-server-add.py',
|
||||||
|
'exec/swscloud-server-ls.py',
|
||||||
],
|
],
|
||||||
install_requires=[
|
install_requires=[
|
||||||
'Flask==0.10.1',
|
'Flask==0.10.1',
|
||||||
|
'Flask-Markdown==0.3',
|
||||||
|
'Flask-Babel==0.9'
|
||||||
'flask-peewee==0.6.7',
|
'flask-peewee==0.6.7',
|
||||||
'Jinja2==2.8',
|
'Jinja2==2.8',
|
||||||
'peewee==2.8.0',
|
'peewee==2.8.0',
|
||||||
|
@ -81,5 +105,9 @@ setup(
|
||||||
'configparser',
|
'configparser',
|
||||||
'uwsgi==2.0.12',
|
'uwsgi==2.0.12',
|
||||||
'flask_httpauth',
|
'flask_httpauth',
|
||||||
|
'requests==2.7.0',
|
||||||
|
'uWSGI==2.0.11.1',
|
||||||
|
'wsgiref==0.1.2',
|
||||||
|
'sshpubkeys'
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Reference in a new issue