",
7 | "homepage": "http://bootflat.github.com/",
8 | "keywords": [
9 | "mobile",
10 | "html5",
11 | "css3",
12 | "scss",
13 | "bootflat",
14 | "bootstrap",
15 | "flat",
16 | "flat ui",
17 | "ui"
18 | ],
19 | "bugs": {
20 | "url": "https://github.com/bootflat/bootflat.github.io/issues"
21 | },
22 | "license": "MIT",
23 | "repository": {
24 | "type": "git",
25 | "url": "https://github.com/bootflat/bootflat.github.io.git"
26 | },
27 | "devDependencies": {
28 | "grunt": "^0.4.5",
29 | "grunt-contrib-clean": "^0.6.0",
30 | "grunt-contrib-csslint": "^0.3.1",
31 | "grunt-contrib-cssmin": "~0.9.0",
32 | "grunt-contrib-htmlmin": "^0.3.0",
33 | "grunt-contrib-imagemin": "^0.9.2",
34 | "grunt-contrib-jshint": "^0.10.0",
35 | "grunt-contrib-sass": "~0.7.3",
36 | "grunt-contrib-uglify": "~0.4.0",
37 | "grunt-csscomb": "^3.0.0",
38 | "grunt-html-validation": "^0.1.18",
39 | "grunt-sed": "^0.1.1",
40 | "load-grunt-tasks": "^1.0.0",
41 | "time-grunt": "^1.0.0"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/static/temp/flat/.editorconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 |
3 | root = true
4 |
5 | [*]
6 | indent_style = space
7 | indent_size = 2
8 | end_of_line = lf
9 | charset = utf-8
10 | trim_trailing_whitespace = true
11 | insert_final_newline = true
12 |
13 | [*.py]
14 | indent_size = 4
--------------------------------------------------------------------------------
/app/static/temp/flat/.gitignore:
--------------------------------------------------------------------------------
1 | # Ignore docs files
2 | _gh_pages
3 | _site
4 | .ruby-version
5 |
6 | # Numerous always-ignore extensions
7 | *.diff
8 | *.err
9 | *.orig
10 | *.log
11 | *.rej
12 | *.swo
13 | *.swp
14 | *.zip
15 | *.vi
16 | *~
17 |
18 | # OS or Editor folders
19 | .DS_Store
20 | ._*
21 | Thumbs.db
22 | .cache
23 | .project
24 | .settings
25 | .tmproj
26 | *.esproj
27 | nbproject
28 | *.sublime-project
29 | *.sublime-workspace
30 | .idea
31 | .local
32 | ehthumbs.db
33 | Desktop.ini
34 | $RECYCLE.BIN/
35 | .AppleDouble
36 | .LSOverride
37 | Icon
38 | .Spotlight-V100
39 | .Trashes
40 | node_server.js
41 |
42 | # Komodo
43 | *.komodoproject
44 | .komodotools
45 |
46 |
47 | # Folders to ignore
48 | node_modules
49 | bower_components
50 |
--------------------------------------------------------------------------------
/app/static/temp/flat/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013-2016 Designmodo
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a
4 | copy of this software and associated documentation files (the "Software"),
5 | to deal in the Software without restriction, including without limitation
6 | the rights to use, copy, modify, merge, publish, distribute, sublicense,
7 | and/or sell copies of the Software, and to permit persons to whom the
8 | Software is furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
14 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
19 | DEALINGS IN THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/app/static/temp/flat/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flat-ui",
3 | "main": [
4 | "less/flat-ui.less",
5 | "dist/css/flat-ui.css",
6 | "dist/js/flat-ui.js",
7 | "dist/fonts/glyphicons/flat-ui-icons-regular.eot",
8 | "dist/fonts/glyphicons/flat-ui-icons-regular.svg",
9 | "dist/fonts/glyphicons/flat-ui-icons-regular.ttf",
10 | "dist/fonts/glyphicons/flat-ui-icons-regular.woff"
11 | ],
12 | "ignore": [
13 | ".*"
14 | ],
15 | "devDependencies": {
16 | "jquery": "~1.11.1",
17 | "jquery-ui": "~1.10.4",
18 | "bootstrap": "~3.2.0",
19 | "bootstrap-switch": "~3.0.2",
20 | "holderjs": "~2.4.0",
21 | "html5shiv": "~3.7.2",
22 | "jquery-ui-touch-punch": "*",
23 | "respond": "~1.4.2",
24 | "typeahead.js": "~0.10.5",
25 | "google-code-prettify": "~1.0.3",
26 | "bootstrap-tagsinput": "~0.4.2",
27 | "select2": "~3.5.1"
28 | },
29 | "dependencies": {
30 | "videojs": "~4.7.2"
31 | },
32 | "resolutions": {
33 | "jquery": "~1.11.1"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/static/temp/flat/css/mixins.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/css/mixins.css
--------------------------------------------------------------------------------
/app/static/temp/flat/css/variables.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/css/variables.css
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/css/css/prettyprint.css:
--------------------------------------------------------------------------------
1 | /* Prettyfy Theme */
2 | .prettyprint {
3 | background-color: #F7F7F9;
4 | font-family: Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Consolas, monospace;
5 | border: 2px solid #E1E1E8;
6 | padding: 15px 21px;
7 | }
8 | .pln {
9 | color: #333333;
10 | }
11 | @media screen {
12 | .str {
13 | color: #dd1144;
14 | }
15 | .kwd {
16 | color: #333333;
17 | }
18 | .com {
19 | color: #999988;
20 | }
21 | .typ {
22 | color: #445588;
23 | }
24 | .lit {
25 | color: #445588;
26 | }
27 | .pun {
28 | color: #333333;
29 | }
30 | .opn {
31 | color: #333333;
32 | }
33 | .clo {
34 | color: #333333;
35 | }
36 | .tag {
37 | color: navy;
38 | }
39 | .atn {
40 | color: teal;
41 | }
42 | .atv {
43 | color: #dd1144;
44 | }
45 | .dec {
46 | color: #333333;
47 | }
48 | .var {
49 | color: teal;
50 | }
51 | .fun {
52 | color: #990000;
53 | }
54 | }
55 | @media print, projection {
56 | .str {
57 | color: #006600;
58 | }
59 | .kwd {
60 | color: #006;
61 | font-weight: bold;
62 | }
63 | .com {
64 | color: #600;
65 | font-style: italic;
66 | }
67 | .typ {
68 | color: #404;
69 | font-weight: bold;
70 | }
71 | .lit {
72 | color: #004444;
73 | }
74 | .pun,
75 | .opn,
76 | .clo {
77 | color: #444400;
78 | }
79 | .tag {
80 | color: #006;
81 | font-weight: bold;
82 | }
83 | .atn {
84 | color: #440044;
85 | }
86 | .atv {
87 | color: #006600;
88 | }
89 | }
90 | /* Specify class=linenums on a pre to get line numbering */
91 | ol.linenums {
92 | margin-top: 0;
93 | margin-bottom: 0;
94 | }
95 |
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/css/src/prettyprint.less:
--------------------------------------------------------------------------------
1 | /* Prettyfy Theme */
2 | .prettyprint {
3 | background-color: #F7F7F9;
4 | font-family: Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Consolas, monospace;
5 | border: 2px solid #E1E1E8;
6 | padding: 15px 21px;
7 | }
8 |
9 | .pln {
10 | color: #333333;
11 | }
12 |
13 | @media screen {
14 | .str {
15 | color: #dd1144;
16 | }
17 |
18 | .kwd {
19 | color: #333333;
20 | }
21 |
22 | .com {
23 | color: #999988;
24 | }
25 |
26 | .typ {
27 | color: #445588;
28 | }
29 |
30 | .lit {
31 | color: #445588;
32 | }
33 |
34 | .pun {
35 | color: #333333;
36 | }
37 |
38 | .opn {
39 | color: #333333;
40 | }
41 |
42 | .clo {
43 | color: #333333;
44 | }
45 |
46 | .tag {
47 | color: navy;
48 | }
49 |
50 | .atn {
51 | color: teal;
52 | }
53 |
54 | .atv {
55 | color: #dd1144;
56 | }
57 |
58 | .dec {
59 | color: #333333;
60 | }
61 |
62 | .var {
63 | color: teal;
64 | }
65 |
66 | .fun {
67 | color: #990000;
68 | }
69 | }
70 | @media print, projection {
71 | .str {
72 | color: #006600;
73 | }
74 |
75 | .kwd {
76 | color: #006;
77 | font-weight: bold;
78 | }
79 |
80 | .com {
81 | color: #600;
82 | font-style: italic;
83 | }
84 |
85 | .typ {
86 | color: #404;
87 | font-weight: bold;
88 | }
89 |
90 | .lit {
91 | color: #004444;
92 | }
93 |
94 | .pun, .opn, .clo {
95 | color: #444400;
96 | }
97 |
98 | .tag {
99 | color: #006;
100 | font-weight: bold;
101 | }
102 |
103 | .atn {
104 | color: #440044;
105 | }
106 |
107 | .atv {
108 | color: #006600;
109 | }
110 | }
111 | /* Specify class=linenums on a pre to get line numbering */
112 | ol.linenums {
113 | margin-top: 0;
114 | margin-bottom: 0;
115 | }
116 |
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/demo/browser-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/demo/browser-2x.png
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/demo/browser-author.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/demo/browser-author.jpg
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/demo/browser-pic-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/demo/browser-pic-1.jpg
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/demo/browser-pic-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/demo/browser-pic-2.jpg
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/demo/browser-pic-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/demo/browser-pic-3.jpg
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/demo/browser-pic-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/demo/browser-pic-4.jpg
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/demo/browser-pic-5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/demo/browser-pic-5.jpg
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/demo/browser-pic-6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/demo/browser-pic-6.jpg
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/demo/browser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/demo/browser.png
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/demo/html-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/demo/html-icon.png
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/demo/logo-mask-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/demo/logo-mask-2x.png
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/demo/logo-mask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/demo/logo-mask.png
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/demo/video.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/demo/video.jpg
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/example-image.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/example-image.jpg
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/footer/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/footer/logo.png
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/getting-started/icomoon_import.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/getting-started/icomoon_import.jpg
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/assets/img/video/poster.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/docs/assets/img/video/poster.jpg
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/examples/vertical-slider.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Flat UI Free
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
21 |
22 |
23 |
24 |
Vertical Slider
25 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/app/static/temp/flat/docs/template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Flat UI Free 101 Template
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
21 |
22 |
23 |
24 |
Hello, world!
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/glyphicons/flat-ui-icons-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/glyphicons/flat-ui-icons-regular.eot
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/glyphicons/flat-ui-icons-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/glyphicons/flat-ui-icons-regular.ttf
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/glyphicons/flat-ui-icons-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/glyphicons/flat-ui-icons-regular.woff
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-black.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-black.eot
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-black.ttf
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-black.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-black.woff
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-bold.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-bold.eot
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-bold.ttf
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-bold.woff
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-bolditalic.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-bolditalic.eot
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-bolditalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-bolditalic.ttf
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-bolditalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-bolditalic.woff
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-italic.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-italic.eot
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-italic.ttf
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-italic.woff
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-light.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-light.eot
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-light.ttf
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-light.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-light.woff
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-regular.eot
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-regular.ttf
--------------------------------------------------------------------------------
/app/static/temp/flat/fonts/lato/lato-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/fonts/lato/lato-regular.woff
--------------------------------------------------------------------------------
/app/static/temp/flat/img/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/favicon.ico
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Book.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Book.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Calendar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Calendar.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Chat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Chat.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Clipboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Clipboard.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Compas.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Compas.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Gift-Box.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Gift-Box.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Infinity-Loop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Infinity-Loop.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Mail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Mail.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Map.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Pensils.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Pensils.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Pocket.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Pocket.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Retina-Ready.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Retina-Ready.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Toilet-Paper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Toilet-Paper.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/png/Watches.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/icons/png/Watches.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/svg/book.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/svg/chat.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/svg/clipboard.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/svg/clocks.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/svg/loop.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/svg/mail.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/svg/map.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/svg/paper-bag.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/svg/pencils.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/svg/retina.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/static/temp/flat/img/icons/svg/toilet-paper.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/static/temp/flat/img/login/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/login/icon.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/login/imac-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/login/imac-2x.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/login/imac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/login/imac.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/tile/ribbon-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/tile/ribbon-2x.png
--------------------------------------------------------------------------------
/app/static/temp/flat/img/tile/ribbon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/img/tile/ribbon.png
--------------------------------------------------------------------------------
/app/static/temp/flat/index.js:
--------------------------------------------------------------------------------
1 | // You can require() this file in a CommonJS environment.
2 | require('./dist/js/flat-ui.js');
3 |
--------------------------------------------------------------------------------
/app/static/temp/flat/js/.jscs.json:
--------------------------------------------------------------------------------
1 | {
2 | "disallowEmptyBlocks": true,
3 | "disallowKeywords": ["with"],
4 | "disallowMixedSpacesAndTabs": true,
5 | "disallowMultipleLineStrings": true,
6 | "disallowMultipleVarDecl": true,
7 | "disallowQuotedKeysInObjects": "allButReserved",
8 | "disallowSpaceAfterPrefixUnaryOperators": ["!"],
9 | "disallowSpaceBeforeBinaryOperators": [","],
10 | "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
11 | "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
12 | "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
13 | "disallowSpacesInsideArrayBrackets": true,
14 | "disallowSpacesInsideParentheses": true,
15 | "disallowTrailingComma": true,
16 | "requireCamelCaseOrUpperCaseIdentifiers": true,
17 | "requireCapitalizedConstructors": true,
18 | "requireCommaBeforeLineBreak": true,
19 | "requireDotNotation": true,
20 | "requireLineFeedAtFileEnd": true,
21 | "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="],
22 | "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"],
23 | "requireSpaceAfterLineComment": true,
24 | "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="],
25 | "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningCurlyBrace": true, "beforeOpeningRoundBrace": true },
26 | "requireSpacesInConditionalExpression": true,
27 | "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
28 | "requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true },
29 | "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
30 | "requireSpacesInsideObjectBrackets": "allButNested",
31 | "validateIndentation": 2,
32 | "validateQuoteMarks": "'"
33 | }
--------------------------------------------------------------------------------
/app/static/temp/flat/js/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "asi" : false,
3 | "boss" : true,
4 | "browser" : true,
5 | "curly" : true,
6 | "debug" : true,
7 | "devel" : true,
8 | "eqeqeq" : false,
9 | "eqnull" : true,
10 | "expr" : true,
11 | "laxbreak" : true,
12 | "quotmark" : "single",
13 | "validthis": true
14 | }
--------------------------------------------------------------------------------
/app/static/temp/flat/less/.csslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "adjoining-classes": false,
3 | "box-sizing": false,
4 | "box-model": false,
5 | "compatible-vendor-prefixes": false,
6 | "floats": false,
7 | "font-sizes": false,
8 | "gradients": false,
9 | "important": false,
10 | "known-properties": false,
11 | "outline-none": false,
12 | "qualified-headings": false,
13 | "regex-selectors": false,
14 | "shorthand": false,
15 | "text-indent": false,
16 | "unique-headings": false,
17 | "universal-selector": false,
18 | "unqualified-attributes": false,
19 |
20 | "fallback-colors": false,
21 | "font-faces": false
22 | }
23 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/background-clip.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/background-clip.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/background-variant.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/background-variant.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/border-radius.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/border-radius.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/buttons.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/buttons.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/center-block.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/center-block.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/clearfix.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/clearfix.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/forms.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/forms.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/gradients.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/gradients.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/grid.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/grid.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/hide-text.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/hide-text.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/image.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/image.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/nav-divider.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/nav-divider.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/navbar-vertical-align.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/navbar-vertical-align.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/opacity.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/opacity.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/pagination.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/pagination.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/pallets.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/pallets.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/print.css:
--------------------------------------------------------------------------------
1 | /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
2 | @media print {
3 | .btn {
4 | border-style: solid;
5 | border-width: 2px;
6 | }
7 | .dropdown-menu {
8 | background: #fff !important;
9 | border: 2px solid #ddd;
10 | }
11 | .input-group-rounded .input-group-btn + .form-control,
12 | .input-group-rounded .input-group-btn + .select2-search input[type="text"] {
13 | padding-left: 10px;
14 | }
15 | .form-control {
16 | border: 2px solid #ddd !important;
17 | }
18 | .bootstrap-switch {
19 | height: 33px;
20 | width: 84px;
21 | border: 2px solid #bdc3c7;
22 | }
23 | .tooltip {
24 | border: 2px solid #bdc3c7;
25 | }
26 | .progress,
27 | .ui-slider {
28 | background: #ddd !important;
29 | }
30 | .progress-bar,
31 | .ui-slider-range,
32 | .ui-slider-handle {
33 | background: #bdc3c7 !important;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/reset-filter.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/reset-filter.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/resize.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/resize.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/responsive-visibility.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/responsive-visibility.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/select.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/select.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/size.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/size.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/switches.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/switches.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/tab-focus.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/tab-focus.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/text-emphasis.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/text-emphasis.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/text-overflow.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/text-overflow.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/css/vendor-prefixes.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/flat/less/css/vendor-prefixes.css
--------------------------------------------------------------------------------
/app/static/temp/flat/less/flat-ui.less:
--------------------------------------------------------------------------------
1 | //
2 | // Flat UI main stylesheet that aggregates all modules
3 | // --------------------------------------------------
4 |
5 | // Loading config with variables (changing them leads to changing a color scheme)
6 | @import "variables";
7 |
8 | // Utility mixins for greater good
9 | @import "mixins";
10 |
11 | // Loading custom fonts
12 | //@import url("https://fonts.googleapis.com/css?family=Lato:400,700,700italic,900,400italic,300");
13 | @import "modules/local-fonts";
14 | @import "modules/glyphicons";
15 |
16 | // Modules
17 | @import "modules/scaffolding";
18 | @import "modules/type";
19 | @import "modules/code";
20 | @import "modules/thumbnails";
21 | @import "modules/buttons";
22 | @import "modules/button-groups";
23 | @import "modules/forms";
24 | @import "modules/input-groups";
25 | @import "modules/radiocheck";
26 | @import "modules/tagsinput";
27 | @import "modules/typeahead";
28 | @import "modules/progress-bars";
29 | @import "modules/slider";
30 | @import "modules/pager";
31 | @import "modules/pagination";
32 | @import "modules/tooltip";
33 | @import "modules/dropdowns";
34 | @import "modules/select";
35 | @import "modules/tiles";
36 | @import "modules/navbar";
37 | @import "modules/switch";
38 | @import "modules/share";
39 | @import "modules/video";
40 | @import "modules/todo-list";
41 |
42 | // Examples
43 | @import "modules/palette";
44 | @import "modules/login";
45 | @import "modules/footer";
46 |
47 | // Spaces
48 | @import "spaces";
49 |
50 | //Print styles
51 | @import "modules/print";
52 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins.less:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------------------------------
3 |
4 | // Utilities
5 | @import "mixins/hide-text.less";
6 | @import "mixins/opacity.less";
7 | @import "mixins/image.less";
8 | @import "mixins/reset-filter.less";
9 | @import "mixins/resize.less";
10 | @import "mixins/responsive-visibility.less";
11 | @import "mixins/size.less";
12 | @import "mixins/tab-focus.less";
13 | @import "mixins/text-emphasis.less";
14 | @import "mixins/text-overflow.less";
15 | @import "mixins/vendor-prefixes.less";
16 | @import "mixins/background-clip.less";
17 |
18 | // Components
19 | @import "mixins/buttons.less";
20 | @import "mixins/select.less";
21 | @import "mixins/pagination.less";
22 | @import "mixins/nav-divider.less";
23 | @import "mixins/forms.less";
24 | @import "mixins/switches.less";
25 | @import "mixins/pallets.less";
26 |
27 | // Skins
28 | @import "mixins/background-variant.less";
29 | @import "mixins/border-radius.less";
30 | @import "mixins/gradients.less";
31 |
32 | // Layout
33 | @import "mixins/clearfix.less";
34 | @import "mixins/center-block.less";
35 | @import "mixins/navbar-vertical-align.less";
36 | @import "mixins/grid.less";
37 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/background-clip.less:
--------------------------------------------------------------------------------
1 | // Background clip
2 | .background-clip(@clip: border-box) {
3 | -webkit-background-clip: @clip;
4 | -moz-background-clip: @clip;
5 | background-clip: @clip;
6 | }
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/background-variant.less:
--------------------------------------------------------------------------------
1 | // Contextual backgrounds
2 |
3 | .bg-variant(@color) {
4 | background-color: @color;
5 | a&:hover {
6 | background-color: darken(@color, 10%);
7 | }
8 | }
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/border-radius.less:
--------------------------------------------------------------------------------
1 | // Single side border-radius
2 |
3 | .border-top-radius(@radius) {
4 | border-top-right-radius: @radius;
5 | border-top-left-radius: @radius;
6 | }
7 | .border-right-radius(@radius) {
8 | border-bottom-right-radius: @radius;
9 | border-top-right-radius: @radius;
10 | }
11 | .border-bottom-radius(@radius) {
12 | border-bottom-right-radius: @radius;
13 | border-bottom-left-radius: @radius;
14 | }
15 | .border-left-radius(@radius) {
16 | border-bottom-left-radius: @radius;
17 | border-top-left-radius: @radius;
18 | }
19 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/buttons.less:
--------------------------------------------------------------------------------
1 | // Button variants
2 | //
3 | .button-variant(@color; @background; @hover-background; @active-background; @disabled-background: @gray-light) {
4 | color: @color;
5 | background-color: @background;
6 |
7 | &:hover,
8 | &.hover,
9 | &:focus,
10 | &:active,
11 | &.active,
12 | .open > .dropdown-toggle& {
13 | color: @color;
14 | background-color: @hover-background;
15 | border-color: @hover-background;
16 | }
17 | &:active,
18 | &.active,
19 | .open > .dropdown-toggle& {
20 | background: @active-background;
21 | border-color: @active-background;
22 | }
23 | &.disabled,
24 | &[disabled],
25 | fieldset[disabled] & {
26 | &,
27 | &:hover,
28 | &.hover,
29 | &:focus,
30 | &:active,
31 | &.active {
32 | background-color: @disabled-background;
33 | border-color: @background;
34 | }
35 | }
36 |
37 | .badge {
38 | color: @background;
39 | background-color: @inverse;
40 | }
41 | }
42 |
43 | // Button sizes
44 | .button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
45 | padding: @padding-vertical @padding-horizontal;
46 | font-size: @font-size;
47 | line-height: @line-height;
48 | border-radius: @border-radius;
49 | }
50 |
51 | // Social button variants
52 | .social-button-variant(@color; @background) {
53 | color: @color;
54 | background-color: @background;
55 |
56 | &:hover,
57 | &:focus {
58 | background-color: mix(@background, white, 80%);
59 | }
60 | &:active,
61 | &.active {
62 | background-color: mix(@background, black, 85%);
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/center-block.less:
--------------------------------------------------------------------------------
1 | // Center-align a block level element
2 |
3 | .center-block() {
4 | display: block;
5 | margin-left: auto;
6 | margin-right: auto;
7 | }
8 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/clearfix.less:
--------------------------------------------------------------------------------
1 | // Clearfix
2 | //
3 | // For modern browsers
4 | // 1. The space content is one way to avoid an Opera bug when the
5 | // contenteditable attribute is included anywhere else in the document.
6 | // Otherwise it causes space to appear at the top and bottom of elements
7 | // that are clearfixed.
8 | // 2. The use of `table` rather than `block` is only necessary if using
9 | // `:before` to contain the top-margins of child elements.
10 | //
11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/
12 |
13 | .clearfix() {
14 | &:before,
15 | &:after {
16 | content: " "; // 1
17 | display: table; // 2
18 | }
19 | &:after {
20 | clear: both;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/hide-text.less:
--------------------------------------------------------------------------------
1 | // CSS image replacement
2 | //
3 | // Heads up! v3 launched with with only `.hide-text()`, but per our pattern for
4 | // mixins being reused as classes with the same name, this doesn't hold up. As
5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.
6 | //
7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
8 |
9 | // Deprecated as of v3.0.1 (will be removed in v4)
10 | .hide-text() {
11 | font: ~"0/0" a;
12 | color: transparent;
13 | text-shadow: none;
14 | background-color: transparent;
15 | border: 0;
16 | }
17 |
18 | // New mixin to use as of v3.0.1
19 | .text-hide() {
20 | .hide-text();
21 | }
22 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/image.less:
--------------------------------------------------------------------------------
1 | // Image Mixins
2 | // - Responsive image
3 | // - Retina image
4 |
5 |
6 | // Responsive image
7 | //
8 | // Keep images from scaling beyond the width of their parents.
9 | .img-responsive(@display: block) {
10 | display: @display;
11 | max-width: 100%; // Part 1: Set a maximum relative to the parent
12 | height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
13 | }
14 |
15 |
16 | // Retina image
17 | //
18 | // Short retina mixin for setting background-image and -size. Note that the
19 | // spelling of `min--moz-device-pixel-ratio` is intentional.
20 | .img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {
21 | background-image: url("@{file-1x}");
22 |
23 | @media
24 | only screen and (-webkit-min-device-pixel-ratio: 2),
25 | only screen and ( min--moz-device-pixel-ratio: 2),
26 | only screen and ( -o-min-device-pixel-ratio: 2/1),
27 | only screen and ( min-device-pixel-ratio: 2),
28 | only screen and ( min-resolution: 192dpi),
29 | only screen and ( min-resolution: 2dppx) {
30 | background-image: url("@{file-2x}");
31 | background-size: @width-1x @height-1x;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/nav-divider.less:
--------------------------------------------------------------------------------
1 | // Horizontal dividers
2 | //
3 | // Dividers (basically an hr) within dropdowns and nav lists
4 |
5 | .nav-divider(@color: #e5e5e5) {
6 | height: 2px;
7 | margin: 3px 0;
8 | overflow: hidden;
9 | background-color: @color;
10 | }
11 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/navbar-vertical-align.less:
--------------------------------------------------------------------------------
1 | // Navbar vertical align
2 | // -------------------------
3 | // Vertically center elements in the navbar.
4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
5 |
6 | .navbar-vertical-align(@element-height; @navbar-height: @navbar-height-base) {
7 | padding-top: ((@navbar-height - @element-height) / 2);
8 | padding-bottom: ((@navbar-height - @element-height) / 2);
9 | }
10 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/opacity.less:
--------------------------------------------------------------------------------
1 | // Opacity
2 |
3 | .opacity(@opacity) {
4 | opacity: @opacity;
5 | // IE8 filter
6 | @opacity-ie: (@opacity * 100);
7 | filter: ~"alpha(opacity=@{opacity-ie})";
8 | }
9 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/pagination.less:
--------------------------------------------------------------------------------
1 | // Pagination variants
2 |
3 | .pagination-variant(@color, @hover, @active) {
4 | & {
5 | background-color: @color;
6 |
7 | li {
8 | &.previous {
9 | > a {
10 | border-right-color: mix(@color, white, 66%);
11 | }
12 | }
13 | > a, > span {
14 | border-left-color: mix(@color, white, 66%);
15 |
16 | &:hover, &:focus {
17 | border-left-color: mix(@color, white, 66%);
18 | background-color: @hover;
19 | }
20 | &:active {
21 | background-color: @active;
22 | }
23 | }
24 | &.active {
25 | > a, > span {
26 | background-color: @active;
27 |
28 | &:hover, &:focus {
29 | border-left-color: mix(@color, white, 66%);
30 | background-color: @hover;
31 | }
32 | }
33 | }
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/pallets.less:
--------------------------------------------------------------------------------
1 | // Pallet color variants
2 | //
3 |
4 | .pallet-variant(@first-color, @second-color) {
5 | .palette-@{first-color} {
6 | background-color: ~"@{@{first-color}}";
7 | }
8 | .palette-@{second-color} {
9 | background-color: ~"@{@{second-color}}";
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/reset-filter.less:
--------------------------------------------------------------------------------
1 | // Reset filters for IE
2 | //
3 | // When you need to remove a gradient background, do not forget to use this to reset
4 | // the IE filter for IE9 and below.
5 |
6 | .reset-filter() {
7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
8 | }
9 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/resize.less:
--------------------------------------------------------------------------------
1 | // Resize anything
2 |
3 | .resizable(@direction) {
4 | resize: @direction; // Options: horizontal, vertical, both
5 | overflow: auto; // Safari fix
6 | }
7 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/responsive-visibility.less:
--------------------------------------------------------------------------------
1 | // Responsive utilities
2 |
3 | //
4 | // More easily include all the states for responsive-utilities.less.
5 | .responsive-visibility() {
6 | display: block !important;
7 | table& { display: table; }
8 | tr& { display: table-row !important; }
9 | th&,
10 | td& { display: table-cell !important; }
11 | }
12 |
13 | .responsive-invisibility() {
14 | display: none !important;
15 | }
16 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/select.less:
--------------------------------------------------------------------------------
1 | // Select variants
2 | //
3 |
4 | .select-variant(@color; @background; @hover-background; @active-background; @disabled-background: @gray-light; @arrow-color) {
5 | .select2-choice {
6 | color: @color;
7 | background-color: @background;
8 |
9 | &:hover,
10 | &.hover,
11 | &:focus,
12 | &:active {
13 | color: @color;
14 | background-color: @hover-background;
15 | border-color: @hover-background;
16 | }
17 | &:active {
18 | background: @active-background;
19 | border-color: @active-background;
20 | }
21 | .select2-container-disabled& {
22 | &,
23 | &:hover,
24 | &:focus,
25 | &:active {
26 | background-color: @disabled-background;
27 | border-color: @background;
28 | }
29 | }
30 |
31 | .select2-arrow {
32 | border-top-color: @arrow-color;
33 | }
34 | }
35 | }
36 |
37 | .select-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
38 | .button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius);
39 | padding-right: (@padding-horizontal * 2 + 9px);
40 | min-height: round((@line-height*@font-size + 2*@padding-vertical)); // we need min-height for empty ones
41 | }
42 |
43 | .multiple-select-variant(@background; @hover-background; @border-color) {
44 | .select2-container-multi& {
45 | border-color: @border-color;
46 |
47 | .select2-search-choice {
48 | background-color: @background;
49 |
50 | &:hover {
51 | background-color: @hover-background;
52 | }
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/size.less:
--------------------------------------------------------------------------------
1 | // Sizing shortcuts
2 |
3 | .size(@width; @height) {
4 | width: @width;
5 | height: @height;
6 | }
7 |
8 | .square(@size) {
9 | .size(@size; @size);
10 | }
11 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/switches.less:
--------------------------------------------------------------------------------
1 | // Switch variants
2 |
3 | .switch-variant(@handle-color, @handle-bg, @label-border, @label-bg) {
4 | color: @handle-color;
5 | background-color: @handle-bg;
6 |
7 | // second handler "label"
8 | ~ .@{switch-name}-handle-off:before {
9 | background-color: @label-bg;
10 | border-color: @label-border;
11 | }
12 |
13 | // second handler inset shadow
14 | .@{switch-name}-on & {
15 | ~ .@{switch-name}-handle-off {
16 | box-shadow: inset 16px 0 0 @handle-bg;
17 | }
18 | }
19 | }
20 |
21 | // Switch handle-off variant
22 | .switch-handle-off-variant(@handle-name, @handle-border, @handle-bg) {
23 | // second heandler outset shadow
24 | & ~ .@{switch-name}-handle-off.@{switch-name}-@{handle-name} {
25 | box-shadow: ~"inset 0 0 transparent, -16px 0 0 @{handle-border}";
26 | }
27 | // second heandler "label"
28 | ~ .@{switch-name}-handle-off.@{switch-name}-@{handle-name}:before {
29 | border-color: @handle-border;
30 | background-color: @handle-bg;
31 | }
32 | }
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/tab-focus.less:
--------------------------------------------------------------------------------
1 | // WebKit-style focus
2 |
3 | .tab-focus() {
4 | // Default
5 | outline: thin dotted;
6 | // WebKit
7 | outline: 5px auto -webkit-focus-ring-color;
8 | outline-offset: -2px;
9 | }
10 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/text-emphasis.less:
--------------------------------------------------------------------------------
1 | // Typography
2 |
3 | .text-emphasis-variant(@color) {
4 | color: @color;
5 | a&:hover {
6 | color: darken(@color, 10%);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/mixins/text-overflow.less:
--------------------------------------------------------------------------------
1 | // Text overflow
2 | // Requires inline-block or block for proper styling
3 |
4 | .text-overflow() {
5 | overflow: hidden;
6 | text-overflow: ellipsis;
7 | white-space: nowrap;
8 | }
9 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/modules/code.less:
--------------------------------------------------------------------------------
1 | //
2 | // Code (inline and blocK)
3 | // --------------------------------------------------
4 |
5 |
6 | // Inline and block code styles
7 | code,
8 | kbd,
9 | pre,
10 | samp {
11 | font-family: @font-family-monospace;
12 | }
13 |
14 | // Inline code
15 | code {
16 | padding: 2px 6px;
17 | font-size: 85%;
18 | color: @code-color;
19 | background-color: @code-bg;
20 | border-radius: @border-radius-base;
21 | }
22 |
23 | // User input typically entered via keyboard
24 | kbd {
25 | padding: 2px 6px;
26 | font-size: 85%;
27 | color: @kbd-color;
28 | background-color: @kbd-bg;
29 | border-radius: @border-radius-base;
30 | box-shadow: none;
31 | }
32 |
33 | // Blocks of code
34 | pre {
35 | padding: ((@line-height-computed - 6) / 3);
36 | margin: 0 0 (@line-height-computed / 2);
37 | font-size: (@font-size-base - 5); // 18px to 13px
38 | line-height: @line-height-base;
39 | color: @pre-color;
40 | background-color: @pre-bg;
41 | border: 2px solid @pre-border-color;
42 | border-radius: @pre-border-radius;
43 | white-space: pre;
44 | }
45 |
46 | // Enable scrollable blocks of code
47 | .pre-scrollable {
48 | max-height: @pre-scrollable-max-height;
49 | }
--------------------------------------------------------------------------------
/app/static/temp/flat/less/modules/footer.less:
--------------------------------------------------------------------------------
1 | //
2 | // Footer
3 | // --------------------------------------------------
4 |
5 | footer {
6 | background-color: mix(@brand-primary, @inverse, 9%);
7 | color: mix(@brand-primary, @inverse, 34%);
8 | font-size: 15px;
9 | padding: 0;
10 |
11 | a {
12 | color: mix(@brand-primary, @inverse, 50%);
13 | font-weight: 700;
14 | }
15 | p {
16 | font-size: 15px;
17 | line-height: 20px;
18 | margin-bottom: 10px;
19 | }
20 | }
21 |
22 | .footer-title {
23 | margin: 0 0 22px;
24 | padding-top: 21px;
25 | font-size: 24px;
26 | line-height: 40px;
27 | }
28 |
29 | .footer-brand {
30 | display: block;
31 | margin-bottom: 26px;
32 | width: 220px;
33 |
34 | img {
35 | width: 216px;
36 | }
37 | }
38 |
39 | // Footer banner
40 | .footer-banner {
41 | background-color: @brand-secondary;
42 | color: mix(@brand-secondary, @inverse, 20%);
43 | margin-left: 42px;
44 | min-height: 316px;
45 | padding: 0 30px 30px;
46 |
47 | .footer-title {
48 | color: @inverse;
49 | }
50 | a {
51 | color: lighten(@brand-secondary, 42%);
52 | text-decoration: underline;
53 |
54 | &:hover {
55 | text-decoration: none;
56 | }
57 | }
58 | ul {
59 | list-style-type: none;
60 | margin: 0 0 26px;
61 | padding: 0;
62 |
63 | li {
64 | border-top: 1px solid lighten(@brand-secondary, 2%);
65 | line-height: 19px;
66 | padding: 6px 0;
67 |
68 | &:first-child {
69 | border-top: none;
70 | padding-top: 1px;
71 | }
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/modules/pager.less:
--------------------------------------------------------------------------------
1 | //
2 | // Pager
3 | // --------------------------------------------------
4 |
5 | .pager {
6 | background-color: @pager-bg;
7 | border-radius: @pager-border-radius;
8 | color: @pager-color;
9 | font-size: 16px;
10 | font-weight: 700;
11 | display: inline-block;
12 |
13 | li {
14 | &:first-child {
15 | > a,
16 | > span {
17 | border-left: none;
18 | border-radius: @pager-border-radius 0 0 @pager-border-radius;
19 | }
20 | }
21 |
22 | > a,
23 | > span {
24 | background: none;
25 | border: none;
26 | border-left: 2px solid mix(@brand-primary, black, 85%);
27 | color: @inverse;
28 | padding: @pager-padding;
29 | text-decoration: none;
30 | white-space: nowrap;
31 | border-radius: 0 @pager-border-radius @pager-border-radius 0;
32 | line-height: 1.313;
33 |
34 | &:hover,
35 | &:focus {
36 | background-color: @pager-hover-bg;
37 | }
38 | &:active {
39 | background-color: @pager-active-bg;
40 | }
41 |
42 | // Add some spacing between the icon and text
43 | [class*="fui-"] + span {
44 | margin-left: 8px;
45 | }
46 | span + [class*="fui-"] {
47 | margin-left: 8px;
48 | }
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/modules/palette.less:
--------------------------------------------------------------------------------
1 | //
2 | // Palette
3 | // --------------------------------------------------
4 |
5 | .pallete-item {
6 | width: 140px;
7 | float: left;
8 | margin: 0 0 20px 20px;
9 | }
10 | .palette {
11 | font-size: ceil((@component-font-size-base * 0.933)); // ~14px
12 | line-height: 1.214; // ~17px
13 | color: @inverse;
14 | margin: 0;
15 | padding: 15px;
16 | text-transform: uppercase;
17 |
18 | dt,
19 | dd {
20 | line-height: 1.429;
21 | }
22 | dt {
23 | display: block;
24 | font-weight: bold;
25 | opacity: .8;
26 | }
27 | dd {
28 | font-weight: 300;
29 | margin-left: 0;
30 | opacity: .8;
31 | -webkit-font-smoothing: subpixel-antialiased;
32 | }
33 | }
34 |
35 | //
36 | // Pallet grid
37 | // --------------------------------------------------
38 | .pallet-variant(~"turquoise", ~"green-sea");
39 | .pallet-variant(~"emerald", ~"nephritis");
40 | .pallet-variant(~"peter-river", ~"belize-hole");
41 | .pallet-variant(~"amethyst", ~"wisteria");
42 | .pallet-variant(~"wet-asphalt", ~"midnight-blue");
43 |
44 | .pallet-variant(~"sun-flower", ~"orange");
45 | .pallet-variant(~"carrot", ~"pumpkin");
46 | .pallet-variant(~"alizarin", ~"pomegranate");
47 | .pallet-variant(~"clouds", ~"silver");
48 | .pallet-variant(~"concrete", ~"asbestos");
49 |
50 | .palette-clouds {
51 | color: #bdc3c7;
52 | }
53 |
54 | // Palette paragraph
55 | .palette-paragraph {
56 | color: #7f8c8d;
57 | font-size: 12px;
58 | line-height: 17px;
59 |
60 | span {
61 | color: #bdc3c7;
62 | }
63 | }
64 |
65 | // Headline
66 | .palette-headline {
67 | color: #7f8c8d;
68 | font-size: 13px;
69 | font-weight: 700;
70 | margin-top: -3px;
71 | }
72 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/modules/print.less:
--------------------------------------------------------------------------------
1 | /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
2 |
3 | // ==========================================================================
4 | // Print styles.
5 | // Inlined to avoid the additional HTTP request: h5bp.com/r
6 | // ==========================================================================
7 |
8 | @media print {
9 | .btn {
10 | border-style: solid;
11 | border-width: 2px;
12 | }
13 | .dropdown-menu {
14 | background: #fff !important;
15 | border: 2px solid #ddd;
16 | }
17 | .input-group-rounded .input-group-btn {
18 | & + .form-control,
19 | & + .select2-search input[type="text"] {
20 | padding-left: 10px;
21 | }
22 | }
23 | .form-control {
24 | border: 2px solid #ddd !important;
25 | }
26 | .bootstrap-switch {
27 | height: 33px;
28 | width: 84px;
29 | border: 2px solid #bdc3c7;
30 | }
31 | .tooltip {
32 | border: 2px solid #bdc3c7;
33 | }
34 | .progress, .ui-slider {
35 | background: #ddd !important;
36 | }
37 | .progress-bar, .ui-slider-range, .ui-slider-handle {
38 | background: #bdc3c7 !important;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/modules/progress-bars.less:
--------------------------------------------------------------------------------
1 | //
2 | // Progress bars
3 | // --------------------------------------------------
4 |
5 | // Outer container
6 | .progress {
7 | background: mix(@brand-primary, white, 10%);
8 | border-radius: 32px;
9 | height: @progress-height;
10 | box-shadow: none;
11 | }
12 |
13 | // Bar of progress
14 | .progress-bar {
15 | background: @brand-secondary;
16 | line-height: @progress-height;
17 | box-shadow: none;
18 | }
19 |
20 | // Variations
21 | // -------------------------
22 |
23 | .progress-bar-success {
24 | background-color: @brand-success;
25 | }
26 | .progress-bar-warning {
27 | background-color: @brand-warning;
28 | }
29 | .progress-bar-danger {
30 | background-color: @brand-danger;
31 | }
32 | .progress-bar-info {
33 | background-color: @brand-info;
34 | }
35 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/modules/scaffolding.less:
--------------------------------------------------------------------------------
1 | //
2 | // Scaffolding
3 | // --------------------------------------------------
4 |
5 |
6 | // Body reset
7 | // -------------------------
8 |
9 | body {
10 | font-family: @font-family-base;
11 | font-size: @font-size-base;
12 | line-height: @line-height-base;
13 | color: @text-color;
14 | background-color: @body-bg;
15 | }
16 |
17 | // Links
18 | // -------------------------
19 |
20 | a {
21 | color: @link-color;
22 | text-decoration: none;
23 | transition: .25s;
24 |
25 | &:hover,
26 | &:focus {
27 | color: @link-hover-color;
28 | text-decoration: @link-hover-decoration;
29 | }
30 | &:focus {
31 | outline: none;
32 | }
33 | }
34 |
35 | // Images
36 | // -------------------------
37 |
38 | // Rounded corners
39 | .img-rounded {
40 | border-radius: @border-radius-large;
41 | }
42 |
43 | // Image thumbnails
44 | //
45 | // Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.
46 | .img-thumbnail {
47 | padding: @thumbnail-padding;
48 | line-height: @line-height-base;
49 | background-color: @thumbnail-bg;
50 | border: 2px solid @thumbnail-border;
51 | border-radius: @thumbnail-border-radius;
52 | transition: all .25s ease-in-out;
53 |
54 | // Keep them at most 100% wide
55 | .img-responsive(inline-block);
56 | }
57 |
58 | // Description text under image
59 | .img-comment {
60 | font-size: ceil((@font-size-base * 0.8333)); // ~15px
61 | line-height: 1.2;
62 | font-style: italic;
63 | margin: 24px 0;
64 | }
--------------------------------------------------------------------------------
/app/static/temp/flat/less/modules/share.less:
--------------------------------------------------------------------------------
1 | //
2 | // Sharing box
3 | // --------------------------------------------------
4 |
5 | // Module color variable
6 | @share-color: mix(@brand-primary, @inverse, 8%);
7 |
8 | .share {
9 | background-color: @share-color;
10 | position: relative;
11 | border-radius: @border-radius-large;
12 |
13 | ul {
14 | list-style-type: none;
15 | margin: 0;
16 | padding: 15px;
17 | }
18 | li {
19 | font-size: @component-font-size-base;
20 | line-height: 1.4;
21 | padding-top: 11px;
22 | .clearfix();
23 |
24 | &:first-child {
25 | padding-top: 0;
26 | }
27 | }
28 | .toggle {
29 | float: right;
30 | margin: 0;
31 | }
32 | .btn {
33 | .border-top-radius(0);
34 | }
35 | }
36 |
37 | .share-label {
38 | float: left;
39 | font-size: 15px;
40 | line-height: 1.4;
41 | padding-top: 5px;
42 | width: 50%;
43 | }
44 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/modules/thumbnails.less:
--------------------------------------------------------------------------------
1 | //
2 | // Thumbnails
3 | // --------------------------------------------------
4 |
5 |
6 | // Mixin and adjust the regular image class
7 | .thumbnail {
8 | display: block;
9 | padding: @thumbnail-padding;
10 | margin-bottom: 5px;
11 | line-height: @line-height-base;
12 | background-color: @thumbnail-bg;
13 | border: 2px solid @thumbnail-border;
14 | border-radius: @thumbnail-border-radius;
15 | transition: border .25s ease-in-out;
16 |
17 | > img,
18 | a > img {
19 | .img-responsive();
20 | margin-left: auto;
21 | margin-right: auto;
22 | }
23 |
24 | // Add a hover state for linked versions only
25 | a&:hover,
26 | a&:focus,
27 | a&.active {
28 | border-color: @link-color;
29 | }
30 |
31 | // Image captions
32 | .caption {
33 | padding: @thumbnail-caption-padding;
34 | color: @thumbnail-caption-color;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/modules/tiles.less:
--------------------------------------------------------------------------------
1 | //
2 | // Tiles
3 | // -------------------------------------------------
4 |
5 | .tile {
6 | background-color: @tiles-bg;
7 | border-radius: @tiles-border-radius;
8 | padding: 14px;
9 | margin-bottom: 20px;
10 | position: relative;
11 | text-align: center;
12 |
13 | .tile-hot-ribbon {
14 | display: block;
15 | position: absolute;
16 | right: -4px;
17 | top: -4px;
18 | width: 82px;
19 | }
20 | p {
21 | font-size: 15px;
22 | margin-bottom: 33px;
23 | }
24 | }
25 | .tile-image {
26 | height: 100px;
27 | margin: 31px 0 27px;
28 | vertical-align: bottom;
29 |
30 | &.big-illustration {
31 | height: 111px;
32 | margin-top: 20px;
33 | width: 112px;
34 | }
35 | }
36 | .tile-title {
37 | font-size: 20px;
38 | margin: 0;
39 | }
40 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/modules/tooltip.less:
--------------------------------------------------------------------------------
1 | //
2 | // Tooltips
3 | // --------------------------------------------------
4 |
5 | // Base class
6 | .tooltip {
7 | font-size: ceil((@component-font-size-base * 0.933)); // ~14px
8 | line-height: 1.286; // 18px
9 | z-index: @zindex-tooltip;
10 |
11 | &.in { .opacity(@tooltip-opacity); }
12 | &.top { margin-top: -5px; padding: @tooltip-arrow-width 0; }
13 | &.right { margin-left: 5px; padding: 0 @tooltip-arrow-width; }
14 | &.bottom { margin-top: 5px; padding: @tooltip-arrow-width 0; }
15 | &.left { margin-left: -5px; padding: 0 @tooltip-arrow-width; }
16 | }
17 |
18 | // Wrapper for the tooltip content
19 | .tooltip-inner {
20 | max-width: @tooltip-max-width;
21 | line-height: 1.286; // 18px
22 | padding: 12px 12px;
23 | color: @tooltip-color;
24 | background-color: @tooltip-bg;
25 | border-radius: @border-radius-large;
26 | }
27 |
28 | // Arrows
29 | .tooltip {
30 | &.top .tooltip-arrow {
31 | margin-left: -@tooltip-arrow-width;
32 | border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
33 | border-top-color: @tooltip-arrow-color;
34 | }
35 | &.right .tooltip-arrow {
36 | margin-top: -@tooltip-arrow-width;
37 | border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;
38 | border-right-color: @tooltip-arrow-color;
39 | }
40 | &.left .tooltip-arrow {
41 | margin-top: -@tooltip-arrow-width;
42 | border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;
43 | border-left-color: @tooltip-arrow-color;
44 | }
45 | &.bottom .tooltip-arrow {
46 | margin-left: -@tooltip-arrow-width;
47 | border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
48 | border-bottom-color: @tooltip-arrow-color;
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/app/static/temp/flat/less/modules/typeahead.less:
--------------------------------------------------------------------------------
1 | //
2 | // Typeahead
3 | // --------------------------------------------------
4 |
5 | .twitter-typeahead {
6 | width: 100%;
7 |
8 | .tt-dropdown-menu {
9 | width: 100%;
10 | margin-top: 5px;
11 | border: 2px solid @brand-secondary;
12 | padding: 5px 0;
13 | background-color: @inverse;
14 | border-radius: @border-radius-large;
15 | }
16 |
17 | .tt-suggestion {
18 | p {
19 | padding: 6px 14px;
20 | font-size: ceil((@component-font-size-base * 0.933));
21 | line-height: 1.429; // ~20px
22 | margin: 0;
23 | }
24 |
25 | &:first-child,
26 | &:last-child {
27 | p {
28 | padding: 6px 14px;
29 | }
30 | }
31 | &.tt-is-under-cursor, // Deprecated
32 | &.tt-cursor {
33 | cursor: pointer;
34 | color: #fff;
35 | background-color: mix(@brand-secondary, black, 85%);
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/static/temp/flat/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "designmodo-flat-ui",
3 | "shortname": "flat-ui",
4 | "version": "2.3.0",
5 | "description": "Flat UI Free is a beautiful theme for Bootstrap. We have redesigned many of its components to look flat in every pixel",
6 | "author": "Designmodo, Inc.",
7 | "license": "CC BY 3.0 and MIT",
8 | "homepage": "http://designmodo.github.io/Flat-UI/",
9 | "main": "index",
10 | "keywords": [
11 | "ui",
12 | "flat",
13 | "bootstrap"
14 | ],
15 | "style": "dist/css/flat-ui.css",
16 | "less": "less/flat-ui.less",
17 | "repository": {
18 | "type": "git",
19 | "url": "https://github.com/designmodo/Flat-UI.git"
20 | },
21 | "bugs": {
22 | "url": "https://github.com/designmodo/Flat-UI/issues"
23 | },
24 | "devDependencies": {
25 | "grunt": "~0.4.5",
26 | "grunt-autoprefixer": "~1.0.1",
27 | "grunt-banner": "~0.2.3",
28 | "grunt-contrib-clean": "~0.6.0",
29 | "grunt-contrib-concat": "~0.5.0",
30 | "grunt-contrib-connect": "~0.8.0",
31 | "grunt-contrib-copy": "~0.5.0",
32 | "grunt-contrib-csslint": "^0.2.0",
33 | "grunt-contrib-cssmin": "~0.10.0",
34 | "grunt-contrib-jshint": "~0.10.0",
35 | "grunt-contrib-less": "~0.11.4",
36 | "grunt-contrib-uglify": "~0.5.1",
37 | "grunt-contrib-watch": "~0.6.1",
38 | "grunt-csscomb": "~3.0.0",
39 | "grunt-jscs": "~0.7.1",
40 | "load-grunt-tasks": "~0.6.0",
41 | "time-grunt": "~1.0.0"
42 | },
43 | "engines": {
44 | "node": "~0.10.31"
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/app/static/temp/fonts/glyphicons/flat-ui-icons-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/glyphicons/flat-ui-icons-regular.eot
--------------------------------------------------------------------------------
/app/static/temp/fonts/glyphicons/flat-ui-icons-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/glyphicons/flat-ui-icons-regular.ttf
--------------------------------------------------------------------------------
/app/static/temp/fonts/glyphicons/flat-ui-icons-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/glyphicons/flat-ui-icons-regular.woff
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-black.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-black.eot
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-black.ttf
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-black.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-black.woff
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-bold.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-bold.eot
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-bold.ttf
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-bold.woff
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-bolditalic.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-bolditalic.eot
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-bolditalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-bolditalic.ttf
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-bolditalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-bolditalic.woff
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-italic.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-italic.eot
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-italic.ttf
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-italic.woff
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-light.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-light.eot
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-light.ttf
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-light.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-light.woff
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-regular.eot
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-regular.ttf
--------------------------------------------------------------------------------
/app/static/temp/fonts/lato/lato-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/static/temp/fonts/lato/lato-regular.woff
--------------------------------------------------------------------------------
/app/templates/404.html:
--------------------------------------------------------------------------------
1 | 别瞎访问,没这个页面
2 |
--------------------------------------------------------------------------------
/app/templates/500.html:
--------------------------------------------------------------------------------
1 | 出错啦,有人要扣工资了
2 |
--------------------------------------------------------------------------------
/app/templates/auth/change_password.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block head %}
3 | {{ super() }}
4 | {% endblock %}
5 | {% block navbar %}
6 | {% endblock %}
7 | {% block content %}
8 |
37 | {% endblock %}
38 | {% block scripts %}
39 | {{ super() }}
40 | {% endblock %}
41 |
--------------------------------------------------------------------------------
/app/templates/auth/forget_password.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block head %}
3 | {{ super() }}
4 | {% endblock %}
5 | {% block navbar %}
6 | {% endblock %}
7 | {% block content %}
8 |
34 | {% endblock %}
35 | {% block scripts %}
36 | {{ super() }}
37 | {% endblock %}
38 |
--------------------------------------------------------------------------------
/app/templates/auth/forget_password_request.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block head %}
3 | {{ super() }}
4 | {% endblock %}
5 | {% block navbar %}
6 | {% endblock %}
7 | {% block content %}
8 |
31 | {% endblock %}
32 | {% block scripts %}
33 | {{ super() }}
34 | {% endblock %}
35 |
--------------------------------------------------------------------------------
/app/templates/email/get_gift.html:
--------------------------------------------------------------------------------
1 | 亲爱的 {{ gift.user.nickname }},
2 | {{ wisher.nickname }} 想要一本《{{ gift.book.title }}》.你刚好有这本书在鱼书上等待赠送。
3 | 点击这里查看书籍的邮寄地址.
5 |
6 | 无论您是否愿意赠送{{ wisher.nickname }}这本书,都烦请您前往【鱼书】处理此请求。
7 | 如果无法点击,你也可以将下面的地址复制到浏览器中打开:
8 | {{ url_for('web.pending', _external=True) }}
9 | 你的,鱼书
10 |
11 | 注意,请不要回复此邮件哦
12 |
13 |
--------------------------------------------------------------------------------
/app/templates/email/reset_password.html:
--------------------------------------------------------------------------------
1 | 亲爱的 {{ user.nickname }},
2 | 点击这里可以重置你的密码
4 |
5 | 如果无法点击,你也可以将下面的地址复制到浏览器中打开:
6 | {{ url_for('web.forget_password', token=token, _external=True) }}
7 | 你的,
8 | 鱼书
9 |
10 | 注意,请不要回复此邮件哦
11 |
12 |
--------------------------------------------------------------------------------
/app/templates/email/satisify_wish.html:
--------------------------------------------------------------------------------
1 | 亲爱的 {{ wish.user.nickname }},
2 | {{ gift.user.nickname }} 有一本《{{ wish.book.title }}》可以赠送给你
3 | 点击这里填写书籍邮寄地址,
5 | 等待{{ gift.user.nickname }}将书籍寄送给你
6 |
7 | 如果无法点击,你也可以将下面的地址复制到浏览器中打开:
8 | {{ url_for('web.send_drift', gid=gift.id, _external=True) }}
9 | 你的,
10 | 鱼书
11 |
12 | 注意,请不要回复此邮件哦
13 |
14 |
--------------------------------------------------------------------------------
/app/templates/email_has_send.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block head %}
3 | {{ super() }}
4 |
5 | {% endblock %}
6 | {% block content %}
7 |
8 |
9 |
一封邮件已发往你的注册邮箱,请及时查收
10 |
11 |
12 | {% endblock %}
--------------------------------------------------------------------------------
/app/templates/gifts.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block head %}
3 | {{ super() }}
4 |
5 | {% endblock %}
6 | {% block content %}
7 |
8 |
9 | 最近上传
10 |
11 |
12 |
13 |
31 | {% endblock %}
--------------------------------------------------------------------------------
/app/templates/index.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block head %}
3 | {{ super() }}
4 |
5 | {% endblock %}
6 | {% block content %}
7 |
11 |
12 | {% for book in recent %}
13 |
26 | {% endfor %}
27 |
28 | {% endblock %}
--------------------------------------------------------------------------------
/app/templates/not_enough_beans.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block head %}
3 | {{ super() }}
4 |
5 | {% endblock %}
6 | {#{% block navbar %}#}
7 | {# #}
8 | {#{% endblock %}#}
9 | {% block content %}
10 |
11 |
12 | 你没有足够的鱼豆或超过限制
13 | 当前你有{{ beans }}个鱼豆
14 |
15 |
16 |
17 |
18 |
19 |
20 | 温馨提示:每请求1本书,需要消耗1个鱼豆;当你已经请求两本书时,你必须先赠送1本书籍。
21 |
22 |
23 |
24 |
25 |
26 | 以下是获取鱼豆的方式
27 |
28 |
29 |
30 |
31 | 1. 上传图书
32 |
33 |
34 | 在搜索框内搜索书籍,并将书籍“加入到赠送清单” 即可获得0.5个鱼豆。务必确保你愿意赠送此书。
35 |
36 |
37 |
38 |
39 | 2. 赠送图书
40 |
41 |
42 | 每成功赠送一本图书,我们将额外赠送你1个鱼豆。
43 |
44 |
45 | {% endblock %}
--------------------------------------------------------------------------------
/app/templates/personal.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block head %}
3 | {{ super() }}
4 |
5 | {% endblock %}
6 | {% block navbar %}
7 | {% endblock %}
8 | {% block content %}
9 |
10 |
11 |
16 |
17 |
18 |
19 | {{ user.nickname }}
20 |
21 |
22 |
23 |
24 |
送出/收到:{{ user.send_receive }}
25 |
当前鱼豆:{{ user.beans }}
26 |
登录邮箱:{{ user.email }}
27 |
30 |
31 |
32 |
33 |
34 |
35 | {% endblock %}
--------------------------------------------------------------------------------
/app/templates/search_result.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block head %}
3 | {{ super() }}
4 |
5 | {% endblock %}
6 | {% block content %}
7 | {{ super() }}
8 |
9 |
10 | 搜索 {{ books.keyword }}的结果
12 |
13 |
14 | 共 {{ books.total }} 条记录
16 |
17 |
18 |
19 | {% for book in books.books %}
20 |
33 | {% endfor %}
34 |
39 | {% endblock %}
40 | {% block scripts %}
41 | {{ super() }}
42 |
43 |
44 |
45 | {% endblock %}
46 |
--------------------------------------------------------------------------------
/app/test/__init__.py:
--------------------------------------------------------------------------------
1 | """
2 | create by gaowenfeng on
3 | """
4 |
5 | __author__ = "gaowenfeng"
6 |
--------------------------------------------------------------------------------
/app/test/test-with.py:
--------------------------------------------------------------------------------
1 | """
2 | create by gaowenfeng on
3 | """
4 |
5 | from flask import Flask, current_app
6 |
7 | __author__ = "gaowenfeng"
8 |
9 | app = Flask(__name__)
10 |
11 | with app.app_context():
12 | a = current_app
13 | b = current_app.config["DEBUG"]
14 |
15 |
--------------------------------------------------------------------------------
/app/test/test.py:
--------------------------------------------------------------------------------
1 | """
2 | create by gaowenfeng on
3 | """
4 |
5 | from flask import Flask, current_app
6 |
7 | __author__ = "gaowenfeng"
8 |
9 | app = Flask(__name__)
10 |
11 | # 获取AppContext,里面的代码很简单,就是:return AppContext(self)
12 | ctx = app.app_context()
13 | # 将AppContext入栈
14 | ctx.push()
15 | # 断点调试这里显示current_app=[LocalProxy]
16 | a = current_app
17 |
18 | # RuntimeError: Working outside of application context.
19 | b = current_app.config["DEBUG"]
20 | print(b)
21 | ctx.pop()
22 |
--------------------------------------------------------------------------------
/app/test/test_callable.py:
--------------------------------------------------------------------------------
1 | """
2 | create by gaowenfeng on
3 | """
4 |
5 | __author__ = "gaowenfeng"
6 |
7 |
8 | class A:
9 | def __call__(self):
10 | return object()
11 |
12 |
13 | class B:
14 | def __call__(self):
15 | return object()
16 |
17 |
18 | def func():
19 | return object()
20 |
21 |
22 | def main(callable):
23 | # 我想在main中传入一个参数,得到一个对象object
24 | callable()
25 | pass
26 |
27 |
28 | main(A())
29 | main(B())
30 | main(func)
31 |
--------------------------------------------------------------------------------
/app/test/test_contextmanager.py:
--------------------------------------------------------------------------------
1 | """
2 | create by gaowenfeng on
3 | """
4 |
5 | __author__ = "gaowenfeng"
6 | from contextlib import contextmanager
7 |
8 |
9 | @contextmanager
10 | def book_mark():
11 | print('《', end='')
12 | yield
13 | print('》', end='')
14 |
15 |
16 | with book_mark():
17 | print('钢铁',end='')
18 |
--------------------------------------------------------------------------------
/app/view_models/__init__.py:
--------------------------------------------------------------------------------
1 | """
2 | create by gaowenfeng on
3 | """
4 |
5 | __author__ = "gaowenfeng"
6 |
--------------------------------------------------------------------------------
/app/view_models/drift.py:
--------------------------------------------------------------------------------
1 | """
2 | create by gaowenfeng on
3 | """
4 | from app.libs.enums import PendingStatus
5 |
6 | __author__ = "gaowenfeng"
7 |
8 |
9 | class DriftCollection:
10 |
11 | def __init__(self, drifts, current_user_id):
12 | self.data = []
13 |
14 | self.data = self._parse(drifts, current_user_id)
15 |
16 | def _parse(self, drifts, current_user_id):
17 | return [DriftViewModel(drift, current_user_id).data for drift in drifts]
18 |
19 |
20 | class DriftViewModel:
21 |
22 | def __init__(self, drift, current_user_id):
23 | self.data = {}
24 |
25 | self.data = self._parse(drift, current_user_id)
26 |
27 | @staticmethod
28 | def requester_or_gifter(drift, current_user_id):
29 | return 'requester' if current_user_id == drift.requester_id else 'gifter'
30 |
31 | def _parse(self, drift, current_user_id):
32 | you_are = DriftViewModel.requester_or_gifter(drift, current_user_id)
33 | pending_status = PendingStatus.pending_str(drift.pending, you_are)
34 | r = {
35 | 'drift_id': drift.id,
36 | 'you_are': you_are,
37 | 'book_title': drift.book_title,
38 | 'book_author': drift.book_author,
39 | 'book_img': drift.book_img,
40 | 'date': drift.create_datetime.strftime('%Y-%m-%d'),
41 | 'operator': drift.requester_nickname if you_are != 'requester' \
42 | else drift.gifter_nickname,
43 | 'message': drift.message,
44 | 'address': drift.address,
45 | 'status_str': pending_status,
46 | 'recipient_name': drift.recipient_name,
47 | 'mobile': drift.mobile,
48 | 'status': drift.pending
49 | }
50 |
51 | return r
52 |
--------------------------------------------------------------------------------
/app/view_models/gift.py:
--------------------------------------------------------------------------------
1 | """
2 | create by gaowenfeng on
3 | """
4 | from app.view_models.book import BookViewModel
5 |
6 | __author__ = "gaowenfeng"
7 |
8 |
9 | class Gifts:
10 |
11 | def __init__(self, gifts_of_mine, wish_count_list):
12 | self.gifts = []
13 | self.__gifts_of_mine = gifts_of_mine
14 | self.__wish_count_list = wish_count_list
15 |
16 | self.gifts = self.__parse()
17 |
18 | def __parse(self):
19 | temp_gifts = []
20 | for gift in self.__gifts_of_mine:
21 | my_gift = self.__matching(gift)
22 | temp_gifts.append(my_gift)
23 | return temp_gifts
24 |
25 | def __matching(self, gift):
26 | count = 0
27 | for wish_count in self.__wish_count_list:
28 | if gift.isbn == wish_count['isbn']:
29 | count = wish_count['count']
30 | r = {
31 | 'wishes_count': count,
32 | 'book': BookViewModel(gift.book),
33 | 'id': gift.id
34 | }
35 | return r
36 |
--------------------------------------------------------------------------------
/app/view_models/trade.py:
--------------------------------------------------------------------------------
1 | """
2 | create by gaowenfeng on
3 | """
4 | from app.view_models.book import BookViewModel
5 |
6 | __author__ = "gaowenfeng"
7 |
8 |
9 | class TradeInfo:
10 |
11 | def __init__(self, goods):
12 | self.total = 0
13 | self.trades = []
14 | self.__parse(goods)
15 |
16 | def __parse(self, goods):
17 | self.total = len(goods)
18 | self.trades = [self.__map_to_trade(single) for single in goods]
19 |
20 | def __map_to_trade(self, single):
21 | if single.create_datetime:
22 | time = single.create_datetime.strftime('%Y-%m-%d')
23 | else:
24 | time = '未知'
25 | return dict(
26 | user_name=single.user.nickname,
27 | time=time,
28 | id=single.id
29 | )
30 |
31 |
32 | class MyTrade:
33 |
34 | def __init__(self, trades_of_mine, trades_count_list):
35 | self.trades = []
36 | self.__trades_of_mine = trades_of_mine
37 | self.__trades_count_list = trades_count_list
38 |
39 | self.trades = self.__parse()
40 |
41 | def __parse(self):
42 | temp_trades = []
43 | for trade in self.__trades_of_mine:
44 | my_trade = self.__matching(trade)
45 | temp_trades.append(my_trade)
46 | return temp_trades
47 |
48 | def __matching(self, trade):
49 | count = 0
50 | for trade_count in self.__trades_count_list:
51 | if trade.isbn == trade_count['isbn']:
52 | count = trade_count['count']
53 | r = {
54 | 'wishes_count': count,
55 | 'book': BookViewModel(trade.book),
56 | 'id': trade.id
57 | }
58 | return r
59 |
60 |
61 |
--------------------------------------------------------------------------------
/app/view_models/wish.py:
--------------------------------------------------------------------------------
1 | """
2 | create by gaowenfeng on
3 | """
4 | from app.view_models.book import BookViewModel
5 |
6 | __author__ = "gaowenfeng"
7 |
8 |
9 | class Wishes:
10 |
11 | def __init__(self, wishes_of_mine):
12 | self.wishes = []
13 | self.__wishes_of_mine = wishes_of_mine
14 |
15 | self.wishes = self.__parse()
16 |
17 | def __parse(self):
18 | temp_list = [self.__parse_single(wish) for wish in self.__wishes_of_mine]
19 | return temp_list
20 |
21 | def __parse_single(self, wish):
22 | r = {
23 | 'wishes_count': wish['count'],
24 | 'book': BookViewModel(wish['wish'].book),
25 | 'id': wish['wish'].id
26 | }
27 | return r
28 |
--------------------------------------------------------------------------------
/app/web/__init__.py:
--------------------------------------------------------------------------------
1 | from flask import Blueprint,render_template
2 |
3 | __author__ = "gaowenfeng"
4 |
5 |
6 | web = Blueprint('web', __name__)
7 |
8 |
9 | @web.app_errorhandler(404)
10 | def not_found(e):
11 | return render_template('404.html'), 404
12 |
13 |
14 | from app.web import book
15 | from app.web import auth
16 | from app.web import drift
17 | from app.web import gift
18 | from app.web import main
19 | from app.web import wish
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/web/__pycache__/__init__.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/web/__pycache__/__init__.cpython-36.pyc
--------------------------------------------------------------------------------
/app/web/__pycache__/book.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MarkGao11520/fisher/73b6d7c5a47e3d4ce58a5fc257529175f42dec66/app/web/__pycache__/book.cpython-36.pyc
--------------------------------------------------------------------------------
/app/web/book.py:
--------------------------------------------------------------------------------
1 | """
2 | create by gaowenfeng on 2018/6/1
3 | """
4 | from flask import request, render_template, flash
5 | from flask_login import current_user
6 |
7 | from app.view_models.trade import TradeInfo
8 | from app.libs.helper import is_isbn_or_key
9 | from app.forms.book import SearchForm
10 | from app.models.gift import Gift
11 | from app.models.wish import Wish
12 | from app.spider.yushu_book import YuShuBook
13 | from app.view_models.book import BookCollection, BookViewModel
14 |
15 | from . import web
16 |
17 |
18 | __author__ = "gaowenfeng"
19 |
20 |
21 | @web.route("/book/search/")
22 | def search():
23 | """
24 | 搜索书籍路由
25 | """
26 | form = SearchForm(request.args)
27 | books = BookCollection()
28 | if form.validate():
29 | q = form.q.data.strip()
30 | isbn_or_key = is_isbn_or_key(q)
31 |
32 | yushu_book = YuShuBook()
33 |
34 | if isbn_or_key == 'isbn':
35 | yushu_book.search_by_isbn(q)
36 | else:
37 | page = form.page.data
38 | yushu_book.search_by_key(q, page)
39 |
40 | books.fill(yushu_book, q)
41 | else:
42 | flash("搜索的关键字不符合要求,请重新输入关键字")
43 |
44 | return render_template("search_result.html", books=books)
45 |
46 |
47 | @web.route("/book//detail")
48 | def book_detail(isbn):
49 |
50 | # 取出每本书的详情
51 | yushu_book = YuShuBook()
52 | yushu_book.search_by_isbn(isbn)
53 | book = BookViewModel(yushu_book.first)
54 |
55 | # 三种情况的判断
56 | has_in_gifts = current_user.is_authenticated and current_user.has_in_gifts(isbn)
57 | has_in_wishes = current_user.is_authenticated and current_user.has_in_wishs(isbn)
58 |
59 | # 赠书人列表和索要人列表
60 | trade_gifts = Gift.query.filter_by(isbn=isbn).all()
61 | trade_wishs = Wish.query.filter_by(isbn=isbn).all()
62 |
63 | trade_wishs_model = TradeInfo(trade_wishs)
64 | trade_gifts_model = TradeInfo(trade_gifts)
65 | return render_template("book_detail.html", book=book,
66 | wishes=trade_wishs_model, gifts=trade_gifts_model,
67 | has_in_wishes=has_in_wishes, has_in_gifts=has_in_gifts)
68 |
--------------------------------------------------------------------------------
/app/web/gift.py:
--------------------------------------------------------------------------------
1 | from flask import flash, current_app, render_template, redirect, url_for
2 | from flask_login import login_required, current_user
3 |
4 | from app.libs.enums import PendingStatus
5 | from app.models.base import db
6 | from app.models.drift import Drift
7 | from app.models.gift import Gift
8 | from app.view_models.trade import MyTrade
9 | from . import web
10 |
11 | __author__ = '七月'
12 |
13 |
14 | @web.route('/my/gifts')
15 | @login_required
16 | def my_gifts():
17 | uid = current_user.id
18 | gifts_of_mine = Gift.get_user_gifts(uid)
19 | isbn_list = [gift.isbn for gift in gifts_of_mine]
20 | wish_count_list = Gift.get_wish_counts(isbn_list)
21 | view_model = MyTrade(gifts_of_mine, wish_count_list)
22 | return render_template('my_gifts.html', gifts=view_model.trades)
23 |
24 |
25 | @web.route('/gifts/book/')
26 | @login_required
27 | def save_to_gifts(isbn):
28 | if current_user.can_save_to_list(isbn):
29 | with db.auto_commit():
30 | gift = Gift()
31 | gift.isbn = isbn
32 | gift.uid = current_user.id
33 |
34 | current_user.beans += current_app.config['BEANS_UPLOAD_ONE_BOOK']
35 |
36 | db.session.add(gift)
37 | else:
38 | flash("这本书以添加进您的赠送清单或已经存在于您的心愿清单,请不要重复添加")
39 | return redirect(url_for('web.book_detail', isbn=isbn))
40 |
41 |
42 | @web.route('/gifts//redraw')
43 | def redraw_from_gifts(gid):
44 | gift = Gift.query.filter_by(id=gid, launched=False).first_or_404()
45 | drift = Drift.query.filter_by(gift_id=gid, pending=PendingStatus.Waiting).first()
46 |
47 | if drift:
48 | flash('这个礼物正处于交易状态,请先千万鱼漂完成该交易')
49 | else:
50 | with db.auto_commit():
51 | gift.delete()
52 | current_user.beans -= current_app.config['BEANS_UPLOAD_ONE_BOOK']
53 |
54 | return redirect(url_for('web.my_gifts'))
55 |
56 |
57 |
--------------------------------------------------------------------------------
/app/web/main.py:
--------------------------------------------------------------------------------
1 | from app.models.gift import Gift
2 | from app.view_models.book import BookViewModel
3 | from flask import render_template
4 | from . import web
5 |
6 |
7 | __author__ = '七月'
8 |
9 |
10 | @web.route('/')
11 | def index():
12 | recent_gifts = Gift.recent()
13 | books = [BookViewModel(gift.book) for gift in recent_gifts]
14 | return render_template('index.html', recent=books)
15 |
16 |
17 | @web.route('/personal')
18 | def personal_center():
19 | pass
20 |
--------------------------------------------------------------------------------
/app/web/wish.py:
--------------------------------------------------------------------------------
1 | from flask import flash, redirect, url_for, render_template
2 | from flask_login import current_user, login_required
3 |
4 | from app.libs.email import send_mail
5 | from app.models.base import db
6 | from app.models.gift import Gift
7 | from app.models.wish import Wish
8 | from app.view_models.trade import MyTrade
9 | from . import web
10 |
11 | __author__ = '七月'
12 |
13 |
14 | @web.route('/my/wish')
15 | def my_wish():
16 | uid = current_user.id
17 | wishes_of_mine = Wish.get_user_wishes(uid)
18 | isbn_list = [gift.isbn for gift in wishes_of_mine]
19 | gift_count_list = Wish.get_gift_counts(isbn_list)
20 | view_model = MyTrade(wishes_of_mine, gift_count_list)
21 | return render_template('my_wish.html', wishes=view_model.trades)
22 |
23 |
24 | @web.route('/wish/book/')
25 | @login_required
26 | def save_to_wish(isbn):
27 | if current_user.can_save_to_list(isbn):
28 | with db.auto_commit():
29 | wish = Wish()
30 | wish.isbn = isbn
31 | wish.uid = current_user.id
32 |
33 | db.session.add(wish)
34 | else:
35 | flash("这本书以添加进您的赠送清单或已经存在于您的心愿清单,请不要重复添加")
36 | return redirect(url_for('web.book_detail', isbn=isbn))
37 |
38 |
39 | @web.route('/satisfy/wish/')
40 | def satisfy_wish(wid):
41 | """
42 | 向想要这本书的人发送一封邮件
43 | 注意,这个接口需要做一定的频率限制
44 | 这接口比较适合写成一个ajax接口
45 | """
46 | wish = Wish.query.get_or_404(wid)
47 | gift = Gift.query.filter_by(uid=current_user.id, isbn=wish.isbn).first()
48 | if not gift:
49 | flash('你还没有上传此书,请点击“加入到赠送清单”添加此书。添加前,请确保自己可以赠送此书')
50 | else:
51 | send_mail(wish.user.email, '有人想送你一本书', 'email/satisify_wish.html', wish=wish,
52 | gift=gift)
53 | flash('已向他/她发送了一封邮件,如果他/她愿意接受你的赠送,你将收到一个鱼漂')
54 | return redirect(url_for('web.book_detail', isbn=wish.isbn))
55 |
56 |
57 | @web.route('/wish/book//redraw')
58 | def redraw_from_wish(isbn):
59 | wish = Wish.query.filter_by(isbn=isbn, launched=False).first_or_404()
60 |
61 | with db.auto_commit():
62 | wish.delete()
63 |
64 | return redirect(url_for('web.my_wish'))
65 |
--------------------------------------------------------------------------------
/fisher.py:
--------------------------------------------------------------------------------
1 | """
2 | create by gaowenfeng on 2018/5/31
3 | """
4 |
5 | from app import create_app
6 |
7 |
8 | __author__ = "gaowenfeng"
9 |
10 | app = create_app()
11 |
12 | if __name__ == "__main__":
13 | app.run(host=app.config["HOST"], debug=app.config["DEBUG"], port=app.config["PORT"], threaded=False)
14 |
--------------------------------------------------------------------------------