Compare commits
2 Commits
Author | SHA1 | Date |
---|---|---|
Argo-MacBookPro | acfe63ae4c | |
sunnian | a6838b6fe1 |
|
@ -1,9 +0,0 @@
|
|||
.dockerignore
|
||||
.env
|
||||
.git
|
||||
.gitignore
|
||||
.vs
|
||||
.vscode
|
||||
*/bin
|
||||
*/obj
|
||||
**/.toolstarget
|
135
.editorconfig
|
@ -1,135 +0,0 @@
|
|||
# To learn more about .editorconfig see https://aka.ms/editorconfigdocs
|
||||
###############################
|
||||
# Core EditorConfig Options #
|
||||
###############################
|
||||
root=true
|
||||
# All files
|
||||
[*]
|
||||
indent_style = space
|
||||
# shell files
|
||||
[*.{cmd,sh,bat}]
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
# Code files
|
||||
[*.{cs,csx,vb,vbx}]
|
||||
indent_size = 4
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
charset = utf-8-bom
|
||||
[*.{json,yml,xml,csproj,props}]
|
||||
indent_size = 2
|
||||
###############################
|
||||
# .NET Coding Conventions #
|
||||
###############################
|
||||
[*.{cs,vb}]
|
||||
# Organize usings
|
||||
dotnet_sort_system_directives_first = false
|
||||
# this. preferences
|
||||
dotnet_style_qualification_for_field = false:silent
|
||||
dotnet_style_qualification_for_property = false:silent
|
||||
dotnet_style_qualification_for_method = false:silent
|
||||
dotnet_style_qualification_for_event = false:silent
|
||||
# Language keywords vs BCL types preferences
|
||||
dotnet_style_predefined_type_for_locals_parameters_members = true:silent
|
||||
dotnet_style_predefined_type_for_member_access = true:silent
|
||||
# Parentheses preferences
|
||||
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
|
||||
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
|
||||
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
|
||||
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
|
||||
# Modifier preferences
|
||||
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
|
||||
dotnet_style_readonly_field = true:suggestion
|
||||
# Expression-level preferences
|
||||
dotnet_style_object_initializer = true:suggestion
|
||||
dotnet_style_collection_initializer = true:suggestion
|
||||
dotnet_style_explicit_tuple_names = true:suggestion
|
||||
dotnet_style_null_propagation = true:suggestion
|
||||
dotnet_style_coalesce_expression = true:suggestion
|
||||
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent
|
||||
dotnet_prefer_inferred_tuple_names = true:suggestion
|
||||
dotnet_prefer_inferred_anonymous_type_member_names = true:suggestion
|
||||
dotnet_style_prefer_auto_properties = true:silent
|
||||
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
|
||||
dotnet_style_prefer_conditional_expression_over_return = true:silent
|
||||
###############################
|
||||
# Naming Conventions #
|
||||
###############################
|
||||
# Style Definitions
|
||||
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
|
||||
# Use PascalCase for constant fields
|
||||
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
|
||||
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
|
||||
dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style
|
||||
dotnet_naming_symbols.constant_fields.applicable_kinds = field
|
||||
dotnet_naming_symbols.constant_fields.applicable_accessibilities = *
|
||||
dotnet_naming_symbols.constant_fields.required_modifiers = const
|
||||
###############################
|
||||
# C# Coding Conventions #
|
||||
###############################
|
||||
[*.cs]
|
||||
# var preferences
|
||||
csharp_style_var_for_built_in_types = true:silent
|
||||
csharp_style_var_when_type_is_apparent = true:silent
|
||||
csharp_style_var_elsewhere = true:silent
|
||||
# Expression-bodied members
|
||||
csharp_style_expression_bodied_methods = false:silent
|
||||
csharp_style_expression_bodied_constructors = false:silent
|
||||
csharp_style_expression_bodied_operators = false:silent
|
||||
csharp_style_expression_bodied_properties = true:silent
|
||||
csharp_style_expression_bodied_indexers = true:silent
|
||||
csharp_style_expression_bodied_accessors = true:silent
|
||||
# Pattern matching preferences
|
||||
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
|
||||
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
|
||||
# Null-checking preferences
|
||||
csharp_style_throw_expression = true:suggestion
|
||||
csharp_style_conditional_delegate_call = true:suggestion
|
||||
# Modifier preferences
|
||||
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion
|
||||
# Expression-level preferences
|
||||
csharp_prefer_braces = true:silent
|
||||
csharp_style_deconstructed_variable_declaration = true:suggestion
|
||||
csharp_prefer_simple_default_expression = true:suggestion
|
||||
csharp_style_pattern_local_over_anonymous_function = true:suggestion
|
||||
csharp_style_inlined_variable_declaration = true:suggestion
|
||||
###############################
|
||||
# C# Formatting Rules #
|
||||
###############################
|
||||
# New line preferences
|
||||
csharp_new_line_before_open_brace = all
|
||||
csharp_new_line_before_else = true
|
||||
csharp_new_line_before_catch = true
|
||||
csharp_new_line_before_finally = true
|
||||
csharp_new_line_before_members_in_object_initializers = true
|
||||
csharp_new_line_before_members_in_anonymous_types = true
|
||||
csharp_new_line_between_query_expression_clauses = true
|
||||
# Indentation preferences
|
||||
csharp_indent_case_contents = true
|
||||
csharp_indent_switch_labels = true
|
||||
csharp_indent_labels = flush_left
|
||||
# Space preferences
|
||||
csharp_space_after_cast = false
|
||||
csharp_space_after_keywords_in_control_flow_statements = true
|
||||
csharp_space_between_method_call_parameter_list_parentheses = false
|
||||
csharp_space_between_method_declaration_parameter_list_parentheses = false
|
||||
csharp_space_between_parentheses = false
|
||||
csharp_space_before_colon_in_inheritance_clause = true
|
||||
csharp_space_after_colon_in_inheritance_clause = true
|
||||
csharp_space_around_binary_operators = before_and_after
|
||||
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
|
||||
csharp_space_between_method_call_name_and_opening_parenthesis = false
|
||||
csharp_space_between_method_call_empty_parameter_list_parentheses = false
|
||||
# Wrapping preferences
|
||||
csharp_preserve_single_line_statements = true
|
||||
csharp_preserve_single_line_blocks = true
|
||||
csharp_style_namespace_declarations=file_scoped:silent
|
||||
###############################
|
||||
# VB Coding Conventions #
|
||||
###############################
|
||||
[*.vb]
|
||||
# Modifier preferences
|
||||
visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion
|
||||
[*.cs]
|
||||
# Add file header
|
||||
file_header_template = Copyright (c) Argo Zhang (argo@163.com). All rights reserved.\nLicensed under the LGPL License, Version 3.0. See License.txt in the project root for license information.\nWebsite: https://admin.blazor.zone
|
|
@ -1,63 +0,0 @@
|
|||
###############################################################################
|
||||
# Set default behavior to automatically normalize line endings.
|
||||
###############################################################################
|
||||
* text=auto
|
||||
|
||||
###############################################################################
|
||||
# Set default behavior for command prompt diff.
|
||||
#
|
||||
# This is need for earlier builds of msysgit that does not have it on by
|
||||
# default for csharp files.
|
||||
# Note: This is only used by command line
|
||||
###############################################################################
|
||||
#*.cs diff=csharp
|
||||
|
||||
###############################################################################
|
||||
# Set the merge driver for project and solution files
|
||||
#
|
||||
# Merging from the command prompt will add diff markers to the files if there
|
||||
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||
# the diff markers are never inserted). Diff markers may cause the following
|
||||
# file extensions to fail to load in VS. An alternative would be to treat
|
||||
# these files as binary and thus will always conflict and require user
|
||||
# intervention with every merge. To do so, just uncomment the entries below
|
||||
###############################################################################
|
||||
#*.sln merge=binary
|
||||
#*.csproj merge=binary
|
||||
#*.vbproj merge=binary
|
||||
#*.vcxproj merge=binary
|
||||
#*.vcproj merge=binary
|
||||
#*.dbproj merge=binary
|
||||
#*.fsproj merge=binary
|
||||
#*.lsproj merge=binary
|
||||
#*.wixproj merge=binary
|
||||
#*.modelproj merge=binary
|
||||
#*.sqlproj merge=binary
|
||||
#*.wwaproj merge=binary
|
||||
|
||||
###############################################################################
|
||||
# behavior for image files
|
||||
#
|
||||
# image files are treated as binary by default.
|
||||
###############################################################################
|
||||
#*.jpg binary
|
||||
#*.png binary
|
||||
#*.gif binary
|
||||
|
||||
###############################################################################
|
||||
# diff behavior for common document formats
|
||||
#
|
||||
# Convert binary document formats to text before diffing them. This feature
|
||||
# is only available from the command line. Turn it on by uncommenting the
|
||||
# entries below.
|
||||
###############################################################################
|
||||
#*.doc diff=astextplain
|
||||
#*.DOC diff=astextplain
|
||||
#*.docx diff=astextplain
|
||||
#*.DOCX diff=astextplain
|
||||
#*.dot diff=astextplain
|
||||
#*.DOT diff=astextplain
|
||||
#*.pdf diff=astextplain
|
||||
#*.PDF diff=astextplain
|
||||
#*.rtf diff=astextplain
|
||||
#*.RTF diff=astextplain
|
|
@ -1,17 +0,0 @@
|
|||
### 该问题是怎么引起的?
|
||||
|
||||
|
||||
|
||||
### 重现步骤
|
||||
|
||||
|
||||
|
||||
### 报错信息
|
||||
|
||||
|
||||
|
||||
### 预期结果
|
||||
|
||||
|
||||
|
||||
### 实际结果
|
|
@ -1,15 +0,0 @@
|
|||
### 该Pull Request关联的Issue
|
||||
|
||||
|
||||
### 修改描述
|
||||
|
||||
|
||||
|
||||
### 测试用例
|
||||
|
||||
|
||||
|
||||
### 修复效果的截屏
|
||||
|
||||
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
name: Auto Build CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Setup .NET Core
|
||||
uses: actions/setup-dotnet@v1
|
||||
with:
|
||||
dotnet-version: 5.0.103
|
||||
- name: Build with dotnet
|
||||
run: dotnet build src/admin/Bootstrap.Admin/ --configuration Release
|
|
@ -1,15 +0,0 @@
|
|||
name: Docker Image CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Build the Docker image
|
||||
run: docker build . --file src/admin/Bootstrap.Admin/Dockerfile --tag ba:$(date +%s)
|
|
@ -1,356 +1,158 @@
|
|||
###### -- File Created With Git Source Control Provider 2015 -- ######
|
||||
###### -- From https://github.com/github/gitignore -- ######
|
||||
###### -- Warning Regenerating this file will erase all your custom ignores, unless you add them below the Custom Ignore section at the bottom -- ######
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.rsuser
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
|
||||
# Visual Studio Code cache/options directory
|
||||
.vscode/
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# Visual Studio 2017 auto generated files
|
||||
Generated\ Files/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUNIT
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# Benchmark Results
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
|
||||
# StyleCop
|
||||
StyleCopReport.xml
|
||||
|
||||
# Files built by Visual Studio
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_h.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.iobj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.ipdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*_wpftmp.csproj
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# Visual Studio Trace Files
|
||||
*.e2e
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# AxoCover is a Code Coverage Tool
|
||||
.axoCover/*
|
||||
!.axoCover/settings.json
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/[Pp]ackages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/[Pp]ackages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/[Pp]ackages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
*.appx
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
ServiceFabricBackup/
|
||||
*.rptproj.bak
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
*.rptproj.rsuser
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# JetBrains Rider
|
||||
.idea/
|
||||
*.sln.iml
|
||||
|
||||
# CodeRush personal settings
|
||||
.cr/personal
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
*.binlog
|
||||
|
||||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
# Local History for Visual Studio
|
||||
.localhistory/
|
||||
|
||||
# MAC Files
|
||||
**/.DS_Store
|
||||
|
||||
# Windows db files
|
||||
**/[tT]humbs.db
|
||||
|
||||
# Net Core Keys
|
||||
**/[Kk]eys/*.xml
|
||||
Bootstrap*.xml
|
||||
|
||||
###### -- Custom Ignore Section, Make sure all files you add to the git repo are below this line -- ######
|
||||
|
||||
# Coverage
|
||||
coverage*.xml
|
||||
tools/
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
|
||||
#Assiant files
|
||||
.vs
|
||||
CenterControlSetup
|
||||
dll
|
||||
packages
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.sln.docstates
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Rr]elease/
|
||||
x64/
|
||||
build/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
|
||||
# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
|
||||
!packages/*/build/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
*.ilk
|
||||
*.meta
|
||||
*.ncb
|
||||
*.pch
|
||||
*.pdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.suo
|
||||
*.sln.docstates
|
||||
*.tli
|
||||
*.bak
|
||||
*.tmp_proj
|
||||
*.log
|
||||
*.cache
|
||||
*.vssscc
|
||||
.builds
|
||||
*.ilk
|
||||
*.scc
|
||||
[Dd]ebug*/
|
||||
ipch/
|
||||
*.aps
|
||||
*.lib
|
||||
*.opensdf
|
||||
*.sbr
|
||||
*.cachefile
|
||||
[Rr]elease*/
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
[Tt]est[Rr]esult*
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# NCrunch
|
||||
*.ncrunch*
|
||||
.*crunch*.local.xml
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.Publish.xml
|
||||
*.pubxml
|
||||
|
||||
# NuGet Packages Directory
|
||||
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
|
||||
#packages/
|
||||
|
||||
# Windows Azure Build Output
|
||||
*.vssscc
|
||||
*.build.csdef
|
||||
|
||||
# Windows Store app package directory
|
||||
AppPackages/
|
||||
|
||||
# Others
|
||||
sql/
|
||||
*.Cache
|
||||
ClientBin/
|
||||
[Ss]tyle[Cc]op.*
|
||||
$tf*/
|
||||
*~
|
||||
*.dbmdl
|
||||
*.[Pp]ublish.xml
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file to a newer
|
||||
# Visual Studio version. Backup files are not needed, because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
|
||||
# SQL Server files
|
||||
App_Data/*.mdf
|
||||
App_Data/*.ldf
|
||||
|
||||
# =========================
|
||||
# Windows detritus
|
||||
# =========================
|
||||
|
||||
# Windows image file caches
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
|
||||
# Folder config file
|
||||
Desktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# Mac crap
|
||||
.DS_Store
|
||||
|
||||
# Dotfuscator
|
||||
Dotfuscated/
|
||||
|
||||
#AutoUpdate
|
||||
*/UpdateServer/v*
|
||||
*/UpdateServer/*.dll
|
||||
*/UpdateServer/*.exe
|
||||
|
||||
#uploader
|
||||
uploader/
|
|
@ -1,19 +0,0 @@
|
|||
# Integration with Issue Tracker
|
||||
#
|
||||
# (note that '\' need to be escaped).
|
||||
|
||||
[issuetracker "Gitee-Issue"]
|
||||
regex = "#((?!.*Issue|issue|Comme|comme)[A-Za-z0-9]+)"
|
||||
url = "https://gitee.com/LongbowEnterprise/BootstrapAdmin/issues/$1?from=project-issue"
|
||||
|
||||
[issuetracker "Gitee-Url"]
|
||||
regex = "([a-zA-z]+://[^\\s]*)"
|
||||
url = "$1"
|
||||
|
||||
[issuetracker "Gitee-Commit"]
|
||||
regex = "[C|c]ommit:([^\\s]*)"
|
||||
url = "https://gitee.com/LongbowEnterprise/BootstrapAdmin/commit/$1"
|
||||
|
||||
[issuetracker "Gitee-PR"]
|
||||
regex = "!([\\d]+)"
|
||||
url = "https://gitee.com/LongbowEnterprise/BootstrapAdmin/pulls/$1"
|
|
@ -0,0 +1 @@
|
|||
请不要删除此目录
|
|
@ -0,0 +1,29 @@
|
|||
using Bootstrap.DataAccess;
|
||||
using Longbow.Caching;
|
||||
using Longbow.ExceptionManagement;
|
||||
using Longbow.ExceptionManagement.Configuration;
|
||||
using System;
|
||||
using System.Collections.Specialized;
|
||||
|
||||
namespace Bootstrap.Admin
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class DBPublisher : IExceptionPublisher
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ex"></param>
|
||||
/// <param name="additionalInfo"></param>
|
||||
/// <param name="publisherElement"></param>
|
||||
public void Publish(Exception ex, NameValueCollection additionalInfo, ExceptionPublisherElement publisherElement)
|
||||
{
|
||||
if (publisherElement.Mode == PublisherMode.Off) return;
|
||||
ExceptionHelper.Log(ex, additionalInfo);
|
||||
CacheManager.Clear(k => k == ExceptionHelper.RetrieveExceptionsDataKey);
|
||||
NotificationHelper.MessagePool.Add(new MessageBody() { Category = "Notification", Message = ex.Message });
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
using Bootstrap.Security.Mvc;
|
||||
using Longbow.Web.Mvc;
|
||||
using System;
|
||||
using System.Web.Mvc;
|
||||
|
||||
namespace Bootstrap.Admin
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static class FilterConfig
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="filters"></param>
|
||||
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
|
||||
{
|
||||
if (filters == null) throw new ArgumentNullException("filters");
|
||||
filters.Add(new LgbHandleErrorAttribute());
|
||||
filters.Add(new BAAuthorizeAttribute());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
using System.Web.Mvc;
|
||||
using System.Web.Routing;
|
||||
|
||||
namespace Bootstrap.Admin
|
||||
{
|
||||
public class RouteConfig
|
||||
{
|
||||
public static void RegisterRoutes(RouteCollection routes)
|
||||
{
|
||||
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
|
||||
|
||||
routes.MapRoute(
|
||||
name: "Default",
|
||||
url: "{controller}/{action}/{id}",
|
||||
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
using Bootstrap.Security.Mvc;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace Bootstrap.Admin
|
||||
{
|
||||
public static class WebApiConfig
|
||||
{
|
||||
public static void Register(HttpConfiguration config)
|
||||
{
|
||||
// Web API configuration and services
|
||||
config.Filters.Add(new BAAPIAuthorizaAttribute());
|
||||
// Web API routes
|
||||
config.MapHttpAttributeRoutes();
|
||||
|
||||
config.Routes.MapHttpRoute(
|
||||
name: "DefaultApi",
|
||||
routeTemplate: "api/{controller}/{id}",
|
||||
defaults: new { id = RouteParameter.Optional }
|
||||
);
|
||||
|
||||
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
|
||||
json.DateFormatString = "yyyy'-'MM'-'dd' 'HH':'mm':'ss";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,390 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>
|
||||
</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{7B2B7043-3CB2-4C5A-BDF2-8C47F1A5471A}</ProjectGuid>
|
||||
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Bootstrap.Admin</RootNamespace>
|
||||
<AssemblyName>Bootstrap.Admin</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<UseIISExpress>true</UseIISExpress>
|
||||
<IISExpressSSLPort />
|
||||
<IISExpressAnonymousAuthentication />
|
||||
<IISExpressWindowsAuthentication />
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
<UseGlobalApplicationHostFile />
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Bootstrap.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=c20f2177a7066899, processorArchitecture=MSIL" />
|
||||
<Reference Include="Bootstrap.Security.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=c20f2177a7066899, processorArchitecture=MSIL" />
|
||||
<Reference Include="Longbow, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c20f2177a7066899, processorArchitecture=MSIL" />
|
||||
<Reference Include="Longbow.ExceptionManagement, Version=3.0.0.0, Culture=neutral, PublicKeyToken=c20f2177a7066899, processorArchitecture=MSIL" />
|
||||
<Reference Include="Longbow.V4, Version=4.0.0.0, Culture=neutral, PublicKeyToken=c20f2177a7066899, processorArchitecture=MSIL" />
|
||||
<Reference Include="Longbow.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=c20f2177a7066899, processorArchitecture=MSIL" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Web.DynamicData" />
|
||||
<Reference Include="System.Web.Entity" />
|
||||
<Reference Include="System.Web.ApplicationServices" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Web.Services" />
|
||||
<Reference Include="System.EnterpriseServices" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Web.Razor">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Webpages">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Webpages.3.2.3\lib\net45\System.Web.Webpages.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Webpages.Deployment">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Webpages.3.2.3\lib\net45\System.Web.Webpages.Deployment.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Webpages.Razor">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Webpages.3.2.3\lib\net45\System.Web.Webpages.Razor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Helpers">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Webpages.3.2.3\lib\net45\System.Web.Helpers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Web.Infrastructure">
|
||||
<HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Mvc">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http.Formatting">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Http">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Http.WebHost">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="App_Data\ErrorLog\Readme.txt" />
|
||||
<Content Include="Content\bootstrap-theme.css" />
|
||||
<Content Include="Content\bootstrap-theme.min.css" />
|
||||
<Content Include="Content\bootstrap.css" />
|
||||
<Content Include="Content\bootstrap.min.css" />
|
||||
<Content Include="Content\api.css" />
|
||||
<Content Include="Content\bootstrap-datetimepicker.css" />
|
||||
<Content Include="Content\bootstrap-datetimepicker.min.css" />
|
||||
<Content Include="Content\fileinput.css" />
|
||||
<Content Include="Content\fileinput.min.css" />
|
||||
<Content Include="Content\IE8.css" />
|
||||
<Content Include="Content\images\bg2.jpg" />
|
||||
<Content Include="Content\images\bg4.jpg" />
|
||||
<Content Include="Content\images\bg3.png" />
|
||||
<Content Include="Content\login-responsive.css" />
|
||||
<Content Include="Content\nprogress.css" />
|
||||
<Content Include="Content\font-awesome.css" />
|
||||
<Content Include="Content\font-awesome.min.css" />
|
||||
<Content Include="Content\html\api.html" />
|
||||
<Content Include="Content\images\error_icon.png" />
|
||||
<Content Include="Content\toastr.css" />
|
||||
<Content Include="Content\toastr.min.css" />
|
||||
<Content Include="favicon.ico" />
|
||||
<Content Include="Content\admin-responsive.css" />
|
||||
<Content Include="Content\admin.css" />
|
||||
<Content Include="Content\blue.css" />
|
||||
<Content Include="Content\fa.css" />
|
||||
<Content Include="Content\bootstrap-table.css" />
|
||||
<Content Include="Content\bootstrap-table.min.css" />
|
||||
<Content Include="Content\jquery.nestable.css" />
|
||||
<Content Include="Content\lock.css" />
|
||||
<Content Include="Content\login.css" />
|
||||
<Content Include="Content\register.css" />
|
||||
<Content Include="Content\tasks.css" />
|
||||
<Content Include="Content\html\RegResult.html" />
|
||||
<Content Include="Content\images\bg.jpg" />
|
||||
<Content Include="Content\images\loading-sm.gif" />
|
||||
<Content Include="Content\images\loading.gif" />
|
||||
<Content Include="Content\images\lock-bg.jpg" />
|
||||
<Content Include="Content\images\logo.jpg" />
|
||||
<Content Include="Content\images\logo1.jpg" />
|
||||
<Content Include="Content\images\logo2.jpg" />
|
||||
<Content Include="Content\images\logo3.jpg" />
|
||||
<Content Include="Content\images\logo4.jpg" />
|
||||
<Content Include="Content\images\logo5.jpg" />
|
||||
<Content Include="Content\images\logo6.jpg" />
|
||||
<Content Include="Content\images\uploader\Admin.jpg" />
|
||||
<Content Include="Content\images\uploader\default.jpg" />
|
||||
<Content Include="Content\images\uploader\readme.txt" />
|
||||
<Content Include="Content\site-responsive.css" />
|
||||
<Content Include="Content\images\error.png" />
|
||||
<Content Include="Content\images\nav-expand.png" />
|
||||
<Content Include="Content\site.css" />
|
||||
<Content Include="Content\sweetalert.css" />
|
||||
<Content Include="Content\images\success.png" />
|
||||
<Content Include="fonts\fontawesome-webfont.svg" />
|
||||
<Content Include="fonts\glyphicons-halflings-regular.svg" />
|
||||
<Content Include="Global.asax" />
|
||||
<Content Include="Scripts\additional-methods.js" />
|
||||
<Content Include="Scripts\additional-methods.min.js" />
|
||||
<Content Include="Scripts\bootstrap-datetimepicker.js" />
|
||||
<Content Include="Scripts\bootstrap-datetimepicker.min.js" />
|
||||
<Content Include="Scripts\bootstrap-datetimepicker.zh-CN.js" />
|
||||
<Content Include="Scripts\bootstrap-table-zh-CN.js" />
|
||||
<Content Include="Scripts\bootstrap-table-zh-CN.min.js" />
|
||||
<Content Include="Scripts\bootstrap-table.js" />
|
||||
<Content Include="Scripts\bootstrap-table.min.js" />
|
||||
<Content Include="Scripts\bootstrap.js" />
|
||||
<Content Include="Scripts\bootstrap.min.js" />
|
||||
<Content Include="Scripts\bootstrap3-typeahead.js" />
|
||||
<Content Include="Scripts\bootstrap3-typeahead.min.js" />
|
||||
<Content Include="Scripts\common-scripts.js" />
|
||||
<Content Include="Scripts\Content.js" />
|
||||
<Content Include="Scripts\Dicts.js" />
|
||||
<Content Include="Scripts\Exceptions.js" />
|
||||
<Content Include="Scripts\fileinput.js" />
|
||||
<Content Include="Scripts\fileinput.min.js" />
|
||||
<Content Include="Scripts\fileinput.zh.js" />
|
||||
<Content Include="Scripts\framework.js" />
|
||||
<Content Include="Scripts\Groups.js" />
|
||||
<Content Include="Scripts\icon.js" />
|
||||
<Content Include="Scripts\Profiles.js" />
|
||||
<Content Include="fonts\glyphicons-halflings-regular.woff2" />
|
||||
<Content Include="fonts\glyphicons-halflings-regular.woff" />
|
||||
<Content Include="fonts\glyphicons-halflings-regular.ttf" />
|
||||
<Content Include="fonts\glyphicons-halflings-regular.eot" />
|
||||
<Content Include="Content\bootstrap.min.css.map" />
|
||||
<Content Include="Content\bootstrap.css.map" />
|
||||
<Content Include="Content\bootstrap-theme.min.css.map" />
|
||||
<Content Include="Content\bootstrap-theme.css.map" />
|
||||
<Content Include="fonts\FontAwesome.otf" />
|
||||
<Content Include="fonts\fontawesome-webfont.woff2" />
|
||||
<Content Include="fonts\fontawesome-webfont.woff" />
|
||||
<Content Include="fonts\fontawesome-webfont.ttf" />
|
||||
<Content Include="fonts\fontawesome-webfont.eot" />
|
||||
<Content Include="..\..\Keys\Longbow.Utility.snk">
|
||||
<Link>Longbow.Utility.snk</Link>
|
||||
</Content>
|
||||
<None Include="Scripts\jquery-3.1.1.intellisense.js" />
|
||||
<Content Include="Scripts\jquery-3.1.1.js" />
|
||||
<Content Include="Scripts\jquery-3.1.1.min.js" />
|
||||
<Content Include="Scripts\jquery-3.1.1.slim.js" />
|
||||
<Content Include="Scripts\jquery-3.1.1.slim.min.js" />
|
||||
<None Include="Scripts\jquery.validate-vsdoc.js" />
|
||||
<Content Include="Scripts\jquery.dcjqaccordion.2.7.js" />
|
||||
<Content Include="Scripts\jquery.nestable.js" />
|
||||
<Content Include="Scripts\jquery.nicescroll.min.js" />
|
||||
<Content Include="Scripts\jquery.scrollTo.js" />
|
||||
<Content Include="Scripts\jquery.scrollTo.min.js" />
|
||||
<Content Include="Scripts\jquery.validate.js" />
|
||||
<Content Include="Scripts\jquery.validate.min.js" />
|
||||
<Content Include="Scripts\lock.js" />
|
||||
<Content Include="Scripts\log.js" />
|
||||
<Content Include="Scripts\Login.js" />
|
||||
<Content Include="Scripts\Logs.js" />
|
||||
<Content Include="Scripts\Longbow.Common.js" />
|
||||
<Content Include="Scripts\longbow.dataentity.js" />
|
||||
<Content Include="Scripts\Menus.js" />
|
||||
<Content Include="Scripts\message.js" />
|
||||
<Content Include="Scripts\messages_zh.js" />
|
||||
<Content Include="Scripts\messages_zh.min.js" />
|
||||
<Content Include="Scripts\noti.js" />
|
||||
<Content Include="Scripts\nprogress.js" />
|
||||
<Content Include="Scripts\Settings.js" />
|
||||
<Content Include="Scripts\register.js" />
|
||||
<Content Include="Scripts\Roles.js" />
|
||||
<Content Include="Scripts\sweetalert.js" />
|
||||
<Content Include="Scripts\sweetalert.min.js" />
|
||||
<Content Include="Scripts\tasks.js" />
|
||||
<Content Include="Scripts\apidoc.js" />
|
||||
<Content Include="Scripts\toastr.min.js" />
|
||||
<Content Include="Scripts\Users.js" />
|
||||
<Content Include="packages.config" />
|
||||
<Content Include="Scripts\jquery-3.1.1.slim.min.map" />
|
||||
<Content Include="Scripts\jquery-3.1.1.min.map" />
|
||||
<Content Include="Views\Shared\Readme.txt" />
|
||||
<Content Include="Web.config">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="Views\Shared\_Layout.cshtml" />
|
||||
<Content Include="Views\Home\Index.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\bldver.cs">
|
||||
<Link>bldver.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="App_Start\DBPublisher.cs" />
|
||||
<Compile Include="App_Start\FilterConfig.cs" />
|
||||
<Compile Include="App_Start\RouteConfig.cs" />
|
||||
<Compile Include="App_Start\WebApiConfig.cs" />
|
||||
<Compile Include="Controllers\AdminController.cs" />
|
||||
<Compile Include="Controllers\DictsController.cs" />
|
||||
<Compile Include="Controllers\ExceptionsController.cs" />
|
||||
<Compile Include="Controllers\GroupsController.cs" />
|
||||
<Compile Include="Controllers\HomeController.cs" />
|
||||
<Compile Include="Controllers\ProfilesController.cs" />
|
||||
<Compile Include="Controllers\LoginController.cs" />
|
||||
<Compile Include="Controllers\LogsController.cs" />
|
||||
<Compile Include="Controllers\MenusController.cs" />
|
||||
<Compile Include="Controllers\MessagesController.cs" />
|
||||
<Compile Include="Controllers\NotificationsController.cs" />
|
||||
<Compile Include="Controllers\SettingsController.cs" />
|
||||
<Compile Include="Controllers\RolesController.cs" />
|
||||
<Compile Include="Controllers\TasksController.cs" />
|
||||
<Compile Include="Controllers\UsersController.cs" />
|
||||
<Compile Include="Controllers\WSController.cs" />
|
||||
<Compile Include="Global.asax.cs">
|
||||
<DependentUpon>Global.asax</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Models\ProfilesModel.cs" />
|
||||
<Compile Include="Models\LockModel.cs" />
|
||||
<Compile Include="Models\MessageCountModel.cs" />
|
||||
<Compile Include="Models\QueryDictOption.cs" />
|
||||
<Compile Include="Models\QueryExceptionOption.cs" />
|
||||
<Compile Include="Models\QueryGroupOption.cs" />
|
||||
<Compile Include="Models\QueryLogOption.cs" />
|
||||
<Compile Include="Models\QueryMenuOption.cs" />
|
||||
<Compile Include="Models\QueryRoleOption.cs" />
|
||||
<Compile Include="Models\QueryUserOption.cs" />
|
||||
<Compile Include="Models\HeaderBarModel.cs" />
|
||||
<Compile Include="Models\LoginModel.cs" />
|
||||
<Compile Include="Models\ModelBase.cs" />
|
||||
<Compile Include="Models\NavigatorBarModel.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\web.config" />
|
||||
<Content Include="Views\Shared\_Normal.cshtml" />
|
||||
<Content Include="Views\Shared\_Admin.cshtml" />
|
||||
<Content Include="Views\Admin\Index.cshtml" />
|
||||
<Content Include="Views\Shared\_Default.cshtml" />
|
||||
<Content Include="Views\Admin\Users.cshtml" />
|
||||
<Content Include="Views\_ViewStart.cshtml" />
|
||||
<Content Include="Views\Shared\Header.cshtml" />
|
||||
<Content Include="Views\Shared\Navigator.cshtml" />
|
||||
<Content Include="Views\Home\Login.cshtml" />
|
||||
<Content Include="Views\Shared\UnAuthorized.cshtml" />
|
||||
<Content Include="Views\Shared\AwesomeIcon.cshtml" />
|
||||
<Content Include="Views\Admin\FAIcon.cshtml" />
|
||||
<Content Include="Views\Admin\Groups.cshtml" />
|
||||
<Content Include="Views\Admin\Roles.cshtml" />
|
||||
<Content Include="Views\Admin\Menus.cshtml" />
|
||||
<Content Include="Views\Admin\Dicts.cshtml" />
|
||||
<Content Include="Views\Shared\RoleConfig.cshtml" />
|
||||
<Content Include="Views\Shared\IconView.cshtml" />
|
||||
<Content Include="Views\Shared\UserConfig.cshtml" />
|
||||
<Content Include="Views\Shared\GroupConfig.cshtml" />
|
||||
<Content Include="Views\Admin\Logs.cshtml" />
|
||||
<Content Include="Views\Admin\Settings.cshtml" />
|
||||
<Content Include="Views\Shared\Footer.cshtml" />
|
||||
<Content Include="Views\Shared\NavigatorConfig.cshtml" />
|
||||
<Content Include="Views\Shared\SubNavigation.cshtml" />
|
||||
<Content Include="Views\Home\Lock.cshtml" />
|
||||
<Content Include="Views\Home\Register.cshtml" />
|
||||
<Content Include="Views\Admin\Notifications.cshtml" />
|
||||
<Content Include="Views\Admin\Profiles.cshtml" />
|
||||
<Content Include="Views\Admin\Exceptions.cshtml" />
|
||||
<Content Include="Views\Admin\Messages.cshtml" />
|
||||
<Content Include="Views\Admin\Tasks.cshtml" />
|
||||
<Content Include="Views\Admin\Mobile.cshtml" />
|
||||
<Content Include="Views\Shared\_Mobile.cshtml" />
|
||||
<Content Include="Views\Home\Mobile.cshtml" />
|
||||
<Content Include="Views\Shared\SubMenu.cshtml" />
|
||||
<Content Include="Views\Admin\Api.cshtml" />
|
||||
<Content Include="Views\Shared\_ButtonBarGroup.cshtml" />
|
||||
<Content Include="Scripts\toastr.js.map" />
|
||||
<None Include="Web.Debug.config">
|
||||
<DependentUpon>Web.config</DependentUpon>
|
||||
</None>
|
||||
<None Include="Web.Release.config">
|
||||
<DependentUpon>Web.config</DependentUpon>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Bootstrap.DataAccess\Bootstrap.DataAccess.csproj">
|
||||
<Project>{af16ca71-b8c6-4f51-b38c-0c0300fdebd7}</Project>
|
||||
<Name>Bootstrap.DataAccess</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<AssemblyOriginatorKeyFile>..\..\Keys\Longbow.Utility.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<DelaySign>true</DelaySign>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>True</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>53737</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>http://localhost:53233/</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>False</UseCustomServer>
|
||||
<CustomServerUrl>
|
||||
</CustomServerUrl>
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>cscript /Nologo $(SolutionDir)Scripts\Publish.vbs $(TargetDir) $(TargetName) $(TargetExt) $(SolutionDir) $(OutDir) $(ConfigurationName)</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
|
@ -0,0 +1,11 @@
|
|||
.alert {
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
left: 15px;
|
||||
right: 15px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.alert div {
|
||||
display: inline-block;
|
||||
}
|
|
@ -0,0 +1,131 @@
|
|||
@media (min-width: 375px) {
|
||||
.hidden-375 {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.toolbar .dropdown-menu a {
|
||||
padding: 0 20px;
|
||||
border-left: solid 1px #aeb2b7;
|
||||
}
|
||||
|
||||
.toolbar .dropdown-menu a:first-child {
|
||||
border-left: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 568px) {
|
||||
.toolbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.bs-bars {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.sidebar {
|
||||
top: 98px;
|
||||
bottom: 40px;
|
||||
position: absolute;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.form-group .form-control-url {
|
||||
width: 442px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 769px) {
|
||||
.sidebar {
|
||||
display: block;
|
||||
width: 210px;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
margin-left: 210px;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.main-content.open {
|
||||
display: block;
|
||||
}
|
||||
|
||||
aside {
|
||||
transition: none;
|
||||
transform: none;
|
||||
top: 0;
|
||||
right: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 940px) {
|
||||
.hidden-tb {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.modal-dialog {
|
||||
width: 900px;
|
||||
}
|
||||
|
||||
.form-group .form-control-url {
|
||||
width: 742px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-height: 414px) {
|
||||
.modal .modal-body {
|
||||
max-height: 200px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-height: 568px) {
|
||||
.modal .modal-body {
|
||||
max-height: 350px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-height: 667px) {
|
||||
.modal .modal-body {
|
||||
max-height: 450px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-height: 736px) {
|
||||
.modal .modal-body {
|
||||
max-height: 510px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-height: 768px) {
|
||||
.modal .modal-body {
|
||||
max-height: 540px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-height: 672px) {
|
||||
.sidebar {
|
||||
top: 98px;
|
||||
bottom: 40px;
|
||||
position: absolute;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
position: fixed;
|
||||
overflow: auto;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.main-content.open {
|
||||
display: block;
|
||||
}
|
||||
|
||||
aside {
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.aside.open {
|
||||
transform: translate(0);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,492 @@
|
|||
.lgbDropdown {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.lgbDropdown .dropdown-menu > li > a:hover {
|
||||
background: #007AC0;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.logTs, .logSql, .logDbExcep {
|
||||
color: red;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.logExcep {
|
||||
color: #337ab7;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.logMsg {
|
||||
color: #ce2520;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.hidden-tb, .hidden-375 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.clearcache {
|
||||
position: absolute;
|
||||
right: 60px;
|
||||
font-size: 1.7rem;
|
||||
color: #d9534f;
|
||||
margin-top: -1px;
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
||||
}
|
||||
|
||||
.clearcache:hover, .clearcache:focus {
|
||||
color: #c12e2a;
|
||||
}
|
||||
|
||||
.clearcache:active:hover {
|
||||
color: #ac2925;
|
||||
}
|
||||
|
||||
.form-inline .form-group {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.form-inline .form-group .control-label {
|
||||
margin-right: 10px;
|
||||
width: 80px;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
||||
.modal-dialog .modal-body, .panel-body {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.modal-dialog .modal-body .form-inline .form-group input[type="text"], .modal-dialog .modal-body .form-inline .form-group input[type="password"] {
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
.btn:focus, .btn:active:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.btn span:last-child {
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.modal .modal-dialog {
|
||||
padding: 0 15px;
|
||||
}
|
||||
|
||||
.modal .modal-body {
|
||||
max-height: 164px;
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.modal.file-zoom-dialog .modal-dialog {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
.modal-header {
|
||||
background-color: #f5f5f5;
|
||||
border-top-left-radius: 6px;
|
||||
border-top-right-radius: 6px;
|
||||
padding: 10px 15px;
|
||||
}
|
||||
|
||||
.modal-header .close {
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
.modal-body .checkbox, .modal-body .radio {
|
||||
min-width: 190px;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.modal-footer {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.modal-footer .btn {
|
||||
padding-left: 22px;
|
||||
padding-right: 22px;
|
||||
}
|
||||
|
||||
.has-error input {
|
||||
background-repeat: no-repeat;
|
||||
background-image: url('images/error.png');
|
||||
background-position: right 8px center;
|
||||
}
|
||||
|
||||
.has-error .input-group-btn button, .has-error .input-group-btn button:active:focus {
|
||||
border-color: #a94442;
|
||||
}
|
||||
|
||||
.has-success input {
|
||||
background-repeat: no-repeat;
|
||||
background-image: url('images/success.png');
|
||||
background-position: right 8px center;
|
||||
}
|
||||
|
||||
.has-success .input-group-btn button, .has-success .input-group-btn button:active:focus {
|
||||
border-color: #3c763d;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
transition: all .4s ease-in-out;
|
||||
padding: 15px 15px 0 15px;
|
||||
margin-left: 0;
|
||||
height: auto;
|
||||
left: 0;
|
||||
bottom: 40px;
|
||||
right: 0;
|
||||
top: 98px;
|
||||
}
|
||||
|
||||
.main-content.open {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.main-content.closed {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.main-content > .panel:last-child .panel-body {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.main-content > .panel > .panel-body > .modal-footer {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
aside {
|
||||
transition: transform .4s ease-in-out;
|
||||
transform: translate(-100%);
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
top: 98px;
|
||||
bottom: 40px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
aside.open {
|
||||
transform: translate(0);
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
display: none;
|
||||
overflow: auto;
|
||||
width: 100%;
|
||||
z-index: 5;
|
||||
background: #2a3542;
|
||||
}
|
||||
|
||||
.sidebar-menu {
|
||||
padding: 20px 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.sidebar-menu .dcjq-icon {
|
||||
height: 17px;
|
||||
width: 17px;
|
||||
display: inline-block;
|
||||
background: url(images/nav-expand.png) no-repeat;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.sidebar-menu .active .dcjq-icon {
|
||||
background-position: bottom;
|
||||
}
|
||||
|
||||
.sidebar-menu li {
|
||||
margin: 5px 10px;
|
||||
}
|
||||
|
||||
.sidebar-menu li a {
|
||||
color: #aeb2b7;
|
||||
display: block;
|
||||
padding: 15px 10px;
|
||||
font-size: 1.2rem;
|
||||
transition: all 0.3s ease;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.sidebar-menu li a.active, .sidebar-menu li a:hover, .sidebar-menu li a:focus {
|
||||
background: #35404d;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.sidebar-menu li a.active i {
|
||||
color: #FF6C60;
|
||||
}
|
||||
|
||||
.sidebar-menu li a i {
|
||||
font-size: 1.5rem;
|
||||
width: 22px;
|
||||
}
|
||||
|
||||
.sidebar-menu li .sub {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.sidebar-menu li .sub li a:hover, .sidebar-menu li .sub li.active a {
|
||||
color: #FF6C60;
|
||||
transition: all 0.3s ease;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.sidebar-menu li .sub li {
|
||||
background: #35404D;
|
||||
margin: 0;
|
||||
padding: 0 10px 0 32px;
|
||||
}
|
||||
|
||||
.sidebar-menu li .sub li:last-child {
|
||||
border-radius: 0 0 4px 4px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.sidebar-menu li .sub li a {
|
||||
padding: 12px 0;
|
||||
}
|
||||
|
||||
/*Modal Dialog Checkbox*/
|
||||
.modal-body .checkbox, .modal-dialog .radio {
|
||||
padding: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.modal-body .checkbox label, .modal-body .radio label {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.modal-body .checkbox label input[type='checkbox'], .modal-body .radio label input[type='radio'] {
|
||||
margin: 0 4px 0 0;
|
||||
vertical-align: middle;
|
||||
position: relative;
|
||||
top: -1px;
|
||||
}
|
||||
|
||||
.modal-body .affix {
|
||||
position: fixed;
|
||||
bottom: 95px;
|
||||
right: 50px;
|
||||
}
|
||||
|
||||
.modal-body .affix a {
|
||||
font-size: 2rem;
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.bs-bars {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.toolbar {
|
||||
position: relative;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
line-height: 34px;
|
||||
}
|
||||
|
||||
.toolbar .dropdown-menu {
|
||||
margin-top: 4px;
|
||||
min-width: inherit;
|
||||
}
|
||||
|
||||
.toolbar .dropdown-menu a {
|
||||
border-left: none;
|
||||
padding: 0 14px;
|
||||
display: table-cell;
|
||||
color: #504d4d;
|
||||
}
|
||||
|
||||
.toolbar .dropdown-menu a:first-child {
|
||||
padding-left: 16px;
|
||||
}
|
||||
|
||||
.toolbar .dropdown-menu a:last-child {
|
||||
padding-right: 16px;
|
||||
}
|
||||
|
||||
.toolbar .dropdown-menu a:hover {
|
||||
color: #235e90;
|
||||
}
|
||||
|
||||
/*cache*/
|
||||
.panel .fa-refresh {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.bootstrap-select .dropdown-menu {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.bootstrap-select .dropdown-menu > li > a {
|
||||
padding-top: 7px;
|
||||
padding-bottom: 7px;
|
||||
}
|
||||
|
||||
input[type="datetime"] {
|
||||
min-width: 220px;
|
||||
}
|
||||
|
||||
/*Messages*/
|
||||
.mail-box {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.mail-box .sm-side {
|
||||
flex: 0.4;
|
||||
background: #e5e8ef;
|
||||
border-radius: 4px 0 0 4px;
|
||||
}
|
||||
|
||||
.mail-box .sm-side .user-head {
|
||||
background: #00a8b3;
|
||||
border-radius: 4px 0 0 0;
|
||||
padding: 10px;
|
||||
color: #fff;
|
||||
min-height: 80px;
|
||||
}
|
||||
|
||||
.mail-box .sm-side .user-head .inbox-avatar {
|
||||
width: 65px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.mail-box .sm-side .user-head .inbox-avatar img {
|
||||
height: 65px;
|
||||
border-radius: 4px;
|
||||
border: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.mail-box .sm-side .user-head .user-name {
|
||||
display: inline-block;
|
||||
margin: 0 0 0 10px;
|
||||
}
|
||||
|
||||
.mail-box .sm-side .user-head .user-name h5 {
|
||||
margin-top: 15px;
|
||||
margin-bottom: 0;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.mail-box .sm-side .user-head .user-name h5 a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.mail-box .sm-side .inbox-body, .mail-box .lg-side .inbox-body {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.mail-box .sm-side .inbox-body .btn-compose {
|
||||
background: #ff6c60;
|
||||
padding: 12px 0;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.mail-box .sm-side .inbox-body .btn-compose:hover {
|
||||
background: #f5675c;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.mail-box .sm-side ul.inbox-nav {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.mail-box .sm-side ul.inbox-nav li {
|
||||
display: inline-block;
|
||||
line-height: 45px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.mail-box .sm-side ul.inbox-nav li a {
|
||||
color: #6a6a6a;
|
||||
line-height: 45px;
|
||||
width: 100%;
|
||||
display: inline-block;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.mail-box .sm-side ul.inbox-nav li a:hover, .mail-box .sm-side ul.inbox-nav li.active a, .mail-box .sm-side ul.inbox-nav li a:focus {
|
||||
color: #6a6a6a;
|
||||
background: #d5d7de;
|
||||
}
|
||||
|
||||
.mail-box .sm-side ul.inbox-nav li a .label {
|
||||
margin-top: 13px;
|
||||
padding: 0.5em 0.8em;
|
||||
}
|
||||
|
||||
.mail-box .sm-side ul.inbox-nav li a i {
|
||||
width: 18px;
|
||||
}
|
||||
|
||||
.mail-box .lg-side {
|
||||
flex: 0.6;
|
||||
background: #fff;
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
|
||||
.mail-box .lg-side .inbox-head {
|
||||
padding: 12px;
|
||||
background: #41cac0;
|
||||
color: #fff;
|
||||
border-radius: 0 4px 0 0;
|
||||
min-height: 80px;
|
||||
}
|
||||
|
||||
.mail-box .lg-side .table-inbox {
|
||||
border: 1px solid #d3d3d3;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.mail-box .lg-side .table-inbox .unread td {
|
||||
font-weight: 600;
|
||||
background: #f7f7f7;
|
||||
}
|
||||
|
||||
.mail-box .lg-side .table-inbox tr td {
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
.mail-box .lg-side .table-inbox tr td .fa-star.inbox-started, .mail-box .lg-side .table-inbox tr td .fa-star:hover {
|
||||
color: #f78a09;
|
||||
}
|
||||
|
||||
.mail-box .lg-side .table-inbox tr td:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/*Bootstrap Table BUG */
|
||||
.fixed-table-loading {
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.bootstrap-table {
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.bootstrap-table .fixed-table-body .table {
|
||||
border-bottom: none;
|
||||
}
|
||||
/*Bootstrap Table BUG END*/
|
||||
|
||||
.input-group.form_date span {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.barTable {
|
||||
padding: 5px 15px 15px 15px;
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
h3 {
|
||||
margin-top: 0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.btn {
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.control-label {
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.main-content > section:not(:first-child) {
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.main-content > section > div {
|
||||
line-height: 26px;
|
||||
}
|
||||
|
||||
.main-content > section > div > div {
|
||||
display: inline-block;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.test {
|
||||
display: none;
|
||||
padding: 10px 0 0 0;
|
||||
color: #5cb85c;
|
||||
}
|
|
@ -192,7 +192,7 @@
|
|||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
|
||||
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: linear-gradient(to bottom, #fdd49a, #fdf59a);
|
||||
background-image: linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
|
||||
border-color: #fdf59a #fdf59a #fbed50;
|
||||
|
@ -244,7 +244,7 @@
|
|||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(to bottom, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
|
@ -343,7 +343,7 @@
|
|||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(to bottom, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
|
@ -0,0 +1,306 @@
|
|||
/**
|
||||
* @author zhixin wen <wenzhixin2010@gmail.com>
|
||||
* version: 1.11.0
|
||||
* https://github.com/wenzhixin/bootstrap-table/
|
||||
*/
|
||||
|
||||
.bootstrap-table .table {
|
||||
margin-bottom: 0 !important;
|
||||
border-bottom: 1px solid #dddddd;
|
||||
border-collapse: collapse !important;
|
||||
border-radius: 1px;
|
||||
}
|
||||
|
||||
.bootstrap-table .table:not(.table-condensed),
|
||||
.bootstrap-table .table:not(.table-condensed) > tbody > tr > th,
|
||||
.bootstrap-table .table:not(.table-condensed) > tfoot > tr > th,
|
||||
.bootstrap-table .table:not(.table-condensed) > thead > tr > td,
|
||||
.bootstrap-table .table:not(.table-condensed) > tbody > tr > td,
|
||||
.bootstrap-table .table:not(.table-condensed) > tfoot > tr > td {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.bootstrap-table .table.table-no-bordered > thead > tr > th,
|
||||
.bootstrap-table .table.table-no-bordered > tbody > tr > td {
|
||||
border-right: 2px solid transparent;
|
||||
}
|
||||
|
||||
.bootstrap-table .table.table-no-bordered > tbody > tr > td:last-child {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.fixed-table-container {
|
||||
position: relative;
|
||||
clear: both;
|
||||
border: 1px solid #dddddd;
|
||||
border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
}
|
||||
|
||||
.fixed-table-container.table-no-bordered {
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
.fixed-table-footer,
|
||||
.fixed-table-header {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.fixed-table-footer {
|
||||
border-top: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
.fixed-table-body {
|
||||
overflow-x: auto;
|
||||
overflow-y: auto;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.fixed-table-container table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.fixed-table-container thead th {
|
||||
height: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border-left: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
.fixed-table-container thead th:focus {
|
||||
outline: 0 solid transparent;
|
||||
}
|
||||
|
||||
.fixed-table-container thead th:first-child {
|
||||
border-left: none;
|
||||
border-top-left-radius: 4px;
|
||||
-webkit-border-top-left-radius: 4px;
|
||||
-moz-border-radius-topleft: 4px;
|
||||
}
|
||||
|
||||
.fixed-table-container thead th .th-inner,
|
||||
.fixed-table-container tbody td .th-inner {
|
||||
padding: 8px;
|
||||
line-height: 24px;
|
||||
vertical-align: top;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.fixed-table-container thead th .sortable {
|
||||
cursor: pointer;
|
||||
background-position: right;
|
||||
background-repeat: no-repeat;
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
.fixed-table-container thead th .both {
|
||||
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC');
|
||||
}
|
||||
|
||||
.fixed-table-container thead th .asc {
|
||||
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==');
|
||||
}
|
||||
|
||||
.fixed-table-container thead th .desc {
|
||||
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ');
|
||||
}
|
||||
|
||||
.fixed-table-container th.detail {
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
.fixed-table-container tbody td {
|
||||
border-left: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
.fixed-table-container tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.fixed-table-container tbody td:first-child {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
/* the same color with .active */
|
||||
.fixed-table-container tbody .selected td {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
.fixed-table-container .bs-checkbox {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fixed-table-container .bs-checkbox .th-inner {
|
||||
padding: 8px 0;
|
||||
}
|
||||
|
||||
.fixed-table-container input[type="radio"],
|
||||
.fixed-table-container input[type="checkbox"] {
|
||||
margin: 0 auto !important;
|
||||
}
|
||||
|
||||
.fixed-table-container .no-records-found {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fixed-table-pagination div.pagination,
|
||||
.fixed-table-pagination .pagination-detail {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.fixed-table-pagination div.pagination .pagination {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.fixed-table-pagination .pagination a {
|
||||
padding: 6px 12px;
|
||||
line-height: 1.428571429;
|
||||
}
|
||||
|
||||
.fixed-table-pagination .pagination-info {
|
||||
line-height: 34px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.fixed-table-pagination .btn-group {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.fixed-table-pagination .dropup .dropdown-menu {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.fixed-table-pagination .page-list {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.fixed-table-toolbar .columns-left {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.fixed-table-toolbar .columns-right {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.fixed-table-toolbar .columns label {
|
||||
display: block;
|
||||
padding: 3px 20px;
|
||||
clear: both;
|
||||
font-weight: normal;
|
||||
line-height: 1.428571429;
|
||||
}
|
||||
|
||||
.fixed-table-toolbar .bs-bars,
|
||||
.fixed-table-toolbar .search,
|
||||
.fixed-table-toolbar .columns {
|
||||
position: relative;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
line-height: 34px;
|
||||
}
|
||||
|
||||
.fixed-table-pagination li.disabled a {
|
||||
pointer-events: none;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.fixed-table-loading {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 42px;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 99;
|
||||
background-color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fixed-table-body .card-view .title {
|
||||
font-weight: bold;
|
||||
display: inline-block;
|
||||
min-width: 30%;
|
||||
text-align: left !important;
|
||||
}
|
||||
|
||||
/* support bootstrap 2 */
|
||||
.fixed-table-body thead th .th-inner {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.table th, .table td {
|
||||
vertical-align: middle;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.fixed-table-toolbar .dropdown-menu {
|
||||
text-align: left;
|
||||
max-height: 300px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.fixed-table-toolbar .btn-group > .btn-group {
|
||||
display: inline-block;
|
||||
margin-left: -1px !important;
|
||||
}
|
||||
|
||||
.fixed-table-toolbar .btn-group > .btn-group > .btn {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.fixed-table-toolbar .btn-group > .btn-group:first-child > .btn {
|
||||
border-top-left-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
}
|
||||
|
||||
.fixed-table-toolbar .btn-group > .btn-group:last-child > .btn {
|
||||
border-top-right-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
}
|
||||
|
||||
.bootstrap-table .table > thead > tr > th {
|
||||
vertical-align: bottom;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
/* support bootstrap 3 */
|
||||
.bootstrap-table .table thead > tr > th {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.bootstrap-table .fixed-table-footer tbody > tr > td {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.bootstrap-table .fixed-table-footer .table {
|
||||
border-bottom: none;
|
||||
border-radius: 0;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.pull-right .dropdown-menu {
|
||||
right: 0;
|
||||
left: auto;
|
||||
}
|
||||
|
||||
/* calculate scrollbar width */
|
||||
p.fixed-table-scroll-inner {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
div.fixed-table-scroll-outer {
|
||||
top: 0;
|
||||
left: 0;
|
||||
visibility: hidden;
|
||||
width: 200px;
|
||||
height: 150px;
|
||||
overflow: hidden;
|
||||
}
|
|
@ -0,0 +1,587 @@
|
|||
/*!
|
||||
* Bootstrap v3.3.7 (http://getbootstrap.com)
|
||||
* Copyright 2011-2016 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
.btn-default,
|
||||
.btn-primary,
|
||||
.btn-success,
|
||||
.btn-info,
|
||||
.btn-warning,
|
||||
.btn-danger {
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
||||
}
|
||||
.btn-default:active,
|
||||
.btn-primary:active,
|
||||
.btn-success:active,
|
||||
.btn-info:active,
|
||||
.btn-warning:active,
|
||||
.btn-danger:active,
|
||||
.btn-default.active,
|
||||
.btn-primary.active,
|
||||
.btn-success.active,
|
||||
.btn-info.active,
|
||||
.btn-warning.active,
|
||||
.btn-danger.active {
|
||||
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||
}
|
||||
.btn-default.disabled,
|
||||
.btn-primary.disabled,
|
||||
.btn-success.disabled,
|
||||
.btn-info.disabled,
|
||||
.btn-warning.disabled,
|
||||
.btn-danger.disabled,
|
||||
.btn-default[disabled],
|
||||
.btn-primary[disabled],
|
||||
.btn-success[disabled],
|
||||
.btn-info[disabled],
|
||||
.btn-warning[disabled],
|
||||
.btn-danger[disabled],
|
||||
fieldset[disabled] .btn-default,
|
||||
fieldset[disabled] .btn-primary,
|
||||
fieldset[disabled] .btn-success,
|
||||
fieldset[disabled] .btn-info,
|
||||
fieldset[disabled] .btn-warning,
|
||||
fieldset[disabled] .btn-danger {
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
.btn-default .badge,
|
||||
.btn-primary .badge,
|
||||
.btn-success .badge,
|
||||
.btn-info .badge,
|
||||
.btn-warning .badge,
|
||||
.btn-danger .badge {
|
||||
text-shadow: none;
|
||||
}
|
||||
.btn:active,
|
||||
.btn.active {
|
||||
background-image: none;
|
||||
}
|
||||
.btn-default {
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
||||
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
|
||||
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dbdbdb;
|
||||
border-color: #ccc;
|
||||
}
|
||||
.btn-default:hover,
|
||||
.btn-default:focus {
|
||||
background-color: #e0e0e0;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
.btn-default:active,
|
||||
.btn-default.active {
|
||||
background-color: #e0e0e0;
|
||||
border-color: #dbdbdb;
|
||||
}
|
||||
.btn-default.disabled,
|
||||
.btn-default[disabled],
|
||||
fieldset[disabled] .btn-default,
|
||||
.btn-default.disabled:hover,
|
||||
.btn-default[disabled]:hover,
|
||||
fieldset[disabled] .btn-default:hover,
|
||||
.btn-default.disabled:focus,
|
||||
.btn-default[disabled]:focus,
|
||||
fieldset[disabled] .btn-default:focus,
|
||||
.btn-default.disabled.focus,
|
||||
.btn-default[disabled].focus,
|
||||
fieldset[disabled] .btn-default.focus,
|
||||
.btn-default.disabled:active,
|
||||
.btn-default[disabled]:active,
|
||||
fieldset[disabled] .btn-default:active,
|
||||
.btn-default.disabled.active,
|
||||
.btn-default[disabled].active,
|
||||
fieldset[disabled] .btn-default.active {
|
||||
background-color: #e0e0e0;
|
||||
background-image: none;
|
||||
}
|
||||
.btn-primary {
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #245580;
|
||||
}
|
||||
.btn-primary:hover,
|
||||
.btn-primary:focus {
|
||||
background-color: #265a88;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
.btn-primary:active,
|
||||
.btn-primary.active {
|
||||
background-color: #265a88;
|
||||
border-color: #245580;
|
||||
}
|
||||
.btn-primary.disabled,
|
||||
.btn-primary[disabled],
|
||||
fieldset[disabled] .btn-primary,
|
||||
.btn-primary.disabled:hover,
|
||||
.btn-primary[disabled]:hover,
|
||||
fieldset[disabled] .btn-primary:hover,
|
||||
.btn-primary.disabled:focus,
|
||||
.btn-primary[disabled]:focus,
|
||||
fieldset[disabled] .btn-primary:focus,
|
||||
.btn-primary.disabled.focus,
|
||||
.btn-primary[disabled].focus,
|
||||
fieldset[disabled] .btn-primary.focus,
|
||||
.btn-primary.disabled:active,
|
||||
.btn-primary[disabled]:active,
|
||||
fieldset[disabled] .btn-primary:active,
|
||||
.btn-primary.disabled.active,
|
||||
.btn-primary[disabled].active,
|
||||
fieldset[disabled] .btn-primary.active {
|
||||
background-color: #265a88;
|
||||
background-image: none;
|
||||
}
|
||||
.btn-success {
|
||||
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
||||
background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
|
||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #3e8f3e;
|
||||
}
|
||||
.btn-success:hover,
|
||||
.btn-success:focus {
|
||||
background-color: #419641;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
.btn-success:active,
|
||||
.btn-success.active {
|
||||
background-color: #419641;
|
||||
border-color: #3e8f3e;
|
||||
}
|
||||
.btn-success.disabled,
|
||||
.btn-success[disabled],
|
||||
fieldset[disabled] .btn-success,
|
||||
.btn-success.disabled:hover,
|
||||
.btn-success[disabled]:hover,
|
||||
fieldset[disabled] .btn-success:hover,
|
||||
.btn-success.disabled:focus,
|
||||
.btn-success[disabled]:focus,
|
||||
fieldset[disabled] .btn-success:focus,
|
||||
.btn-success.disabled.focus,
|
||||
.btn-success[disabled].focus,
|
||||
fieldset[disabled] .btn-success.focus,
|
||||
.btn-success.disabled:active,
|
||||
.btn-success[disabled]:active,
|
||||
fieldset[disabled] .btn-success:active,
|
||||
.btn-success.disabled.active,
|
||||
.btn-success[disabled].active,
|
||||
fieldset[disabled] .btn-success.active {
|
||||
background-color: #419641;
|
||||
background-image: none;
|
||||
}
|
||||
.btn-info {
|
||||
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
||||
background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
|
||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #28a4c9;
|
||||
}
|
||||
.btn-info:hover,
|
||||
.btn-info:focus {
|
||||
background-color: #2aabd2;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
.btn-info:active,
|
||||
.btn-info.active {
|
||||
background-color: #2aabd2;
|
||||
border-color: #28a4c9;
|
||||
}
|
||||
.btn-info.disabled,
|
||||
.btn-info[disabled],
|
||||
fieldset[disabled] .btn-info,
|
||||
.btn-info.disabled:hover,
|
||||
.btn-info[disabled]:hover,
|
||||
fieldset[disabled] .btn-info:hover,
|
||||
.btn-info.disabled:focus,
|
||||
.btn-info[disabled]:focus,
|
||||
fieldset[disabled] .btn-info:focus,
|
||||
.btn-info.disabled.focus,
|
||||
.btn-info[disabled].focus,
|
||||
fieldset[disabled] .btn-info.focus,
|
||||
.btn-info.disabled:active,
|
||||
.btn-info[disabled]:active,
|
||||
fieldset[disabled] .btn-info:active,
|
||||
.btn-info.disabled.active,
|
||||
.btn-info[disabled].active,
|
||||
fieldset[disabled] .btn-info.active {
|
||||
background-color: #2aabd2;
|
||||
background-image: none;
|
||||
}
|
||||
.btn-warning {
|
||||
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
||||
background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
|
||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #e38d13;
|
||||
}
|
||||
.btn-warning:hover,
|
||||
.btn-warning:focus {
|
||||
background-color: #eb9316;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
.btn-warning:active,
|
||||
.btn-warning.active {
|
||||
background-color: #eb9316;
|
||||
border-color: #e38d13;
|
||||
}
|
||||
.btn-warning.disabled,
|
||||
.btn-warning[disabled],
|
||||
fieldset[disabled] .btn-warning,
|
||||
.btn-warning.disabled:hover,
|
||||
.btn-warning[disabled]:hover,
|
||||
fieldset[disabled] .btn-warning:hover,
|
||||
.btn-warning.disabled:focus,
|
||||
.btn-warning[disabled]:focus,
|
||||
fieldset[disabled] .btn-warning:focus,
|
||||
.btn-warning.disabled.focus,
|
||||
.btn-warning[disabled].focus,
|
||||
fieldset[disabled] .btn-warning.focus,
|
||||
.btn-warning.disabled:active,
|
||||
.btn-warning[disabled]:active,
|
||||
fieldset[disabled] .btn-warning:active,
|
||||
.btn-warning.disabled.active,
|
||||
.btn-warning[disabled].active,
|
||||
fieldset[disabled] .btn-warning.active {
|
||||
background-color: #eb9316;
|
||||
background-image: none;
|
||||
}
|
||||
.btn-danger {
|
||||
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
||||
background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
|
||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #b92c28;
|
||||
}
|
||||
.btn-danger:hover,
|
||||
.btn-danger:focus {
|
||||
background-color: #c12e2a;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
.btn-danger:active,
|
||||
.btn-danger.active {
|
||||
background-color: #c12e2a;
|
||||
border-color: #b92c28;
|
||||
}
|
||||
.btn-danger.disabled,
|
||||
.btn-danger[disabled],
|
||||
fieldset[disabled] .btn-danger,
|
||||
.btn-danger.disabled:hover,
|
||||
.btn-danger[disabled]:hover,
|
||||
fieldset[disabled] .btn-danger:hover,
|
||||
.btn-danger.disabled:focus,
|
||||
.btn-danger[disabled]:focus,
|
||||
fieldset[disabled] .btn-danger:focus,
|
||||
.btn-danger.disabled.focus,
|
||||
.btn-danger[disabled].focus,
|
||||
fieldset[disabled] .btn-danger.focus,
|
||||
.btn-danger.disabled:active,
|
||||
.btn-danger[disabled]:active,
|
||||
fieldset[disabled] .btn-danger:active,
|
||||
.btn-danger.disabled.active,
|
||||
.btn-danger[disabled].active,
|
||||
fieldset[disabled] .btn-danger.active {
|
||||
background-color: #c12e2a;
|
||||
background-image: none;
|
||||
}
|
||||
.thumbnail,
|
||||
.img-thumbnail {
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||
}
|
||||
.dropdown-menu > li > a:hover,
|
||||
.dropdown-menu > li > a:focus {
|
||||
background-color: #e8e8e8;
|
||||
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
|
||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.dropdown-menu > .active > a,
|
||||
.dropdown-menu > .active > a:hover,
|
||||
.dropdown-menu > .active > a:focus {
|
||||
background-color: #2e6da4;
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.navbar-default {
|
||||
background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
|
||||
background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
|
||||
background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
|
||||
}
|
||||
.navbar-default .navbar-nav > .open > a,
|
||||
.navbar-default .navbar-nav > .active > a {
|
||||
background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
|
||||
background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
|
||||
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
|
||||
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
|
||||
}
|
||||
.navbar-brand,
|
||||
.navbar-nav > li > a {
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
|
||||
}
|
||||
.navbar-inverse {
|
||||
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
|
||||
background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
|
||||
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.navbar-inverse .navbar-nav > .open > a,
|
||||
.navbar-inverse .navbar-nav > .active > a {
|
||||
background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
|
||||
background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
|
||||
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
|
||||
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
|
||||
}
|
||||
.navbar-inverse .navbar-brand,
|
||||
.navbar-inverse .navbar-nav > li > a {
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
|
||||
}
|
||||
.navbar-static-top,
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
border-radius: 0;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.navbar .navbar-nav .open .dropdown-menu > .active > a,
|
||||
.navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
|
||||
.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
|
||||
color: #fff;
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
}
|
||||
.alert {
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
|
||||
}
|
||||
.alert-success {
|
||||
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
||||
background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
|
||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #b2dba1;
|
||||
}
|
||||
.alert-info {
|
||||
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
||||
background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
|
||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #9acfea;
|
||||
}
|
||||
.alert-warning {
|
||||
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
||||
background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
|
||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #f5e79e;
|
||||
}
|
||||
.alert-danger {
|
||||
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
||||
background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
|
||||
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dca7a7;
|
||||
}
|
||||
.progress {
|
||||
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
||||
background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
|
||||
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar {
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-success {
|
||||
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||
background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
|
||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-info {
|
||||
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||
background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
|
||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-warning {
|
||||
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||
background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
|
||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-danger {
|
||||
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||
background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
|
||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-striped {
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
||||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
||||
}
|
||||
.list-group {
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||
}
|
||||
.list-group-item.active,
|
||||
.list-group-item.active:hover,
|
||||
.list-group-item.active:focus {
|
||||
text-shadow: 0 -1px 0 #286090;
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #2b669a;
|
||||
}
|
||||
.list-group-item.active .badge,
|
||||
.list-group-item.active:hover .badge,
|
||||
.list-group-item.active:focus .badge {
|
||||
text-shadow: none;
|
||||
}
|
||||
.panel {
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
|
||||
}
|
||||
.panel-default > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
|
||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-primary > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-success > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
||||
background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
|
||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-info > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
||||
background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
|
||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-warning > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
||||
background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
|
||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-danger > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
||||
background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
|
||||
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.well {
|
||||
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
||||
background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
|
||||
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dcdcdc;
|
||||
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
|
||||
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
|
||||
}
|
||||
/*# sourceMappingURL=bootstrap-theme.css.map */
|
|
@ -1,276 +1,269 @@
|
|||
.fa-icons > section {
|
||||
padding-top: 1px;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
margin-top: 16px;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.fa-target {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.modal-body .iconview {
|
||||
height: calc(100%);
|
||||
}
|
||||
|
||||
.iconview {
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
position: relative;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
.fa-nav {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.fa-nav h2 {
|
||||
background: #FF6C60;
|
||||
color: #fff;
|
||||
margin-top: 0;
|
||||
padding: 10px 15px;
|
||||
font-size: 16px;
|
||||
border-radius: 4px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.fa-nav nav {
|
||||
top: 44px;
|
||||
bottom: 0;
|
||||
position: absolute;
|
||||
overflow-y: auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.fa-nav nav a {
|
||||
color: #999797;
|
||||
border-left: 4px solid #d3d7dd;
|
||||
padding-left: 10px;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
padding-right: 3px;
|
||||
width: 100%;
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
.fa-nav nav a:last-child {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.fa-nav nav a.active {
|
||||
color: #7a7a7a;
|
||||
border-left: 4px solid #5bc0de;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.fa-nav nav a:hover {
|
||||
color: #999797;
|
||||
border-left: 4px solid #d9534f;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.fa-nav .mCS-minimal-dark.mCSB_scrollTools_vertical {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.form-group .input-group .input-group-append .btn i {
|
||||
color: #187c9a;
|
||||
width: 22px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.form-group .input-group .input-group-append .btn i.fa-remove {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.icon-content {
|
||||
position: fixed;
|
||||
top: 15px;
|
||||
left: 15px;
|
||||
bottom: 15px;
|
||||
right: 15px;
|
||||
z-index: 1051;
|
||||
display: none;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.icon-content .fa-nav {
|
||||
right: 34px;
|
||||
top: 83px;
|
||||
bottom: 99px;
|
||||
}
|
||||
|
||||
.icon-content .modal-body {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 51px;
|
||||
bottom: 68px;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
padding: 0 0 0 15px;
|
||||
}
|
||||
|
||||
.icon-content .modal-body .loadIconView {
|
||||
text-align: center;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.icon-content .modal-body .loadIconView span {
|
||||
margin-left: 6px;
|
||||
}
|
||||
|
||||
.icon-content .modal-footer {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.icon-content .modal-footer > span {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.icon-content .modal-footer > i {
|
||||
font-size: 22px;
|
||||
color: #337ab7;
|
||||
border: solid 1px;
|
||||
border-radius: 4px;
|
||||
min-width: 36px;
|
||||
min-height: 34px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.icon-content .modal-footer span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.icon-content .dd {
|
||||
max-width: 100%;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list .fa-hover a {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
line-height: 32px;
|
||||
display: block;
|
||||
color: #222;
|
||||
height: 32px;
|
||||
border-radius: 4px;
|
||||
padding: 0 6px;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list .fa-hover a:hover {
|
||||
background-color: #1d9d74;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list .fa-hover a .fa {
|
||||
display: inline-block;
|
||||
text-align: right;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list .fa-hover a:hover .fa {
|
||||
font-size: 1rem;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list ul {
|
||||
display: block;
|
||||
margin-left: -28px;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list ul li {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
line-height: 32px;
|
||||
padding-left: 10px;
|
||||
list-style: none;
|
||||
float: left;
|
||||
padding-right: 15px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 4px;
|
||||
height: 32px;
|
||||
vertical-align: middle;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list ul li:hover {
|
||||
background-color: #1d9d74;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list ul li:hover span:nth-child(1) {
|
||||
font-size: 28px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list ul li span:nth-child(1) {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.logfile {
|
||||
color: #d41404;
|
||||
}
|
||||
|
||||
.logfile:focus, .logfile:active, .logfile:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.logfile span {
|
||||
margin-left: 4px;
|
||||
max-width: 146px;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.modal-header > h4 {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.ex-content {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
@media (min-width: 375px) {
|
||||
.icon-content .modal-footer span {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.fa-nav {
|
||||
display: block;
|
||||
position: fixed;
|
||||
top: 113px;
|
||||
right: 17px;
|
||||
width: 140px;
|
||||
bottom: 55px;
|
||||
}
|
||||
|
||||
.fa-icons {
|
||||
margin-right: 140px;
|
||||
}
|
||||
|
||||
.modal-body .fa-icons {
|
||||
margin-right: 155px;
|
||||
}
|
||||
}
|
||||
.fa-icons > section {
|
||||
padding-top: 1px;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
margin-top: 16px;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.fa-target {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.fa-nav {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.fa-nav h2 {
|
||||
background: #FF6C60;
|
||||
color: #fff;
|
||||
margin-top: 0;
|
||||
padding: 10px 15px;
|
||||
font-size: 16px;
|
||||
border-radius: 4px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.fa-nav ul {
|
||||
top: 44px;
|
||||
bottom: 0;
|
||||
position: absolute;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.fa-nav ul li {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.fa-nav ul li.active a {
|
||||
color: #7a7a7a;
|
||||
border-left: 4px solid #5bc0de;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.fa-nav ul li a {
|
||||
color: #999797;
|
||||
border-left: 4px solid #d3d7dd;
|
||||
padding-left: 10px;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.fa-nav ul li a:hover {
|
||||
color: #999797;
|
||||
border-left: 4px solid #d9534f;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.form-group .input-group .input-group-btn .btn i {
|
||||
color: #187c9a;
|
||||
width: 22px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.form-group .input-group .input-group-btn .btn i.fa-remove {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.icon-content {
|
||||
position: fixed;
|
||||
top: 15px;
|
||||
left: 15px;
|
||||
bottom: 15px;
|
||||
right: 15px;
|
||||
z-index: 1051;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.icon-content .fa-nav {
|
||||
right: 46px;
|
||||
top: 86px;
|
||||
bottom: 100px;
|
||||
}
|
||||
|
||||
.icon-content .modal-body {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 46px;
|
||||
bottom: 65px;
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.icon-content .modal-body .loadIconView {
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.icon-content .modal-body .loadIconView span {
|
||||
margin-left: 6px;
|
||||
}
|
||||
|
||||
.icon-content .modal-footer {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.icon-content .modal-footer span {
|
||||
vertical-align: middle;
|
||||
font-size: 14px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.icon-content .modal-footer i {
|
||||
vertical-align: middle;
|
||||
font-size: 22px;
|
||||
margin: 0 4px 0 8px;
|
||||
text-align: center;
|
||||
color: #337ab7;
|
||||
display: inline-block;
|
||||
border: solid 1px;
|
||||
padding: 3px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.icon-content .modal-footer span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.icon-content .dd {
|
||||
max-width: 100%;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.modal .modal-dialog .icon-content {
|
||||
position: static;
|
||||
}
|
||||
|
||||
.modal .modal-dialog .icon-content .modal-body {
|
||||
position: static;
|
||||
}
|
||||
|
||||
.modal .modal-dialog .icon-content .modal-footer {
|
||||
position: static;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list .fa-hover a {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
line-height: 32px;
|
||||
padding-left: 10px;
|
||||
display: block;
|
||||
color: #222;
|
||||
height: 32px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list .fa-hover a:hover {
|
||||
background-color: #1d9d74;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list .fa-hover a .fa {
|
||||
width: 32px;
|
||||
font-size: 14px;
|
||||
display: inline-block;
|
||||
text-align: right;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list .fa-hover a:hover .fa {
|
||||
font-size: 28px;
|
||||
vertical-align: -6px;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list ul {
|
||||
display: block;
|
||||
margin-left: -28px;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list ul li {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
line-height: 32px;
|
||||
padding-left: 10px;
|
||||
list-style: none;
|
||||
float: left;
|
||||
padding-right: 15px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 4px;
|
||||
height: 32px;
|
||||
vertical-align: middle;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list ul li:hover {
|
||||
background-color: #1d9d74;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list ul li:hover span:nth-child(1) {
|
||||
font-size: 28px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.fontawesome-icon-list ul li span:nth-child(1) {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.logitem {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.logfile {
|
||||
color: #d41404;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.logfile:focus, .logfile:active, .logfile:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.logfile span {
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.modal-header > h4 {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.ex-content {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
@media (min-width: 375px) {
|
||||
.icon-content .modal-footer span {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.fa-nav {
|
||||
display: block;
|
||||
position: fixed;
|
||||
top: 130px;
|
||||
right: 32px;
|
||||
width: 140px;
|
||||
bottom: 70px;
|
||||
}
|
||||
|
||||
.fa-icons {
|
||||
margin-right: 160px;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,401 @@
|
|||
/*!
|
||||
* bootstrap-fileinput v4.3.6
|
||||
* http://plugins.krajee.com/file-input
|
||||
*
|
||||
* Author: Kartik Visweswaran
|
||||
* Copyright: 2014 - 2016, Kartik Visweswaran, Krajee.com
|
||||
*
|
||||
* Licensed under the BSD 3-Clause
|
||||
* https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
|
||||
*/
|
||||
.file-loading {
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
font-size: 999px;
|
||||
text-align: right;
|
||||
color: #fff;
|
||||
background: transparent url('images/loading.gif') top left no-repeat;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.file-object {
|
||||
margin: 0 0 -5px 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.btn-file {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.btn-file input[type=file] {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
min-width: 100%;
|
||||
min-height: 100%;
|
||||
text-align: right;
|
||||
opacity: 0;
|
||||
background: none repeat scroll 0 0 transparent;
|
||||
cursor: inherit;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.file-caption-name {
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
height: 20px;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.input-group-lg .file-caption-name {
|
||||
height: 25px;
|
||||
}
|
||||
|
||||
.file-zoom-dialog {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.file-error-message {
|
||||
color: #a94442;
|
||||
background-color: #f2dede;
|
||||
margin: 5px;
|
||||
border: 1px solid #ebccd1;
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.file-error-message pre, .file-error-message ul {
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.file-error-message pre {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
.file-caption-disabled {
|
||||
background-color: #EEEEEE;
|
||||
cursor: not-allowed;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.file-preview {
|
||||
border-radius: 5px;
|
||||
border: 1px solid #ddd;
|
||||
padding: 5px;
|
||||
width: 100%;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.file-preview-frame {
|
||||
position: relative;
|
||||
display: table;
|
||||
margin: 8px;
|
||||
height: 160px;
|
||||
border: 1px solid #ddd;
|
||||
box-shadow: 1px 1px 5px 0 #a2958a;
|
||||
padding: 6px;
|
||||
float: left;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.file-preview-frame:not(.file-preview-error):hover {
|
||||
box-shadow: 3px 3px 5px 0 #333;
|
||||
}
|
||||
|
||||
.file-preview-image {
|
||||
vertical-align: middle;
|
||||
image-orientation: from-image;
|
||||
}
|
||||
|
||||
.file-preview-text {
|
||||
display: block;
|
||||
color: #428bca;
|
||||
border: 1px solid #ddd;
|
||||
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
|
||||
outline: none;
|
||||
padding: 8px;
|
||||
resize: none;
|
||||
}
|
||||
|
||||
.file-preview-html {
|
||||
border: 1px solid #ddd;
|
||||
padding: 8px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.file-zoom-dialog .file-preview-text {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.file-preview-other {
|
||||
left: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
margin: auto;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.file-preview-other:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.file-actions, .file-other-error {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.file-other-icon {
|
||||
font-size: 4.8em;
|
||||
}
|
||||
|
||||
/* noinspection CssOverwrittenProperties */
|
||||
.file-zoom-dialog .file-other-icon {
|
||||
font-size: 8em;
|
||||
font-size: 55vmin;
|
||||
}
|
||||
|
||||
.file-input-new .file-preview, .file-input-new .close, .file-input-new .glyphicon-file,
|
||||
.file-input-new .fileinput-remove-button, .file-input-new .fileinput-upload-button,
|
||||
.file-input-ajax-new .fileinput-remove-button, .file-input-ajax-new .fileinput-upload-button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.file-caption-main {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.file-input-ajax-new .no-browse .input-group-btn,
|
||||
.file-input-new .no-browse .input-group-btn {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.file-input-ajax-new .no-browse .form-control,
|
||||
.file-input-new .no-browse .form-control {
|
||||
border-top-right-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
}
|
||||
|
||||
.file-thumb-loading {
|
||||
background: transparent url('images/loading.gif') no-repeat scroll center center content-box !important;
|
||||
}
|
||||
|
||||
.file-actions {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.file-footer-buttons {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.file-upload-indicator {
|
||||
display: inline;
|
||||
cursor: default;
|
||||
opacity: 0.8;
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
.file-upload-indicator:hover {
|
||||
font-weight: bold;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.file-footer-caption {
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
width: 160px;
|
||||
text-align: center;
|
||||
padding-top: 4px;
|
||||
font-size: 11px;
|
||||
color: #777;
|
||||
margin: 5px auto;
|
||||
}
|
||||
|
||||
.file-preview-error {
|
||||
opacity: 0.65;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.file-preview-frame:not(.file-preview-error) .file-footer-caption:hover {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.file-drop-zone {
|
||||
border: 1px dashed #aaa;
|
||||
border-radius: 4px;
|
||||
height: 100%;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
margin: 12px 15px 12px 12px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.file-drop-zone-title {
|
||||
color: #aaa;
|
||||
font-size: 1.6em;
|
||||
padding: 85px 10px;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.file-preview .clickable,
|
||||
.clickable .file-drop-zone-title {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.file-drop-zone.clickable:hover {
|
||||
border: 2px dashed #999;
|
||||
}
|
||||
|
||||
.file-drop-zone.clickable:focus {
|
||||
border: 2px solid #5acde2;
|
||||
}
|
||||
|
||||
.file-drop-zone .file-preview-thumbnails {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.file-highlighted {
|
||||
border: 2px dashed #999 !important;
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
.file-uploading {
|
||||
background: url('../images/loading-sm.gif') no-repeat center bottom 10px;
|
||||
opacity: 0.65;
|
||||
}
|
||||
|
||||
.file-thumb-progress {
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
.file-thumb-progress .progress, .file-thumb-progress .progress-bar {
|
||||
height: 10px;
|
||||
font-size: 9px;
|
||||
line-height: 10px;
|
||||
}
|
||||
|
||||
.file-thumbnail-footer {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.file-thumb-progress {
|
||||
position: absolute;
|
||||
top: 35px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.file-zoom-fullscreen.modal {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.file-zoom-fullscreen .modal-dialog {
|
||||
position: fixed;
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.file-zoom-fullscreen .modal-content {
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.file-zoom-fullscreen .modal-body {
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.file-zoom-dialog .modal-body {
|
||||
position: relative !important;
|
||||
}
|
||||
|
||||
.file-zoom-dialog .btn-navigate {
|
||||
position: absolute;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background: transparent;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
opacity: 0.7;
|
||||
top: 45%;
|
||||
font-size: 4em;
|
||||
color: #1c94c4;
|
||||
}
|
||||
|
||||
.file-zoom-dialog .floating-buttons {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
.floating-buttons, .floating-buttons .btn {
|
||||
z-index: 3000;
|
||||
}
|
||||
|
||||
.file-zoom-dialog .kv-zoom-actions .btn,
|
||||
.floating-buttons .btn {
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.file-zoom-dialog .btn-navigate:not([disabled]):hover,
|
||||
.file-zoom-dialog .btn-navigate:not([disabled]):focus {
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.file-zoom-dialog .btn-navigate[disabled] {
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
.file-zoom-dialog .btn-prev {
|
||||
left: 1px;
|
||||
}
|
||||
|
||||
.file-zoom-dialog .btn-next {
|
||||
right: 1px;
|
||||
}
|
||||
|
||||
.file-drag-handle {
|
||||
display: inline;
|
||||
margin-right: 2px;
|
||||
font-size: 16px;
|
||||
cursor: move;
|
||||
cursor: -webkit-grabbing;
|
||||
}
|
||||
|
||||
.file-drag-handle:hover {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.file-zoom-content {
|
||||
height: 480px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.file-preview-initial.sortable-chosen {
|
||||
background-color: #d9edf7;
|
||||
}
|
||||
|
||||
.file-preview-frame.sortable-ghost {
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
/* IE 10 fix */
|
||||
.btn-file ::-ms-browse {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>注册成功</title>
|
||||
<link rel="shortcut icon" href="../../favicon.ico" />
|
||||
<!-- 新 Bootstrap 核心 CSS 文件 -->
|
||||
<link href="../bootstrap.css" rel="stylesheet">
|
||||
<link href="../bootstrap-theme.css" rel="stylesheet">
|
||||
<style type="text/css">
|
||||
body {
|
||||
background: #02bac6 url("../images/lock-bg.jpg");
|
||||
background-size: cover;
|
||||
background-repeat: repeat;
|
||||
}
|
||||
|
||||
.container {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin: 15px auto;
|
||||
color: green;
|
||||
}
|
||||
|
||||
div a {
|
||||
display: block;
|
||||
margin-top: 15px;
|
||||
color: green;
|
||||
text-decoration: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container" align="center">
|
||||
<h2>注册成功</h2>
|
||||
<div>
|
||||
<div>
|
||||
你需要等待管理员的审核
|
||||
</div>
|
||||
<div>
|
||||
才能开启账号,请耐心等待
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<a href="../../Home/Login">返回登陆页</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,39 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>接口文档</title>
|
||||
<!-- 新 Bootstrap 核心 CSS 文件 -->
|
||||
<link href="../bootstrap.css" rel="stylesheet">
|
||||
<link href="../bootstrap-theme.css" rel="stylesheet">
|
||||
<link href="../api.css" rel="stylesheet">
|
||||
<!--[if lte IE 9 ]>
|
||||
<link href="../IE8.css" rel="stylesheet" />
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body id="main-content" class="main-content">
|
||||
<!--[if lte IE 9 ]>
|
||||
<div id="ieAlert" class="alert alert-danger alert-dismissible">
|
||||
<div>你的浏览器版本太低,不能完美的支持本系统,请升级到至少IE9 <a href="../IE/IE9.exe" target="_blank">速速点击下载</a> !</div>
|
||||
<button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">关闭</span></button>
|
||||
</div>
|
||||
<![endif]-->
|
||||
<section>
|
||||
<div><h3>接口返回值定义</h3></div>
|
||||
<div><label class="control-label">布尔值:</label><div>成功返回True,失败返回False</div></div>
|
||||
<div><label class="control-label">对象:</label><div>Json字符串</div></div>
|
||||
</section>
|
||||
<section>
|
||||
<div><h3>接口请求定义</h3></div>
|
||||
<div><label class="control-label">内容类型</label><div>Content-Type:application/json; charset=utf-8</div></div>
|
||||
<div><label class="control-label">授权Token</label><div>Token:362a4733-341a-464d-ab12-e01554338839</div></div>
|
||||
</section>
|
||||
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
|
||||
<script src="../../Scripts/jquery-3.1.1.js"></script>
|
||||
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
|
||||
<script src="../../Scripts/bootstrap.js"></script>
|
||||
<script src="../../Scripts/apidoc.js"></script>
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 106 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 385 KiB After Width: | Height: | Size: 385 KiB |
Before Width: | Height: | Size: 288 B After Width: | Height: | Size: 288 B |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 847 B After Width: | Height: | Size: 847 B |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 973 B After Width: | Height: | Size: 973 B |
Before Width: | Height: | Size: 288 B After Width: | Height: | Size: 288 B |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.0 KiB |
|
@ -0,0 +1 @@
|
|||
请不要删除此目录
|
|
@ -0,0 +1,259 @@
|
|||
/**
|
||||
* Nestable
|
||||
*/
|
||||
|
||||
.dd {
|
||||
position: relative;
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.dd-list {
|
||||
display: block;
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.dd-list .dd-list {
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
.dd-collapsed .dd-list {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dd-item,
|
||||
.dd-empty,
|
||||
.dd-placeholder {
|
||||
display: block;
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
min-height: 20px;
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.dd-handle {
|
||||
display: block;
|
||||
height: 30px;
|
||||
margin: 5px 0;
|
||||
padding: 5px 10px;
|
||||
cursor: move;
|
||||
color: #333;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
border: 1px solid #ccc;
|
||||
background: #F5F5F5;
|
||||
background: -webkit-linear-gradient(top, #fafafa 0%, #eee 100%);
|
||||
background: -moz-linear-gradient(top, #fafafa 0%, #eee 100%);
|
||||
background: linear-gradient(top, #fafafa 0%, #eee 100%);
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
}
|
||||
|
||||
.dd-handle:hover {
|
||||
color: #2ea8e5;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.dd-item > button {
|
||||
display: block;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
float: left;
|
||||
width: 25px;
|
||||
height: 20px;
|
||||
margin: 5px 0;
|
||||
padding: 0;
|
||||
text-indent: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
border: 0;
|
||||
background: transparent;
|
||||
font-size: 12px;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.dd-item > button:before {
|
||||
content: '+';
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
.dd-item > button[data-action="collapse"]:before {
|
||||
content: '-';
|
||||
}
|
||||
|
||||
.dd-placeholder,
|
||||
.dd-empty {
|
||||
margin: 5px 0;
|
||||
padding: 0;
|
||||
min-height: 30px;
|
||||
background: #f2fbff;
|
||||
border: 1px dashed #b6bcbf;
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
}
|
||||
|
||||
.dd-empty {
|
||||
border: 1px dashed #bbb;
|
||||
min-height: 100px;
|
||||
background-color: #e5e5e5;
|
||||
background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
|
||||
background-image: -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
|
||||
background-image: linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
|
||||
background-size: 60px 60px;
|
||||
background-position: 0 0, 30px 30px;
|
||||
}
|
||||
|
||||
.dd-dragel {
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
.dd-dragel > .dd-item .dd-handle {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.dd-dragel .dd-handle {
|
||||
-webkit-box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
|
||||
box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
|
||||
}
|
||||
|
||||
|
||||
.dd3-content {
|
||||
display: block;
|
||||
height: 30px;
|
||||
margin: 5px 0;
|
||||
padding: 5px 10px 5px 40px;
|
||||
color: #333;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
border: 1px solid #ccc;
|
||||
background: #F5F5F5;
|
||||
background: -webkit-linear-gradient(top, #fafafa 0%, #eee 100%);
|
||||
background: -moz-linear-gradient(top, #fafafa 0%, #eee 100%);
|
||||
background: linear-gradient(top, #fafafa 0%, #eee 100%);
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
border-radius: 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dd3-content:hover {
|
||||
color: #2ea8e5;
|
||||
background: #d5d5d5;
|
||||
}
|
||||
|
||||
.dd3-content label {
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dd3-content label span {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.dd3-content label span.active {
|
||||
color: darkred;
|
||||
}
|
||||
|
||||
.dd3-content label span i {
|
||||
width: 22px;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.dd3-content label input {
|
||||
margin-right: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dd3-content > span {
|
||||
position: absolute;
|
||||
top: 6px;
|
||||
}
|
||||
|
||||
.dd3-content .menuOrder {
|
||||
right: 15px;
|
||||
}
|
||||
|
||||
.dd3-content .menuType {
|
||||
right: 45px;
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.dd3-content .menuType {
|
||||
display: none;
|
||||
}
|
||||
|
||||
li[data-category="1"] .dd3-content .menuOrder {
|
||||
color: green;
|
||||
}
|
||||
}
|
||||
|
||||
li[data-category="1"] .dd3-content .menuType {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.dd-dragel > .dd3-item > .dd3-content {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.dd3-item > button {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
.dd3-handle {
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
left: 0;
|
||||
top: 0;
|
||||
cursor: pointer;
|
||||
width: 30px;
|
||||
text-indent: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
border: 1px solid #ccc;
|
||||
background: #d5d5d5;
|
||||
background: -webkit-linear-gradient(top, #ddd 0%, #bbb 100%);
|
||||
background: -moz-linear-gradient(top, #ddd 0%, #bbb 100%);
|
||||
background: linear-gradient(top, #ddd 0%, #bbb 100%);
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.dd3-handle:before {
|
||||
content: '≡';
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 3px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
text-indent: 0;
|
||||
color: #fff;
|
||||
font-size: 20px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.dd3-handle:hover {
|
||||
/*background: #404040;*/
|
||||
background: #5cb85c;
|
||||
border: 1px solid #404040;
|
||||
}
|
|
@ -1,143 +1,104 @@
|
|||
body {
|
||||
background: #02bac6 url("../images/lock-bg.jpg");
|
||||
background-size: cover;
|
||||
background-repeat: repeat;
|
||||
}
|
||||
|
||||
.lock-wrapper {
|
||||
margin: 6% auto;
|
||||
max-width: 330px;
|
||||
}
|
||||
|
||||
.lock-box {
|
||||
background: rgba(255,255,255,.3);
|
||||
padding: 20px;
|
||||
border-radius: 10px;
|
||||
-webkit-border-radius: 10px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.lock-wrapper img {
|
||||
border-radius: 50%;
|
||||
-webkit-border-radius: 50%;
|
||||
border: 5px solid #28a745;
|
||||
width: 250px;
|
||||
height: 250px;
|
||||
}
|
||||
|
||||
.lock-wrapper h1 {
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
font-size: 18px;
|
||||
text-transform: uppercase;
|
||||
padding: 20px 0 0 0;
|
||||
}
|
||||
|
||||
.lock-wrapper .locked {
|
||||
margin-bottom: 20px;
|
||||
display: inline-block;
|
||||
color: #026f7a;
|
||||
}
|
||||
|
||||
.btn-lock, .btn-lock:hover {
|
||||
background: #02b5c2;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.lock-input {
|
||||
width: 83%;
|
||||
border: none;
|
||||
float: left;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
#time {
|
||||
width: 100%;
|
||||
color: #fff;
|
||||
font-size: 60px;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.btn-login {
|
||||
width: 140px;
|
||||
}
|
||||
|
||||
.btn-lock, .btn-login {
|
||||
background: #02b5c2;
|
||||
color: #fff;
|
||||
outline: none !important;
|
||||
}
|
||||
|
||||
.btn-lock, .btn-lock:hover {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.has-error .btn-lock {
|
||||
color: #a94442;
|
||||
background-color: #f2dede;
|
||||
border-color: #a94442;
|
||||
}
|
||||
|
||||
.has-success .btn-lock {
|
||||
color: #3c763d;
|
||||
background-color: #dff0d8;
|
||||
border-color: #3c763d;
|
||||
}
|
||||
|
||||
.form-inline .input-group input:focus {
|
||||
z-index: auto;
|
||||
}
|
||||
|
||||
.form-inline .form-group {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.form-inline.Cookies .form-group.Cookies,
|
||||
.form-inline.Mobile .form-group.Mobile,
|
||||
.form-inline.Gitee .form-group.OAuth,
|
||||
.form-inline.GitHub .form-group.OAuth {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
div.input-group span {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
div.input-group input, div.input-group input:hover, .btn-lock, div.input-group .input-group-text, .btn-login {
|
||||
border-color: #1d9238;
|
||||
}
|
||||
|
||||
div.input-group input:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
div.input-group input, div.input-group input:hover, div.input-group input:focus {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
div.input-group input.error {
|
||||
background-color: #dcc4c4;
|
||||
border-color: #e21717;
|
||||
}
|
||||
|
||||
div.input-group .input-group-text {
|
||||
background-color: #02b5c2;
|
||||
}
|
||||
|
||||
.btn-sms {
|
||||
width: 122px;
|
||||
}
|
||||
|
||||
.form-group:last-child input {
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
@media (min-width: 576px) {
|
||||
.form-inline .form-group {
|
||||
flex: 0 1 auto;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
}
|
||||
.lock-screen {
|
||||
background: #02bac6 url("images/lock-bg.jpg");
|
||||
background-size: cover;
|
||||
background-repeat: repeat;
|
||||
}
|
||||
|
||||
.lock-wrapper {
|
||||
margin: 6% auto;
|
||||
max-width: 330px;
|
||||
}
|
||||
|
||||
.lock-box {
|
||||
background: rgba(255,255,255,.3);
|
||||
padding: 20px;
|
||||
border-radius: 10px;
|
||||
-webkit-border-radius: 10px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.lock-box .form-group {
|
||||
float: inherit !important;
|
||||
}
|
||||
|
||||
.lock-wrapper img {
|
||||
border-radius: 50%;
|
||||
-webkit-border-radius: 50%;
|
||||
border: 5px solid #fff;
|
||||
width: 250px;
|
||||
height: 250px;
|
||||
}
|
||||
|
||||
.lock-wrapper h1 {
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
font-size: 18px;
|
||||
text-transform: uppercase;
|
||||
padding: 20px 0 0 0;
|
||||
}
|
||||
|
||||
.lock-wrapper .locked {
|
||||
margin-bottom: 20px;
|
||||
display: inline-block;
|
||||
color: #026f7a;
|
||||
}
|
||||
|
||||
.btn-lock, .btn-lock:hover {
|
||||
background: #02b5c2;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.lock-input {
|
||||
width: 83%;
|
||||
border: none;
|
||||
float: left;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
#time {
|
||||
width: 100%;
|
||||
color: #fff;
|
||||
font-size: 60px;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.btn-lock, .btn-lock:hover {
|
||||
background: #02b5c2;
|
||||
color: #fff;
|
||||
outline: none !important;
|
||||
border-color: #2e6da4;
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.has-error .btn-lock {
|
||||
color: #a94442;
|
||||
background-color: #f2dede;
|
||||
border-color: #a94442;
|
||||
}
|
||||
|
||||
.has-success .btn-lock {
|
||||
color: #3c763d;
|
||||
background-color: #dff0d8;
|
||||
border-color: #3c763d;
|
||||
}
|
||||
|
||||
div.input-group span {
|
||||
top: 0;
|
||||
background: #02b5c2;
|
||||
border-color: #2e6da4;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
div.input-group input, div.input-group input:hover, div.input-group input:focus {
|
||||
border-color: #2e6da4;
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
div.input-group input.error {
|
||||
background-color: #dcc4c4;
|
||||
border-color: #e21717;
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
@media (min-width: 375px) {
|
||||
.form-signin {
|
||||
width: 320px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
body {
|
||||
background: url('images/bg2.jpg') fixed repeat;
|
||||
}
|
||||
|
||||
.container {
|
||||
background: url('images/bg3.png') no-repeat;
|
||||
background-size: contain;
|
||||
width: 704px;
|
||||
height: 404px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.form-signin {
|
||||
border: none;
|
||||
background: none;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.form-signin .form-signin-heading {
|
||||
background: none;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.form-signin .input-group {
|
||||
border: solid 1px #286090;
|
||||
}
|
||||
|
||||
.login-wrap {
|
||||
margin: 30px 0 0 370px;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
body {
|
||||
background: url('images/bg4.jpg') fixed repeat;
|
||||
}
|
||||
|
||||
.form-signin {
|
||||
margin: 0 auto;
|
||||
border-radius: 5px;
|
||||
border: solid 1px #1a88a9;
|
||||
background: rgba(255, 255, 255, 0.23);
|
||||
}
|
||||
|
||||
.form-signin .form-signin-heading {
|
||||
margin: 0;
|
||||
padding: 15px;
|
||||
text-align: center;
|
||||
background: rgba(0, 0, 0, 0.57);
|
||||
border-radius: 5px 5px 0 0;
|
||||
color: #fff;
|
||||
font-size: 32px;
|
||||
text-transform: uppercase;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.form-signin .login-wrap {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.form-signin .login-wrap .login-footer {
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.form-signin .login-wrap .login-footer .login-create {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.form-signin .login-wrap .login-footer .login-reset {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.form-signin .input-group {
|
||||
margin-bottom: 15px;
|
||||
border-radius: 5px;
|
||||
border: 1px solid #089dc9;
|
||||
box-shadow: none;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.form-signin .input-group > span {
|
||||
top: 0;
|
||||
background-color: #5bc0de;
|
||||
}
|
||||
|
||||
.form-signin .form-control, .form-signin .input-group span {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.form-signin .has-success .input-group {
|
||||
border: solid 1px #3c763d;
|
||||
}
|
||||
|
||||
.form-signin .has-error .input-group {
|
||||
border: solid 1px #a94442;
|
||||
}
|
||||
|
||||
.form-signin .form-control, .form-signin .form-control:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.form-signin .btn-login {
|
||||
background: #f67a6e;
|
||||
color: #fff;
|
||||
text-transform: uppercase;
|
||||
font-weight: 300;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
box-shadow: 0 4px #e56b60;
|
||||
margin-bottom: 20px;
|
||||
outline: none !important;
|
||||
}
|
||||
|
||||
.form-signin .checkbox {
|
||||
padding-left: 24px;
|
||||
}
|
||||
|
||||
.form-signin .checkbox > input {
|
||||
top: -1px;
|
||||
}
|
||||
|
||||
.form-signin .checkbox > label {
|
||||
padding-left: 4px;
|
||||
color: #333;
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
/* Make clicks pass-through */
|
||||
#nprogress {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#nprogress .bar {
|
||||
background: #673AB7;
|
||||
position: fixed;
|
||||
z-index: 1031;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 4px;
|
||||
}
|
||||
|
||||
/* Fancy blur effect */
|
||||
#nprogress .peg {
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
width: 100px;
|
||||
height: 100%;
|
||||
box-shadow: 0 0 10px #29d, 0 0 5px #29d;
|
||||
opacity: 1.0;
|
||||
-webkit-transform: rotate(3deg) translate(0px, -4px);
|
||||
-ms-transform: rotate(3deg) translate(0px, -4px);
|
||||
transform: rotate(3deg) translate(0px, -4px);
|
||||
}
|
||||
|
||||
/* Remove these to get rid of the spinner */
|
||||
#nprogress .spinner {
|
||||
display: block;
|
||||
position: fixed;
|
||||
z-index: 1031;
|
||||
top: 22px;
|
||||
right: 17px;
|
||||
}
|
||||
|
||||
#nprogress .spinner-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
box-sizing: border-box;
|
||||
border: solid 2px transparent;
|
||||
border-top-color: #29d;
|
||||
border-left-color: #29d;
|
||||
border-radius: 50%;
|
||||
-webkit-animation: nprogress-spinner 400ms linear infinite;
|
||||
animation: nprogress-spinner 400ms linear infinite;
|
||||
}
|
||||
|
||||
.nprogress-custom-parent {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.nprogress-custom-parent #nprogress .spinner,
|
||||
.nprogress-custom-parent #nprogress .bar {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
@-webkit-keyframes nprogress-spinner {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes nprogress-spinner {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,174 @@
|
|||
header h2 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
ol {
|
||||
display: block;
|
||||
list-style-type: decimal;
|
||||
-webkit-margin-before: 1em;
|
||||
-webkit-margin-after: 1em;
|
||||
-webkit-margin-start: 0px;
|
||||
-webkit-margin-end: 0px;
|
||||
-webkit-padding-start: 40px;
|
||||
}
|
||||
|
||||
.has-error input {
|
||||
background-repeat: no-repeat;
|
||||
background-image: url('images/error.png');
|
||||
background-position: right 8px center;
|
||||
}
|
||||
|
||||
.has-success input {
|
||||
background-repeat: no-repeat;
|
||||
background-image: url('images/success.png');
|
||||
background-position: right 8px center;
|
||||
}
|
||||
|
||||
.setup-wrapper {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
form input {
|
||||
padding-right: 30px !important;
|
||||
}
|
||||
|
||||
.setup-header {
|
||||
margin: 0 auto;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.setup-main, .setup-confirm {
|
||||
float: left;
|
||||
width: 450px;
|
||||
}
|
||||
|
||||
.setup-confirm {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.setup-confirm h4 {
|
||||
padding: 6px 0;
|
||||
}
|
||||
|
||||
.setup-main span {
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.setup-main .input-group {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.setup-secondary {
|
||||
display: inline-block;
|
||||
float: right;
|
||||
width: 250px;
|
||||
margin-top: 70px;
|
||||
}
|
||||
|
||||
.setup-info-module {
|
||||
margin-bottom: 30px;
|
||||
background-color: #fff;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 3px;
|
||||
box-shadow: 0 1px 3px rgba(0,0,0,0.075);
|
||||
}
|
||||
|
||||
.setup-info-module h4 {
|
||||
padding: 15px;
|
||||
margin-bottom: 15px;
|
||||
overflow: hidden;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin-top: 0;
|
||||
background-color: #5cb85c;
|
||||
color: #000;
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
|
||||
.features-list {
|
||||
padding: 0 15px 15px;
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.features-list li:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.features-list li {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.features-list li strong {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.features-list li i {
|
||||
margin-right: 5px;
|
||||
color: #60b044;
|
||||
}
|
||||
|
||||
.features-list .list-divider {
|
||||
margin: 15px -15px;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
.steps {
|
||||
display: table;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin: 30px auto 0;
|
||||
overflow: hidden;
|
||||
list-style: none;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 3px;
|
||||
box-shadow: 0 1px 3px rgba(0,0,0,0.05);
|
||||
}
|
||||
|
||||
.steps li:first-child {
|
||||
border-left: 0;
|
||||
}
|
||||
|
||||
.steps li.current {
|
||||
color: #000;
|
||||
background-color: #5cb85c;
|
||||
}
|
||||
|
||||
.steps li {
|
||||
display: table-cell;
|
||||
width: 50%;
|
||||
padding: 10px 15px;
|
||||
color: #ccc;
|
||||
cursor: default;
|
||||
background-color: #fafafa;
|
||||
border-left: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.steps li .step {
|
||||
display: block;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.steps {
|
||||
display: inherit;
|
||||
}
|
||||
|
||||
.steps li {
|
||||
display: inherit;
|
||||
width: inherit;
|
||||
}
|
||||
|
||||
.setup-secondary {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.setup-main, .setup-confirm {
|
||||
float: inherit;
|
||||
width: inherit;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
@media (min-width: 568px) {
|
||||
.notify-row {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 736px) {
|
||||
.sidebar-toggle-box span {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
html, body {
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.header {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.header, .site-footer {
|
||||
position: fixed;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
position: fixed;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.form-horizontal .control-label {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-height: 672px) {
|
||||
html, body {
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.header, .site-footer {
|
||||
position: fixed;
|
||||
z-index: 10;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,466 @@
|
|||
html {
|
||||
font-size: 62.5%;
|
||||
}
|
||||
|
||||
body {
|
||||
color: #797979;
|
||||
background: #f1f2f7;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-size: 1.4rem;
|
||||
text-rendering: optimizeLegibility;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
ul li {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
a, a:hover, a:focus {
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.176);
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.dropdown-menu > li > a {
|
||||
padding: 6px 20px;
|
||||
}
|
||||
|
||||
.dropdown-menu .divider {
|
||||
margin: 1px 0;
|
||||
}
|
||||
|
||||
.card-view:not(:last-child) {
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.header {
|
||||
padding: 0 15px;
|
||||
height: 98px;
|
||||
background: #fff;
|
||||
border-bottom: 1px solid #ddd;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.header .bg {
|
||||
background-color: #337ab7;
|
||||
height: 4px;
|
||||
margin: 0 -15px;
|
||||
}
|
||||
|
||||
.header a {
|
||||
transition: all .25s linear;
|
||||
}
|
||||
|
||||
.header > .dropdown {
|
||||
margin-top: 7px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.header > .dropdown > a {
|
||||
border: 1px solid #eee;
|
||||
border-radius: 4px;
|
||||
padding: 6px;
|
||||
background: none;
|
||||
margin-right: 0;
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.header > .dropdown > a:hover, .header > .dropdown.open > a, .notify-row > li > a:hover {
|
||||
border: 1px solid #777;
|
||||
color: #333
|
||||
}
|
||||
|
||||
.header > .dropdown > a span {
|
||||
display: inline-block;
|
||||
min-width: 18px;
|
||||
}
|
||||
|
||||
.header > .dropdown > a img {
|
||||
height: 29px;
|
||||
width: 29px;
|
||||
}
|
||||
|
||||
.header > .dropdown .dropdown-menu {
|
||||
width: 268px;
|
||||
top: 50px;
|
||||
left: auto;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.header > .dropdown .dropdown-menu li {
|
||||
text-align: center;
|
||||
width: 33.3%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.header > .dropdown .dropdown-menu li:first-child {
|
||||
border-color: transparent transparent #e8e8e8;
|
||||
border-bottom-color: #e8e8e8;
|
||||
border-top-color: #e8e8e8;
|
||||
border-style: solid;
|
||||
border-width: 0 7px 7px;
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
top: -8px;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
.header > .dropdown .dropdown-menu li:last-child {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.header > .dropdown .dropdown-menu li:last-child a {
|
||||
color: #ca3a39;
|
||||
border-radius: 0 0 3px 3px;
|
||||
background: #a9d96c;
|
||||
background-image: linear-gradient(to bottom, #a9d96c 0%, #799e51 100%);
|
||||
}
|
||||
|
||||
.header > .dropdown .dropdown-menu li:last-child a:hover {
|
||||
color: #d20100;
|
||||
background: #6d9046;
|
||||
background-image: linear-gradient(to bottom, #a9d96c 0%, #6d9046 100%);
|
||||
}
|
||||
|
||||
.header > .dropdown .dropdown-menu li a {
|
||||
color: #777;
|
||||
padding: 15px 10px;
|
||||
}
|
||||
|
||||
.header > .dropdown .dropdown-menu li a:hover {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.header > .dropdown .dropdown-menu li a i {
|
||||
font-size: 1.7rem;
|
||||
display: block;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.header > .dropdown .dropdown-menu li a .badge {
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
top: 4px;
|
||||
background: #5cb85c;
|
||||
}
|
||||
|
||||
/*Title*/
|
||||
.sidebar-toggle-box {
|
||||
font-size: 2.1rem;
|
||||
color: #333;
|
||||
float: left;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.sidebar-toggle-box span, .notify-row {
|
||||
display: none;
|
||||
}
|
||||
/*end title*/
|
||||
|
||||
.site-footer {
|
||||
background: #5b6e84;
|
||||
color: #fff;
|
||||
padding: 10px 4px;
|
||||
height: 40px;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.go-top {
|
||||
background: rgba(255,255,255,.5);
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-radius: 50%;
|
||||
-webkit-border-radius: 50%;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
.go-top:hover {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.go-top i {
|
||||
color: #2A3542;
|
||||
}
|
||||
|
||||
/*notify bar*/
|
||||
.notify-row {
|
||||
margin-top: 20px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
.notify-row .bg-success, .notify-row .dropdown-menu.tasks-bar li p {
|
||||
background: #a9d86e;
|
||||
}
|
||||
|
||||
.notify-row .bg-important, .notify-row .dropdown-menu.inbox li p {
|
||||
background: #ff6c60;
|
||||
}
|
||||
|
||||
.notify-row .bg-user, .notify-row .dropdown-menu.users li p {
|
||||
background: #5cb85c;
|
||||
}
|
||||
|
||||
.notify-row .bg-warning, .notify-row .dropdown-menu.notification li p {
|
||||
background: #FCB322;
|
||||
}
|
||||
|
||||
.notify-row .bg-db, .notify-row .dropdown-menu.dbs li p {
|
||||
background: #d03633;
|
||||
}
|
||||
|
||||
.notify-row > li {
|
||||
float: left;
|
||||
position: relative;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.notify-row > li > a {
|
||||
color: #666666;
|
||||
border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
font-size: 1.6rem;
|
||||
border: 1px solid #f0f0f8;
|
||||
padding: 2px 6px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.notify-row > li > a .badge {
|
||||
position: absolute;
|
||||
top: -10px;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu {
|
||||
float: left;
|
||||
max-width: 300px;
|
||||
min-width: 160px;
|
||||
top: 32px;
|
||||
left: -74px;
|
||||
width: 235px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu .notify-arrow {
|
||||
border-style: solid;
|
||||
border-width: 0 9px 9px;
|
||||
height: 0;
|
||||
margin-top: 0;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
left: 80px;
|
||||
top: -18px;
|
||||
transition: all 0.25s ease 0s;
|
||||
width: 0;
|
||||
z-index: 10;
|
||||
margin-top: 10px;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu .notify-arrow.notify-arrow-green {
|
||||
border-color: transparent transparent #a9d86e;
|
||||
border-bottom-color: #a9d86e;
|
||||
border-top-color: #a9d86e;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu .notify-arrow.notify-arrow-yellow {
|
||||
border-color: transparent transparent #FCB322;
|
||||
border-bottom-color: #FCB322;
|
||||
border-top-color: #FCB322;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu .notify-arrow.notify-arrow-red {
|
||||
border-color: transparent transparent #ff6c60;
|
||||
border-bottom-color: #ff6c60;
|
||||
border-top-color: #ff6c60;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu .notify-arrow.notify-arrow-db {
|
||||
border-color: transparent transparent #d03633;
|
||||
border-bottom-color: #d03633;
|
||||
border-top-color: #d03633;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu .notify-arrow.notify-arrow-user {
|
||||
border-color: transparent transparent #5cb85c;
|
||||
border-bottom-color: #5cb85c;
|
||||
border-top-color: #5cb85c;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu li:last-child a {
|
||||
border-bottom: 0;
|
||||
border-radius: 0 0 4px 4px;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu li a {
|
||||
border-bottom: 1px solid #EBEBEB;
|
||||
font-size: 1.2rem;
|
||||
list-style: none;
|
||||
padding: 15px 10px;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu li a:hover {
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu p {
|
||||
color: #fff;
|
||||
margin: 0;
|
||||
padding: 10px;
|
||||
border-radius: 4px 4px 0px 0px;
|
||||
-webkit-border-radius: 4px 4px 0px 0px;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu .content {
|
||||
position: absolute;
|
||||
left: 36px;
|
||||
right: 44px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu .label {
|
||||
display: inline-block;
|
||||
height: 18px;
|
||||
width: 20px;
|
||||
padding: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu .small {
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
float: right;
|
||||
padding-top: 2px;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu.tasks-bar .desc {
|
||||
font-size: 1.3rem;
|
||||
font-weight: normal;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu.tasks-bar .percent {
|
||||
display: inline-block;
|
||||
float: right;
|
||||
font-size: 1.3rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu.tasks-bar .progress {
|
||||
margin-top: 4px;
|
||||
height: 10px;
|
||||
margin-right: 34px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu.inbox .photo img {
|
||||
border-radius: 2px 2px 2px 2px;
|
||||
float: left;
|
||||
height: 42px;
|
||||
margin-right: 4px;
|
||||
width: 42px;
|
||||
border: solid 1px #EBEBEB;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu.inbox .subject {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu.inbox .subject .from {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu.inbox .subject .time {
|
||||
font-size: 1.1rem;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.notify-row .dropdown-menu.inbox .message {
|
||||
font-size: 1.1rem;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
position: absolute;
|
||||
right: 6px;
|
||||
left: 56px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
/*end*/
|
||||
|
||||
.breadcrumb {
|
||||
position: absolute;
|
||||
top: 60px;
|
||||
left: 15px;
|
||||
right: 15px;
|
||||
border: solid 1px #ddd;
|
||||
border-width: 1px 0 0 0;
|
||||
background-color: transparent;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
|
||||
.breadcrumb > li.active {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.breadcrumb > li.load {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.breadcrumb > li > a > i {
|
||||
padding-right: 6px;
|
||||
}
|
||||
|
||||
.content-body {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 40px;
|
||||
right: 0;
|
||||
top: 98px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.content-body iframe {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.welcome-bg {
|
||||
background-image: url('images/bg.jpg');
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
.tooltip-inner {
|
||||
max-width: 768px;
|
||||
}
|
||||
|
||||
.tooltip.has-error .tooltip-inner {
|
||||
background-color: #a94442;
|
||||
}
|
||||
|
||||
.tooltip.has-error .tooltip-arrow {
|
||||
border-top-color: #a94442;
|
||||
}
|
|
@ -0,0 +1,932 @@
|
|||
body.stop-scrolling {
|
||||
height: 100%;
|
||||
overflow: hidden; }
|
||||
|
||||
.sweet-overlay {
|
||||
background-color: black;
|
||||
/* IE8 */
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
|
||||
/* IE8 */
|
||||
background-color: rgba(0, 0, 0, 0.4);
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
display: none;
|
||||
z-index: 10000; }
|
||||
|
||||
.sweet-alert {
|
||||
background-color: white;
|
||||
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
width: 478px;
|
||||
padding: 17px;
|
||||
border-radius: 5px;
|
||||
text-align: center;
|
||||
position: fixed;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin-left: -256px;
|
||||
margin-top: -200px;
|
||||
overflow: hidden;
|
||||
display: none;
|
||||
z-index: 99999; }
|
||||
@media all and (max-width: 540px) {
|
||||
.sweet-alert {
|
||||
width: auto;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
left: 15px;
|
||||
right: 15px; } }
|
||||
.sweet-alert h2 {
|
||||
color: #575757;
|
||||
font-size: 30px;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
text-transform: none;
|
||||
position: relative;
|
||||
margin: 25px 0;
|
||||
padding: 0;
|
||||
line-height: 40px;
|
||||
display: block; }
|
||||
.sweet-alert p {
|
||||
color: #797979;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
font-weight: 300;
|
||||
position: relative;
|
||||
text-align: inherit;
|
||||
float: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
line-height: normal; }
|
||||
.sweet-alert fieldset {
|
||||
border: none;
|
||||
position: relative; }
|
||||
.sweet-alert .sa-error-container {
|
||||
background-color: #f1f1f1;
|
||||
margin-left: -17px;
|
||||
margin-right: -17px;
|
||||
overflow: hidden;
|
||||
padding: 0 10px;
|
||||
max-height: 0;
|
||||
webkit-transition: padding 0.15s, max-height 0.15s;
|
||||
transition: padding 0.15s, max-height 0.15s; }
|
||||
.sweet-alert .sa-error-container.show {
|
||||
padding: 10px 0;
|
||||
max-height: 100px;
|
||||
webkit-transition: padding 0.2s, max-height 0.2s;
|
||||
transition: padding 0.25s, max-height 0.25s; }
|
||||
.sweet-alert .sa-error-container .icon {
|
||||
display: inline-block;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
border-radius: 50%;
|
||||
background-color: #ea7d7d;
|
||||
color: white;
|
||||
line-height: 24px;
|
||||
text-align: center;
|
||||
margin-right: 3px; }
|
||||
.sweet-alert .sa-error-container p {
|
||||
display: inline-block; }
|
||||
.sweet-alert .sa-input-error {
|
||||
position: absolute;
|
||||
top: 29px;
|
||||
right: 26px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
opacity: 0;
|
||||
-webkit-transform: scale(0.5);
|
||||
transform: scale(0.5);
|
||||
-webkit-transform-origin: 50% 50%;
|
||||
transform-origin: 50% 50%;
|
||||
-webkit-transition: all 0.1s;
|
||||
transition: all 0.1s; }
|
||||
.sweet-alert .sa-input-error::before, .sweet-alert .sa-input-error::after {
|
||||
content: "";
|
||||
width: 20px;
|
||||
height: 6px;
|
||||
background-color: #f06e57;
|
||||
border-radius: 3px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -4px;
|
||||
left: 50%;
|
||||
margin-left: -9px; }
|
||||
.sweet-alert .sa-input-error::before {
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg); }
|
||||
.sweet-alert .sa-input-error::after {
|
||||
-webkit-transform: rotate(45deg);
|
||||
transform: rotate(45deg); }
|
||||
.sweet-alert .sa-input-error.show {
|
||||
opacity: 1;
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
.sweet-alert input {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d7d7d7;
|
||||
height: 43px;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 17px;
|
||||
font-size: 18px;
|
||||
box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.06);
|
||||
padding: 0 12px;
|
||||
display: none;
|
||||
-webkit-transition: all 0.3s;
|
||||
transition: all 0.3s; }
|
||||
.sweet-alert input:focus {
|
||||
outline: none;
|
||||
box-shadow: 0px 0px 3px #c4e6f5;
|
||||
border: 1px solid #b4dbed; }
|
||||
.sweet-alert input:focus::-moz-placeholder {
|
||||
transition: opacity 0.3s 0.03s ease;
|
||||
opacity: 0.5; }
|
||||
.sweet-alert input:focus:-ms-input-placeholder {
|
||||
transition: opacity 0.3s 0.03s ease;
|
||||
opacity: 0.5; }
|
||||
.sweet-alert input:focus::-webkit-input-placeholder {
|
||||
transition: opacity 0.3s 0.03s ease;
|
||||
opacity: 0.5; }
|
||||
.sweet-alert input::-moz-placeholder {
|
||||
color: #bdbdbd; }
|
||||
.sweet-alert input:-ms-input-placeholder {
|
||||
color: #bdbdbd; }
|
||||
.sweet-alert input::-webkit-input-placeholder {
|
||||
color: #bdbdbd; }
|
||||
.sweet-alert.show-input input {
|
||||
display: block; }
|
||||
.sweet-alert .sa-confirm-button-container {
|
||||
display: inline-block;
|
||||
position: relative; }
|
||||
.sweet-alert .la-ball-fall {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin-left: -27px;
|
||||
margin-top: 4px;
|
||||
opacity: 0;
|
||||
visibility: hidden; }
|
||||
.sweet-alert button {
|
||||
background-color: #8CD4F5;
|
||||
color: white;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
font-size: 17px;
|
||||
font-weight: 500;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 5px;
|
||||
padding: 10px 32px;
|
||||
margin: 26px 5px 0 5px;
|
||||
cursor: pointer; }
|
||||
.sweet-alert button:focus {
|
||||
outline: none;
|
||||
box-shadow: 0 0 2px rgba(128, 179, 235, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.05); }
|
||||
.sweet-alert button:hover {
|
||||
background-color: #7ecff4; }
|
||||
.sweet-alert button:active {
|
||||
background-color: #5dc2f1; }
|
||||
.sweet-alert button.cancel {
|
||||
background-color: #C1C1C1; }
|
||||
.sweet-alert button.cancel:hover {
|
||||
background-color: #b9b9b9; }
|
||||
.sweet-alert button.cancel:active {
|
||||
background-color: #a8a8a8; }
|
||||
.sweet-alert button.cancel:focus {
|
||||
box-shadow: rgba(197, 205, 211, 0.8) 0px 0px 2px, rgba(0, 0, 0, 0.0470588) 0px 0px 0px 1px inset !important; }
|
||||
.sweet-alert button[disabled] {
|
||||
opacity: .6;
|
||||
cursor: default; }
|
||||
.sweet-alert button.confirm[disabled] {
|
||||
color: transparent; }
|
||||
.sweet-alert button.confirm[disabled] ~ .la-ball-fall {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
transition-delay: 0s; }
|
||||
.sweet-alert button::-moz-focus-inner {
|
||||
border: 0; }
|
||||
.sweet-alert[data-has-cancel-button=false] button {
|
||||
box-shadow: none !important; }
|
||||
.sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] {
|
||||
padding-bottom: 40px; }
|
||||
.sweet-alert .sa-icon {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border: 4px solid gray;
|
||||
-webkit-border-radius: 40px;
|
||||
border-radius: 40px;
|
||||
border-radius: 50%;
|
||||
margin: 20px auto;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
box-sizing: content-box; }
|
||||
.sweet-alert .sa-icon.sa-error {
|
||||
border-color: #F27474; }
|
||||
.sweet-alert .sa-icon.sa-error .sa-x-mark {
|
||||
position: relative;
|
||||
display: block; }
|
||||
.sweet-alert .sa-icon.sa-error .sa-line {
|
||||
position: absolute;
|
||||
height: 5px;
|
||||
width: 47px;
|
||||
background-color: #F27474;
|
||||
display: block;
|
||||
top: 37px;
|
||||
border-radius: 2px; }
|
||||
.sweet-alert .sa-icon.sa-error .sa-line.sa-left {
|
||||
-webkit-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
left: 17px; }
|
||||
.sweet-alert .sa-icon.sa-error .sa-line.sa-right {
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg);
|
||||
right: 16px; }
|
||||
.sweet-alert .sa-icon.sa-warning {
|
||||
border-color: #F8BB86; }
|
||||
.sweet-alert .sa-icon.sa-warning .sa-body {
|
||||
position: absolute;
|
||||
width: 5px;
|
||||
height: 47px;
|
||||
left: 50%;
|
||||
top: 10px;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
margin-left: -2px;
|
||||
background-color: #F8BB86; }
|
||||
.sweet-alert .sa-icon.sa-warning .sa-dot {
|
||||
position: absolute;
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
-webkit-border-radius: 50%;
|
||||
border-radius: 50%;
|
||||
margin-left: -3px;
|
||||
left: 50%;
|
||||
bottom: 10px;
|
||||
background-color: #F8BB86; }
|
||||
.sweet-alert .sa-icon.sa-info {
|
||||
border-color: #C9DAE1; }
|
||||
.sweet-alert .sa-icon.sa-info::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 5px;
|
||||
height: 29px;
|
||||
left: 50%;
|
||||
bottom: 17px;
|
||||
border-radius: 2px;
|
||||
margin-left: -2px;
|
||||
background-color: #C9DAE1; }
|
||||
.sweet-alert .sa-icon.sa-info::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
border-radius: 50%;
|
||||
margin-left: -3px;
|
||||
top: 19px;
|
||||
background-color: #C9DAE1; }
|
||||
.sweet-alert .sa-icon.sa-success {
|
||||
border-color: #A5DC86; }
|
||||
.sweet-alert .sa-icon.sa-success::before, .sweet-alert .sa-icon.sa-success::after {
|
||||
content: '';
|
||||
-webkit-border-radius: 40px;
|
||||
border-radius: 40px;
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
width: 60px;
|
||||
height: 120px;
|
||||
background: white;
|
||||
-webkit-transform: rotate(45deg);
|
||||
transform: rotate(45deg); }
|
||||
.sweet-alert .sa-icon.sa-success::before {
|
||||
-webkit-border-radius: 120px 0 0 120px;
|
||||
border-radius: 120px 0 0 120px;
|
||||
top: -7px;
|
||||
left: -33px;
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg);
|
||||
-webkit-transform-origin: 60px 60px;
|
||||
transform-origin: 60px 60px; }
|
||||
.sweet-alert .sa-icon.sa-success::after {
|
||||
-webkit-border-radius: 0 120px 120px 0;
|
||||
border-radius: 0 120px 120px 0;
|
||||
top: -11px;
|
||||
left: 30px;
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg);
|
||||
-webkit-transform-origin: 0px 60px;
|
||||
transform-origin: 0px 60px; }
|
||||
.sweet-alert .sa-icon.sa-success .sa-placeholder {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border: 4px solid rgba(165, 220, 134, 0.2);
|
||||
-webkit-border-radius: 40px;
|
||||
border-radius: 40px;
|
||||
border-radius: 50%;
|
||||
box-sizing: content-box;
|
||||
position: absolute;
|
||||
left: -4px;
|
||||
top: -4px;
|
||||
z-index: 2; }
|
||||
.sweet-alert .sa-icon.sa-success .sa-fix {
|
||||
width: 5px;
|
||||
height: 90px;
|
||||
background-color: white;
|
||||
position: absolute;
|
||||
left: 28px;
|
||||
top: 8px;
|
||||
z-index: 1;
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg); }
|
||||
.sweet-alert .sa-icon.sa-success .sa-line {
|
||||
height: 5px;
|
||||
background-color: #A5DC86;
|
||||
display: block;
|
||||
border-radius: 2px;
|
||||
position: absolute;
|
||||
z-index: 2; }
|
||||
.sweet-alert .sa-icon.sa-success .sa-line.sa-tip {
|
||||
width: 25px;
|
||||
left: 14px;
|
||||
top: 46px;
|
||||
-webkit-transform: rotate(45deg);
|
||||
transform: rotate(45deg); }
|
||||
.sweet-alert .sa-icon.sa-success .sa-line.sa-long {
|
||||
width: 47px;
|
||||
right: 8px;
|
||||
top: 38px;
|
||||
-webkit-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg); }
|
||||
.sweet-alert .sa-icon.sa-custom {
|
||||
background-size: contain;
|
||||
border-radius: 0;
|
||||
border: none;
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat; }
|
||||
|
||||
/*
|
||||
* Animations
|
||||
*/
|
||||
@-webkit-keyframes showSweetAlert {
|
||||
0% {
|
||||
transform: scale(0.7);
|
||||
-webkit-transform: scale(0.7); }
|
||||
45% {
|
||||
transform: scale(1.05);
|
||||
-webkit-transform: scale(1.05); }
|
||||
80% {
|
||||
transform: scale(0.95);
|
||||
-webkit-transform: scale(0.95); }
|
||||
100% {
|
||||
transform: scale(1);
|
||||
-webkit-transform: scale(1); } }
|
||||
|
||||
@keyframes showSweetAlert {
|
||||
0% {
|
||||
transform: scale(0.7);
|
||||
-webkit-transform: scale(0.7); }
|
||||
45% {
|
||||
transform: scale(1.05);
|
||||
-webkit-transform: scale(1.05); }
|
||||
80% {
|
||||
transform: scale(0.95);
|
||||
-webkit-transform: scale(0.95); }
|
||||
100% {
|
||||
transform: scale(1);
|
||||
-webkit-transform: scale(1); } }
|
||||
|
||||
@-webkit-keyframes hideSweetAlert {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
-webkit-transform: scale(1); }
|
||||
100% {
|
||||
transform: scale(0.5);
|
||||
-webkit-transform: scale(0.5); } }
|
||||
|
||||
@keyframes hideSweetAlert {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
-webkit-transform: scale(1); }
|
||||
100% {
|
||||
transform: scale(0.5);
|
||||
-webkit-transform: scale(0.5); } }
|
||||
|
||||
@-webkit-keyframes slideFromTop {
|
||||
0% {
|
||||
top: 0%; }
|
||||
100% {
|
||||
top: 50%; } }
|
||||
|
||||
@keyframes slideFromTop {
|
||||
0% {
|
||||
top: 0%; }
|
||||
100% {
|
||||
top: 50%; } }
|
||||
|
||||
@-webkit-keyframes slideToTop {
|
||||
0% {
|
||||
top: 50%; }
|
||||
100% {
|
||||
top: 0%; } }
|
||||
|
||||
@keyframes slideToTop {
|
||||
0% {
|
||||
top: 50%; }
|
||||
100% {
|
||||
top: 0%; } }
|
||||
|
||||
@-webkit-keyframes slideFromBottom {
|
||||
0% {
|
||||
top: 70%; }
|
||||
100% {
|
||||
top: 50%; } }
|
||||
|
||||
@keyframes slideFromBottom {
|
||||
0% {
|
||||
top: 70%; }
|
||||
100% {
|
||||
top: 50%; } }
|
||||
|
||||
@-webkit-keyframes slideToBottom {
|
||||
0% {
|
||||
top: 50%; }
|
||||
100% {
|
||||
top: 70%; } }
|
||||
|
||||
@keyframes slideToBottom {
|
||||
0% {
|
||||
top: 50%; }
|
||||
100% {
|
||||
top: 70%; } }
|
||||
|
||||
.showSweetAlert[data-animation=pop] {
|
||||
-webkit-animation: showSweetAlert 0.3s;
|
||||
animation: showSweetAlert 0.3s; }
|
||||
|
||||
.showSweetAlert[data-animation=none] {
|
||||
-webkit-animation: none;
|
||||
animation: none; }
|
||||
|
||||
.showSweetAlert[data-animation=slide-from-top] {
|
||||
-webkit-animation: slideFromTop 0.3s;
|
||||
animation: slideFromTop 0.3s; }
|
||||
|
||||
.showSweetAlert[data-animation=slide-from-bottom] {
|
||||
-webkit-animation: slideFromBottom 0.3s;
|
||||
animation: slideFromBottom 0.3s; }
|
||||
|
||||
.hideSweetAlert[data-animation=pop] {
|
||||
-webkit-animation: hideSweetAlert 0.2s;
|
||||
animation: hideSweetAlert 0.2s; }
|
||||
|
||||
.hideSweetAlert[data-animation=none] {
|
||||
-webkit-animation: none;
|
||||
animation: none; }
|
||||
|
||||
.hideSweetAlert[data-animation=slide-from-top] {
|
||||
-webkit-animation: slideToTop 0.4s;
|
||||
animation: slideToTop 0.4s; }
|
||||
|
||||
.hideSweetAlert[data-animation=slide-from-bottom] {
|
||||
-webkit-animation: slideToBottom 0.3s;
|
||||
animation: slideToBottom 0.3s; }
|
||||
|
||||
@-webkit-keyframes animateSuccessTip {
|
||||
0% {
|
||||
width: 0;
|
||||
left: 1px;
|
||||
top: 19px; }
|
||||
54% {
|
||||
width: 0;
|
||||
left: 1px;
|
||||
top: 19px; }
|
||||
70% {
|
||||
width: 50px;
|
||||
left: -8px;
|
||||
top: 37px; }
|
||||
84% {
|
||||
width: 17px;
|
||||
left: 21px;
|
||||
top: 48px; }
|
||||
100% {
|
||||
width: 25px;
|
||||
left: 14px;
|
||||
top: 45px; } }
|
||||
|
||||
@keyframes animateSuccessTip {
|
||||
0% {
|
||||
width: 0;
|
||||
left: 1px;
|
||||
top: 19px; }
|
||||
54% {
|
||||
width: 0;
|
||||
left: 1px;
|
||||
top: 19px; }
|
||||
70% {
|
||||
width: 50px;
|
||||
left: -8px;
|
||||
top: 37px; }
|
||||
84% {
|
||||
width: 17px;
|
||||
left: 21px;
|
||||
top: 48px; }
|
||||
100% {
|
||||
width: 25px;
|
||||
left: 14px;
|
||||
top: 45px; } }
|
||||
|
||||
@-webkit-keyframes animateSuccessLong {
|
||||
0% {
|
||||
width: 0;
|
||||
right: 46px;
|
||||
top: 54px; }
|
||||
65% {
|
||||
width: 0;
|
||||
right: 46px;
|
||||
top: 54px; }
|
||||
84% {
|
||||
width: 55px;
|
||||
right: 0px;
|
||||
top: 35px; }
|
||||
100% {
|
||||
width: 47px;
|
||||
right: 8px;
|
||||
top: 38px; } }
|
||||
|
||||
@keyframes animateSuccessLong {
|
||||
0% {
|
||||
width: 0;
|
||||
right: 46px;
|
||||
top: 54px; }
|
||||
65% {
|
||||
width: 0;
|
||||
right: 46px;
|
||||
top: 54px; }
|
||||
84% {
|
||||
width: 55px;
|
||||
right: 0px;
|
||||
top: 35px; }
|
||||
100% {
|
||||
width: 47px;
|
||||
right: 8px;
|
||||
top: 38px; } }
|
||||
|
||||
@-webkit-keyframes rotatePlaceholder {
|
||||
0% {
|
||||
transform: rotate(-45deg);
|
||||
-webkit-transform: rotate(-45deg); }
|
||||
5% {
|
||||
transform: rotate(-45deg);
|
||||
-webkit-transform: rotate(-45deg); }
|
||||
12% {
|
||||
transform: rotate(-405deg);
|
||||
-webkit-transform: rotate(-405deg); }
|
||||
100% {
|
||||
transform: rotate(-405deg);
|
||||
-webkit-transform: rotate(-405deg); } }
|
||||
|
||||
@keyframes rotatePlaceholder {
|
||||
0% {
|
||||
transform: rotate(-45deg);
|
||||
-webkit-transform: rotate(-45deg); }
|
||||
5% {
|
||||
transform: rotate(-45deg);
|
||||
-webkit-transform: rotate(-45deg); }
|
||||
12% {
|
||||
transform: rotate(-405deg);
|
||||
-webkit-transform: rotate(-405deg); }
|
||||
100% {
|
||||
transform: rotate(-405deg);
|
||||
-webkit-transform: rotate(-405deg); } }
|
||||
|
||||
.animateSuccessTip {
|
||||
-webkit-animation: animateSuccessTip 0.75s;
|
||||
animation: animateSuccessTip 0.75s; }
|
||||
|
||||
.animateSuccessLong {
|
||||
-webkit-animation: animateSuccessLong 0.75s;
|
||||
animation: animateSuccessLong 0.75s; }
|
||||
|
||||
.sa-icon.sa-success.animate::after {
|
||||
-webkit-animation: rotatePlaceholder 4.25s ease-in;
|
||||
animation: rotatePlaceholder 4.25s ease-in; }
|
||||
|
||||
@-webkit-keyframes animateErrorIcon {
|
||||
0% {
|
||||
transform: rotateX(100deg);
|
||||
-webkit-transform: rotateX(100deg);
|
||||
opacity: 0; }
|
||||
100% {
|
||||
transform: rotateX(0deg);
|
||||
-webkit-transform: rotateX(0deg);
|
||||
opacity: 1; } }
|
||||
|
||||
@keyframes animateErrorIcon {
|
||||
0% {
|
||||
transform: rotateX(100deg);
|
||||
-webkit-transform: rotateX(100deg);
|
||||
opacity: 0; }
|
||||
100% {
|
||||
transform: rotateX(0deg);
|
||||
-webkit-transform: rotateX(0deg);
|
||||
opacity: 1; } }
|
||||
|
||||
.animateErrorIcon {
|
||||
-webkit-animation: animateErrorIcon 0.5s;
|
||||
animation: animateErrorIcon 0.5s; }
|
||||
|
||||
@-webkit-keyframes animateXMark {
|
||||
0% {
|
||||
transform: scale(0.4);
|
||||
-webkit-transform: scale(0.4);
|
||||
margin-top: 26px;
|
||||
opacity: 0; }
|
||||
50% {
|
||||
transform: scale(0.4);
|
||||
-webkit-transform: scale(0.4);
|
||||
margin-top: 26px;
|
||||
opacity: 0; }
|
||||
80% {
|
||||
transform: scale(1.15);
|
||||
-webkit-transform: scale(1.15);
|
||||
margin-top: -6px; }
|
||||
100% {
|
||||
transform: scale(1);
|
||||
-webkit-transform: scale(1);
|
||||
margin-top: 0;
|
||||
opacity: 1; } }
|
||||
|
||||
@keyframes animateXMark {
|
||||
0% {
|
||||
transform: scale(0.4);
|
||||
-webkit-transform: scale(0.4);
|
||||
margin-top: 26px;
|
||||
opacity: 0; }
|
||||
50% {
|
||||
transform: scale(0.4);
|
||||
-webkit-transform: scale(0.4);
|
||||
margin-top: 26px;
|
||||
opacity: 0; }
|
||||
80% {
|
||||
transform: scale(1.15);
|
||||
-webkit-transform: scale(1.15);
|
||||
margin-top: -6px; }
|
||||
100% {
|
||||
transform: scale(1);
|
||||
-webkit-transform: scale(1);
|
||||
margin-top: 0;
|
||||
opacity: 1; } }
|
||||
|
||||
.animateXMark {
|
||||
-webkit-animation: animateXMark 0.5s;
|
||||
animation: animateXMark 0.5s; }
|
||||
|
||||
@-webkit-keyframes pulseWarning {
|
||||
0% {
|
||||
border-color: #F8D486; }
|
||||
100% {
|
||||
border-color: #F8BB86; } }
|
||||
|
||||
@keyframes pulseWarning {
|
||||
0% {
|
||||
border-color: #F8D486; }
|
||||
100% {
|
||||
border-color: #F8BB86; } }
|
||||
|
||||
.pulseWarning {
|
||||
-webkit-animation: pulseWarning 0.75s infinite alternate;
|
||||
animation: pulseWarning 0.75s infinite alternate; }
|
||||
|
||||
@-webkit-keyframes pulseWarningIns {
|
||||
0% {
|
||||
background-color: #F8D486; }
|
||||
100% {
|
||||
background-color: #F8BB86; } }
|
||||
|
||||
@keyframes pulseWarningIns {
|
||||
0% {
|
||||
background-color: #F8D486; }
|
||||
100% {
|
||||
background-color: #F8BB86; } }
|
||||
|
||||
.pulseWarningIns {
|
||||
-webkit-animation: pulseWarningIns 0.75s infinite alternate;
|
||||
animation: pulseWarningIns 0.75s infinite alternate; }
|
||||
|
||||
@-webkit-keyframes rotate-loading {
|
||||
0% {
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
@keyframes rotate-loading {
|
||||
0% {
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
/* Internet Explorer 9 has some special quirks that are fixed here */
|
||||
/* The icons are not animated. */
|
||||
/* This file is automatically merged into sweet-alert.min.js through Gulp */
|
||||
/* Error icon */
|
||||
.sweet-alert .sa-icon.sa-error .sa-line.sa-left {
|
||||
-ms-transform: rotate(45deg) \9; }
|
||||
|
||||
.sweet-alert .sa-icon.sa-error .sa-line.sa-right {
|
||||
-ms-transform: rotate(-45deg) \9; }
|
||||
|
||||
/* Success icon */
|
||||
.sweet-alert .sa-icon.sa-success {
|
||||
border-color: transparent\9; }
|
||||
|
||||
.sweet-alert .sa-icon.sa-success .sa-line.sa-tip {
|
||||
-ms-transform: rotate(45deg) \9; }
|
||||
|
||||
.sweet-alert .sa-icon.sa-success .sa-line.sa-long {
|
||||
-ms-transform: rotate(-45deg) \9; }
|
||||
|
||||
/*!
|
||||
* Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/)
|
||||
* Copyright 2015 Daniel Cardoso <@DanielCardoso>
|
||||
* Licensed under MIT
|
||||
*/
|
||||
.la-ball-fall,
|
||||
.la-ball-fall > div {
|
||||
position: relative;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box; }
|
||||
|
||||
.la-ball-fall {
|
||||
display: block;
|
||||
font-size: 0;
|
||||
color: #fff; }
|
||||
|
||||
.la-ball-fall.la-dark {
|
||||
color: #333; }
|
||||
|
||||
.la-ball-fall > div {
|
||||
display: inline-block;
|
||||
float: none;
|
||||
background-color: currentColor;
|
||||
border: 0 solid currentColor; }
|
||||
|
||||
.la-ball-fall {
|
||||
width: 54px;
|
||||
height: 18px; }
|
||||
|
||||
.la-ball-fall > div {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin: 4px;
|
||||
border-radius: 100%;
|
||||
opacity: 0;
|
||||
-webkit-animation: ball-fall 1s ease-in-out infinite;
|
||||
-moz-animation: ball-fall 1s ease-in-out infinite;
|
||||
-o-animation: ball-fall 1s ease-in-out infinite;
|
||||
animation: ball-fall 1s ease-in-out infinite; }
|
||||
|
||||
.la-ball-fall > div:nth-child(1) {
|
||||
-webkit-animation-delay: -200ms;
|
||||
-moz-animation-delay: -200ms;
|
||||
-o-animation-delay: -200ms;
|
||||
animation-delay: -200ms; }
|
||||
|
||||
.la-ball-fall > div:nth-child(2) {
|
||||
-webkit-animation-delay: -100ms;
|
||||
-moz-animation-delay: -100ms;
|
||||
-o-animation-delay: -100ms;
|
||||
animation-delay: -100ms; }
|
||||
|
||||
.la-ball-fall > div:nth-child(3) {
|
||||
-webkit-animation-delay: 0ms;
|
||||
-moz-animation-delay: 0ms;
|
||||
-o-animation-delay: 0ms;
|
||||
animation-delay: 0ms; }
|
||||
|
||||
.la-ball-fall.la-sm {
|
||||
width: 26px;
|
||||
height: 8px; }
|
||||
|
||||
.la-ball-fall.la-sm > div {
|
||||
width: 4px;
|
||||
height: 4px;
|
||||
margin: 2px; }
|
||||
|
||||
.la-ball-fall.la-2x {
|
||||
width: 108px;
|
||||
height: 36px; }
|
||||
|
||||
.la-ball-fall.la-2x > div {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin: 8px; }
|
||||
|
||||
.la-ball-fall.la-3x {
|
||||
width: 162px;
|
||||
height: 54px; }
|
||||
|
||||
.la-ball-fall.la-3x > div {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
margin: 12px; }
|
||||
|
||||
/*
|
||||
* Animation
|
||||
*/
|
||||
@-webkit-keyframes ball-fall {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(-145%);
|
||||
transform: translateY(-145%); }
|
||||
10% {
|
||||
opacity: .5; }
|
||||
20% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateY(0);
|
||||
transform: translateY(0); }
|
||||
80% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateY(0);
|
||||
transform: translateY(0); }
|
||||
90% {
|
||||
opacity: .5; }
|
||||
100% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(145%);
|
||||
transform: translateY(145%); } }
|
||||
|
||||
@-moz-keyframes ball-fall {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-moz-transform: translateY(-145%);
|
||||
transform: translateY(-145%); }
|
||||
10% {
|
||||
opacity: .5; }
|
||||
20% {
|
||||
opacity: 1;
|
||||
-moz-transform: translateY(0);
|
||||
transform: translateY(0); }
|
||||
80% {
|
||||
opacity: 1;
|
||||
-moz-transform: translateY(0);
|
||||
transform: translateY(0); }
|
||||
90% {
|
||||
opacity: .5; }
|
||||
100% {
|
||||
opacity: 0;
|
||||
-moz-transform: translateY(145%);
|
||||
transform: translateY(145%); } }
|
||||
|
||||
@-o-keyframes ball-fall {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-o-transform: translateY(-145%);
|
||||
transform: translateY(-145%); }
|
||||
10% {
|
||||
opacity: .5; }
|
||||
20% {
|
||||
opacity: 1;
|
||||
-o-transform: translateY(0);
|
||||
transform: translateY(0); }
|
||||
80% {
|
||||
opacity: 1;
|
||||
-o-transform: translateY(0);
|
||||
transform: translateY(0); }
|
||||
90% {
|
||||
opacity: .5; }
|
||||
100% {
|
||||
opacity: 0;
|
||||
-o-transform: translateY(145%);
|
||||
transform: translateY(145%); } }
|
||||
|
||||
@keyframes ball-fall {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(-145%);
|
||||
-moz-transform: translateY(-145%);
|
||||
-o-transform: translateY(-145%);
|
||||
transform: translateY(-145%); }
|
||||
10% {
|
||||
opacity: .5; }
|
||||
20% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateY(0);
|
||||
-moz-transform: translateY(0);
|
||||
-o-transform: translateY(0);
|
||||
transform: translateY(0); }
|
||||
80% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateY(0);
|
||||
-moz-transform: translateY(0);
|
||||
-o-transform: translateY(0);
|
||||
transform: translateY(0); }
|
||||
90% {
|
||||
opacity: .5; }
|
||||
100% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(145%);
|
||||
-moz-transform: translateY(145%);
|
||||
-o-transform: translateY(145%);
|
||||
transform: translateY(145%); } }
|
|
@ -1,257 +1,262 @@
|
|||
/*--------------Tasks Widget--------------*/
|
||||
.task-content {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-content:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.tasks-widget .task-footer {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-footer:after,
|
||||
.tasks-widget .task-footer:before {
|
||||
content: "";
|
||||
display: table;
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
.tasks-widget .task-footer:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list {
|
||||
padding: 0;
|
||||
margin: 0 0 20px 0;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list > li {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li.last-line {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-bell {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-checkbox {
|
||||
float: left;
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title {
|
||||
overflow: hidden;
|
||||
height: 46px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title .task-value {
|
||||
position: absolute;
|
||||
left: 190px;
|
||||
right: 84px;
|
||||
top: 14px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title span {
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title .badge {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
top: -16px;
|
||||
left: -12px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title .hidden-phone {
|
||||
padding-top: 12px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title .hidden-phone > span {
|
||||
margin-right: 6px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title .hidden-phone button.btn-xs {
|
||||
font-size: 0.75rem;
|
||||
line-height: 1.5;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title .hidden-phone a.btn-xs {
|
||||
padding: 4px 5px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-config {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li .task-title.notifi .task-title-sp {
|
||||
max-width: 80px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li .task-title.notifi .task-value {
|
||||
left: 120px;
|
||||
right: 190px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li .task-title.notifi .task-time {
|
||||
position: absolute;
|
||||
right: 66px;
|
||||
top: 15px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li .task-title .task-title-sp {
|
||||
margin-right: 5px;
|
||||
max-width: 120px;
|
||||
margin-top: 14px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li.task-done .task-title-sp {
|
||||
text-decoration: line-through;
|
||||
color: #bbbbbb;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li.task-done {
|
||||
background: #f6f6f6;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li.task-done:hover {
|
||||
background: #f4f4f4;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li:hover {
|
||||
background: #f9f9f9;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li .task-config {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li:hover > .task-config {
|
||||
display: block;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li i {
|
||||
position: absolute;
|
||||
left: 6px;
|
||||
padding: 16px 10px;
|
||||
cursor: pointer;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
#sortable {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ui-sortable > li {
|
||||
padding-left: 35px;
|
||||
position: relative;
|
||||
background: #f5f6f8;
|
||||
margin-bottom: 2px;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.ui-sortable li.title {
|
||||
color: #0077de;
|
||||
background-color: #b5f1b6;
|
||||
padding: 10px 15px;
|
||||
}
|
||||
|
||||
.ui-sortable li.title:hover {
|
||||
background-color: #b5f1b6;
|
||||
}
|
||||
|
||||
.ui-sortable li.title:first-child {
|
||||
border-radius: 4px 4px 0 0;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-primary {
|
||||
border-left: 3px solid #41CAC0;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-success {
|
||||
border-left: 3px solid #78CD51;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-danger {
|
||||
border-left: 3px solid #FF6C60;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-warning {
|
||||
border-left: 3px solid #F1C500;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-info {
|
||||
border-left: 3px solid #58C9F3;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-inverse {
|
||||
border-left: 3px solid #BEC3C7;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-default {
|
||||
border-left: 3px solid #BEC3C7;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-Exception {
|
||||
border-left: 3px solid red;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-Message {
|
||||
border-left: 3px solid #00ff00;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-Task {
|
||||
border-left: 3px solid #2083a0;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-Notification {
|
||||
border-left: 3px solid #b7d8e2;
|
||||
}
|
||||
|
||||
.task-header {
|
||||
font-size: 14px !important;
|
||||
font-weight: 600;
|
||||
background-color: #5cb85c !important;
|
||||
color: #fff;
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
}
|
||||
|
||||
.task-oper {
|
||||
padding-top: 15px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
@media (max-width: 548px) {
|
||||
.tasks-widget .task-list li .task-title.notifi .task-value {
|
||||
right: 66px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li .task-title.notifi .task-time {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 375px) {
|
||||
.tasks-widget .task-list li > .task-title .task-value {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
/*--------------Tasks Widget--------------*/
|
||||
.task-content {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-content:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.tasks-widget .task-footer {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-footer:after,
|
||||
.tasks-widget .task-footer:before {
|
||||
content: "";
|
||||
display: table;
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
.tasks-widget .task-footer:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list {
|
||||
padding: 0;
|
||||
margin: 0 0 20px 0;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list > li {
|
||||
position: relative;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li.last-line {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-bell {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-checkbox {
|
||||
float: left;
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title {
|
||||
overflow: hidden;
|
||||
height: 46px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title .task-value {
|
||||
position: absolute;
|
||||
left: 190px;
|
||||
right: 84px;
|
||||
top: 15px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title span {
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title .badge {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
top: -19px;
|
||||
left: -12px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title .label-success {
|
||||
background-color: #5cb85c;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title .hidden-phone {
|
||||
padding-top: 12px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title .hidden-phone > span {
|
||||
margin-right: 6px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title .hidden-phone button.btn-xs {
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-title .hidden-phone a.btn-xs {
|
||||
padding: 4px 5px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li > .task-config {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li .task-title.notifi .task-title-sp {
|
||||
max-width: 80px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li .task-title.notifi .task-value {
|
||||
left: 120px;
|
||||
right: 190px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li .task-title.notifi .task-time {
|
||||
position: absolute;
|
||||
right: 66px;
|
||||
top: 15px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li .task-title .task-title-sp {
|
||||
margin-right: 5px;
|
||||
max-width: 120px;
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li.task-done .task-title-sp {
|
||||
text-decoration: line-through;
|
||||
color: #bbbbbb;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li.task-done {
|
||||
background: #f6f6f6;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li.task-done:hover {
|
||||
background: #f4f4f4;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li:hover {
|
||||
background: #f9f9f9;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li .task-config {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li:hover > .task-config {
|
||||
display: block;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li i {
|
||||
position: absolute;
|
||||
left: 6px;
|
||||
padding: 17px 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#sortable {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ui-sortable > li {
|
||||
padding-left: 35px;
|
||||
position: relative;
|
||||
background: #f5f6f8;
|
||||
margin-bottom: 2px;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.ui-sortable li.title {
|
||||
font-size: 14px;
|
||||
color: #0077de;
|
||||
background-color: #b5f1b6;
|
||||
padding: 10px 15px;
|
||||
}
|
||||
|
||||
.ui-sortable li.title:hover {
|
||||
background-color: #b5f1b6;
|
||||
}
|
||||
|
||||
.ui-sortable li.title:first-child {
|
||||
border-radius: 4px 4px 0 0;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-primary {
|
||||
border-left: 3px solid #41CAC0;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-success {
|
||||
border-left: 3px solid #78CD51;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-danger {
|
||||
border-left: 3px solid #FF6C60;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-warning {
|
||||
border-left: 3px solid #F1C500;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-info {
|
||||
border-left: 3px solid #58C9F3;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-inverse {
|
||||
border-left: 3px solid #BEC3C7;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-default {
|
||||
border-left: 3px solid #BEC3C7;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-Exception {
|
||||
border-left: 3px solid red;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-Message {
|
||||
border-left: 3px solid #00ff00;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-Task {
|
||||
border-left: 3px solid #2083a0;
|
||||
}
|
||||
|
||||
.ui-sortable li.list-Notification {
|
||||
border-left: 3px solid #b7d8e2;
|
||||
}
|
||||
|
||||
.task-header {
|
||||
font-size: 14px !important;
|
||||
font-weight: 600;
|
||||
background-color: #5cb85c !important;
|
||||
color: #fff;
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
}
|
||||
|
||||
.task-oper {
|
||||
padding-top: 15px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
@media (max-width: 548px) {
|
||||
.tasks-widget .task-list li .task-title.notifi .task-value {
|
||||
right: 66px;
|
||||
}
|
||||
|
||||
.tasks-widget .task-list li .task-title.notifi .task-time {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 375px) {
|
||||
.tasks-widget .task-list li > .task-title .task-value {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,153 @@
|
|||
using Bootstrap.Admin.Models;
|
||||
using System.Web.Mvc;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class AdminController : Controller
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Index()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Index"));
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Users()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Users"));
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Groups()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Groups"));
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Dicts()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Dicts"));
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Roles()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Roles"));
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Menus()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Menus"));
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Logs()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Logs"));
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult FAIcon()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/FAIcon"));
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[OutputCache(CacheProfile = "IconView")]
|
||||
[AllowAnonymous]
|
||||
public PartialViewResult IconView()
|
||||
{
|
||||
Response.Cache.SetOmitVaryStar(true);
|
||||
return PartialView("IconView");
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Settings()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Settings"));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Notifications()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Notifications"));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Profiles()
|
||||
{
|
||||
return View(new ProfilesModel("~/Admin/Profiles"));
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Exceptions()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Exceptions"));
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Messages()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Messages"));
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Tasks()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Tasks"));
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Mobile()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Mobile"));
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Api()
|
||||
{
|
||||
return View(new NavigatorBarModel("~/Admin/Api"));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,82 @@
|
|||
using Bootstrap.Admin.Models;
|
||||
using Bootstrap.DataAccess;
|
||||
using Bootstrap.Security;
|
||||
using Longbow.Security.Principal;
|
||||
using Longbow.Web.Mvc;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
public class DictsController : ApiController
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public QueryData<BootstrapDict> Get([FromUri]QueryDictOption value)
|
||||
{
|
||||
return value.RetrieveData();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public BootstrapDict Get(int id)
|
||||
{
|
||||
return DictHelper.RetrieveDicts().FirstOrDefault(t => t.Id == id);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
[HttpPost]
|
||||
public bool Post([FromBody]BootstrapDict value)
|
||||
{
|
||||
return DictHelper.SaveDict(value);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[AllowAnonymous]
|
||||
public IEnumerable<BootstrapDict> Post(int id, [FromBody]JObject value)
|
||||
{
|
||||
IEnumerable<BootstrapDict> ret = new List<BootstrapDict>();
|
||||
dynamic json = value;
|
||||
switch ((string)json.type)
|
||||
{
|
||||
case "category":
|
||||
ret = DictHelper.RetrieveCategories();
|
||||
break;
|
||||
case "css":
|
||||
ret = DictHelper.RetrieveWebCss();
|
||||
break;
|
||||
case "activeCss":
|
||||
ret = DictHelper.RetrieveActiveCss();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
[HttpDelete]
|
||||
public object Delete([FromBody]string value)
|
||||
{
|
||||
if (!LgbPrincipal.IsAdmin(User)) return new { result = false, msg = "当前用户权限不够" };
|
||||
var result = DictHelper.DeleteDict(value);
|
||||
return new { result = result, msg = result ? "成功!" : "失败" };
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
using Bootstrap.Admin.Models;
|
||||
using Bootstrap.DataAccess;
|
||||
using Longbow.Web.Mvc;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
public class ExceptionsController : ApiController
|
||||
{
|
||||
/// <summary>
|
||||
/// 显示所有异常
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public QueryData<Exceptions> Get([FromUri]QueryExceptionOption value)
|
||||
{
|
||||
return value.RetrieveData();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public IEnumerable<string> Post()
|
||||
{
|
||||
var filePath = HttpContext.Current.Server.MapPath("~/App_Data/ErrorLog");
|
||||
return Directory.GetFiles(filePath)
|
||||
.Where(f => Path.GetExtension(f).Equals(".log", System.StringComparison.OrdinalIgnoreCase))
|
||||
.Select(f => Path.GetFileNameWithoutExtension(f)).OrderByDescending(s => s);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPut]
|
||||
public string Put([FromBody]string fileName)
|
||||
{
|
||||
var logName = HttpContext.Current.Server.MapPath(string.Format("~/App_Data/ErrorLog/{0}.log", fileName));
|
||||
if (!File.Exists(logName)) return "无此日志文件";
|
||||
StringBuilder sb = new StringBuilder();
|
||||
using (StreamReader reader = new StreamReader(logName))
|
||||
{
|
||||
while (!reader.EndOfStream)
|
||||
{
|
||||
var line = reader.ReadLine().Replace("<", "<").Replace(">", ">");
|
||||
if (line == "General Information ") sb.AppendFormat("<h4><b>{0}</b></h4>", line);
|
||||
else if (line.StartsWith("TimeStamp:")) sb.AppendFormat("<div class='logTs'>{0}</div>", line);
|
||||
else if (line.EndsWith("Exception Information")) sb.AppendFormat("<div class='logExcep'>{0}</div>", line);
|
||||
else if (line.StartsWith("Message:")) sb.AppendFormat("<div class='logMsg'>{0}</div>", line);
|
||||
else if (line.StartsWith("ErrorSql:")) sb.AppendFormat("<div class='logSql'>{0}</div>", line);
|
||||
else if (line.StartsWith("Exception Type: Longbow.Data.DBAccessException")) sb.AppendFormat("<div class='logDbExcep'>{0}</div>", line);
|
||||
else if (line.StartsWith("StackTrace Information")) sb.AppendFormat("<b>{0}</b><br>", line);
|
||||
else sb.AppendFormat("{0}<br>", line);
|
||||
};
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,101 @@
|
|||
using Bootstrap.Admin.Models;
|
||||
using Bootstrap.DataAccess;
|
||||
using Longbow.Web.Mvc;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
public class GroupsController : ApiController
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public QueryData<Group> Get([FromUri]QueryGroupOption value)
|
||||
{
|
||||
return value.RetrieveData();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public Group Get(int id)
|
||||
{
|
||||
return GroupHelper.RetrieveGroups().FirstOrDefault(t => t.Id == id);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
[HttpPost]
|
||||
public bool Post([FromBody]Group value)
|
||||
{
|
||||
return GroupHelper.SaveGroup(value);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
[HttpDelete]
|
||||
public bool Delete([FromBody]string value)
|
||||
{
|
||||
return GroupHelper.DeleteGroup(value);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public IEnumerable<Group> Post(int id, [FromBody]JObject value)
|
||||
{
|
||||
var ret = new List<Group>();
|
||||
dynamic json = value;
|
||||
switch ((string)json.type)
|
||||
{
|
||||
case "user":
|
||||
ret = GroupHelper.RetrieveGroupsByUserId(id).ToList();
|
||||
break;
|
||||
case "role":
|
||||
ret = GroupHelper.RetrieveGroupsByRoleId(id).ToList();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut]
|
||||
public bool Put(int id, [FromBody]JObject value)
|
||||
{
|
||||
var ret = false;
|
||||
dynamic json = value;
|
||||
string groupIds = json.groupIds;
|
||||
switch ((string)json.type)
|
||||
{
|
||||
case "user":
|
||||
ret = GroupHelper.SaveGroupsByUserId(id, groupIds);
|
||||
break;
|
||||
case "role":
|
||||
ret = GroupHelper.SaveGroupsByRoleId(id, groupIds);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
using Bootstrap.Admin.Models;
|
||||
using Bootstrap.DataAccess;
|
||||
using Bootstrap.Security;
|
||||
using Longbow.Security.Principal;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Security;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class HomeController : Controller
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Index()
|
||||
{
|
||||
var v = new HeaderBarModel { HomeUrl = DictHelper.RetrieveHomeUrl() };
|
||||
return v.HomeUrl.StartsWith("~/") ? (ActionResult)View(v) : Redirect(v.HomeUrl);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ActionResult Lock()
|
||||
{
|
||||
FormsAuthentication.SignOut();
|
||||
var user = BootstrapUser.RetrieveUserByUserName(User.Identity.Name);
|
||||
return View(new LockModel
|
||||
{
|
||||
UserName = user.UserName,
|
||||
DisplayName = user.DisplayName,
|
||||
ReturnUrl = Url.Encode(Request.UrlReferrer == null ? FormsAuthentication.DefaultUrl : Request.UrlReferrer.AbsoluteUri)
|
||||
});
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="login"></param>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
public ActionResult Login(LoginModel login)
|
||||
{
|
||||
FormsAuthentication.SignOut();
|
||||
if (!string.IsNullOrEmpty(login.UserName) && (LgbPrincipal.Authenticate(login.UserName, login.Password) || BootstrapUser.Authenticate(login.UserName, login.Password)))
|
||||
{
|
||||
FormsAuthentication.RedirectFromLoginPage(login.UserName, login.Remember == "true");
|
||||
return new EmptyResult();
|
||||
}
|
||||
return View(login);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
public ActionResult Register(User p)
|
||||
{
|
||||
if (string.IsNullOrEmpty(p.UserName) || string.IsNullOrEmpty(p.Password) || string.IsNullOrEmpty(p.DisplayName) || string.IsNullOrEmpty(p.Description)) return View();
|
||||
p.UserStatus = 1;
|
||||
return UserHelper.SaveUser(p) ? (ActionResult)Redirect("~/Content/html/RegResult.html") : View();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
public ActionResult Mobile()
|
||||
{
|
||||
return View();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
using Bootstrap.Security;
|
||||
using Bootstrap.Security.Mvc;
|
||||
using Longbow.Caching;
|
||||
using Longbow.Security.Principal;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Web.Http;
|
||||
using System.Web.Security;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class LoginController : ApiController
|
||||
{
|
||||
[HttpGet]
|
||||
public LoginInfo Get()
|
||||
{
|
||||
var token = Request.Headers.GetValues("Token").First();
|
||||
return new LoginInfo() { UserName = User.Identity.Name, Token = token };
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
[HttpPost]
|
||||
public LoginInfo Post([FromBody]JObject value)
|
||||
{
|
||||
dynamic user = value;
|
||||
string userName = user.userName;
|
||||
string password = user.password;
|
||||
if (LgbPrincipal.Authenticate(userName, password) || BootstrapUser.Authenticate(userName, password))
|
||||
{
|
||||
var token = CacheManager.AddOrUpdate(string.Format("WebApi-{0}", userName), k => new LoginInfo() { UserName = userName, Token = Guid.NewGuid().ToString() }, (k, info) => info, "WebApi");
|
||||
CacheManager.AddOrUpdate(token.Token, k => token, (k, info) => info, "Token");
|
||||
return token;
|
||||
}
|
||||
return new LoginInfo() { UserName = userName };
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
[HttpOptions]
|
||||
public string Options()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
using Bootstrap.Admin.Models;
|
||||
using Bootstrap.DataAccess;
|
||||
using Longbow.Web.Mvc;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
public class LogsController : ApiController
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public QueryData<Log> Get([FromUri]QueryLogOption value)
|
||||
{
|
||||
return value.RetrieveData();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public Log Get(int id)
|
||||
{
|
||||
return LogHelper.RetrieveLogs().FirstOrDefault(t => t.Id == id);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public bool Post([FromBody]Log value)
|
||||
{
|
||||
var request = HttpContext.Current.Request;
|
||||
value.ClientAgent = request.UserAgent;
|
||||
value.ClientIp = request.UserHostAddress;
|
||||
value.UserName = HttpContext.Current.User.Identity.Name;
|
||||
return LogHelper.SaveLog(value);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
using Bootstrap.Admin.Models;
|
||||
using Bootstrap.DataAccess;
|
||||
using Bootstrap.Security;
|
||||
using Longbow.Web.Mvc;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
public class MenusController : ApiController
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public QueryData<BootstrapMenu> Get([FromUri]QueryMenuOption value)
|
||||
{
|
||||
return value.RetrieveData(User.Identity.Name);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
[HttpPost]
|
||||
public bool Post([FromBody]BootstrapMenu value)
|
||||
{
|
||||
return MenuHelper.SaveMenu(value);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
[HttpDelete]
|
||||
public bool Delete([FromBody]string value)
|
||||
{
|
||||
return MenuHelper.DeleteMenu(value);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public IEnumerable<BootstrapMenu> Post(int id, [FromBody]JObject value)
|
||||
{
|
||||
var ret = new List<BootstrapMenu>();
|
||||
dynamic json = value;
|
||||
switch ((string)json.type)
|
||||
{
|
||||
case "role":
|
||||
ret = MenuHelper.RetrieveMenusByRoleId(id).ToList();
|
||||
break;
|
||||
case "user":
|
||||
ret = BootstrapMenu.RetrieveAllMenus(User.Identity.Name).ToList();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut]
|
||||
public bool Put(int id, [FromBody]JObject value)
|
||||
{
|
||||
var ret = false;
|
||||
dynamic json = value;
|
||||
string menuIds = json.menuIds.ToString();
|
||||
switch ((string)json.type)
|
||||
{
|
||||
case "role":
|
||||
ret = MenuHelper.SaveMenusByRoleId(id, menuIds);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
using Bootstrap.Admin.Models;
|
||||
using Bootstrap.DataAccess;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Http;
|
||||
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
public class MessagesController : ApiController
|
||||
{
|
||||
/// <summary>
|
||||
/// 根据Id返回不同的消息列表
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public IEnumerable<Message> Get(string id)
|
||||
{
|
||||
var ret = new List<Message>();
|
||||
switch (id)
|
||||
{
|
||||
case "inbox":
|
||||
ret = MessageHelper.Inbox(User.Identity.Name).ToList();
|
||||
break;
|
||||
case "sendmail":
|
||||
ret = MessageHelper.SendMail(User.Identity.Name).ToList();
|
||||
break;
|
||||
case "mark":
|
||||
ret = MessageHelper.Mark(User.Identity.Name).ToList();
|
||||
break;
|
||||
case "trash":
|
||||
ret = MessageHelper.Trash(User.Identity.Name).ToList();
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 返回各个消息列表的文件个数
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public MessageCountModel Get()
|
||||
{
|
||||
var mcm = new MessageCountModel
|
||||
{
|
||||
InboxCount = MessageHelper.Inbox(User.Identity.Name).Count(),
|
||||
SendmailCount = MessageHelper.SendMail(User.Identity.Name).Count(),
|
||||
MarkCount = MessageHelper.Mark(User.Identity.Name).Count(),
|
||||
TrashCount = MessageHelper.Trash(User.Identity.Name).Count()
|
||||
};
|
||||
return mcm;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,136 @@
|
|||
using Bootstrap.DataAccess;
|
||||
using System.Collections.Generic;
|
||||
using System.Web.Http;
|
||||
using System.Linq;
|
||||
using System;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
public class NotificationsController : ApiController
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public Notifications Get()
|
||||
{
|
||||
var ret = new Notifications();
|
||||
// New Users
|
||||
var user = UserHelper.RetrieveNewUsers();
|
||||
ret.Users = user.Take(6).ToList();
|
||||
ret.Users.AsParallel().ForAll(n =>
|
||||
{
|
||||
var ts = DateTime.Now - n.RegisterTime;
|
||||
if (ts.TotalMinutes < 5) n.Period = "刚刚";
|
||||
else if (ts.Days > 0) n.Period = string.Format("{0}天", ts.Days);
|
||||
else if (ts.Hours > 0) n.Period = string.Format("{0}小时", ts.Hours);
|
||||
else if (ts.Minutes > 0) n.Period = string.Format("{0}分钟", ts.Minutes);
|
||||
});
|
||||
ret.NewUsersCount = user.Count();
|
||||
|
||||
// Tasks
|
||||
var task = TaskHelper.RetrieveTasks();
|
||||
ret.Tasks = task.Take(6).ToList();
|
||||
ret.TasksCount = task.Count();
|
||||
|
||||
//Message
|
||||
var message = MessageHelper.RetrieveMessagesHeader(User.Identity.Name);
|
||||
ret.Messages = message.Take(6).ToList();
|
||||
ret.Messages.AsParallel().ForAll(m => m.FromIcon = Url.Content(m.FromIcon));
|
||||
ret.MessagesCount = message.Count();
|
||||
|
||||
//Apps
|
||||
var apps = ExceptionHelper.RetrieveExceptions().Where(n => n.ExceptionType != "Longbow.Data.DBAccessException");
|
||||
ret.Apps = apps.Take(6).ToList();
|
||||
ret.Apps.AsParallel().ForAll(n =>
|
||||
{
|
||||
n.ExceptionType = n.ExceptionType.Split('.').Last();
|
||||
var ts = DateTime.Now - n.LogTime;
|
||||
if (ts.TotalMinutes < 5) n.Period = "刚刚";
|
||||
else if (ts.Days > 0) n.Period = string.Format("{0}天", ts.Days);
|
||||
else if (ts.Hours > 0) n.Period = string.Format("{0}小时", ts.Hours);
|
||||
else if (ts.Minutes > 0) n.Period = string.Format("{0}分钟", ts.Minutes);
|
||||
});
|
||||
ret.AppExceptionsCount = apps.Count();
|
||||
|
||||
//Dbs
|
||||
var dbs = ExceptionHelper.RetrieveExceptions().Where(n => n.ExceptionType == "Longbow.Data.DBAccessException");
|
||||
ret.Dbs = dbs.Take(6).ToList();
|
||||
ret.Dbs.AsParallel().ForAll(n =>
|
||||
{
|
||||
var ts = DateTime.Now - n.LogTime;
|
||||
if (ts.TotalMinutes < 5) n.Period = "刚刚";
|
||||
else if (ts.Days > 0) n.Period = string.Format("{0}天", ts.Days);
|
||||
else if (ts.Hours > 0) n.Period = string.Format("{0}小时", ts.Hours);
|
||||
else if (ts.Minutes > 0) n.Period = string.Format("{0}分钟", ts.Minutes);
|
||||
});
|
||||
ret.DbExceptionsCount = dbs.Count();
|
||||
return ret;
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public Notifications Get(string id)
|
||||
{
|
||||
var ret = new Notifications();
|
||||
if (id == "newusers" || id == "all") ret.Users = UserHelper.RetrieveNewUsers().OrderByDescending(u => u.RegisterTime).ToList();
|
||||
return ret;
|
||||
}
|
||||
|
||||
public class Notifications
|
||||
{
|
||||
public Notifications()
|
||||
{
|
||||
Users = new List<User>();
|
||||
Apps = new List<Exceptions>();
|
||||
Dbs = new List<Exceptions>();
|
||||
Tasks = new List<Task>();
|
||||
Messages = new List<Message>();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<User> Users { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<Exceptions> Apps { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<Exceptions> Dbs { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<Task> Tasks { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<Message> Messages { get; set; }
|
||||
/// <summary>
|
||||
/// 获得/设置 消息数量
|
||||
/// </summary>
|
||||
public int MessagesCount { get; set; }
|
||||
/// <summary>
|
||||
/// 获得/设置 新用户数量
|
||||
/// </summary>
|
||||
public int NewUsersCount { get; set; }
|
||||
/// <summary>
|
||||
/// 获取/设置 任务数量
|
||||
/// </summary>
|
||||
public int TasksCount { get; set; }
|
||||
/// <summary>
|
||||
/// 获取/设置 应用程序错误数量
|
||||
/// </summary>
|
||||
public int AppExceptionsCount { get; set; }
|
||||
/// <summary>
|
||||
/// 获取/设置 数据库错误数量
|
||||
/// </summary>
|
||||
public int DbExceptionsCount { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
using Bootstrap.DataAccess;
|
||||
using Longbow.ExceptionManagement;
|
||||
using Longbow.Security.Principal;
|
||||
using System;
|
||||
using System.Collections.Specialized;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
public class ProfilesController : ApiController
|
||||
{
|
||||
[HttpPost]
|
||||
public string Post()
|
||||
{
|
||||
var ret = string.Empty;
|
||||
var userName = User.Identity.Name;
|
||||
if (LgbPrincipal.IsWebAdmin(userName)) userName = "default";
|
||||
var files = HttpContext.Current.Request.Files;
|
||||
if (files.Count > 0)
|
||||
{
|
||||
var webSiteUrl = DictHelper.RetrieveIconFolderPath().Code;
|
||||
var fileName = string.Format("{0}{1}", userName, Path.GetExtension(files[0].FileName));
|
||||
var fileUrl = string.Format("{0}{1}", webSiteUrl, fileName);
|
||||
var filePath = HttpContext.Current.Server.MapPath(fileUrl);
|
||||
var fileFolder = Path.GetDirectoryName(filePath);
|
||||
try
|
||||
{
|
||||
if (!Directory.Exists(fileFolder)) Directory.CreateDirectory(fileFolder);
|
||||
files[0].SaveAs(filePath);
|
||||
ret = string.Format("{0}?q={1}", Url.Content(fileUrl), DateTime.Now.Ticks);
|
||||
UserHelper.SaveUserIconByName(userName, fileName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
var nv = new NameValueCollection();
|
||||
nv.Add("UpLoadFileName", filePath);
|
||||
ExceptionManager.Publish(ex, nv);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
using Bootstrap.Admin.Models;
|
||||
using Bootstrap.DataAccess;
|
||||
using Longbow.Web.Mvc;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Http;
|
||||
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
public class RolesController : ApiController
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public QueryData<Role> Get([FromUri]QueryRoleOption value)
|
||||
{
|
||||
return value.RetrieveData();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public IEnumerable<Role> Post(int id, [FromBody]JObject value)
|
||||
{
|
||||
var ret = new List<Role>();
|
||||
dynamic json = value;
|
||||
switch ((string)json.type)
|
||||
{
|
||||
case "user":
|
||||
ret = RoleHelper.RetrieveRolesByUserId(id).ToList();
|
||||
break;
|
||||
case "group":
|
||||
ret = RoleHelper.RetrieveRolesByGroupId(id).ToList();
|
||||
break;
|
||||
case "menu":
|
||||
ret = RoleHelper.RetrieveRolesByMenuId(id).ToList();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>根据GroupID获取
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut]
|
||||
public bool Put(int id, [FromBody]JObject value)
|
||||
{
|
||||
var ret = false;
|
||||
dynamic json = value;
|
||||
string roleIds = json.roleIds;
|
||||
switch ((string)json.type)
|
||||
{
|
||||
case "user":
|
||||
ret = RoleHelper.SaveRolesByUserId(id, roleIds);
|
||||
break;
|
||||
case "group":
|
||||
ret = RoleHelper.SaveRolesByGroupId(id, roleIds);
|
||||
break;
|
||||
case "menu":
|
||||
ret = RoleHelper.SavaRolesByMenuId(id, roleIds);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
[HttpPost]
|
||||
public bool Post([FromBody]Role value)
|
||||
{
|
||||
return RoleHelper.SaveRole(value);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
[HttpDelete]
|
||||
public bool Delete([FromBody]string value)
|
||||
{
|
||||
return RoleHelper.DeleteRole(value);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
using Bootstrap.DataAccess;
|
||||
using Longbow.Caching.Configuration;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class SettingsController : ApiController
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public bool Post([FromBody]JObject value)
|
||||
{
|
||||
//保存个性化设置
|
||||
dynamic json = value;
|
||||
return DictHelper.SaveSettings((string)json.name, (string)json.code, (string)json.category);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
[HttpGet]
|
||||
public IEnumerable<CacheListElement> Get([FromUri]JObject value)
|
||||
{
|
||||
var section = CacheListSection.GetSection();
|
||||
return section.Items.Where(item => item.Enabled);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
using Bootstrap.DataAccess;
|
||||
using System.Collections.Generic;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class TasksController : ApiController
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public IEnumerable<Task> Get()
|
||||
{
|
||||
return TaskHelper.RetrieveTasks();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,158 @@
|
|||
using Bootstrap.Admin.Models;
|
||||
using Bootstrap.DataAccess;
|
||||
using Bootstrap.Security;
|
||||
using Longbow.Security.Principal;
|
||||
using Longbow.Web.Mvc;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class UsersController : ApiController
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public QueryData<User> Get([FromUri]QueryUserOption value)
|
||||
{
|
||||
return value.RetrieveData();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPut]
|
||||
public bool Put([FromBody]User value)
|
||||
{
|
||||
if(value.UserStatus == 3)
|
||||
{
|
||||
return UserHelper.SaveUserCssByName(value.UserName, value.Css);
|
||||
}
|
||||
if (value.UserStatus == 9)
|
||||
{
|
||||
// vlaidate userName
|
||||
return BootstrapUser.RetrieveUserByUserName(value.UserName) == null && !UserHelper.RetrieveNewUsers().Any(u => u.UserName == value.UserName);
|
||||
}
|
||||
var ret = false;
|
||||
if (value.UserName.Equals(User.Identity.Name, System.StringComparison.OrdinalIgnoreCase) || LgbPrincipal.IsAdmin(User))
|
||||
{
|
||||
if (value.UserStatus == 1)
|
||||
ret = BootstrapUser.SaveUserInfoByName(value.UserName, value.DisplayName);
|
||||
else if (value.UserStatus == 2)
|
||||
ret = BootstrapUser.ChangePassword(value.UserName, value.Password, value.NewPassword);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public IEnumerable<User> Post(int id, [FromBody]JObject value)
|
||||
{
|
||||
var ret = new List<User>();
|
||||
dynamic json = value;
|
||||
switch ((string)json.type)
|
||||
{
|
||||
case "role":
|
||||
ret = UserHelper.RetrieveUsersByRoleId(id).ToList();
|
||||
break;
|
||||
case "group":
|
||||
ret = UserHelper.RetrieveUsersByGroupId(id).ToList();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="userName"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public BootstrapUser Get(string userName)
|
||||
{
|
||||
return BootstrapUser.RetrieveUserByUserName(userName);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
[HttpPost]
|
||||
public bool Post([FromBody]User value)
|
||||
{
|
||||
value.Description = string.Format("管理员{0}创建用户", User.Identity.Name);
|
||||
value.ApprovedBy = User.Identity.Name;
|
||||
return UserHelper.SaveUser(value);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut]
|
||||
public bool Put(int id, [FromBody]JObject value)
|
||||
{
|
||||
var ret = false;
|
||||
dynamic json = value;
|
||||
string userIds = json.userIds;
|
||||
switch ((string)json.type)
|
||||
{
|
||||
case "role":
|
||||
ret = UserHelper.SaveUsersByRoleId(id, userIds);
|
||||
break;
|
||||
case "group":
|
||||
ret = UserHelper.SaveUsersByGroupId(id, userIds);
|
||||
break;
|
||||
case "user":
|
||||
// 此时 userIds 存储的信息是操作结果 1 标示同意 0 标示拒绝
|
||||
var user = new User() { Id = id, UserStatus = 2 };
|
||||
if (userIds == "1")
|
||||
{
|
||||
user.ApprovedBy = User.Identity.Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
user.RejectedReason = "无原因";
|
||||
user.RejectedBy = User.Identity.Name;
|
||||
}
|
||||
ret = UserHelper.SaveUser(user);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
[HttpDelete]
|
||||
public bool Delete([FromBody]string value)
|
||||
{
|
||||
return UserHelper.DeleteUser(value);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
[HttpOptions]
|
||||
public string Options()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
using Bootstrap.DataAccess;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace Bootstrap.Admin.Controllers
|
||||
{
|
||||
public class WSController : ApiController
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public List<MessageBody> Get()
|
||||
{
|
||||
return NotificationHelper.MessagePool.ToList();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<%@ Application Codebehind="Global.asax.cs" Inherits="Bootstrap.Admin.Global" Language="C#" %>
|
|
@ -0,0 +1,20 @@
|
|||
using System;
|
||||
using System.Web;
|
||||
using System.Web.Http;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Routing;
|
||||
|
||||
namespace Bootstrap.Admin
|
||||
{
|
||||
public class Global : HttpApplication
|
||||
{
|
||||
void Application_Start(object sender, EventArgs e)
|
||||
{
|
||||
// Code that runs on application startup
|
||||
AreaRegistration.RegisterAllAreas();
|
||||
GlobalConfiguration.Configure(WebApiConfig.Register);
|
||||
RouteConfig.RegisterRoutes(RouteTable.Routes);
|
||||
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
using Bootstrap.DataAccess;
|
||||
using Bootstrap.Security;
|
||||
using System.Web;
|
||||
|
||||
namespace Bootstrap.Admin.Models
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class HeaderBarModel : ModelBase
|
||||
{
|
||||
public HeaderBarModel()
|
||||
{
|
||||
var user = BootstrapUser.RetrieveUserByUserName(HttpContext.Current.User.Identity.Name);
|
||||
Icon = user.Icon;
|
||||
DisplayName = user.DisplayName;
|
||||
UserName = user.UserName;
|
||||
Css = user.Css;
|
||||
}
|
||||
public string UserName { get; private set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string DisplayName { get; private set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string HomeUrl { get; set; }
|
||||
/// <summary>
|
||||
/// 获得/设置 用户头像地址
|
||||
/// </summary>
|
||||
public string Icon { get; private set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Css { get; private set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
namespace Bootstrap.Admin.Models
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class LockModel : LoginModel
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string DisplayName { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string ReturnUrl { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
namespace Bootstrap.Admin.Models
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class LoginModel : ModelBase
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string UserName { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Password { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Remember { get; set; }
|
||||
}
|
||||
}
|
|
@ -1,28 +1,24 @@
|
|||
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
|
||||
// Licensed under the LGPL License, Version 3.0. See License.txt in the project root for license information.
|
||||
// Website: https://admin.blazor.zone
|
||||
|
||||
namespace Bootstrap.Admin.Models
|
||||
namespace Bootstrap.Admin.Models
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class MessageCountModel
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int InboxCount { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int SendmailCount { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int MarkCount { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int TrashCount { get; set; }
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
using Bootstrap.DataAccess;
|
||||
|
||||
namespace Bootstrap.Admin.Models
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class ModelBase
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ModelBase()
|
||||
{
|
||||
Title = DictHelper.RetrieveWebTitle();
|
||||
Footer = DictHelper.RetrieveWebFooter();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Title { get; private set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Footer { get; private set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
using Bootstrap.DataAccess;
|
||||
using Bootstrap.Security;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Bootstrap.Admin.Models
|
||||
{
|
||||
public class NavigatorBarModel : HeaderBarModel
|
||||
{
|
||||
public NavigatorBarModel(string url)
|
||||
{
|
||||
Navigations = BootstrapMenu.RetrieveSystemMenus(UserName, url);
|
||||
Applications = DictHelper.RetrieveApps();
|
||||
HomeUrl = "~/Admin/Index";
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public IEnumerable<BootstrapMenu> Navigations { get; private set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public IEnumerable<KeyValuePair<string, string>> Applications { get; private set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
using Bootstrap.DataAccess;
|
||||
using Bootstrap.Security;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
|
||||
namespace Bootstrap.Admin.Models
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class ProfilesModel : NavigatorBarModel
|
||||
{
|
||||
/// <summary>
|
||||
/// 获得/设置 头像文件大小
|
||||
/// </summary>
|
||||
public long Size { get; private set; }
|
||||
/// <summary>
|
||||
/// 获得 系统配置的所有样式表
|
||||
/// </summary>
|
||||
public IEnumerable<BootstrapDict> Csss { get; private set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="url"></param>
|
||||
public ProfilesModel(string url)
|
||||
: base(url)
|
||||
{
|
||||
var fileName = HttpContext.Current.Server.MapPath(Icon);
|
||||
if (File.Exists(fileName))
|
||||
{
|
||||
Size = new FileInfo(fileName).Length;
|
||||
}
|
||||
|
||||
Csss = DictHelper.RetrieveWebCss();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,81 +1,65 @@
|
|||
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
|
||||
// Licensed under the LGPL License, Version 3.0. See License.txt in the project root for license information.
|
||||
// Website: https://admin.blazor.zone
|
||||
|
||||
using Bootstrap.DataAccess;
|
||||
using Bootstrap.Security;
|
||||
using Longbow.Web.Mvc;
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
namespace Bootstrap.Admin.Query
|
||||
{
|
||||
/// <summary>
|
||||
/// 字典表查询类
|
||||
/// </summary>
|
||||
public class QueryDictOption : PaginationOption
|
||||
{
|
||||
/// <summary>
|
||||
/// 字典分项
|
||||
/// </summary>
|
||||
public string? Category { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 字典名称
|
||||
/// </summary>
|
||||
public string? Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 字典种类
|
||||
/// </summary>
|
||||
public string? Define { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 字典表查询
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public QueryData<BootstrapDict> RetrieveData()
|
||||
{
|
||||
if (string.IsNullOrEmpty(Order)) Order = "asc";
|
||||
if (string.IsNullOrEmpty(Sort)) Sort = "Category";
|
||||
|
||||
var data = DictHelper.RetrieveDicts();
|
||||
if (!string.IsNullOrEmpty(Category))
|
||||
{
|
||||
data = data.Where(t => t.Category.Contains(Category, StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
if (!string.IsNullOrEmpty(Name))
|
||||
{
|
||||
data = data.Where(t => t.Name.Contains(Name, StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
if (!string.IsNullOrEmpty(Define))
|
||||
{
|
||||
data = data.Where(t => t.Define.ToString() == Define);
|
||||
}
|
||||
if (!string.IsNullOrEmpty(Search))
|
||||
{
|
||||
data = data.Where(t => t.Category.Contains(Search, StringComparison.OrdinalIgnoreCase) || t.Name.Contains(Search, StringComparison.OrdinalIgnoreCase) || t.Code.Contains(Search, StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
var ret = new QueryData<BootstrapDict>();
|
||||
ret.total = data.Count();
|
||||
// 通过option.Sort属性判断对那列进行排序
|
||||
switch (Sort)
|
||||
{
|
||||
case "Category":
|
||||
data = Order == "asc" ? data.OrderBy(t => t.Category) : data.OrderByDescending(t => t.Category);
|
||||
break;
|
||||
case "Name":
|
||||
data = Order == "asc" ? data.OrderBy(t => t.Name) : data.OrderByDescending(t => t.Name);
|
||||
break;
|
||||
case "Code":
|
||||
data = Order == "asc" ? data.OrderBy(t => t.Code) : data.OrderByDescending(t => t.Code);
|
||||
break;
|
||||
case "Define":
|
||||
data = Order == "asc" ? data.OrderBy(t => t.Define) : data.OrderByDescending(t => t.Define);
|
||||
break;
|
||||
}
|
||||
ret.rows = data.Skip(Offset).Take(Limit);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
using Bootstrap.DataAccess;
|
||||
using Bootstrap.Security;
|
||||
using Longbow.Web.Mvc;
|
||||
using System.Linq;
|
||||
|
||||
namespace Bootstrap.Admin.Models
|
||||
{
|
||||
public class QueryDictOption : PaginationOption
|
||||
{
|
||||
/// <summary>
|
||||
/// 字典分项
|
||||
/// </summary>
|
||||
public string Category { get; set; }
|
||||
/// <summary>
|
||||
/// 字典名称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
/// <summary>
|
||||
/// 字典种类
|
||||
/// </summary>
|
||||
public string Define { get; set; }
|
||||
/// <summary>
|
||||
/// 字典表查询
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public QueryData<BootstrapDict> RetrieveData()
|
||||
{
|
||||
var data = DictHelper.RetrieveDicts();
|
||||
if (!string.IsNullOrEmpty(Category))
|
||||
{
|
||||
data = data.Where(t => t.Category.Contains(Category));
|
||||
}
|
||||
if (!string.IsNullOrEmpty(Name))
|
||||
{
|
||||
data = data.Where(t => t.Name.Contains(Name));
|
||||
}
|
||||
if (!string.IsNullOrEmpty(Define))
|
||||
{
|
||||
data = data.Where(t => t.Define.ToString() == Define);
|
||||
}
|
||||
var ret = new QueryData<BootstrapDict>();
|
||||
ret.total = data.Count();
|
||||
// 通过option.Sort属性判断对那列进行排序
|
||||
switch (Sort)
|
||||
{
|
||||
case "Category":
|
||||
data = Order == "asc" ? data.OrderBy(t => t.Category) : data.OrderByDescending(t => t.Category);
|
||||
break;
|
||||
case "Name":
|
||||
data = Order == "asc" ? data.OrderBy(t => t.Name) : data.OrderByDescending(t => t.Name);
|
||||
break;
|
||||
case "Code":
|
||||
data = Order == "asc" ? data.OrderBy(t => t.Code) : data.OrderByDescending(t => t.Code);
|
||||
break;
|
||||
case "Define":
|
||||
data = Order == "asc" ? data.OrderBy(t => t.Define) : data.OrderByDescending(t => t.Define);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
ret.rows = data.Skip(Offset).Take(Limit);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
using Bootstrap.DataAccess;
|
||||
using Longbow.Web.Mvc;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
|
||||
namespace Bootstrap.Admin.Models
|
||||
{
|
||||
public class QueryExceptionOption : PaginationOption
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public DateTime StartTime { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public DateTime EndTime { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public QueryData<Exceptions> RetrieveData()
|
||||
{
|
||||
var data = ExceptionHelper.RetrieveExceptions();
|
||||
if (StartTime > DateTime.MinValue)
|
||||
{
|
||||
data = data.Where(t => t.LogTime > StartTime);
|
||||
}
|
||||
if (EndTime > DateTime.MinValue)
|
||||
{
|
||||
data = data.Where(t => t.LogTime < EndTime.AddDays(1));
|
||||
}
|
||||
var ret = new QueryData<Exceptions>();
|
||||
ret.total = data.Count();
|
||||
switch (Sort)
|
||||
{
|
||||
case "ErrorPage":
|
||||
data = Order == "asc" ? data.OrderBy(t => t.ErrorPage) : data.OrderByDescending(t => t.ErrorPage);
|
||||
break;
|
||||
case "UserID":
|
||||
data = Order == "asc" ? data.OrderBy(t => t.UserId) : data.OrderByDescending(t => t.UserId);
|
||||
break;
|
||||
case "UserIp":
|
||||
data = Order == "asc" ? data.OrderBy(t => t.UserIp) : data.OrderByDescending(t => t.UserIp);
|
||||
break;
|
||||
case "LogTime":
|
||||
data = Order == "asc" ? data.OrderBy(t => t.LogTime) : data.OrderByDescending(t => t.LogTime);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
ret.rows = data.Skip(Offset).Take(Limit);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
using Bootstrap.DataAccess;
|
||||
using Longbow.Web.Mvc;
|
||||
using System.Linq;
|
||||
|
||||
namespace Bootstrap.Admin.Models
|
||||
{
|
||||
public class QueryGroupOption : PaginationOption
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string GroupName { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Description { get; set; }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public QueryData<Group> RetrieveData()
|
||||
{
|
||||
// int limit, int offset, string name, string price, string sort, string order
|
||||
var data = GroupHelper.RetrieveGroups();
|
||||
if (!string.IsNullOrEmpty(GroupName))
|
||||
{
|
||||
data = data.Where(t => t.GroupName.Contains(GroupName));
|
||||
}
|
||||
if (!string.IsNullOrEmpty(Description))
|
||||
{
|
||||
data = data.Where(t => t.Description.Contains(Description));
|
||||
}
|
||||
var ret = new QueryData<Group>();
|
||||
ret.total = data.Count();
|
||||
data = Order == "asc" ? data.OrderBy(t => t.GroupName) : data.OrderByDescending(t => t.GroupName);
|
||||
ret.rows = data.Skip(Offset).Take(Limit);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|