Merge lp:~vauxoo/web-addons/7.0-web_hideleftmenu into lp:~webaddons-core-editors/web-addons/7.0
- 7.0-web_hideleftmenu
- Merge into 7.0
Status: | Rejected |
---|---|
Rejected by: | Holger Brunn (Therp) |
Proposed branch: | lp:~vauxoo/web-addons/7.0-web_hideleftmenu |
Merge into: | lp:~webaddons-core-editors/web-addons/7.0 |
Diff against target: |
24257 lines (+23454/-0) 108 files modified
.bzrignore (+3/-0) multi_image/__init__.py (+25/-0) multi_image/__openerp__.py (+50/-0) multi_image/controllers/__init__.py (+25/-0) multi_image/controllers/main.py (+61/-0) multi_image/static/lib/lightbox/css/lightbox.css (+128/-0) multi_image/static/lib/lightbox/js/jquery.lightbox.js (+501/-0) multi_image/static/src/css/hoverbox.css (+52/-0) multi_image/static/src/js/multi_image.js (+227/-0) multi_image/static/src/xml/image_multi.xml (+126/-0) multi_image_sample/__init__.py (+25/-0) multi_image_sample/__openerp__.py (+39/-0) multi_image_sample/product.py (+34/-0) multi_image_sample/product_view.xml (+20/-0) portal_public_documents/__init__.py (+2/-0) portal_public_documents/__openerp__.py (+41/-0) portal_public_documents/controllers/__init__.py (+1/-0) portal_public_documents/controllers/main.py (+41/-0) portal_public_documents/data/portal_public_document_data.xml (+52/-0) portal_public_documents/data/ppd_scheduler.xml (+13/-0) portal_public_documents/demo/portal_public_document_demo.xml (+18/-0) portal_public_documents/model/__init__.py (+1/-0) portal_public_documents/model/ir_attachment.py (+241/-0) portal_public_documents/view/ir_attachment_view.xml (+34/-0) web_allow_custom_root/__init__.py (+30/-0) web_allow_custom_root/__openerp__.py (+86/-0) web_binary_icon/__openerp__.py (+89/-0) web_bootstrap3/__openerp__.py (+91/-0) web_bootstrap3/static/src/css/bs3-lightbox.css (+91/-0) web_bootstrap3/static/src/css/bs3-openerp.css (+6022/-0) web_bootstrap3/static/src/fonts/glyphicons-halflings-regular.svg (+228/-0) web_bootstrap3/static/src/index.html (+211/-0) web_bootstrap3/static/src/index2.html (+89/-0) web_bootstrap3/static/src/js/bootstrap-lightbox.js (+300/-0) web_bootstrap3/static/src/js/bootstrap.js (+2001/-0) web_bootstrap3/static/src/js/ekko-lightbox.js (+194/-0) web_bootstrap3/static/src/less/bs3-openerp.less (+3/-0) web_camera/__init__.py (+22/-0) web_camera/__openerp__.py (+47/-0) web_camera/static/src/css/base.css (+21/-0) web_camera/static/src/js/view.js (+189/-0) web_camera/static/src/xml/webcam_template.xml (+35/-0) web_fancybox/__openerp__.py (+46/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/CHANGELOG.md (+125/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/README.md (+217/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/ajax.txt (+15/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/iframe.html (+26/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/index.html (+312/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/lib/jquery-1.10.1.min.js (+6/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/lib/jquery-1.9.0.min.js (+4/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/lib/jquery.mousewheel-3.0.6.pack.js (+13/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/source/helpers/jquery.fancybox-buttons.css (+97/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/source/helpers/jquery.fancybox-buttons.js (+122/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/source/helpers/jquery.fancybox-media.js (+199/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/source/helpers/jquery.fancybox-thumbs.css (+55/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/source/helpers/jquery.fancybox-thumbs.js (+162/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/source/jquery.fancybox.css (+274/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/source/jquery.fancybox.js (+2020/-0) web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/source/jquery.fancybox.pack.js (+46/-0) web_flagicons/__openerp__.py (+47/-0) web_flagicons/static/src/css/flags.css (+245/-0) web_fontawesome/__openerp__.py (+83/-0) web_fontawesome/static/src/css/font-awesome-ie7.css (+1203/-0) web_fontawesome/static/src/css/font-awesome.css (+1479/-0) web_fontawesome/static/src/font/fontawesome-webfont.svg (+399/-0) web_fontawesome/static/src/xml/base.xml (+10/-0) web_gmaps/__init__.py (+1/-0) web_gmaps/__openerp__.py (+62/-0) web_gmaps/model/__init__.py (+1/-0) web_gmaps/model/partner.py (+54/-0) web_gmaps/static/html/404.html (+11/-0) web_gmaps/static/src/css/gmaps.css (+7/-0) web_gmaps/static/src/js/lib.js (+45/-0) web_gmaps/static/src/js/load_gmap_key.js (+8/-0) web_gmaps/static/src/xml/lib.xml (+20/-0) web_gmaps/view/partner_view.xml (+19/-0) web_gmaps_action/__init__.py (+2/-0) web_gmaps_action/__openerp__.py (+77/-0) web_gmaps_action/controllers/__init__.py (+1/-0) web_gmaps_action/controllers/main.py (+23/-0) web_gmaps_action/data/gmaps_data.xml (+10/-0) web_gmaps_action/doc/index.rst (+44/-0) web_gmaps_action/gmaps_point.py (+125/-0) web_gmaps_action/gmaps_point_view.xml (+90/-0) web_gmaps_action/res_partner.py (+8/-0) web_gmaps_action/res_partner_view.xml (+17/-0) web_gmaps_action/static/src/css/gmaps.css (+26/-0) web_gmaps_action/static/src/img/developers-logo.svg (+2243/-0) web_gmaps_action/static/src/js/gmaps.js (+500/-0) web_gmaps_action/static/src/xml/gmaps.xml (+155/-0) web_gmaps_action/web_gmaps_demo.xml (+28/-0) web_hideleftmenu/__openerp__.py (+52/-0) web_hideleftmenu/static/src/css/lib.css (+6/-0) web_hideleftmenu/static/src/js/lib.js (+10/-0) web_hideleftmenu/static/src/xml/lib.xml (+10/-0) web_many2many_attachments/__openerp__.py (+51/-0) web_many2many_attachments/static/src/js/many2many_att.js (+210/-0) web_many2many_attachments/static/src/lib/URI.js (+89/-0) web_many2many_attachments/static/src/xml/many2many_att.xml (+19/-0) web_process_prettyprint/__openerp__.py (+56/-0) web_process_prettyprint/static/html/example.html (+97/-0) web_process_prettyprint/static/src/css/lib.css (+48/-0) web_process_prettyprint/static/src/js/lib.js (+3/-0) web_process_prettyprint/static/src/xml/lib.xml (+356/-0) web_url/__openerp__.py (+74/-0) web_url/static/html/404.html (+11/-0) web_url/static/src/js/lib.js (+52/-0) web_url/static/src/xml/lib.xml (+19/-0) |
To merge this branch: | bzr merge lp:~vauxoo/web-addons/7.0-web_hideleftmenu |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Holger Brunn (Therp) | Disapprove | ||
OscarAlca (community) | Disapprove | ||
Pedro Manuel Baeza | code review | Needs Fixing | |
Review via email: mp+216796@code.launchpad.net |
Commit message
Description of the change
Merge Yanina's changes
Pedro Manuel Baeza (pedro.baeza) wrote : | # |
OscarAlca (oscarolar) wrote : | # |
Hello Pedro, Im sorry about this MP, I was making a merge on our own dev branches and wrongly sent the MP to web_addons, please skip this MP, sorry for the inconvenience
Pedro Manuel Baeza (pedro.baeza) wrote : | # |
Well, although the MP is wrong, I see the module very interesting, so why don't you propose here?
Regards.
Holger Brunn (Therp) (hbrunn) wrote : | # |
I reject this MP, but as Pedro said, a clean MP for just the module in question seems to be interesting.
Unmerged revisions
- 113. By Yanina Aular (Vauxoo)
-
[ADD] comments added
- 112. By Yanina Aular (Vauxoo)
-
[IMP] Comments and code improvements
- 111. By Yanina Aular (Vauxoo)
-
[ADD] deletePoint
- 110. By Yanina Aular (Vauxoo)
-
[IMP] Variable names from googlemaps API have changed
- 109. By Yanina Aular (Vauxoo)
-
[IMP] example for gmaps with partner hidden
- 108. By Yanina Aular (Vauxoo)
-
[IMP] points list in view is upgrade to the change ( when there is already a list of previous points)
- 107. By Yanina Aular (Vauxoo)
-
[IMP] points list in view is upgrade to the change
- 106. By Yanina Aular (Vauxoo)
-
[ADD] id added to the points in javascript
- 105. By Yanina Aular (Vauxoo)
-
[ADD] destroy and comment some functions
- 104. By Yanina Aular (Vauxoo)
-
[IMP] points of model on map charged
Preview Diff
1 | === added file '.bzrignore' | |||
2 | --- .bzrignore 1970-01-01 00:00:00 +0000 | |||
3 | +++ .bzrignore 2014-04-22 22:55:50 +0000 | |||
4 | @@ -0,0 +1,3 @@ | |||
5 | 1 | ^.DS_Store | ||
6 | 2 | *.DS_Store | ||
7 | 3 | portal_public_documents/static/files/* | ||
8 | 0 | 4 | ||
9 | === added directory 'multi_image' | |||
10 | === added file 'multi_image/__init__.py' | |||
11 | --- multi_image/__init__.py 1970-01-01 00:00:00 +0000 | |||
12 | +++ multi_image/__init__.py 2014-04-22 22:55:50 +0000 | |||
13 | @@ -0,0 +1,25 @@ | |||
14 | 1 | # -*- coding: utf-8 -*- | ||
15 | 2 | ############################################################################## | ||
16 | 3 | # | ||
17 | 4 | # OpenERP, Open Source Management Solution | ||
18 | 5 | # Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>) | ||
19 | 6 | # Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>). | ||
20 | 7 | # | ||
21 | 8 | # This program is free software: you can redistribute it and/or modify | ||
22 | 9 | # it under the terms of the GNU Affero General Public License as | ||
23 | 10 | # published by the Free Software Foundation, either version 3 of the | ||
24 | 11 | # License, or (at your option) any later version. | ||
25 | 12 | # | ||
26 | 13 | # This program is distributed in the hope that it will be useful, | ||
27 | 14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
28 | 15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
29 | 16 | # GNU Affero General Public License for more details. | ||
30 | 17 | # | ||
31 | 18 | # You should have received a copy of the GNU Affero General Public License | ||
32 | 19 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
33 | 20 | # | ||
34 | 21 | ############################################################################## | ||
35 | 22 | |||
36 | 23 | import controllers | ||
37 | 24 | |||
38 | 25 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | ||
39 | 0 | \ No newline at end of file | 26 | \ No newline at end of file |
40 | 1 | 27 | ||
41 | === added file 'multi_image/__openerp__.py' | |||
42 | --- multi_image/__openerp__.py 1970-01-01 00:00:00 +0000 | |||
43 | +++ multi_image/__openerp__.py 2014-04-22 22:55:50 +0000 | |||
44 | @@ -0,0 +1,50 @@ | |||
45 | 1 | # -*- coding: utf-8 -*- | ||
46 | 2 | ############################################################################## | ||
47 | 3 | # | ||
48 | 4 | # OpenERP, Open Source Management Solution | ||
49 | 5 | # Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>) | ||
50 | 6 | # Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>). | ||
51 | 7 | # | ||
52 | 8 | # This program is free software: you can redistribute it and/or modify | ||
53 | 9 | # it under the terms of the GNU Affero General Public License as | ||
54 | 10 | # published by the Free Software Foundation, either version 3 of the | ||
55 | 11 | # License, or (at your option) any later version. | ||
56 | 12 | # | ||
57 | 13 | # This program is distributed in the hope that it will be useful, | ||
58 | 14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
59 | 15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
60 | 16 | # GNU Affero General Public License for more details. | ||
61 | 17 | # | ||
62 | 18 | # You should have received a copy of the GNU Affero General Public License | ||
63 | 19 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
64 | 20 | # | ||
65 | 21 | ############################################################################## | ||
66 | 22 | |||
67 | 23 | { | ||
68 | 24 | "name" : "Multi Image", | ||
69 | 25 | "version" : "1.0", | ||
70 | 26 | "author" : "Serpent Consulting Services Pvt. Ltd.", | ||
71 | 27 | "category": 'Image', | ||
72 | 28 | 'complexity': "easy", | ||
73 | 29 | 'depends': ['web'], | ||
74 | 30 | "description": """ | ||
75 | 31 | This module provides the functionality to store multiple images for one record. | ||
76 | 32 | All images store in server directory. so database size doesnot increase. | ||
77 | 33 | """, | ||
78 | 34 | 'update_xml': [ | ||
79 | 35 | ], | ||
80 | 36 | 'js':[ | ||
81 | 37 | "static/lib/lightbox/js/jquery.lightbox.js", | ||
82 | 38 | "static/src/js/multi_image.js" | ||
83 | 39 | ], | ||
84 | 40 | 'css':[ | ||
85 | 41 | "static/src/css/hoverbox.css", | ||
86 | 42 | "static/lib/lightbox/css/lightbox.css", | ||
87 | 43 | ], | ||
88 | 44 | 'website': 'http://www.serpentcs.com', | ||
89 | 45 | 'qweb': ['static/src/xml/image_multi.xml'], | ||
90 | 46 | 'installable': True, | ||
91 | 47 | 'auto_install': False, | ||
92 | 48 | } | ||
93 | 49 | |||
94 | 50 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | ||
95 | 0 | 51 | ||
96 | === added directory 'multi_image/controllers' | |||
97 | === added file 'multi_image/controllers/__init__.py' | |||
98 | --- multi_image/controllers/__init__.py 1970-01-01 00:00:00 +0000 | |||
99 | +++ multi_image/controllers/__init__.py 2014-04-22 22:55:50 +0000 | |||
100 | @@ -0,0 +1,25 @@ | |||
101 | 1 | # -*- coding: utf-8 -*- | ||
102 | 2 | ############################################################################## | ||
103 | 3 | # | ||
104 | 4 | # OpenERP, Open Source Management Solution | ||
105 | 5 | # Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>) | ||
106 | 6 | # Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>). | ||
107 | 7 | # | ||
108 | 8 | # This program is free software: you can redistribute it and/or modify | ||
109 | 9 | # it under the terms of the GNU Affero General Public License as | ||
110 | 10 | # published by the Free Software Foundation, either version 3 of the | ||
111 | 11 | # License, or (at your option) any later version. | ||
112 | 12 | # | ||
113 | 13 | # This program is distributed in the hope that it will be useful, | ||
114 | 14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
115 | 15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
116 | 16 | # GNU Affero General Public License for more details. | ||
117 | 17 | # | ||
118 | 18 | # You should have received a copy of the GNU Affero General Public License | ||
119 | 19 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
120 | 20 | # | ||
121 | 21 | ############################################################################## | ||
122 | 22 | |||
123 | 23 | from . import main | ||
124 | 24 | |||
125 | 25 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | ||
126 | 0 | \ No newline at end of file | 26 | \ No newline at end of file |
127 | 1 | 27 | ||
128 | === added file 'multi_image/controllers/main.py' | |||
129 | --- multi_image/controllers/main.py 1970-01-01 00:00:00 +0000 | |||
130 | +++ multi_image/controllers/main.py 2014-04-22 22:55:50 +0000 | |||
131 | @@ -0,0 +1,61 @@ | |||
132 | 1 | # -*- coding: utf-8 -*- | ||
133 | 2 | ############################################################################## | ||
134 | 3 | # | ||
135 | 4 | # OpenERP, Open Source Management Solution | ||
136 | 5 | # Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>) | ||
137 | 6 | # Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>). | ||
138 | 7 | # | ||
139 | 8 | # This program is free software: you can redistribute it and/or modify | ||
140 | 9 | # it under the terms of the GNU Affero General Public License as | ||
141 | 10 | # published by the Free Software Foundation, either version 3 of the | ||
142 | 11 | # License, or (at your option) any later version. | ||
143 | 12 | # | ||
144 | 13 | # This program is distributed in the hope that it will be useful, | ||
145 | 14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
146 | 15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
147 | 16 | # GNU Affero General Public License for more details. | ||
148 | 17 | # | ||
149 | 18 | # You should have received a copy of the GNU Affero General Public License | ||
150 | 19 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
151 | 20 | # | ||
152 | 21 | ############################################################################## | ||
153 | 22 | |||
154 | 23 | from web import http | ||
155 | 24 | from openerp.addons.web.controllers.main import Binary | ||
156 | 25 | openerpweb = http | ||
157 | 26 | import simplejson | ||
158 | 27 | import time | ||
159 | 28 | import openerp | ||
160 | 29 | import os | ||
161 | 30 | import StringIO | ||
162 | 31 | |||
163 | 32 | class Binary_multi(Binary): | ||
164 | 33 | |||
165 | 34 | @openerpweb.httprequest | ||
166 | 35 | def upload_image_multi(self, req, callback, ufile): | ||
167 | 36 | # TODO: might be useful to have a configuration flag for max-length file uploads | ||
168 | 37 | out = """<script language="javascript" type="text/javascript"> | ||
169 | 38 | var win = window.top.window; | ||
170 | 39 | win.jQuery(win).trigger(%s, %s); | ||
171 | 40 | </script>""" | ||
172 | 41 | data = ufile.read() | ||
173 | 42 | if data: | ||
174 | 43 | current_dat_time = time.strftime("%d%m%y%H%M%S") | ||
175 | 44 | file_name = current_dat_time + "_" + ufile.filename | ||
176 | 45 | addons_path = openerpweb.addons_manifest['web']['addons_path'] + "/web/static/src/img/image_multi/" | ||
177 | 46 | if not os.path.isdir(addons_path): | ||
178 | 47 | os.mkdir(addons_path) | ||
179 | 48 | addons_path += file_name | ||
180 | 49 | buff = StringIO.StringIO() | ||
181 | 50 | buff.write(data) | ||
182 | 51 | buff.seek(0) | ||
183 | 52 | file_name = "/web/static/src/img/image_multi/" + file_name | ||
184 | 53 | file = open(addons_path, 'wb') | ||
185 | 54 | file.write(buff.read()) | ||
186 | 55 | file.close() | ||
187 | 56 | args = [len(data), file_name, ufile.content_type, ufile.filename, time.strftime("%m/%d/%Y %H:%M:%S")] | ||
188 | 57 | else: | ||
189 | 58 | args = [] | ||
190 | 59 | return out % (simplejson.dumps(callback), simplejson.dumps(args)) | ||
191 | 60 | |||
192 | 61 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | ||
193 | 0 | \ No newline at end of file | 62 | \ No newline at end of file |
194 | 1 | 63 | ||
195 | === added directory 'multi_image/static' | |||
196 | === added directory 'multi_image/static/lib' | |||
197 | === added directory 'multi_image/static/lib/lightbox' | |||
198 | === added directory 'multi_image/static/lib/lightbox/css' | |||
199 | === added file 'multi_image/static/lib/lightbox/css/lightbox.css' | |||
200 | --- multi_image/static/lib/lightbox/css/lightbox.css 1970-01-01 00:00:00 +0000 | |||
201 | +++ multi_image/static/lib/lightbox/css/lightbox.css 2014-04-22 22:55:50 +0000 | |||
202 | @@ -0,0 +1,128 @@ | |||
203 | 1 | #lightbox{ | ||
204 | 2 | position: absolute; | ||
205 | 3 | left: 0; | ||
206 | 4 | width: 100%; | ||
207 | 5 | z-index: 100; | ||
208 | 6 | text-align: center; | ||
209 | 7 | line-height: 0; | ||
210 | 8 | } | ||
211 | 9 | |||
212 | 10 | #lightbox a img{ border: none; } | ||
213 | 11 | |||
214 | 12 | #outerImageContainer{ | ||
215 | 13 | position: relative; | ||
216 | 14 | background-color: #fff; | ||
217 | 15 | width: 250px; | ||
218 | 16 | height: 250px; | ||
219 | 17 | margin: 0 auto; | ||
220 | 18 | } | ||
221 | 19 | |||
222 | 20 | #imageContainer{ | ||
223 | 21 | padding: 10px; | ||
224 | 22 | } | ||
225 | 23 | |||
226 | 24 | #loading{ | ||
227 | 25 | position: absolute; | ||
228 | 26 | top: 40%; | ||
229 | 27 | left: 0%; | ||
230 | 28 | height: 25%; | ||
231 | 29 | width: 100%; | ||
232 | 30 | text-align: center; | ||
233 | 31 | line-height: 0; | ||
234 | 32 | } | ||
235 | 33 | #hoverNav{ | ||
236 | 34 | position: absolute; | ||
237 | 35 | top: 0; | ||
238 | 36 | left: 0; | ||
239 | 37 | height: 100%; | ||
240 | 38 | width: 100%; | ||
241 | 39 | z-index: 10; | ||
242 | 40 | } | ||
243 | 41 | #imageContainer>#hoverNav{ left: 0;} | ||
244 | 42 | #hoverNav a{ outline: none;} | ||
245 | 43 | |||
246 | 44 | #prevLink, #nextLink{ | ||
247 | 45 | width: 49%; | ||
248 | 46 | height: 100%; | ||
249 | 47 | background: transparent url(../images/blank.gif) no-repeat; /* Trick IE into showing hover */ | ||
250 | 48 | display: block; | ||
251 | 49 | } | ||
252 | 50 | #prevLink { left: 0; float: left;} | ||
253 | 51 | #nextLink { right: 0; float: right;} | ||
254 | 52 | #prevLink:hover, #prevLink:visited:hover { background: url(../images/prev.gif) left 50% no-repeat; } | ||
255 | 53 | #nextLink:hover, #nextLink:visited:hover { background: url(../images/next.gif) right 50% no-repeat; } | ||
256 | 54 | /*** START : next / previous text links ***/ | ||
257 | 55 | nextLinkText, #prevLinkText{ | ||
258 | 56 | color: #FF9834; | ||
259 | 57 | font-weight:bold; | ||
260 | 58 | text-decoration: none; | ||
261 | 59 | } | ||
262 | 60 | #nextLinkText{ | ||
263 | 61 | padding-left: 20px; | ||
264 | 62 | } | ||
265 | 63 | #prevLinkText{ | ||
266 | 64 | padding-right: 20px; | ||
267 | 65 | } | ||
268 | 66 | /*** END : next / previous text links ***/ | ||
269 | 67 | /*** START : added padding when navbar is on top ***/ | ||
270 | 68 | |||
271 | 69 | .ontop #imageData { | ||
272 | 70 | padding-top: 5px; | ||
273 | 71 | } | ||
274 | 72 | |||
275 | 73 | /*** END : added padding when navbar is on top ***/ | ||
276 | 74 | |||
277 | 75 | #imageDataContainer{ | ||
278 | 76 | font: 10px Verdana, Helvetica, sans-serif; | ||
279 | 77 | background-color: #fff; | ||
280 | 78 | margin: 0 auto; | ||
281 | 79 | line-height: 1.4em; | ||
282 | 80 | } | ||
283 | 81 | |||
284 | 82 | #imageData{ | ||
285 | 83 | padding:0 10px; | ||
286 | 84 | } | ||
287 | 85 | #imageData #imageDetails{ width: 70%; float: left; text-align: left; } | ||
288 | 86 | #imageData #caption{ font-weight: bold; } | ||
289 | 87 | #imageData #numberDisplay{ display: block; clear: left; padding-bottom: 1.0em; } | ||
290 | 88 | #imageData #numberDisplay a { color: black; padding-left: 5px; padding-right: 5px;} | ||
291 | 89 | #imageData #bottomNavClose{float: right; padding-bottom: 0.7em; } | ||
292 | 90 | #imageData #helpDisplay {clear: left; float: left; display: block; } | ||
293 | 91 | |||
294 | 92 | #overlay{ | ||
295 | 93 | position: absolute; | ||
296 | 94 | top: 0; | ||
297 | 95 | left: 0; | ||
298 | 96 | z-index: 90; | ||
299 | 97 | width: 100%; | ||
300 | 98 | height: 500px; | ||
301 | 99 | background-color: #000; | ||
302 | 100 | filter:alpha(opacity=60); | ||
303 | 101 | -moz-opacity: 0.6; | ||
304 | 102 | opacity: 0.6 !important; | ||
305 | 103 | display: none; | ||
306 | 104 | } | ||
307 | 105 | |||
308 | 106 | |||
309 | 107 | .clearfix:after { | ||
310 | 108 | content: "."; | ||
311 | 109 | display: block; | ||
312 | 110 | height: 0; | ||
313 | 111 | clear: both; | ||
314 | 112 | visibility: hidden; | ||
315 | 113 | } | ||
316 | 114 | |||
317 | 115 | * html>body .clearfix { | ||
318 | 116 | display: inline-block; | ||
319 | 117 | width: 100%; | ||
320 | 118 | } | ||
321 | 119 | |||
322 | 120 | * html .clearfix { | ||
323 | 121 | /* Hides from IE-mac \*/ | ||
324 | 122 | height: 1%; | ||
325 | 123 | /* End hide from IE-mac */ | ||
326 | 124 | } | ||
327 | 125 | |||
328 | 126 | #lightboxIframe { | ||
329 | 127 | display: none; | ||
330 | 128 | } | ||
331 | 0 | 129 | ||
332 | === added directory 'multi_image/static/lib/lightbox/images' | |||
333 | === added file 'multi_image/static/lib/lightbox/images/blank.gif' | |||
334 | 1 | Binary files multi_image/static/lib/lightbox/images/blank.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/blank.gif 2014-04-22 22:55:50 +0000 differ | 130 | Binary files multi_image/static/lib/lightbox/images/blank.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/blank.gif 2014-04-22 22:55:50 +0000 differ |
335 | === added file 'multi_image/static/lib/lightbox/images/close.gif' | |||
336 | 2 | Binary files multi_image/static/lib/lightbox/images/close.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/close.gif 2014-04-22 22:55:50 +0000 differ | 131 | Binary files multi_image/static/lib/lightbox/images/close.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/close.gif 2014-04-22 22:55:50 +0000 differ |
337 | === added file 'multi_image/static/lib/lightbox/images/closelabel.gif' | |||
338 | 3 | Binary files multi_image/static/lib/lightbox/images/closelabel.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/closelabel.gif 2014-04-22 22:55:50 +0000 differ | 132 | Binary files multi_image/static/lib/lightbox/images/closelabel.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/closelabel.gif 2014-04-22 22:55:50 +0000 differ |
339 | === added file 'multi_image/static/lib/lightbox/images/loading.gif' | |||
340 | 4 | Binary files multi_image/static/lib/lightbox/images/loading.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/loading.gif 2014-04-22 22:55:50 +0000 differ | 133 | Binary files multi_image/static/lib/lightbox/images/loading.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/loading.gif 2014-04-22 22:55:50 +0000 differ |
341 | === added file 'multi_image/static/lib/lightbox/images/next.gif' | |||
342 | 5 | Binary files multi_image/static/lib/lightbox/images/next.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/next.gif 2014-04-22 22:55:50 +0000 differ | 134 | Binary files multi_image/static/lib/lightbox/images/next.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/next.gif 2014-04-22 22:55:50 +0000 differ |
343 | === added file 'multi_image/static/lib/lightbox/images/nextlabel.gif' | |||
344 | 6 | Binary files multi_image/static/lib/lightbox/images/nextlabel.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/nextlabel.gif 2014-04-22 22:55:50 +0000 differ | 135 | Binary files multi_image/static/lib/lightbox/images/nextlabel.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/nextlabel.gif 2014-04-22 22:55:50 +0000 differ |
345 | === added file 'multi_image/static/lib/lightbox/images/prev.gif' | |||
346 | 7 | Binary files multi_image/static/lib/lightbox/images/prev.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/prev.gif 2014-04-22 22:55:50 +0000 differ | 136 | Binary files multi_image/static/lib/lightbox/images/prev.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/prev.gif 2014-04-22 22:55:50 +0000 differ |
347 | === added file 'multi_image/static/lib/lightbox/images/prevlabel.gif' | |||
348 | 8 | Binary files multi_image/static/lib/lightbox/images/prevlabel.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/prevlabel.gif 2014-04-22 22:55:50 +0000 differ | 137 | Binary files multi_image/static/lib/lightbox/images/prevlabel.gif 1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/prevlabel.gif 2014-04-22 22:55:50 +0000 differ |
349 | === added directory 'multi_image/static/lib/lightbox/js' | |||
350 | === added file 'multi_image/static/lib/lightbox/js/jquery.lightbox.js' | |||
351 | --- multi_image/static/lib/lightbox/js/jquery.lightbox.js 1970-01-01 00:00:00 +0000 | |||
352 | +++ multi_image/static/lib/lightbox/js/jquery.lightbox.js 2014-04-22 22:55:50 +0000 | |||
353 | @@ -0,0 +1,501 @@ | |||
354 | 1 | /** | ||
355 | 2 | * jQuery Lightbox | ||
356 | 3 | * @author Warren Krewenki | ||
357 | 4 | * | ||
358 | 5 | * This package is distributed under the BSD license. | ||
359 | 6 | * For full license information, see LICENSE.TXT | ||
360 | 7 | * | ||
361 | 8 | * Based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) | ||
362 | 9 | * | ||
363 | 10 | * | ||
364 | 11 | **/ | ||
365 | 12 | |||
366 | 13 | (function($) { | ||
367 | 14 | $.fn.lightbox = function(options) { | ||
368 | 15 | // build main options | ||
369 | 16 | var opts = $.extend({}, $.fn.lightbox.defaults, options); | ||
370 | 17 | |||
371 | 18 | $(window).resize(resizeOverlayToFitWindow); | ||
372 | 19 | |||
373 | 20 | initialize(); | ||
374 | 21 | showLightbox(this); | ||
375 | 22 | /* | ||
376 | 23 | # Initialize the lightbox by creating our html and reading some image data | ||
377 | 24 | # This method is called by the constructor after any click events trigger it | ||
378 | 25 | # You will never call it by itself, to my knowledge. | ||
379 | 26 | */ | ||
380 | 27 | function initialize() { | ||
381 | 28 | $('#overlay, #lightbox').remove(); | ||
382 | 29 | opts.inprogress = false; | ||
383 | 30 | |||
384 | 31 | // if jsonData, build the imageArray from data provided in JSON format | ||
385 | 32 | if (opts.jsonData && opts.jsonData.length > 0) { | ||
386 | 33 | var parser = opts.jsonDataParser ? opts.jsonDataParser : $.fn.lightbox.parseJsonData; | ||
387 | 34 | opts.imageArray = []; | ||
388 | 35 | opts.imageArray = parser(opts.jsonData); | ||
389 | 36 | } | ||
390 | 37 | |||
391 | 38 | var outerImage = '<div id="outerImageContainer"><div id="imageContainer" style="height: 520px; width: 720px;"><iframe id="lightboxIframe"></iframe><img id="lightboxImage" /><div id="hoverNav"><a href="javascript://" title="' + opts.strings.prevLinkTitle + '" id="prevLink"></a><a href="javascript://" id="nextLink" title="' + opts.strings.nextLinkTitle + '"></a></div><div id="loading"><a href="javascript://" id="loadingLink"><img src="'+opts.fileLoadingImage+'"></a></div></div></div>'; | ||
392 | 39 | var imageData = '<div id="imageDataContainer" class="clearfix"><div id="imageData"><div id="imageDetails"><span id="caption"></span><span id="numberDisplay"></span></div><div id="bottomNav">'; | ||
393 | 40 | |||
394 | 41 | // var outerImage = '<div id="outerImageContainer"><div id="imageContainer" style="height: 520px; width: 720px;"><iframe id="lightboxIframe"></iframe><img id="lightboxImage" syle="vertical-align: middle;" /><div id="hoverNav"><a href="javascript://" title="' + opts.strings.prevLinkTitle + '" id="prevLink"></a><a href="javascript://" id="nextLink" title="' + opts.strings.nextLinkTitle + '"></a></div><div id="loading"><a href="javascript://" id="loadingLink"><img src="'+opts.fileLoadingImage+'"></a></div></div></div>'; | ||
395 | 42 | // var imageData = '<div id="imageDataContainer" class="clearfix"><div id="imageData"><div id="imageDetails"><span id="caption"></span><span id="numberDisplay"></span></div><div id="bottomNav">'; | ||
396 | 43 | |||
397 | 44 | if (opts.displayHelp) { | ||
398 | 45 | imageData += '<span id="helpDisplay">' + opts.strings.help + '</span>'; | ||
399 | 46 | } | ||
400 | 47 | |||
401 | 48 | imageData += '<a href="javascript://" id="bottomNavClose" class="ui-dialog-titlebar-close ui-corner-all ui-state-hover" title="' + opts.strings.closeTitle + '"><span class="ui-icon ui-icon-closethick">close</span></a></div></div></div>'; | ||
402 | 49 | |||
403 | 50 | var string; | ||
404 | 51 | |||
405 | 52 | if (opts.navbarOnTop) { | ||
406 | 53 | string = '<div id="overlay"></div><div id="lightbox">' + imageData + outerImage + '</div>'; | ||
407 | 54 | $("body").append(string); | ||
408 | 55 | $("#imageDataContainer").addClass('ontop'); | ||
409 | 56 | } else { | ||
410 | 57 | string = '<div id="overlay"></div><div id="lightbox">' + outerImage + imageData + '</div>'; | ||
411 | 58 | $("body").append(string); | ||
412 | 59 | } | ||
413 | 60 | |||
414 | 61 | //$("#overlay, #lightbox").click(function(){ end(); }).hide(); | ||
415 | 62 | $("#loadingLink, #bottomNavClose").click(function(){ end(); return false;}); | ||
416 | 63 | $('#outerImageContainer').width(opts.widthCurrent).height(opts.heightCurrent); | ||
417 | 64 | $('#imageDataContainer').width(opts.widthCurrent); | ||
418 | 65 | |||
419 | 66 | if (!opts.imageClickClose) { | ||
420 | 67 | $("#lightboxImage").click(function(){ return false; }); | ||
421 | 68 | $("#hoverNav").click(function(){ return false; }); | ||
422 | 69 | } | ||
423 | 70 | |||
424 | 71 | return true; | ||
425 | 72 | }; | ||
426 | 73 | |||
427 | 74 | /* | ||
428 | 75 | # Get the document and window width/heigh | ||
429 | 76 | # | ||
430 | 77 | # Examples | ||
431 | 78 | # | ||
432 | 79 | # getPageSize() | ||
433 | 80 | # # => [1024,768,1024,768] | ||
434 | 81 | # | ||
435 | 82 | # Returns a numerically indexed array of document width/height and window width/height | ||
436 | 83 | */ | ||
437 | 84 | function getPageSize() { | ||
438 | 85 | var jqueryPageSize = new Array($(document).width(),$(document).height(), $(window).width(), $(window).height()); | ||
439 | 86 | return jqueryPageSize; | ||
440 | 87 | }; | ||
441 | 88 | |||
442 | 89 | function getPageScroll() { | ||
443 | 90 | var xScroll, yScroll; | ||
444 | 91 | |||
445 | 92 | if (self.pageYOffset) { | ||
446 | 93 | yScroll = self.pageYOffset; | ||
447 | 94 | xScroll = self.pageXOffset; | ||
448 | 95 | } else if (document.documentElement && document.documentElement.scrollTop){ // Explorer 6 Strict | ||
449 | 96 | yScroll = document.documentElement.scrollTop; | ||
450 | 97 | xScroll = document.documentElement.scrollLeft; | ||
451 | 98 | } else if (document.body) {// all other Explorers | ||
452 | 99 | yScroll = document.body.scrollTop; | ||
453 | 100 | xScroll = document.body.scrollLeft; | ||
454 | 101 | } | ||
455 | 102 | |||
456 | 103 | var arrayPageScroll = new Array(xScroll,yScroll); | ||
457 | 104 | return arrayPageScroll; | ||
458 | 105 | }; | ||
459 | 106 | |||
460 | 107 | /* | ||
461 | 108 | # Deploy the sexy overlay and display the lightbox | ||
462 | 109 | # | ||
463 | 110 | # imageObject - the jQuery object passed via the click event in the constructor | ||
464 | 111 | # | ||
465 | 112 | # Examples | ||
466 | 113 | # | ||
467 | 114 | # showLightbox($('#CheesusCrust')) | ||
468 | 115 | # | ||
469 | 116 | # Returns a boolean true, because it's got nothing else to return. It should give visual feedback when run | ||
470 | 117 | */ | ||
471 | 118 | function showLightbox(imageObject) { | ||
472 | 119 | /** | ||
473 | 120 | * select, embed and object tags render over the lightbox in some browsers | ||
474 | 121 | * Right now, the best way to fix it is to hide them, but that can trigger reloading of some flash content | ||
475 | 122 | * I don't have a better fix for this right now, but I want ot leave this comment here so you and I both | ||
476 | 123 | * know that i'm aware of it, and I would love to fix it, if you have any suggestions. | ||
477 | 124 | **/ | ||
478 | 125 | $("select, embed, object").hide(); | ||
479 | 126 | |||
480 | 127 | // Resize and display the sexy, sexy overlay. | ||
481 | 128 | resizeOverlayToFitWindow(); | ||
482 | 129 | $("#overlay").hide().css({ opacity : opts.overlayOpacity }).fadeIn(); | ||
483 | 130 | imageNum = 0; | ||
484 | 131 | |||
485 | 132 | // if data is not provided by jsonData parameter | ||
486 | 133 | if (!opts.jsonData) { | ||
487 | 134 | opts.imageArray = []; | ||
488 | 135 | // if image is NOT part of a set.. | ||
489 | 136 | if ((!imageObject.rel || (imageObject.rel == '')) && !opts.allSet) { | ||
490 | 137 | // add single image to Lightbox.imageArray | ||
491 | 138 | opts.imageArray.push(new Array(imageObject.href, opts.displayTitle ? imageObject.title : '')); | ||
492 | 139 | } else { | ||
493 | 140 | // if image is part of a set.. | ||
494 | 141 | $("a").each(function() { | ||
495 | 142 | if(this.href && (this.rel == imageObject.rel)) { | ||
496 | 143 | opts.imageArray.push(new Array(this.href, opts.displayTitle ? this.title : '')); | ||
497 | 144 | } | ||
498 | 145 | }); | ||
499 | 146 | } | ||
500 | 147 | } | ||
501 | 148 | |||
502 | 149 | if (opts.imageArray.length > 1) { | ||
503 | 150 | for (i = 0; i < opts.imageArray.length; i++) { | ||
504 | 151 | for (j = opts.imageArray.length - 1; j > i; j--) { | ||
505 | 152 | if (opts.imageArray[i][0] == opts.imageArray[j][0]) { | ||
506 | 153 | opts.imageArray.splice(j, 1); | ||
507 | 154 | } | ||
508 | 155 | } | ||
509 | 156 | } | ||
510 | 157 | while (opts.imageArray[imageNum][0] != imageObject.href) { | ||
511 | 158 | imageNum++; | ||
512 | 159 | if (imageNum < opts.imageArray.length) { | ||
513 | 160 | break; | ||
514 | 161 | } | ||
515 | 162 | } | ||
516 | 163 | } | ||
517 | 164 | |||
518 | 165 | // calculate top and left offset for the lightbox | ||
519 | 166 | var arrayPageScroll = getPageScroll(); | ||
520 | 167 | var lightboxTop = arrayPageScroll[1] + ($(window).height() / 10); | ||
521 | 168 | var lightboxLeft = arrayPageScroll[0]; | ||
522 | 169 | $('#lightbox').css({top: lightboxTop+'px', left: lightboxLeft+'px'}).show(); | ||
523 | 170 | |||
524 | 171 | if (!opts.slideNavBar) { | ||
525 | 172 | $('#imageData').hide(); | ||
526 | 173 | } | ||
527 | 174 | |||
528 | 175 | changeImage(imageNum); | ||
529 | 176 | }; | ||
530 | 177 | |||
531 | 178 | function changeImage(imageNum) { | ||
532 | 179 | if (opts.inprogress == false) { | ||
533 | 180 | opts.inprogress = true; | ||
534 | 181 | |||
535 | 182 | // update global var | ||
536 | 183 | opts.activeImage = imageNum; | ||
537 | 184 | |||
538 | 185 | // hide elements during transition | ||
539 | 186 | $('#loading').show(); | ||
540 | 187 | $('#lightboxImage, #hoverNav, #prevLink, #nextLink').hide(); | ||
541 | 188 | |||
542 | 189 | // delay preloading image until navbar will slide up | ||
543 | 190 | if (opts.slideNavBar) { | ||
544 | 191 | $('#imageDataContainer').hide(); | ||
545 | 192 | $('#imageData').hide(); | ||
546 | 193 | } | ||
547 | 194 | doChangeImage(); | ||
548 | 195 | } | ||
549 | 196 | }; | ||
550 | 197 | |||
551 | 198 | function doChangeImage() { | ||
552 | 199 | imgPreloader = new Image(); | ||
553 | 200 | |||
554 | 201 | // once image is preloaded, resize image container | ||
555 | 202 | imgPreloader.onload = function() { | ||
556 | 203 | var newWidth = imgPreloader.width; | ||
557 | 204 | var newHeight = imgPreloader.height; | ||
558 | 205 | |||
559 | 206 | if (opts.scaleImages) { | ||
560 | 207 | newWidth = parseInt(opts.xScale * newWidth); | ||
561 | 208 | newHeight = parseInt(opts.yScale * newHeight); | ||
562 | 209 | } | ||
563 | 210 | |||
564 | 211 | if (opts.fitToScreen) { | ||
565 | 212 | var arrayPageSize = getPageSize(); | ||
566 | 213 | var ratio; | ||
567 | 214 | var initialPageWidth = arrayPageSize[2] - 2 * opts.borderSize; | ||
568 | 215 | var initialPageHeight = arrayPageSize[3] - 200; | ||
569 | 216 | |||
570 | 217 | var dI = initialPageWidth/initialPageHeight; | ||
571 | 218 | var dP = imgPreloader.width/imgPreloader.height; | ||
572 | 219 | |||
573 | 220 | if ((imgPreloader.height > initialPageHeight) || (imgPreloader.width > initialPageWidth)) { | ||
574 | 221 | if (dI > dP) { | ||
575 | 222 | newWidth = parseInt((initialPageHeight/imgPreloader.height) * imgPreloader.width); | ||
576 | 223 | newHeight = initialPageHeight; | ||
577 | 224 | } else { | ||
578 | 225 | newHeight = parseInt((initialPageWidth/imgPreloader.width) * imgPreloader.height); | ||
579 | 226 | newWidth = initialPageWidth; | ||
580 | 227 | } | ||
581 | 228 | } | ||
582 | 229 | } | ||
583 | 230 | if (newWidth > 700) { | ||
584 | 231 | newWidth = 700 | ||
585 | 232 | } | ||
586 | 233 | if (newHeight > 500) { | ||
587 | 234 | newHeight = 500 | ||
588 | 235 | } | ||
589 | 236 | var line_height = (newHeight / 100) * 7 + 24 | ||
590 | 237 | $("#imageContainer").attr("style", "line-height:" + line_height) | ||
591 | 238 | $("#lightboxImage").attr("style", "line-height:" + line_height) | ||
592 | 239 | $('#lightboxImage'). | ||
593 | 240 | attr('src', opts.imageArray[opts.activeImage][0]). | ||
594 | 241 | width(newWidth). | ||
595 | 242 | height(newHeight); | ||
596 | 243 | |||
597 | 244 | resizeImageContainer(newWidth, newHeight); | ||
598 | 245 | }; | ||
599 | 246 | |||
600 | 247 | imgPreloader.src = opts.imageArray[opts.activeImage][0]; | ||
601 | 248 | }; | ||
602 | 249 | |||
603 | 250 | function end() { | ||
604 | 251 | $('#overlay, #lightbox, #outerImageContainer, #imageDataContainer').remove(); | ||
605 | 252 | }; | ||
606 | 253 | |||
607 | 254 | function preloadNeighborImages() { | ||
608 | 255 | if (opts.loopImages && opts.imageArray.length > 1) { | ||
609 | 256 | preloadNextImage = new Image(); | ||
610 | 257 | preloadNextImage.src = opts.imageArray[(opts.activeImage == (opts.imageArray.length - 1)) ? 0 : opts.activeImage + 1][0]; | ||
611 | 258 | |||
612 | 259 | preloadPrevImage = new Image(); | ||
613 | 260 | preloadPrevImage.src = opts.imageArray[(opts.activeImage == 0) ? (opts.imageArray.length - 1) : opts.activeImage - 1][0]; | ||
614 | 261 | } else { | ||
615 | 262 | if ((opts.imageArray.length - 1) > opts.activeImage) { | ||
616 | 263 | preloadNextImage = new Image(); | ||
617 | 264 | preloadNextImage.src = opts.imageArray[opts.activeImage + 1][0]; | ||
618 | 265 | } | ||
619 | 266 | if (opts.activeImage > 0) { | ||
620 | 267 | preloadPrevImage = new Image(); | ||
621 | 268 | preloadPrevImage.src = opts.imageArray[opts.activeImage - 1][0]; | ||
622 | 269 | } | ||
623 | 270 | } | ||
624 | 271 | }; | ||
625 | 272 | |||
626 | 273 | function resizeImageContainer(imgWidth, imgHeight) { | ||
627 | 274 | // get current width and height | ||
628 | 275 | opts.widthCurrent = $("#outerImageContainer").outerWidth(); | ||
629 | 276 | opts.heightCurrent = $("#outerImageContainer").outerHeight(); | ||
630 | 277 | |||
631 | 278 | // get new width and height | ||
632 | 279 | var widthNew = 730; | ||
633 | 280 | var heightNew = 520; | ||
634 | 281 | |||
635 | 282 | // calculate size difference between new and old image, and resize if necessary | ||
636 | 283 | wDiff = opts.widthCurrent - widthNew; | ||
637 | 284 | hDiff = opts.heightCurrent - heightNew; | ||
638 | 285 | |||
639 | 286 | $('#imageDataContainer').animate({width: widthNew},opts.resizeSpeed,'linear'); | ||
640 | 287 | $('#outerImageContainer').animate({width: widthNew},opts.resizeSpeed,'linear', function() { | ||
641 | 288 | $('#outerImageContainer').animate({height: heightNew},opts.resizeSpeed,'linear', function() { | ||
642 | 289 | showImage(); | ||
643 | 290 | }); | ||
644 | 291 | }); | ||
645 | 292 | |||
646 | 293 | afterTimeout = function () { | ||
647 | 294 | $('#prevLink').height(500); | ||
648 | 295 | $('#nextLink').height(500); | ||
649 | 296 | }; | ||
650 | 297 | |||
651 | 298 | // if new and old image are same size and no scaling transition is necessary, | ||
652 | 299 | // do a quick pause to prevent image flicker. | ||
653 | 300 | if((hDiff == 0) && (wDiff == 0)) { | ||
654 | 301 | if (jQuery.browser.msie) { | ||
655 | 302 | setTimeout(afterTimeout, 250); | ||
656 | 303 | } else { | ||
657 | 304 | setTimeout(afterTimeout, 100); | ||
658 | 305 | } | ||
659 | 306 | } else { | ||
660 | 307 | // otherwise just trigger the height and width change | ||
661 | 308 | afterTimeout(); | ||
662 | 309 | } | ||
663 | 310 | |||
664 | 311 | }; | ||
665 | 312 | |||
666 | 313 | function showImage() { | ||
667 | 314 | $('#loading').hide(); | ||
668 | 315 | $('#lightboxImage').fadeIn("fast"); | ||
669 | 316 | updateDetails(); | ||
670 | 317 | preloadNeighborImages(); | ||
671 | 318 | |||
672 | 319 | opts.inprogress = false; | ||
673 | 320 | }; | ||
674 | 321 | |||
675 | 322 | function updateDetails() { | ||
676 | 323 | $('#numberDisplay').html(''); | ||
677 | 324 | |||
678 | 325 | if (opts.imageArray[opts.activeImage][1]) { | ||
679 | 326 | $('#caption').html(opts.imageArray[opts.activeImage][1]).show(); | ||
680 | 327 | } | ||
681 | 328 | |||
682 | 329 | // if image is part of set display 'Image x of x' | ||
683 | 330 | if (opts.imageArray.length > 1) { | ||
684 | 331 | var nav_html; | ||
685 | 332 | |||
686 | 333 | nav_html = opts.strings.image + (opts.activeImage + 1) + opts.strings.of + opts.imageArray.length; | ||
687 | 334 | |||
688 | 335 | if (opts.displayDownloadLink) { | ||
689 | 336 | nav_html += "<a href='" + opts.imageArray[opts.activeImage][0] + "'>" + opts.strings.download + "</a>"; | ||
690 | 337 | } | ||
691 | 338 | |||
692 | 339 | if (!opts.disableNavbarLinks) { | ||
693 | 340 | // display previous / next text links | ||
694 | 341 | if ((opts.activeImage) > 0 || opts.loopImages) { | ||
695 | 342 | nav_html = '<a title="' + opts.strings.prevLinkTitle + '" href="#" id="prevLinkText">' + opts.strings.prevLinkText + "</a>" + nav_html; | ||
696 | 343 | } | ||
697 | 344 | |||
698 | 345 | if (((opts.activeImage + 1) < opts.imageArray.length) || opts.loopImages) { | ||
699 | 346 | nav_html += '<a title="' + opts.strings.nextLinkTitle + '" href="#" id="nextLinkText">' + opts.strings.nextLinkText + "</a>"; | ||
700 | 347 | } | ||
701 | 348 | } | ||
702 | 349 | |||
703 | 350 | $('#numberDisplay').html(nav_html).show(); | ||
704 | 351 | } | ||
705 | 352 | |||
706 | 353 | if (opts.slideNavBar) { | ||
707 | 354 | $("#imageData").slideDown(opts.navBarSlideSpeed); | ||
708 | 355 | } else { | ||
709 | 356 | $("#imageData").show(); | ||
710 | 357 | } | ||
711 | 358 | |||
712 | 359 | resizeOverlayToFitWindow(); | ||
713 | 360 | updateNav(); | ||
714 | 361 | }; | ||
715 | 362 | |||
716 | 363 | /* | ||
717 | 364 | # Resize the sexy overlay to fit the constraints of your current viewing environment | ||
718 | 365 | # | ||
719 | 366 | # This should now happen whenever a window is resized, so you should always see a full overlay | ||
720 | 367 | */ | ||
721 | 368 | function resizeOverlayToFitWindow(){ | ||
722 | 369 | $('#overlay').css({width: $(document).width(), height: $(document).height()}); | ||
723 | 370 | // ^^^^^^^ <- sexy! | ||
724 | 371 | }; | ||
725 | 372 | |||
726 | 373 | function updateNav() { | ||
727 | 374 | if (opts.imageArray.length > 1) { | ||
728 | 375 | $('#hoverNav').show(); | ||
729 | 376 | |||
730 | 377 | // if loopImages is true, always show next and prev image buttons | ||
731 | 378 | if(opts.loopImages) { | ||
732 | 379 | $('#prevLink,#prevLinkText').show().click(function() { | ||
733 | 380 | changeImage((opts.activeImage == 0) ? (opts.imageArray.length - 1) : opts.activeImage - 1); | ||
734 | 381 | return false; | ||
735 | 382 | }); | ||
736 | 383 | |||
737 | 384 | $('#nextLink,#nextLinkText').show().click(function() { | ||
738 | 385 | changeImage((opts.activeImage == (opts.imageArray.length - 1)) ? 0 : opts.activeImage + 1); | ||
739 | 386 | return false; | ||
740 | 387 | }); | ||
741 | 388 | } else { | ||
742 | 389 | // if not first image in set, display prev image button | ||
743 | 390 | if(opts.activeImage != 0) { | ||
744 | 391 | $('#prevLink,#prevLinkText').show().click(function() { | ||
745 | 392 | changeImage(opts.activeImage - 1); | ||
746 | 393 | return false; | ||
747 | 394 | }); | ||
748 | 395 | } | ||
749 | 396 | |||
750 | 397 | // if not last image in set, display next image button | ||
751 | 398 | if(opts.activeImage != (opts.imageArray.length - 1)) { | ||
752 | 399 | $('#nextLink,#nextLinkText').show().click(function() { | ||
753 | 400 | changeImage(opts.activeImage +1); | ||
754 | 401 | return false; | ||
755 | 402 | }); | ||
756 | 403 | } | ||
757 | 404 | } | ||
758 | 405 | |||
759 | 406 | enableKeyboardNav(); | ||
760 | 407 | } | ||
761 | 408 | }; | ||
762 | 409 | |||
763 | 410 | function keyboardAction(e) { | ||
764 | 411 | var o = e.data.opts; | ||
765 | 412 | var keycode = e.keyCode; | ||
766 | 413 | var escapeKey = 27; | ||
767 | 414 | |||
768 | 415 | var key = String.fromCharCode(keycode).toLowerCase(); | ||
769 | 416 | |||
770 | 417 | // close lightbox | ||
771 | 418 | if ((key == 'x') || (key == 'o') || (key == 'c') || (keycode == escapeKey)) { | ||
772 | 419 | end(); | ||
773 | 420 | |||
774 | 421 | // display previous image | ||
775 | 422 | } else if ((key == 'p') || (keycode == 37)) { | ||
776 | 423 | if(o.loopImages) { | ||
777 | 424 | disableKeyboardNav(); | ||
778 | 425 | changeImage((o.activeImage == 0) ? (o.imageArray.length - 1) : o.activeImage - 1); | ||
779 | 426 | } else if (o.activeImage != 0) { | ||
780 | 427 | disableKeyboardNav(); | ||
781 | 428 | changeImage(o.activeImage - 1); | ||
782 | 429 | } | ||
783 | 430 | |||
784 | 431 | // display next image | ||
785 | 432 | } else if ((key == 'n') || (keycode == 39)) { | ||
786 | 433 | if (opts.loopImages) { | ||
787 | 434 | disableKeyboardNav(); | ||
788 | 435 | changeImage((o.activeImage == (o.imageArray.length - 1)) ? 0 : o.activeImage + 1); | ||
789 | 436 | } else if (o.activeImage != (o.imageArray.length - 1)) { | ||
790 | 437 | disableKeyboardNav(); | ||
791 | 438 | changeImage(o.activeImage + 1); | ||
792 | 439 | } | ||
793 | 440 | } | ||
794 | 441 | }; | ||
795 | 442 | |||
796 | 443 | function enableKeyboardNav() { | ||
797 | 444 | $(document).bind('keydown', {opts: opts}, keyboardAction); | ||
798 | 445 | }; | ||
799 | 446 | |||
800 | 447 | function disableKeyboardNav() { | ||
801 | 448 | $(document).unbind('keydown'); | ||
802 | 449 | }; | ||
803 | 450 | }; | ||
804 | 451 | |||
805 | 452 | $.fn.lightbox.parseJsonData = function(data) { | ||
806 | 453 | var imageArray = []; | ||
807 | 454 | |||
808 | 455 | $.each(data, function() { | ||
809 | 456 | imageArray.push(new Array(this.url, this.title)); | ||
810 | 457 | }); | ||
811 | 458 | |||
812 | 459 | return imageArray; | ||
813 | 460 | }; | ||
814 | 461 | $.fn.lightbox.defaults = { | ||
815 | 462 | triggerEvent: "click", | ||
816 | 463 | allSet: false, | ||
817 | 464 | fileLoadingImage: '/multi_image/static/lib/lightbox/images/loading.gif', | ||
818 | 465 | fileBottomNavCloseImage: '/multi_image/static/lib/lightbox/images/closelabel.gif', | ||
819 | 466 | overlayOpacity: 0.6, | ||
820 | 467 | borderSize: 10, | ||
821 | 468 | imageArray: new Array, | ||
822 | 469 | activeImage: null, | ||
823 | 470 | inprogress: false, | ||
824 | 471 | resizeSpeed: 350, | ||
825 | 472 | widthCurrent: 250, | ||
826 | 473 | heightCurrent: 250, | ||
827 | 474 | scaleImages: false, | ||
828 | 475 | xScale: 1, | ||
829 | 476 | yScale: 1, | ||
830 | 477 | displayTitle: true, | ||
831 | 478 | navbarOnTop: true, | ||
832 | 479 | displayDownloadLink: false, | ||
833 | 480 | slideNavBar: false, | ||
834 | 481 | navBarSlideSpeed: 350, | ||
835 | 482 | displayHelp: false, | ||
836 | 483 | strings: { | ||
837 | 484 | help: ' \u2190 / P - previous image\u00a0\u00a0\u00a0\u00a0\u2192 / N - next image\u00a0\u00a0\u00a0\u00a0ESC / X - close image gallery', | ||
838 | 485 | prevLinkTitle: 'previous image', | ||
839 | 486 | nextLinkTitle: 'next image', | ||
840 | 487 | prevLinkText: '« Previous', | ||
841 | 488 | nextLinkText: 'Next »', | ||
842 | 489 | closeTitle: 'close image gallery', | ||
843 | 490 | image: 'Image ', | ||
844 | 491 | of: ' of ', | ||
845 | 492 | download: 'Download' | ||
846 | 493 | }, | ||
847 | 494 | fitToScreen: false, | ||
848 | 495 | disableNavbarLinks: false, | ||
849 | 496 | loopImages: false, | ||
850 | 497 | imageClickClose: true, | ||
851 | 498 | jsonData: null, | ||
852 | 499 | jsonDataParser: null | ||
853 | 500 | }; | ||
854 | 501 | })(jQuery); | ||
855 | 0 | \ No newline at end of file | 502 | \ No newline at end of file |
856 | 1 | 503 | ||
857 | === added directory 'multi_image/static/src' | |||
858 | === added directory 'multi_image/static/src/css' | |||
859 | === added file 'multi_image/static/src/css/hoverbox.css' | |||
860 | --- multi_image/static/src/css/hoverbox.css 1970-01-01 00:00:00 +0000 | |||
861 | +++ multi_image/static/src/css/hoverbox.css 2014-04-22 22:55:50 +0000 | |||
862 | @@ -0,0 +1,52 @@ | |||
863 | 1 | .hoverbox a .preview | ||
864 | 2 | { | ||
865 | 3 | display: none; | ||
866 | 4 | } | ||
867 | 5 | |||
868 | 6 | .hoverbox a:active .preview | ||
869 | 7 | { | ||
870 | 8 | display: block; | ||
871 | 9 | position: absolute; | ||
872 | 10 | top: 0px; | ||
873 | 11 | left: 0px; | ||
874 | 12 | z-index: 1; | ||
875 | 13 | } | ||
876 | 14 | |||
877 | 15 | .hoverbox .list_image | ||
878 | 16 | { | ||
879 | 17 | background: #fff; | ||
880 | 18 | border-color: #aaa #ccc #ddd #bbb; | ||
881 | 19 | border-style: solid; | ||
882 | 20 | border-width: 1px; | ||
883 | 21 | color: inherit; | ||
884 | 22 | padding: 2px; | ||
885 | 23 | vertical-align: top; | ||
886 | 24 | width: 150px; | ||
887 | 25 | } | ||
888 | 26 | |||
889 | 27 | .hoverbox | ||
890 | 28 | { | ||
891 | 29 | background: #eee; | ||
892 | 30 | border-color: #ddd #bbb #aaa #ccc; | ||
893 | 31 | border-style: solid; | ||
894 | 32 | border-width: 1px; | ||
895 | 33 | color: inherit; | ||
896 | 34 | margin: 1px; | ||
897 | 35 | padding: 0px; | ||
898 | 36 | position: relative; | ||
899 | 37 | } | ||
900 | 38 | |||
901 | 39 | .hoverbox .preview | ||
902 | 40 | { | ||
903 | 41 | border-color: #000; | ||
904 | 42 | width: 320px; | ||
905 | 43 | } | ||
906 | 44 | |||
907 | 45 | .oe-remove-image | ||
908 | 46 | { | ||
909 | 47 | cursor: pointer; | ||
910 | 48 | vertical-align: middle; | ||
911 | 49 | text-align: right; | ||
912 | 50 | height: 15px; | ||
913 | 51 | width: 15px; | ||
914 | 52 | } | ||
915 | 0 | \ No newline at end of file | 53 | \ No newline at end of file |
916 | 1 | 54 | ||
917 | === added directory 'multi_image/static/src/img' | |||
918 | === added file 'multi_image/static/src/img/icon.png' | |||
919 | 2 | Binary files multi_image/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and multi_image/static/src/img/icon.png 2014-04-22 22:55:50 +0000 differ | 55 | Binary files multi_image/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and multi_image/static/src/img/icon.png 2014-04-22 22:55:50 +0000 differ |
920 | === added directory 'multi_image/static/src/js' | |||
921 | === added file 'multi_image/static/src/js/multi_image.js' | |||
922 | --- multi_image/static/src/js/multi_image.js 1970-01-01 00:00:00 +0000 | |||
923 | +++ multi_image/static/src/js/multi_image.js 2014-04-22 22:55:50 +0000 | |||
924 | @@ -0,0 +1,227 @@ | |||
925 | 1 | openerp.multi_image = function(openerp) { | ||
926 | 2 | var _t = openerp.web._t; | ||
927 | 3 | var QWeb = openerp.web.qweb; | ||
928 | 4 | openerp.web.form.FieldBinaryImageMulti = openerp.web.form.FieldBinaryImage.extend({ | ||
929 | 5 | template: 'FieldBinaryImageMulti', | ||
930 | 6 | init: function(field_manager, node) { | ||
931 | 7 | var self = this; | ||
932 | 8 | this._super(field_manager, node); | ||
933 | 9 | this.binary_value = false; | ||
934 | 10 | this.useFileAPI = !window.FileReader; | ||
935 | 11 | this.max_upload_size = 25 * 1024 * 1024; // 25Mo | ||
936 | 12 | if (!this.useFileAPI) { | ||
937 | 13 | this.fileupload_id = _.uniqueId('oe_fileupload'); | ||
938 | 14 | $(window).on(this.fileupload_id, function() { | ||
939 | 15 | var args = [].slice.call(arguments).slice(1); | ||
940 | 16 | self.on_file_uploaded.apply(self, args); | ||
941 | 17 | }); | ||
942 | 18 | } | ||
943 | 19 | }, | ||
944 | 20 | initialize_content: function() { | ||
945 | 21 | var self = this; | ||
946 | 22 | var dataset = new openerp.web.DataSetSearch(this, 'res.users', {}, []); | ||
947 | 23 | dataset.read_ids([openerp.session.uid], ['name']).then(function(res) { | ||
948 | 24 | if (res) | ||
949 | 25 | self.user_name = res[0].name; | ||
950 | 26 | }); | ||
951 | 27 | this._super(); | ||
952 | 28 | }, | ||
953 | 29 | on_file_uploaded_and_valid: function(size, name, content_type, orignal_file_name, date) { | ||
954 | 30 | if (name) { | ||
955 | 31 | var data_dict = {"size": openerp.web.human_size(size), "name": name, "content_type": content_type, "date": date, "orignal_name": orignal_file_name, 'user':this.user_name}; | ||
956 | 32 | var data = JSON.parse(this.get('value')); | ||
957 | 33 | if (data) | ||
958 | 34 | data.push(data_dict); | ||
959 | 35 | else | ||
960 | 36 | data = [data_dict]; | ||
961 | 37 | this.internal_set_value(JSON.stringify(data)); | ||
962 | 38 | this.binary_value = true; | ||
963 | 39 | this.set_filename(name); | ||
964 | 40 | this.render_value(); | ||
965 | 41 | this.do_warn(_t("File Upload"), _t("File Upload Successfully !")); | ||
966 | 42 | } | ||
967 | 43 | else{ | ||
968 | 44 | this.do_warn(_t("File Upload"), _t("There was a problem while uploading your file")); | ||
969 | 45 | } | ||
970 | 46 | }, | ||
971 | 47 | on_list_image: function() { | ||
972 | 48 | var images_list = this.get('value'); | ||
973 | 49 | var self = this; | ||
974 | 50 | if (!this.get('value')) { | ||
975 | 51 | this.do_warn(_t("Image"), _t("Image not available !")); | ||
976 | 52 | return false; | ||
977 | 53 | } | ||
978 | 54 | this.image_list_dialog = new openerp.web.Dialog(this, { | ||
979 | 55 | title: _t("Image List"), | ||
980 | 56 | width: '700px', | ||
981 | 57 | height: '70%', | ||
982 | 58 | min_width: '600px', | ||
983 | 59 | min_height: '500px', | ||
984 | 60 | buttons: [ | ||
985 | 61 | {text: _t("Close"), click: function() { self.image_list_dialog.close();}} | ||
986 | 62 | ] | ||
987 | 63 | }).open(); | ||
988 | 64 | this.on_render_dialog(); | ||
989 | 65 | }, | ||
990 | 66 | on_render_dialog: function() { | ||
991 | 67 | var images_list = JSON.parse(this.get('value')); | ||
992 | 68 | var self = this; | ||
993 | 69 | var url_list = []; | ||
994 | 70 | if (images_list) { | ||
995 | 71 | _.each(images_list, function (index) { | ||
996 | 72 | if (index) { | ||
997 | 73 | if(index['name_1']){ | ||
998 | 74 | url_list.push({'name' : index['name_1'], 'path' : index['name']}) | ||
999 | 75 | }else{ | ||
1000 | 76 | url_list.push({'name' : index['orignal_name'], 'path' : index['name']}) | ||
1001 | 77 | } | ||
1002 | 78 | } | ||
1003 | 79 | }); | ||
1004 | 80 | } | ||
1005 | 81 | else { return false; } | ||
1006 | 82 | var image_list = []; | ||
1007 | 83 | var start = 0; | ||
1008 | 84 | for(var i=1; i <= Math.ceil(url_list.length/4); i++) { | ||
1009 | 85 | image_list.push(url_list.slice(start, start + 4)) | ||
1010 | 86 | start = i * 4; | ||
1011 | 87 | } | ||
1012 | 88 | this.image_list_dialog.$el.html(QWeb.render('DialogImageList', {'widget': this, 'image_list': image_list})); | ||
1013 | 89 | this.image_list_dialog.$el.find(".oe-remove-image").click(function() { | ||
1014 | 90 | self.do_remove_image(this, true); | ||
1015 | 91 | }); | ||
1016 | 92 | }, | ||
1017 | 93 | |||
1018 | 94 | render_value: function() { | ||
1019 | 95 | var self = this; | ||
1020 | 96 | this.$el.find('.oe-image-preview').click(this.on_preview_button); | ||
1021 | 97 | this.$el.find('.oe_image_list').click(this.on_list_image); | ||
1022 | 98 | var images_list = JSON.parse(this.get('value')); | ||
1023 | 99 | this.$el.find('#imagedescription').remove(); | ||
1024 | 100 | var $img = QWeb.render("ImageDescription", { image_list: images_list, widget: this}); | ||
1025 | 101 | this.$el.append($img); | ||
1026 | 102 | this.$el.find(".oe_image_row").click(function() { | ||
1027 | 103 | if (this.id) { | ||
1028 | 104 | var clicked = this.id; | ||
1029 | 105 | var name_desc = ""; | ||
1030 | 106 | _.each(images_list, function (index) { | ||
1031 | 107 | if (index['name'] == clicked ) { | ||
1032 | 108 | var title = index['name_1'] ? index['name_1'] : '' | ||
1033 | 109 | var description = index['description'] ? index['description'] : '' | ||
1034 | 110 | name_desc = 'Title:-' + title + '<br/>Description:-' +description | ||
1035 | 111 | } | ||
1036 | 112 | }); | ||
1037 | 113 | self.do_display_image(this, name_desc); | ||
1038 | 114 | } | ||
1039 | 115 | }); | ||
1040 | 116 | this.$el.find(".oe_list_record_delete").click(function() { | ||
1041 | 117 | if (this.id) { | ||
1042 | 118 | self.do_remove_image(this, false); | ||
1043 | 119 | } | ||
1044 | 120 | }); | ||
1045 | 121 | this.$el.find(".oe-record-edit-link").click(function() { | ||
1046 | 122 | var self_1 = this; | ||
1047 | 123 | var data = JSON.parse(self.get('value')); | ||
1048 | 124 | _.each(data, function(d){ | ||
1049 | 125 | if(d.name == self_1.id){ | ||
1050 | 126 | self.name_display = d.name_1 ? d.name_1 : ''; | ||
1051 | 127 | self.description_display =d.description ? d.description : ''; | ||
1052 | 128 | } | ||
1053 | 129 | }); | ||
1054 | 130 | self.select_mo_dialog = $(QWeb.render('edit_name_description', {widget:self})).dialog({ | ||
1055 | 131 | resizable: false, | ||
1056 | 132 | modal: true, | ||
1057 | 133 | title: _t("Image Description"), | ||
1058 | 134 | width: 500, | ||
1059 | 135 | buttons: { | ||
1060 | 136 | "Ok": function() { | ||
1061 | 137 | var new_list = []; | ||
1062 | 138 | var data = JSON.parse(self.get('value')); | ||
1063 | 139 | if (self_1.id && data) { | ||
1064 | 140 | _.each(data, function (index) { | ||
1065 | 141 | if (index['name'] != self_1.id ) { | ||
1066 | 142 | new_list.push(index) | ||
1067 | 143 | } | ||
1068 | 144 | else { | ||
1069 | 145 | index["name_1"] = self.select_mo_dialog.find('#name_1').val() | ||
1070 | 146 | index["description"] = self.select_mo_dialog.find('#description').val() | ||
1071 | 147 | new_list.push(index) | ||
1072 | 148 | } | ||
1073 | 149 | }); | ||
1074 | 150 | self.internal_set_value(JSON.stringify(new_list)); | ||
1075 | 151 | self.invalid = false | ||
1076 | 152 | self.dirty = true | ||
1077 | 153 | self.render_value(); | ||
1078 | 154 | $(this).dialog( "close" ); | ||
1079 | 155 | } | ||
1080 | 156 | }, | ||
1081 | 157 | "Close": function() { | ||
1082 | 158 | $(this).dialog( "close" ); | ||
1083 | 159 | } | ||
1084 | 160 | }, | ||
1085 | 161 | }); | ||
1086 | 162 | }); | ||
1087 | 163 | }, | ||
1088 | 164 | do_display_image: function(curr_id, name_desc) { | ||
1089 | 165 | this.$el.find('.oe-image-preview').lightbox({ | ||
1090 | 166 | fitToScreen: true, | ||
1091 | 167 | jsonData: [{"url" :curr_id.id, "title": name_desc}], | ||
1092 | 168 | loopImages: true, | ||
1093 | 169 | imageClickClose: false, | ||
1094 | 170 | disableNavbarLinks: true | ||
1095 | 171 | }); | ||
1096 | 172 | }, | ||
1097 | 173 | do_remove_image: function(curr_id, dialog) { | ||
1098 | 174 | var self = this; | ||
1099 | 175 | var images_list = JSON.parse(this.get('value')); | ||
1100 | 176 | if (images_list) { | ||
1101 | 177 | var new_list = []; | ||
1102 | 178 | if (confirm(_t("Are you sure to remove this image?"))) { | ||
1103 | 179 | _.each(images_list, function (index) { | ||
1104 | 180 | if (index['name'] != curr_id.id ) { | ||
1105 | 181 | new_list.push(index) | ||
1106 | 182 | } | ||
1107 | 183 | }); | ||
1108 | 184 | self.internal_set_value(JSON.stringify(new_list)); | ||
1109 | 185 | this.invalid = false | ||
1110 | 186 | this.dirty = true | ||
1111 | 187 | if (dialog) { | ||
1112 | 188 | this.on_render_dialog(); | ||
1113 | 189 | } | ||
1114 | 190 | else{ | ||
1115 | 191 | this.render_value(); | ||
1116 | 192 | } | ||
1117 | 193 | } | ||
1118 | 194 | } | ||
1119 | 195 | }, | ||
1120 | 196 | on_preview_button: function() { | ||
1121 | 197 | console.log(this.get('value')) | ||
1122 | 198 | var images_list = JSON.parse(this.get('value')); | ||
1123 | 199 | var url_list = []; | ||
1124 | 200 | var self = this; | ||
1125 | 201 | if (images_list) { | ||
1126 | 202 | _.each(images_list, function (index) { | ||
1127 | 203 | if (index) { | ||
1128 | 204 | var title = index['name_1'] ? index['name_1'] : '' | ||
1129 | 205 | var description = index['description'] ? index['description'] : '' | ||
1130 | 206 | url_list.push({"url" :index['name'], "title": 'Title:-' + title + '<br/>Description:-' +description}) | ||
1131 | 207 | } | ||
1132 | 208 | }); | ||
1133 | 209 | } | ||
1134 | 210 | else { | ||
1135 | 211 | this.do_warn("Image", "Image not available !"); | ||
1136 | 212 | return false; | ||
1137 | 213 | } | ||
1138 | 214 | this.$el.find('.oe-image-preview').lightbox({ | ||
1139 | 215 | fitToScreen: true, | ||
1140 | 216 | jsonData: url_list, | ||
1141 | 217 | loopImages: true, | ||
1142 | 218 | imageClickClose: false, | ||
1143 | 219 | disableNavbarLinks: true | ||
1144 | 220 | }); | ||
1145 | 221 | }, | ||
1146 | 222 | }); | ||
1147 | 223 | |||
1148 | 224 | openerp.web.form.widgets = openerp.web.form.widgets.extend({ | ||
1149 | 225 | 'image_multi' : 'openerp.web.form.FieldBinaryImageMulti', | ||
1150 | 226 | }); | ||
1151 | 227 | } | ||
1152 | 0 | 228 | ||
1153 | === added directory 'multi_image/static/src/xml' | |||
1154 | === added file 'multi_image/static/src/xml/image_multi.xml' | |||
1155 | --- multi_image/static/src/xml/image_multi.xml 1970-01-01 00:00:00 +0000 | |||
1156 | +++ multi_image/static/src/xml/image_multi.xml 2014-04-22 22:55:50 +0000 | |||
1157 | @@ -0,0 +1,126 @@ | |||
1158 | 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
1159 | 2 | <templates id="template" xml:space="preserve"> | ||
1160 | 3 | |||
1161 | 4 | <t t-name="HiddenInputMultiFile"> | ||
1162 | 5 | <div t-attf-class="oe_hidden_input_file #{fileupload_class or ''}" t-att-style="fileupload_style"> | ||
1163 | 6 | <form class="oe_form_binary_form" t-att-target="fileupload_id" | ||
1164 | 7 | method="post" enctype="multipart/form-data" action="/web/binary/upload_image_multi"> | ||
1165 | 8 | <input type="hidden" name="session_id" value=""/> | ||
1166 | 9 | <input type="hidden" name="callback" t-att-value="fileupload_id"/> | ||
1167 | 10 | <t t-raw="__content__"/> | ||
1168 | 11 | <input type="file" class="oe_form_binary_file" name="ufile" accept="image/*"/> | ||
1169 | 12 | </form> | ||
1170 | 13 | <iframe t-att-id="fileupload_id" t-att-name="fileupload_id" style="display: none"/> | ||
1171 | 14 | </div> | ||
1172 | 15 | </t> | ||
1173 | 16 | |||
1174 | 17 | <t t-name="FieldBinaryImageMulti"> | ||
1175 | 18 | <table class="oe_form_field oe_form_field_binary" cellpadding="0" cellspacing="0" border="0" t-att-style="widget.node.attrs.style"> | ||
1176 | 19 | <tr> | ||
1177 | 20 | <td class="oe_form_binary" nowrap="true"> | ||
1178 | 21 | <table cellspacing="0" cellpadding="0" border="0"> | ||
1179 | 22 | <tr> | ||
1180 | 23 | <td> | ||
1181 | 24 | <t t-if="!widget.get('effective_readonly')"> | ||
1182 | 25 | <t t-call="HiddenInputMultiFile"> | ||
1183 | 26 | <t t-set="fileupload_id" t-value="widget.fileupload_id"/> | ||
1184 | 27 | <t t-set="fileupload_style" t-translation="off">width: 83px;</t> | ||
1185 | 28 | <button class="oe_button oe_field_button" type="button"> | ||
1186 | 29 | <img t-att-src='_s + "/web/static/src/img/icons/STOCK_ADD.png"'/> | ||
1187 | 30 | <span>ADD</span> | ||
1188 | 31 | </button> | ||
1189 | 32 | </t> | ||
1190 | 33 | </t> | ||
1191 | 34 | </td> | ||
1192 | 35 | <td> | ||
1193 | 36 | <button class="oe-image-preview oe_button oe_field_button oe_form_binary" type="button" title="Preview"> | ||
1194 | 37 | <img t-att-src='_s + "/web/static/src/img/icons/gtk-zoom-fit.png"'/> | ||
1195 | 38 | <span>Image Preview</span> | ||
1196 | 39 | </button> | ||
1197 | 40 | </td> | ||
1198 | 41 | <td> | ||
1199 | 42 | <button class="oe_image_list oe_button oe_field_button oe_form_binary" type="button" title="All Image"> | ||
1200 | 43 | <img t-att-src='_s + "/web/static/src/img/icons/STOCK_DND_MULTIPLE.png"'/> | ||
1201 | 44 | <span>List All Image</span> | ||
1202 | 45 | </button> | ||
1203 | 46 | </td> | ||
1204 | 47 | </tr> | ||
1205 | 48 | </table> | ||
1206 | 49 | </td> | ||
1207 | 50 | <td class="oe_form_binary_progress" style="display: none" nowrap="true"> | ||
1208 | 51 | <div class="oe_form_binary_progress" style="display: none"> | ||
1209 | 52 | <img t-att-src='_s + "/web/static/src/img/throbber.gif"' width="16" height="16"/> | ||
1210 | 53 | <b>Uploading ...</b> | ||
1211 | 54 | </div> | ||
1212 | 55 | </td> | ||
1213 | 56 | </tr> | ||
1214 | 57 | </table> | ||
1215 | 58 | </t> | ||
1216 | 59 | |||
1217 | 60 | <t t-name="DialogImageList"> | ||
1218 | 61 | <table id="DialogImageList"> | ||
1219 | 62 | <tr t-foreach="image_list" t-as="row"> | ||
1220 | 63 | <td t-foreach="row" t-as="column" > | ||
1221 | 64 | <table class="hoverbox"> | ||
1222 | 65 | <tr background-color="white"> | ||
1223 | 66 | <t t-if="!widget.get('effective_readonly')"> | ||
1224 | 67 | <td style="height:17px;"> | ||
1225 | 68 | <span class="oe-remove-image oe_i" t-att-id="column.path" title="Delete Image" style="float:right;margin-top: -4px;">d</span> | ||
1226 | 69 | </td> | ||
1227 | 70 | </t> | ||
1228 | 71 | </tr> | ||
1229 | 72 | <tr> | ||
1230 | 73 | <td> | ||
1231 | 74 | <a style="cursor: default;" href='#' id="image_preview"> | ||
1232 | 75 | <img class="list_image" t-att-src="column.path" t-att-title="column.name"/> <img t-att-title="column.name" t-att-src="column.path" class="preview list_image" /></a> | ||
1233 | 76 | </td> | ||
1234 | 77 | </tr> | ||
1235 | 78 | </table> | ||
1236 | 79 | </td> | ||
1237 | 80 | </tr> | ||
1238 | 81 | </table> | ||
1239 | 82 | </t> | ||
1240 | 83 | |||
1241 | 84 | <t t-name="ImageDescription"> | ||
1242 | 85 | <div id="imagedescription" class="openerp oe_list oe_view" style="display: block; height:160px;width:100%;overflow: scroll"> | ||
1243 | 86 | <table class="openerp oe_list_content"> | ||
1244 | 87 | <thead> | ||
1245 | 88 | <tr class="oe_list_header_columns"> | ||
1246 | 89 | <th class="oe_list_header_char" t-if="!widget.get('effective_readonly')" style="width:3%;"></th> | ||
1247 | 90 | <th class="oe_list_header_char" style="width:12%;">File Name</th> | ||
1248 | 91 | <th class="oe_list_header_char" style="width:12%;">Title</th> | ||
1249 | 92 | <th class="oe_list_header_char" style="width:25%;">Description</th> | ||
1250 | 93 | <th class="oe_list_header_char" style="width:10%;">Size</th> | ||
1251 | 94 | <th class="oe_list_header_char" style="width:20%;">Date</th> | ||
1252 | 95 | <th class="oe_list_header_char" style="width:15%;">User</th> | ||
1253 | 96 | <th class="oe_list_header_char" t-if="!widget.get('effective_readonly')" style="width:3%;"></th> | ||
1254 | 97 | </tr> | ||
1255 | 98 | </thead> | ||
1256 | 99 | <tbody> | ||
1257 | 100 | <tr t-foreach="image_list" t-as="row"> | ||
1258 | 101 | <td width="1" t-att-id="row.name" class="oe-record-edit-link" t-if="!widget.get('effective_readonly')" style="width:3%;"> | ||
1259 | 102 | <img t-if="!widget.get('effective_readonly')" src="/web/static/src/img/pencil.gif" /> | ||
1260 | 103 | </td> | ||
1261 | 104 | <td class="oe_image_row" t-att-id="row.name" style="width:12%;"><t t-esc="row.orignal_name" /></td> | ||
1262 | 105 | <td class="oe_image_row" t-att-id="row.name" style="width:12%;"><t t-esc="row.name_1"/></td> | ||
1263 | 106 | <td class="oe_image_row" t-att-id="row.name" style="width:25%;"><t t-esc="row.description"/></td> | ||
1264 | 107 | <td class="oe_image_row" t-att-id="row.name" style="width:10%;"><t t-esc="row.size"/></td> | ||
1265 | 108 | <td class="oe_image_row" t-att-id="row.name" style="width:20%;"><t t-esc="row.date"/></td> | ||
1266 | 109 | <td class="oe_image_row" t-att-id="row.name" style="width:15%"><t t-esc="row.user"/></td> | ||
1267 | 110 | <td class='oe_list_record_delete' width="3%" t-att-id="row.name" t-if="!widget.get('effective_readonly')"> | ||
1268 | 111 | <button t-if="!widget.get('effective_readonly')" type="button" name="delete" class="oe_i">d</button> | ||
1269 | 112 | </td> | ||
1270 | 113 | </tr> | ||
1271 | 114 | </tbody> | ||
1272 | 115 | </table> | ||
1273 | 116 | </div> | ||
1274 | 117 | </t> | ||
1275 | 118 | |||
1276 | 119 | <t t-name="edit_name_description"> | ||
1277 | 120 | <div> | ||
1278 | 121 | <h3>Title : <input t-att-value="widget.name_display" type="textbox" class="name_textbox" id="name_1" style="display: block; height:20px; width:450px;overflow: scroll"/></h3> | ||
1279 | 122 | <h3>Description : <textarea type="textarea" class="field_text" id="description" style="display: text; height:160px;width:450px;overflow: scroll"><t t-esc="widget.description_display" /></textarea></h3> | ||
1280 | 123 | </div> | ||
1281 | 124 | </t> | ||
1282 | 125 | |||
1283 | 126 | </templates> | ||
1284 | 0 | \ No newline at end of file | 127 | \ No newline at end of file |
1285 | 1 | 128 | ||
1286 | === added directory 'multi_image_sample' | |||
1287 | === added file 'multi_image_sample/__init__.py' | |||
1288 | --- multi_image_sample/__init__.py 1970-01-01 00:00:00 +0000 | |||
1289 | +++ multi_image_sample/__init__.py 2014-04-22 22:55:50 +0000 | |||
1290 | @@ -0,0 +1,25 @@ | |||
1291 | 1 | # -*- coding: utf-8 -*- | ||
1292 | 2 | ############################################################################## | ||
1293 | 3 | # | ||
1294 | 4 | # OpenERP, Open Source Management Solution | ||
1295 | 5 | # Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>) | ||
1296 | 6 | # Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>). | ||
1297 | 7 | # | ||
1298 | 8 | # This program is free software: you can redistribute it and/or modify | ||
1299 | 9 | # it under the terms of the GNU Affero General Public License as | ||
1300 | 10 | # published by the Free Software Foundation, either version 3 of the | ||
1301 | 11 | # License, or (at your option) any later version. | ||
1302 | 12 | # | ||
1303 | 13 | # This program is distributed in the hope that it will be useful, | ||
1304 | 14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
1305 | 15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
1306 | 16 | # GNU Affero General Public License for more details. | ||
1307 | 17 | # | ||
1308 | 18 | # You should have received a copy of the GNU Affero General Public License | ||
1309 | 19 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
1310 | 20 | # | ||
1311 | 21 | ############################################################################## | ||
1312 | 22 | |||
1313 | 23 | import product | ||
1314 | 24 | |||
1315 | 25 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | ||
1316 | 0 | \ No newline at end of file | 26 | \ No newline at end of file |
1317 | 1 | 27 | ||
1318 | === added file 'multi_image_sample/__openerp__.py' | |||
1319 | --- multi_image_sample/__openerp__.py 1970-01-01 00:00:00 +0000 | |||
1320 | +++ multi_image_sample/__openerp__.py 2014-04-22 22:55:50 +0000 | |||
1321 | @@ -0,0 +1,39 @@ | |||
1322 | 1 | # -*- coding: utf-8 -*- | ||
1323 | 2 | ############################################################################## | ||
1324 | 3 | # | ||
1325 | 4 | # OpenERP, Open Source Management Solution | ||
1326 | 5 | # Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>) | ||
1327 | 6 | # Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>). | ||
1328 | 7 | # | ||
1329 | 8 | # This program is free software: you can redistribute it and/or modify | ||
1330 | 9 | # it under the terms of the GNU Affero General Public License as | ||
1331 | 10 | # published by the Free Software Foundation, either version 3 of the | ||
1332 | 11 | # License, or (at your option) any later version. | ||
1333 | 12 | # | ||
1334 | 13 | # This program is distributed in the hope that it will be useful, | ||
1335 | 14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
1336 | 15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
1337 | 16 | # GNU Affero General Public License for more details. | ||
1338 | 17 | # | ||
1339 | 18 | # You should have received a copy of the GNU Affero General Public License | ||
1340 | 19 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
1341 | 20 | # | ||
1342 | 21 | ############################################################################## | ||
1343 | 22 | |||
1344 | 23 | { | ||
1345 | 24 | "name" : "Multi Image Sample", | ||
1346 | 25 | "version" : "1.0", | ||
1347 | 26 | "author" : "Serpent Consulting Services Pvt. Ltd.", | ||
1348 | 27 | 'website': 'http://www.serpentcs.com', | ||
1349 | 28 | "category": 'Image', | ||
1350 | 29 | 'complexity': "easy", | ||
1351 | 30 | 'depends': ['multi_image', 'product'], | ||
1352 | 31 | "description": """ | ||
1353 | 32 | This module is used for added multi image widget in product. | ||
1354 | 33 | """, | ||
1355 | 34 | 'update_xml': ['product_view.xml'], | ||
1356 | 35 | 'installable': True, | ||
1357 | 36 | 'auto_install': False, | ||
1358 | 37 | } | ||
1359 | 38 | |||
1360 | 39 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | ||
1361 | 0 | 40 | ||
1362 | === added file 'multi_image_sample/product.py' | |||
1363 | --- multi_image_sample/product.py 1970-01-01 00:00:00 +0000 | |||
1364 | +++ multi_image_sample/product.py 2014-04-22 22:55:50 +0000 | |||
1365 | @@ -0,0 +1,34 @@ | |||
1366 | 1 | # -*- coding: utf-8 -*- | ||
1367 | 2 | ############################################################################## | ||
1368 | 3 | # | ||
1369 | 4 | # OpenERP, Open Source Management Solution | ||
1370 | 5 | # Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>) | ||
1371 | 6 | # Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>). | ||
1372 | 7 | # | ||
1373 | 8 | # This program is free software: you can redistribute it and/or modify | ||
1374 | 9 | # it under the terms of the GNU Affero General Public License as | ||
1375 | 10 | # published by the Free Software Foundation, either version 3 of the | ||
1376 | 11 | # License, or (at your option) any later version. | ||
1377 | 12 | # | ||
1378 | 13 | # This program is distributed in the hope that it will be useful, | ||
1379 | 14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
1380 | 15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
1381 | 16 | # GNU Affero General Public License for more details. | ||
1382 | 17 | # | ||
1383 | 18 | # You should have received a copy of the GNU Affero General Public License | ||
1384 | 19 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
1385 | 20 | # | ||
1386 | 21 | ############################################################################## | ||
1387 | 22 | |||
1388 | 23 | from openerp.osv import fields, osv | ||
1389 | 24 | |||
1390 | 25 | class product_product(osv.osv): | ||
1391 | 26 | _inherit = "product.product" | ||
1392 | 27 | |||
1393 | 28 | _columns = { | ||
1394 | 29 | 'multi_images': fields.text("Multi Images"), | ||
1395 | 30 | } | ||
1396 | 31 | |||
1397 | 32 | product_product() | ||
1398 | 33 | |||
1399 | 34 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | ||
1400 | 0 | \ No newline at end of file | 35 | \ No newline at end of file |
1401 | 1 | 36 | ||
1402 | === added file 'multi_image_sample/product_view.xml' | |||
1403 | --- multi_image_sample/product_view.xml 1970-01-01 00:00:00 +0000 | |||
1404 | +++ multi_image_sample/product_view.xml 2014-04-22 22:55:50 +0000 | |||
1405 | @@ -0,0 +1,20 @@ | |||
1406 | 1 | <?xml version="1.0" encoding="utf-8"?> | ||
1407 | 2 | <openerp> | ||
1408 | 3 | <data> | ||
1409 | 4 | |||
1410 | 5 | <record id="product_normal_multi_imageform_view" model="ir.ui.view"> | ||
1411 | 6 | <field name="name">product.normal..multi.image.form.inherit</field> | ||
1412 | 7 | <field name="model">product.product</field> | ||
1413 | 8 | <field name="priority">5</field> | ||
1414 | 9 | <field name="inherit_id" ref="product.product_normal_form_view"/> | ||
1415 | 10 | <field name="arch" type="xml"> | ||
1416 | 11 | <notebook position="inside"> | ||
1417 | 12 | <page string="Images"> | ||
1418 | 13 | <field name="multi_images" widget="image_multi"/> | ||
1419 | 14 | </page> | ||
1420 | 15 | </notebook> | ||
1421 | 16 | </field> | ||
1422 | 17 | </record> | ||
1423 | 18 | |||
1424 | 19 | </data> | ||
1425 | 20 | </openerp> | ||
1426 | 0 | 21 | ||
1427 | === added directory 'multi_image_sample/static' | |||
1428 | === added directory 'multi_image_sample/static/src' | |||
1429 | === added directory 'multi_image_sample/static/src/img' | |||
1430 | === added file 'multi_image_sample/static/src/img/icon.png' | |||
1431 | 1 | Binary files multi_image_sample/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and multi_image_sample/static/src/img/icon.png 2014-04-22 22:55:50 +0000 differ | 22 | Binary files multi_image_sample/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and multi_image_sample/static/src/img/icon.png 2014-04-22 22:55:50 +0000 differ |
1432 | === added directory 'portal_public_documents' | |||
1433 | === added file 'portal_public_documents/__init__.py' | |||
1434 | --- portal_public_documents/__init__.py 1970-01-01 00:00:00 +0000 | |||
1435 | +++ portal_public_documents/__init__.py 2014-04-22 22:55:50 +0000 | |||
1436 | @@ -0,0 +1,2 @@ | |||
1437 | 1 | import model | ||
1438 | 2 | import controllers | ||
1439 | 0 | 3 | ||
1440 | === added file 'portal_public_documents/__openerp__.py' | |||
1441 | --- portal_public_documents/__openerp__.py 1970-01-01 00:00:00 +0000 | |||
1442 | +++ portal_public_documents/__openerp__.py 2014-04-22 22:55:50 +0000 | |||
1443 | @@ -0,0 +1,41 @@ | |||
1444 | 1 | #-*- encoding: utf-8 -*- | ||
1445 | 2 | { | ||
1446 | 3 | 'name': "Portal Document Public", | ||
1447 | 4 | 'website': 'http://www.vauxoo.com', | ||
1448 | 5 | 'category': 'Portal', | ||
1449 | 6 | 'author': 'Vauxoo', | ||
1450 | 7 | 'description': """ | ||
1451 | 8 | With this module we will intend to build a "Public Link" to be served as public via http with and | ||
1452 | 9 | without allow the indexing of it. | ||
1453 | 10 | |||
1454 | 11 | The plan: Extend document module adding a field "Public Link" which will be relative to the url | ||
1455 | 12 | base. | ||
1456 | 13 | |||
1457 | 14 | Extend the ir_config parameters to configure the public folder and serve it as werkzeug is doing | ||
1458 | 15 | inside openerp. | ||
1459 | 16 | |||
1460 | 17 | Share the link extending the "many2many tag widget." | ||
1461 | 18 | """, | ||
1462 | 19 | 'category': 'Tools', | ||
1463 | 20 | 'depends':[ | ||
1464 | 21 | 'web', | ||
1465 | 22 | 'base', | ||
1466 | 23 | 'document', | ||
1467 | 24 | 'portal_anonymous', | ||
1468 | 25 | ], | ||
1469 | 26 | 'data': [ | ||
1470 | 27 | 'view/ir_attachment_view.xml', | ||
1471 | 28 | 'data/portal_public_document_data.xml', | ||
1472 | 29 | 'data/ppd_scheduler.xml', | ||
1473 | 30 | ], | ||
1474 | 31 | 'demo': [ | ||
1475 | 32 | 'demo/portal_public_document_demo.xml', | ||
1476 | 33 | ], | ||
1477 | 34 | 'js': [ | ||
1478 | 35 | ], | ||
1479 | 36 | 'css': [ | ||
1480 | 37 | ], | ||
1481 | 38 | 'qweb': [ | ||
1482 | 39 | ], | ||
1483 | 40 | 'installable': True, | ||
1484 | 41 | } | ||
1485 | 0 | 42 | ||
1486 | === added directory 'portal_public_documents/controllers' | |||
1487 | === added file 'portal_public_documents/controllers/__init__.py' | |||
1488 | --- portal_public_documents/controllers/__init__.py 1970-01-01 00:00:00 +0000 | |||
1489 | +++ portal_public_documents/controllers/__init__.py 2014-04-22 22:55:50 +0000 | |||
1490 | @@ -0,0 +1,1 @@ | |||
1491 | 1 | import main | ||
1492 | 0 | 2 | ||
1493 | === added file 'portal_public_documents/controllers/main.py' | |||
1494 | --- portal_public_documents/controllers/main.py 1970-01-01 00:00:00 +0000 | |||
1495 | +++ portal_public_documents/controllers/main.py 2014-04-22 22:55:50 +0000 | |||
1496 | @@ -0,0 +1,41 @@ | |||
1497 | 1 | # -*- coding: utf-8 -*- | ||
1498 | 2 | |||
1499 | 3 | from web import http | ||
1500 | 4 | from openerp.addons.web.controllers.main import Binary | ||
1501 | 5 | openerpweb = http | ||
1502 | 6 | import simplejson | ||
1503 | 7 | import time | ||
1504 | 8 | import openerp | ||
1505 | 9 | import os | ||
1506 | 10 | import StringIO | ||
1507 | 11 | import xmlrpclib | ||
1508 | 12 | import base64 | ||
1509 | 13 | ''' | ||
1510 | 14 | class Binary(Binary): | ||
1511 | 15 | @openerpweb.httprequest | ||
1512 | 16 | def upload_attachment(self, req, callback, model, id, ufile): | ||
1513 | 17 | Model = req.session.model('ir.attachment') | ||
1514 | 18 | ModelXML = req.session.model('ir.model.data') | ||
1515 | 19 | group_folder_id = ModelXML.get_object_reference( | ||
1516 | 20 | 'portal_public_documents', | ||
1517 | 21 | 'portal_public_mail_groups_folder') | ||
1518 | 22 | out = """<script language="javascript" type="text/javascript"> | ||
1519 | 23 | var win = window.top.window; | ||
1520 | 24 | win.jQuery(win).trigger(%s, %s); | ||
1521 | 25 | </script>""" | ||
1522 | 26 | try: | ||
1523 | 27 | attachment_id = Model.create({ | ||
1524 | 28 | 'name': ufile.filename, | ||
1525 | 29 | 'datas': base64.encodestring(ufile.read()), | ||
1526 | 30 | 'datas_fname': ufile.filename, | ||
1527 | 31 | 'res_model': model, | ||
1528 | 32 | 'res_id': int(id), | ||
1529 | 33 | }, req.context) | ||
1530 | 34 | args = { | ||
1531 | 35 | 'filename': ufile.filename, | ||
1532 | 36 | 'id': attachment_id | ||
1533 | 37 | } | ||
1534 | 38 | except xmlrpclib.Fault, e: | ||
1535 | 39 | args = {'error':e.faultCode } | ||
1536 | 40 | return out % (simplejson.dumps(callback), simplejson.dumps(args)) | ||
1537 | 41 | ''' | ||
1538 | 0 | 42 | ||
1539 | === added directory 'portal_public_documents/data' | |||
1540 | === added file 'portal_public_documents/data/portal_public_document_data.xml' | |||
1541 | --- portal_public_documents/data/portal_public_document_data.xml 1970-01-01 00:00:00 +0000 | |||
1542 | +++ portal_public_documents/data/portal_public_document_data.xml 2014-04-22 22:55:50 +0000 | |||
1543 | @@ -0,0 +1,52 @@ | |||
1544 | 1 | <?xml version="1.0"?> | ||
1545 | 2 | <openerp> | ||
1546 | 3 | <data> | ||
1547 | 4 | <record model="document.directory.content.type" id="png"> | ||
1548 | 5 | <field name="code">.png</field> | ||
1549 | 6 | <field name="name">PNG Image</field> | ||
1550 | 7 | <field name="mimetype">image/png</field> | ||
1551 | 8 | </record> | ||
1552 | 9 | <record model="document.directory.content.type" id="jpg"> | ||
1553 | 10 | <field name="code">.jpg</field> | ||
1554 | 11 | <field name="name">JPG Image</field> | ||
1555 | 12 | <field name="mimetype">image/jpg</field> | ||
1556 | 13 | </record> | ||
1557 | 14 | <record model="document.directory.content.type" id="jpeg"> | ||
1558 | 15 | <field name="code">.jpeg</field> | ||
1559 | 16 | <field name="name">JPEG Image</field> | ||
1560 | 17 | <field name="mimetype">image/jpeg</field> | ||
1561 | 18 | </record> | ||
1562 | 19 | <record model="document.directory.content.type" id="jpeg"> | ||
1563 | 20 | <field name="code">.jpeg</field> | ||
1564 | 21 | <field name="name">JPEG Image</field> | ||
1565 | 22 | <field name="mimetype">image/pjpeg</field> | ||
1566 | 23 | </record> | ||
1567 | 24 | <record model="document.directory.content.type" id="gif"> | ||
1568 | 25 | <field name="code">.gif</field> | ||
1569 | 26 | <field name="name">GIF Image</field> | ||
1570 | 27 | <field name="mimetype">image/gif</field> | ||
1571 | 28 | </record> | ||
1572 | 29 | </data> | ||
1573 | 30 | <data> | ||
1574 | 31 | <!-- Pre Create a public Folder. --> | ||
1575 | 32 | <record model="document.directory" id="dir_public_root"> | ||
1576 | 33 | <field name="name">Public</field> | ||
1577 | 34 | <field name="user_id" eval="False"/> | ||
1578 | 35 | <field name="group_ids" eval="[(6,0,[ref('share.group_share_user')])]"/> | ||
1579 | 36 | <field name="publish" eval="True"/> | ||
1580 | 37 | <field name="ressource_id">0</field> | ||
1581 | 38 | </record> | ||
1582 | 39 | <!-- Pre Create a public Folder for mail.group. --> | ||
1583 | 40 | <record model="document.directory" id="portal_public_mail_groups_folder"> | ||
1584 | 41 | <field name="name">Mail Group Folder</field> | ||
1585 | 42 | <field name="user_id" eval="False"/> | ||
1586 | 43 | <field name="group_ids" eval="[(6,0,[ref('share.group_share_user')])]"/> | ||
1587 | 44 | <field name="publish" eval="True"/> | ||
1588 | 45 | <field name="type">ressource</field> | ||
1589 | 46 | <field name="parent_id" eval="ref('dir_public_root')"/> | ||
1590 | 47 | <field name="ressource_type_id" eval="ref('mail.model_mail_group')"/> | ||
1591 | 48 | <field name="resource_find_all" eval="False"/> | ||
1592 | 49 | <field name="ressource_id">0</field> | ||
1593 | 50 | </record> | ||
1594 | 51 | </data> | ||
1595 | 52 | </openerp> | ||
1596 | 0 | 53 | ||
1597 | === added file 'portal_public_documents/data/ppd_scheduler.xml' | |||
1598 | --- portal_public_documents/data/ppd_scheduler.xml 1970-01-01 00:00:00 +0000 | |||
1599 | +++ portal_public_documents/data/ppd_scheduler.xml 2014-04-22 22:55:50 +0000 | |||
1600 | @@ -0,0 +1,13 @@ | |||
1601 | 1 | <?xml version="1.0"?> | ||
1602 | 2 | <openerp> | ||
1603 | 3 | <data> | ||
1604 | 4 | <record model="ir.cron" id="run_autovacuum_public"> | ||
1605 | 5 | <field name="name">Reset Public Files</field> | ||
1606 | 6 | <field name="interval_number">60</field> | ||
1607 | 7 | <field name="interval_type">minutes</field> | ||
1608 | 8 | <field name="numbercall">-1</field> | ||
1609 | 9 | <field name="model">ir.attachment</field> | ||
1610 | 10 | <field name="function">run_autovacuum</field> | ||
1611 | 11 | </record> | ||
1612 | 12 | </data> | ||
1613 | 13 | </openerp> | ||
1614 | 0 | 14 | ||
1615 | === added directory 'portal_public_documents/demo' | |||
1616 | === added file 'portal_public_documents/demo/portal_public_document_demo.xml' | |||
1617 | --- portal_public_documents/demo/portal_public_document_demo.xml 1970-01-01 00:00:00 +0000 | |||
1618 | +++ portal_public_documents/demo/portal_public_document_demo.xml 2014-04-22 22:55:50 +0000 | |||
1619 | @@ -0,0 +1,18 @@ | |||
1620 | 1 | <?xml version="1.0"?> | ||
1621 | 2 | <openerp> | ||
1622 | 3 | <data> | ||
1623 | 4 | <record id="public_folder_paremeter" model="ir.config_parameter"> | ||
1624 | 5 | <field name="key">ir_attachment.plocation</field> | ||
1625 | 6 | <field name="value">file:///static/files</field> | ||
1626 | 7 | </record> | ||
1627 | 8 | </data> | ||
1628 | 9 | <data> | ||
1629 | 10 | |||
1630 | 11 | <record id="public_attachment_demo" model="ir.attachment"> | ||
1631 | 12 | <field name="parent_id" ref="dir_public_root"/> | ||
1632 | 13 | <field name="datas">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</field> | ||
1633 | 14 | <field name="datas_fname">HelloWorld.png</field> | ||
1634 | 15 | <field name="name">HelloWorld.png</field> | ||
1635 | 16 | </record> | ||
1636 | 17 | </data> | ||
1637 | 18 | </openerp> | ||
1638 | 0 | 19 | ||
1639 | === added directory 'portal_public_documents/i18n' | |||
1640 | === added directory 'portal_public_documents/model' | |||
1641 | === added file 'portal_public_documents/model/__init__.py' | |||
1642 | --- portal_public_documents/model/__init__.py 1970-01-01 00:00:00 +0000 | |||
1643 | +++ portal_public_documents/model/__init__.py 2014-04-22 22:55:50 +0000 | |||
1644 | @@ -0,0 +1,1 @@ | |||
1645 | 1 | import ir_attachment | ||
1646 | 0 | 2 | ||
1647 | === added file 'portal_public_documents/model/ir_attachment.py' | |||
1648 | --- portal_public_documents/model/ir_attachment.py 1970-01-01 00:00:00 +0000 | |||
1649 | +++ portal_public_documents/model/ir_attachment.py 2014-04-22 22:55:50 +0000 | |||
1650 | @@ -0,0 +1,241 @@ | |||
1651 | 1 | # -*- coding: utf-8 -*- | ||
1652 | 2 | ############################################################################## | ||
1653 | 3 | # | ||
1654 | 4 | # OpenERP, Open Source Management Solution | ||
1655 | 5 | # Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). | ||
1656 | 6 | # | ||
1657 | 7 | # This program is free software: you can redistribute it and/or modify | ||
1658 | 8 | # it under the terms of the GNU Affero General Public License as | ||
1659 | 9 | # published by the Free Software Foundation, either version 3 of the | ||
1660 | 10 | # License, or (at your option) any later version. | ||
1661 | 11 | # | ||
1662 | 12 | # This program is distributed in the hope that it will be useful, | ||
1663 | 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
1664 | 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
1665 | 15 | # GNU Affero General Public License for more details. | ||
1666 | 16 | # | ||
1667 | 17 | # You should have received a copy of the GNU Affero General Public License | ||
1668 | 18 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
1669 | 19 | # | ||
1670 | 20 | ############################################################################## | ||
1671 | 21 | |||
1672 | 22 | import hashlib | ||
1673 | 23 | import itertools | ||
1674 | 24 | import logging | ||
1675 | 25 | import os | ||
1676 | 26 | import re | ||
1677 | 27 | from shutil import copyfile, rmtree | ||
1678 | 28 | |||
1679 | 29 | from openerp import tools | ||
1680 | 30 | from openerp import addons | ||
1681 | 31 | from openerp import SUPERUSER_ID | ||
1682 | 32 | from openerp.tools.translate import _ | ||
1683 | 33 | from openerp.osv import fields, osv | ||
1684 | 34 | _logger = logging.getLogger(__name__) | ||
1685 | 35 | |||
1686 | 36 | |||
1687 | 37 | class document_directory(osv.osv): | ||
1688 | 38 | _inherit = 'document.directory' | ||
1689 | 39 | _columns = { | ||
1690 | 40 | 'publish': fields.boolean('Allow Publish', | ||
1691 | 41 | help='If you want allow files under this directory be published ' | ||
1692 | 42 | 'directly as an http file.'), | ||
1693 | 43 | } | ||
1694 | 44 | |||
1695 | 45 | |||
1696 | 46 | class ir_attachment(osv.Model): | ||
1697 | 47 | |||
1698 | 48 | '''OverWrite Document Class to ensure add the new coputeb field to know the public link''' | ||
1699 | 49 | |||
1700 | 50 | _inherit = 'ir.attachment' | ||
1701 | 51 | |||
1702 | 52 | def _get_anonymous_id(self, cr, uid, ids, context=None): | ||
1703 | 53 | ir_model_data = self.pool.get('ir.model.data') | ||
1704 | 54 | users_obj = self.pool.get('res.users') | ||
1705 | 55 | anonymous_data_id = ir_model_data.get_object_reference( | ||
1706 | 56 | cr, SUPERUSER_ID, 'portal_anonymous', | ||
1707 | 57 | 'anonymous_user') | ||
1708 | 58 | anonymous_id = ir_model_data.browse(cr, SUPERUSER_ID, [ | ||
1709 | 59 | anonymous_data_id[1]], context=context) | ||
1710 | 60 | anonymous_brw = users_obj.browse(cr, SUPERUSER_ID, [ | ||
1711 | 61 | anonymous_id[0].id], context=context) | ||
1712 | 62 | return anonymous_brw and anonymous_brw[0] or False | ||
1713 | 63 | |||
1714 | 64 | def _full_url_plocation(self, cr, uid, location, path): | ||
1715 | 65 | # location = 'file:filestore' | ||
1716 | 66 | assert location.startswith( | ||
1717 | 67 | 'file:'), "Unhandled filestore location %s" % location | ||
1718 | 68 | location = location[5:] | ||
1719 | 69 | |||
1720 | 70 | # sanitize location name and path | ||
1721 | 71 | location = re.sub('[.]', '', location) | ||
1722 | 72 | location = location.strip('/\\') | ||
1723 | 73 | |||
1724 | 74 | path = re.sub('[.]', '', path) | ||
1725 | 75 | path = path.strip('/\\') | ||
1726 | 76 | # TODO: Change for url manipulation lib | ||
1727 | 77 | base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, | ||
1728 | 78 | 'web.base.url') | ||
1729 | 79 | return os.path.join(base_url, 'portal_public_documents', location, cr.dbname, path) | ||
1730 | 80 | |||
1731 | 81 | def _get_public_path(self, cr, uid, ids, name, arg, context=None): | ||
1732 | 82 | if context is None: | ||
1733 | 83 | context = {} | ||
1734 | 84 | res = {} | ||
1735 | 85 | doc_brw = self.browse(cr, SUPERUSER_ID, ids, context=context) | ||
1736 | 86 | a_id = self._get_anonymous_id(cr, SUPERUSER_ID, ids, context=context) | ||
1737 | 87 | plocation = self.pool.get('ir.config_parameter').get_param(cr, uid, | ||
1738 | 88 | 'ir_attachment.plocation') | ||
1739 | 89 | for d in doc_brw: | ||
1740 | 90 | if not d.store_fname: | ||
1741 | 91 | res[d.id] = False | ||
1742 | 92 | else: | ||
1743 | 93 | if d and d.user_id == a_id: | ||
1744 | 94 | res[d.id] = self._full_url_plocation( | ||
1745 | 95 | cr, uid, plocation, d.store_fname) | ||
1746 | 96 | else: | ||
1747 | 97 | res[d.id] = False | ||
1748 | 98 | return res | ||
1749 | 99 | |||
1750 | 100 | _columns = { | ||
1751 | 101 | 'public_path': fields.function(_get_public_path, 'Public Path', method=True, store=False, | ||
1752 | 102 | fnct_inv=None, type='char', size=1024, fnct_search=None, | ||
1753 | 103 | help='''Public path for this file, if "Allow Public access is checked in the Folder and it | ||
1754 | 104 | is owned by Anonymous."'''), | ||
1755 | 105 | } | ||
1756 | 106 | |||
1757 | 107 | def _full_path_plocation(self, cr, uid, location, path): | ||
1758 | 108 | # location = 'file:filestore' | ||
1759 | 109 | assert location.startswith( | ||
1760 | 110 | 'file:'), "Unhandled filestore location %s" % location | ||
1761 | 111 | location = location[5:] | ||
1762 | 112 | |||
1763 | 113 | # sanitize location name and path | ||
1764 | 114 | location = re.sub('[.]', '', location) | ||
1765 | 115 | location = location.strip('/\\') | ||
1766 | 116 | path = re.sub('[.]', '', path) | ||
1767 | 117 | path = path.strip('/\\') | ||
1768 | 118 | return os.path.join(addons.portal_public_documents.__path__[0], location, cr.dbname, path) | ||
1769 | 119 | |||
1770 | 120 | def publish_document(self, cr, uid, ids, context=None): | ||
1771 | 121 | ''' | ||
1772 | 122 | Make Public a list of attachments. | ||
1773 | 123 | A file is public IF the user_id is anonymous | ||
1774 | 124 | ''' | ||
1775 | 125 | a_brw = self._get_anonymous_id(cr, uid, ids, context=context) | ||
1776 | 126 | doc_brw = self.browse(cr, uid, ids, context=context) | ||
1777 | 127 | location = self.pool.get('ir.config_parameter').get_param(cr, uid, | ||
1778 | 128 | 'ir_attachment.location') | ||
1779 | 129 | plocation = self.pool.get('ir.config_parameter').get_param(cr, uid, | ||
1780 | 130 | 'ir_attachment.plocation') | ||
1781 | 131 | dict_write = a_brw and {'user_id': a_brw.id} or {} | ||
1782 | 132 | for d in doc_brw: | ||
1783 | 133 | if d.parent_id.publish: | ||
1784 | 134 | # Write in db first, if something happend, nothing happen | ||
1785 | 135 | d.write(dict_write, context=context) | ||
1786 | 136 | # TODO: This copy process must be done, | ||
1787 | 137 | # 1.- With an user different and secure. | ||
1788 | 138 | # 2.- Maybe this files will be accessed by a web-server too! | ||
1789 | 139 | # explain clearly in documentation how to do that. | ||
1790 | 140 | # 3.- Is secure use the same name? | ||
1791 | 141 | # 4.- TODO: Always is insecure be in touch of make public a file, maybe sincronize | ||
1792 | 142 | # with external tools like Gdocs, Dropbox or even put on a scp or ftp public server | ||
1793 | 143 | # is a better approach | ||
1794 | 144 | if not d.store_fname: | ||
1795 | 145 | raise osv.except_osv(_('Security!'), 'Store Fname no setted Try to recreate' | ||
1796 | 146 | ' the file or use an export/import script to convert this' | ||
1797 | 147 | 'file in a file saved on the file system. ' | ||
1798 | 148 | '%s ' % d.store_fname) | ||
1799 | 149 | if not plocation: | ||
1800 | 150 | raise osv.except_osv(_( | ||
1801 | 151 | 'Security!'), 'Public location not setted go to Setting') | ||
1802 | 152 | destiny = self._full_path_plocation( | ||
1803 | 153 | cr, uid, plocation, d.store_fname) | ||
1804 | 154 | origin = self._full_path(cr, uid, location, d.store_fname) | ||
1805 | 155 | try: | ||
1806 | 156 | dirname = os.path.dirname(destiny) | ||
1807 | 157 | if not os.path.isdir(dirname): | ||
1808 | 158 | os.makedirs(dirname) | ||
1809 | 159 | copyfile(origin, destiny) | ||
1810 | 160 | except IOError: | ||
1811 | 161 | _logger.error("Making public error writing from %s to %s" % ( | ||
1812 | 162 | origin, destiny)) | ||
1813 | 163 | #(location and plocation) and shutil | ||
1814 | 164 | else: | ||
1815 | 165 | raise osv.except_osv(_('Security!'), | ||
1816 | 166 | _('You can not make public a File in a folder that is not ' | ||
1817 | 167 | 'explicitally marked as ' | ||
1818 | 168 | '"Allowe Publish" it is happening sharing the file' | ||
1819 | 169 | '%s in the folder %s' % (d.name, d.parent_id.name))) | ||
1820 | 170 | return True | ||
1821 | 171 | |||
1822 | 172 | def unpublish_document(self, cr, uid, ids, context=None): | ||
1823 | 173 | doc_brw = self.browse(cr, uid, ids, context=context) | ||
1824 | 174 | plocation = self.pool.get('ir.config_parameter').get_param(cr, uid, | ||
1825 | 175 | 'ir_attachment.plocation') | ||
1826 | 176 | for d in doc_brw: | ||
1827 | 177 | dict_write = d.create_uid and {'user_id': d.create_uid.id} or {} | ||
1828 | 178 | super(ir_attachment, self).write(cr, uid, ids, dict_write, context) | ||
1829 | 179 | if not d.store_fname: | ||
1830 | 180 | raise osv.except_osv(_('Security!'), 'Store Fname no setted Try to recreate' | ||
1831 | 181 | ' the file or use an export/import script to convert this' | ||
1832 | 182 | 'file in a file saved on the file system. ' | ||
1833 | 183 | '%s ' % d.store_fname) | ||
1834 | 184 | if not plocation: | ||
1835 | 185 | raise osv.except_osv(_( | ||
1836 | 186 | 'Security!'), 'Public location not setted go to Setting') | ||
1837 | 187 | destiny = self._full_path_plocation( | ||
1838 | 188 | cr, uid, plocation, d.store_fname) | ||
1839 | 189 | try: | ||
1840 | 190 | os.remove(destiny) | ||
1841 | 191 | except IOError: | ||
1842 | 192 | _logger.error('I cant delete file %s' % destiny) | ||
1843 | 193 | except OSError: | ||
1844 | 194 | _logger.error('This file was already deleted. %s' % destiny) | ||
1845 | 195 | return True | ||
1846 | 196 | |||
1847 | 197 | def unlink(self, cr, uid, ids, context=None): | ||
1848 | 198 | plocation = self.pool.get('ir.config_parameter').get_param(cr, uid, | ||
1849 | 199 | 'ir_attachment.plocation') | ||
1850 | 200 | if plocation: | ||
1851 | 201 | for attach in self.browse(cr, uid, ids, context=context): | ||
1852 | 202 | destiny = self._full_path_plocation( | ||
1853 | 203 | cr, uid, plocation, attach.store_fname) | ||
1854 | 204 | try: | ||
1855 | 205 | os.remove(destiny) | ||
1856 | 206 | except IOError: | ||
1857 | 207 | _logger.error('I cant delete file %s' % destiny) | ||
1858 | 208 | except OSError: | ||
1859 | 209 | _logger.error( | ||
1860 | 210 | 'This file was already deleted. %s' % destiny) | ||
1861 | 211 | return super(ir_attachment, self).unlink(cr, uid, ids, context) | ||
1862 | 212 | |||
1863 | 213 | def write(self, cr, uid, ids, vals, context=None): | ||
1864 | 214 | self.check(cr, uid, ids, 'write', context=context, values=vals) | ||
1865 | 215 | for i in self.browse(cr, uid, ids, context=context): | ||
1866 | 216 | if i.public_path: | ||
1867 | 217 | self.unpublish_document(cr, uid, [i.id], context=context) | ||
1868 | 218 | return super(ir_attachment, self).write(cr, uid, ids, vals, context) | ||
1869 | 219 | |||
1870 | 220 | def run_autovacuum(self, cr, uid, context=None): | ||
1871 | 221 | if context is None: | ||
1872 | 222 | context = {} | ||
1873 | 223 | def location_p(f): | ||
1874 | 224 | return self._full_path_plocation(cr, uid, plocation, i) | ||
1875 | 225 | a_brw = self._get_anonymous_id(cr, uid, [], context=context) | ||
1876 | 226 | public_ids = self.search(cr, uid, [('user_id', '=', a_brw.id)], context=context) | ||
1877 | 227 | _logger.info('Running Autovacuum Files all your public files will be reseted %s ' % | ||
1878 | 228 | str(public_ids)) | ||
1879 | 229 | #I make no public, and then make public again, in this way we ensure all public information | ||
1880 | 230 | #is reseted. | ||
1881 | 231 | self.unpublish_document(cr, uid, public_ids, context=context) | ||
1882 | 232 | plocation = self.pool.get('ir.config_parameter').get_param(cr, uid, | ||
1883 | 233 | 'ir_attachment.plocation') | ||
1884 | 234 | destiny = self._full_path_plocation( | ||
1885 | 235 | cr, uid, plocation, '') | ||
1886 | 236 | p_files = os.listdir(destiny) | ||
1887 | 237 | _logger.info('Destiny folder %s was empty totally' % destiny) | ||
1888 | 238 | if os.path.isdir(destiny): | ||
1889 | 239 | [rmtree(location_p(i)) for i in p_files] | ||
1890 | 240 | self.publish_document(cr, uid, public_ids, context=context) | ||
1891 | 241 | return True | ||
1892 | 0 | 242 | ||
1893 | === added directory 'portal_public_documents/static' | |||
1894 | === added directory 'portal_public_documents/static/files' | |||
1895 | === added directory 'portal_public_documents/view' | |||
1896 | === added file 'portal_public_documents/view/ir_attachment_view.xml' | |||
1897 | --- portal_public_documents/view/ir_attachment_view.xml 1970-01-01 00:00:00 +0000 | |||
1898 | +++ portal_public_documents/view/ir_attachment_view.xml 2014-04-22 22:55:50 +0000 | |||
1899 | @@ -0,0 +1,34 @@ | |||
1900 | 1 | <?xml version="1.0" encoding="utf-8"?> | ||
1901 | 2 | <openerp> | ||
1902 | 3 | <data> | ||
1903 | 4 | <record id="view_attachment_public_form" model="ir.ui.view"> | ||
1904 | 5 | <field name="inherit_id" ref="base.view_attachment_form"/> | ||
1905 | 6 | <field name="model">ir.attachment</field> | ||
1906 | 7 | <field name="arch" type="xml"> | ||
1907 | 8 | <xpath expr="//sheet" position="before"> | ||
1908 | 9 | <header> | ||
1909 | 10 | <button type="object" string="Publish" class="oe_highlight oe_inline" name="publish_document" | ||
1910 | 11 | attrs="{'invisible': [('public_path', '!=', False)]}" | ||
1911 | 12 | help="This document actually is private and you can access it trought and http link if you click this button, to be able to share this kind of document you must ask access to administrator to be sure you have the correct acces rights to share internal documents, You must be part of 'Share User' group to put publically your own documents and you must be part od 'Share Manager' to share documents owned by others, 'All this is true if the folder allow Share Public Access'."/> | ||
1912 | 13 | <button type="object" string="Unpublish" class="oe_highlight oe_inline" name="unpublish_document" | ||
1913 | 14 | attrs="{'invisible': [('public_path', '=', False)]}" | ||
1914 | 15 | help="Stop share this document, If it is owned by you or if you are part of 'Share Manager' users.'"/> | ||
1915 | 16 | <div class="oe_form_box_info oe_text_center" attrs="{'invisible': [('public_path', '=', False)]}"> | ||
1916 | 17 | <p>You can access to this file publically in the following link</p> | ||
1917 | 18 | <field name="public_path" widget="url"/> | ||
1918 | 19 | </div> | ||
1919 | 20 | </header> | ||
1920 | 21 | </xpath> | ||
1921 | 22 | </field> | ||
1922 | 23 | </record> | ||
1923 | 24 | <record model="ir.ui.view" id="view_document_directory_publish_form"> | ||
1924 | 25 | <field name="inherit_id" ref="document.view_document_directory_form"/> | ||
1925 | 26 | <field name="model">document.directory</field> | ||
1926 | 27 | <field name="arch" type="xml"> | ||
1927 | 28 | <xpath expr="//field[@name='name']" position="after"> | ||
1928 | 29 | <field name="publish"/> | ||
1929 | 30 | </xpath> | ||
1930 | 31 | </field> | ||
1931 | 32 | </record> | ||
1932 | 33 | </data> | ||
1933 | 34 | </openerp> | ||
1934 | 0 | 35 | ||
1935 | === added directory 'web_allow_custom_root' | |||
1936 | === added file 'web_allow_custom_root/__init__.py' | |||
1937 | --- web_allow_custom_root/__init__.py 1970-01-01 00:00:00 +0000 | |||
1938 | +++ web_allow_custom_root/__init__.py 2014-04-22 22:55:50 +0000 | |||
1939 | @@ -0,0 +1,30 @@ | |||
1940 | 1 | from openerp.tools import config | ||
1941 | 2 | from openerp.addons import web | ||
1942 | 3 | |||
1943 | 4 | web.controllers.main.html_template = """<!DOCTYPE html> | ||
1944 | 5 | <html style="height: 100%%"> | ||
1945 | 6 | <head> | ||
1946 | 7 | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> | ||
1947 | 8 | <meta http-equiv="content-type" content="text/html; charset=utf-8" /> | ||
1948 | 9 | <title>OpenERP</title> | ||
1949 | 10 | <link rel="shortcut icon" href="""+config.get('favicon', '/web/static/src/img/favicon.ico')+""" type="image/x-icon"/> | ||
1950 | 11 | <link rel="stylesheet" href="/web/static/src/css/full.css" /> | ||
1951 | 12 | %(css)s | ||
1952 | 13 | %(js)s | ||
1953 | 14 | <script type="text/javascript"> | ||
1954 | 15 | $(function() { | ||
1955 | 16 | var s = new openerp.init(%(modules)s); | ||
1956 | 17 | %(init)s | ||
1957 | 18 | }); | ||
1958 | 19 | </script> | ||
1959 | 20 | <script src='"""+config.get('gmaps_api_key', '')+"""' type="text/javascript"> | ||
1960 | 21 | </script> | ||
1961 | 22 | </head> | ||
1962 | 23 | <body> | ||
1963 | 24 | <!--[if lte IE 8]> | ||
1964 | 25 | <script src="//ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"></script> | ||
1965 | 26 | <script>CFInstall.check({mode: "overlay"});</script> | ||
1966 | 27 | <![endif]--> | ||
1967 | 28 | </body> | ||
1968 | 29 | </html> | ||
1969 | 30 | """ | ||
1970 | 0 | 31 | ||
1971 | === added file 'web_allow_custom_root/__openerp__.py' | |||
1972 | --- web_allow_custom_root/__openerp__.py 1970-01-01 00:00:00 +0000 | |||
1973 | +++ web_allow_custom_root/__openerp__.py 2014-04-22 22:55:50 +0000 | |||
1974 | @@ -0,0 +1,86 @@ | |||
1975 | 1 | |||
1976 | 2 | #-*- coding: utf-8 -*- | ||
1977 | 3 | ################################################################################################### | ||
1978 | 4 | # | ||
1979 | 5 | # OpenERP, Open Source Management Solution Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). | ||
1980 | 6 | # All Rights Reserved | ||
1981 | 7 | # Financed and Planified by Vauxoo | ||
1982 | 8 | # developed by: nhomar@vauxoo.com | ||
1983 | 9 | # This program is free software: you can redistribute it and/or modify it under the terms of the | ||
1984 | 10 | # GNU General Public License as published by the Free Software Foundation, either version 3 of | ||
1985 | 11 | # the License, or (at your option) any later version. | ||
1986 | 12 | # This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; | ||
1987 | 13 | # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See | ||
1988 | 14 | # the GNU General Public License for more details. | ||
1989 | 15 | # You should have received a copy of the GNU General Public License along with this program. | ||
1990 | 16 | # If not, see <http://www.gnu.org/licenses/>. | ||
1991 | 17 | ################################################################################################### | ||
1992 | 18 | |||
1993 | 19 | { | ||
1994 | 20 | 'name': "Custom Init Template Parameters", | ||
1995 | 21 | 'author': "Vauxoo", | ||
1996 | 22 | 'category': "Hidden", | ||
1997 | 23 | 'description': """ | ||
1998 | 24 | Make customizable your html_template: | ||
1999 | 25 | ===================================== | ||
2000 | 26 | |||
2001 | 27 | Some things in the html_template variable are wired in the code. | ||
2002 | 28 | |||
2003 | 29 | With this module we can pass them as parameters. | ||
2004 | 30 | |||
2005 | 31 | 1.- Favicon. | ||
2006 | 32 | ------------ | ||
2007 | 33 | |||
2008 | 34 | Add the key: favicon in your config file mapping to your public available path, and it will be taken. | ||
2009 | 35 | |||
2010 | 36 | i.e: | ||
2011 | 37 | |||
2012 | 38 | code:: | ||
2013 | 39 | |||
2014 | 40 | Relative: | ||
2015 | 41 | favicon = /path/to/your/favicon.ico | ||
2016 | 42 | Absolute: | ||
2017 | 43 | favicon = https://url.com/path/to/your/favicon.ico | ||
2018 | 44 | |||
2019 | 45 | default: | ||
2020 | 46 | '/web/static/src/img/favicon.ico' | ||
2021 | 47 | |||
2022 | 48 | 2.- Extra js Scripts. | ||
2023 | 49 | --------------------- | ||
2024 | 50 | |||
2025 | 51 | Add a key: script_extra_`NAME` | ||
2026 | 52 | |||
2027 | 53 | code:: | ||
2028 | 54 | |||
2029 | 55 | script_extra_addwords = '<script type="text/javascript"> <!--//--><![CDATA[//><!-- GA_googleFetchAds(); //--><!]]> </script>' | ||
2030 | 56 | |||
2031 | 57 | 3.- Gmaps API loaded. | ||
2032 | 58 | --------------------- | ||
2033 | 59 | |||
2034 | 60 | i.e: | ||
2035 | 61 | |||
2036 | 62 | code:: | ||
2037 | 63 | |||
2038 | 64 | gmaps_api_key = "https://maps.googleapis.com/maps/api/js?key=API_KEY&sensor=SET_TO_TRUE_OR_FALSE" | ||
2039 | 65 | |||
2040 | 66 | In this way you can put your customize loading stuff and/or namespace all your client to use your | ||
2041 | 67 | own css. | ||
2042 | 68 | |||
2043 | 69 | If you put this module available in your addons path the variable will be overwritten and this | ||
2044 | 70 | options will be availables, change your config file and all will work smothly. | ||
2045 | 71 | |||
2046 | 72 | This is used in http://www.vauxoo.com see how it loads all this information very quickly. | ||
2047 | 73 | """, | ||
2048 | 74 | 'version': "0.1", | ||
2049 | 75 | 'depends': [ | ||
2050 | 76 | 'web', | ||
2051 | 77 | 'base', | ||
2052 | 78 | ], | ||
2053 | 79 | 'js': [ | ||
2054 | 80 | ], | ||
2055 | 81 | 'css': [ | ||
2056 | 82 | ], | ||
2057 | 83 | 'qweb': [ | ||
2058 | 84 | ], | ||
2059 | 85 | 'installable': True, | ||
2060 | 86 | } | ||
2061 | 0 | 87 | ||
2062 | === added directory 'web_allow_custom_root/static' | |||
2063 | === added directory 'web_allow_custom_root/static/src' | |||
2064 | === added directory 'web_allow_custom_root/static/src/img' | |||
2065 | === added file 'web_allow_custom_root/static/src/img/icon.png' | |||
2066 | 1 | Binary files web_allow_custom_root/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and web_allow_custom_root/static/src/img/icon.png 2014-04-22 22:55:50 +0000 differ | 88 | Binary files web_allow_custom_root/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and web_allow_custom_root/static/src/img/icon.png 2014-04-22 22:55:50 +0000 differ |
2067 | === added directory 'web_binary_icon' | |||
2068 | === added file 'web_binary_icon/__init__.py' | |||
2069 | === added file 'web_binary_icon/__openerp__.py' | |||
2070 | --- web_binary_icon/__openerp__.py 1970-01-01 00:00:00 +0000 | |||
2071 | +++ web_binary_icon/__openerp__.py 2014-04-22 22:55:50 +0000 | |||
2072 | @@ -0,0 +1,89 @@ | |||
2073 | 1 | # -*- coding: utf-8 -*- | ||
2074 | 2 | ############################################################################## | ||
2075 | 3 | # | ||
2076 | 4 | # OpenERP, Open Source Management Solution | ||
2077 | 5 | # Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved | ||
2078 | 6 | # Financed and Planified by Vauxoo | ||
2079 | 7 | # developed by: nhomar@vauxoo.com | ||
2080 | 8 | # | ||
2081 | 9 | # This program is free software: you can redistribute it and/or modify | ||
2082 | 10 | # it under the terms of the GNU General Public License as published by | ||
2083 | 11 | # the Free Software Foundation, either version 3 of the License, or | ||
2084 | 12 | # (at your option) any later version. | ||
2085 | 13 | # | ||
2086 | 14 | # This program is distributed in the hope that it will be useful, | ||
2087 | 15 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
2088 | 16 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
2089 | 17 | # GNU General Public License for more details. | ||
2090 | 18 | # | ||
2091 | 19 | # You should have received a copy of the GNU General Public License | ||
2092 | 20 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
2093 | 21 | # | ||
2094 | 22 | ############################################################################## | ||
2095 | 23 | |||
2096 | 24 | { | ||
2097 | 25 | 'name': "Web Binary Icon", | ||
2098 | 26 | 'author': "Vauxoo", | ||
2099 | 27 | 'category': "Hidden", | ||
2100 | 28 | 'description': """ | ||
2101 | 29 | Binary Icon plugin. | ||
2102 | 30 | =================== | ||
2103 | 31 | |||
2104 | 32 | When you are using a binary field, it is cool, if depending of the extension | ||
2105 | 33 | the field show the icon of the app, something like the plugin for gmail does, | ||
2106 | 34 | recognizing the extension and showing the correct icon. | ||
2107 | 35 | |||
2108 | 36 | Files to consider TODO:. | ||
2109 | 37 | |||
2110 | 38 | All openoffice extensions: | ||
2111 | 39 | |||
2112 | 40 | * .odt | ||
2113 | 41 | * .odp | ||
2114 | 42 | * .odf | ||
2115 | 43 | |||
2116 | 44 | All Ms Office extensions: | ||
2117 | 45 | |||
2118 | 46 | * .xls, xlsx | ||
2119 | 47 | * .doc, docx | ||
2120 | 48 | * .ppt, pptx | ||
2121 | 49 | |||
2122 | 50 | All text extentions: | ||
2123 | 51 | |||
2124 | 52 | * .txt | ||
2125 | 53 | * .rst | ||
2126 | 54 | * .xml (Usefull for electronic invoices.) | ||
2127 | 55 | |||
2128 | 56 | Links as attachments should be cool of recognize too!. | ||
2129 | 57 | |||
2130 | 58 | * .googledoc | ||
2131 | 59 | |||
2132 | 60 | Images should be usefull, probably working in thumbnails feature. | ||
2133 | 61 | |||
2134 | 62 | * .jpg | ||
2135 | 63 | * .png | ||
2136 | 64 | * .gif | ||
2137 | 65 | * .jpeg | ||
2138 | 66 | * .svg | ||
2139 | 67 | * .gimp | ||
2140 | 68 | |||
2141 | 69 | Other Formats usefull in the middle. | ||
2142 | 70 | |||
2143 | 71 | * .project | ||
2144 | 72 | * .planner | ||
2145 | 73 | * .Xmind | ||
2146 | 74 | * .log | ||
2147 | 75 | """, | ||
2148 | 76 | 'version': "1.0", | ||
2149 | 77 | 'depends': ['web'], | ||
2150 | 78 | 'js': [ | ||
2151 | 79 | 'static/src/js/lib.js', | ||
2152 | 80 | ], | ||
2153 | 81 | 'css': [ | ||
2154 | 82 | ], | ||
2155 | 83 | 'qweb': [ | ||
2156 | 84 | 'static/src/xml/lib.xml', | ||
2157 | 85 | ], | ||
2158 | 86 | 'installable': True, | ||
2159 | 87 | 'auto_install': False, | ||
2160 | 88 | 'web_preload': False, | ||
2161 | 89 | } | ||
2162 | 0 | 90 | ||
2163 | === added directory 'web_binary_icon/i18n' | |||
2164 | === added directory 'web_binary_icon/static' | |||
2165 | === added directory 'web_binary_icon/static/src' | |||
2166 | === added directory 'web_binary_icon/static/src/css' | |||
2167 | === added directory 'web_binary_icon/static/src/img' | |||
2168 | === added directory 'web_binary_icon/static/src/js' | |||
2169 | === added directory 'web_binary_icon/static/src/xml' | |||
2170 | === added directory 'web_bootstrap3' | |||
2171 | === added file 'web_bootstrap3/__init__.py' | |||
2172 | === added file 'web_bootstrap3/__openerp__.py' | |||
2173 | --- web_bootstrap3/__openerp__.py 1970-01-01 00:00:00 +0000 | |||
2174 | +++ web_bootstrap3/__openerp__.py 2014-04-22 22:55:50 +0000 | |||
2175 | @@ -0,0 +1,91 @@ | |||
2176 | 1 | #-*- coding: utf-8 -*- | ||
2177 | 2 | ################################################################################################### | ||
2178 | 3 | # | ||
2179 | 4 | # OpenERP, Open Source Management Solution Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). | ||
2180 | 5 | # All Rights Reserved | ||
2181 | 6 | # Financed and Planified by Vauxoo | ||
2182 | 7 | # developed by: nhomar@vauxoo.com | ||
2183 | 8 | # This program is free software: you can redistribute it and/or modify it under the terms of the | ||
2184 | 9 | # GNU General Public License as published by the Free Software Foundation, either version 3 of | ||
2185 | 10 | # the License, or (at your option) any later version. | ||
2186 | 11 | # This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; | ||
2187 | 12 | # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See | ||
2188 | 13 | # the GNU General Public License for more details. | ||
2189 | 14 | # You should have received a copy of the GNU General Public License along with this program. | ||
2190 | 15 | # If not, see <http://www.gnu.org/licenses/>. | ||
2191 | 16 | ################################################################################################### | ||
2192 | 17 | |||
2193 | 18 | { | ||
2194 | 19 | 'name': "Bootstrap 3.0 for OpenERP", | ||
2195 | 20 | 'author': "Vauxoo", | ||
2196 | 21 | 'category': "Hidden", | ||
2197 | 22 | 'description': """ | ||
2198 | 23 | Bootstrap 3.0 in OpenERP | ||
2199 | 24 | ======================== | ||
2200 | 25 | |||
2201 | 26 | Sleek, intuitive, and powerful mobile first front-end framework for faster and easier web | ||
2202 | 27 | development. | ||
2203 | 28 | |||
2204 | 29 | Openerp have embeded partially Bootstrap 2.x but the new version is so powerfull. | ||
2205 | 30 | |||
2206 | 31 | With this module you will be able to design cool views with this documentation, all what you need | ||
2207 | 32 | is namespace your views with a delimiter with class .bs3 | ||
2208 | 33 | |||
2209 | 34 | i.e.: | ||
2210 | 35 | |||
2211 | 36 | :: | ||
2212 | 37 | |||
2213 | 38 | <form version="7.0"> | ||
2214 | 39 | ... | ||
2215 | 40 | ... | ||
2216 | 41 | <pre> | ||
2217 | 42 | <div class="bs3"> | ||
2218 | 43 | <field name="text" widget="html"/> | ||
2219 | 44 | </div> | ||
2220 | 45 | </pre> | ||
2221 | 46 | ... | ||
2222 | 47 | ... | ||
2223 | 48 | ... | ||
2224 | 49 | </form> | ||
2225 | 50 | |||
2226 | 51 | Now all the content of the field ``text`` with widget ``html`` bellow will be rendered with all the | ||
2227 | 52 | power of bs3 | ||
2228 | 53 | |||
2229 | 54 | We include the original less files to allow you compile this when you need but you can download and | ||
2230 | 55 | compile by your self the original sources, just need to compile the bs3-openerp.less again pointing | ||
2231 | 56 | the bs3 original files. | ||
2232 | 57 | |||
2233 | 58 | The most interesting part of this way to work is that our specific modules in terms of look and | ||
2234 | 59 | feel will be prepared for version 8.0. | ||
2235 | 60 | |||
2236 | 61 | The bootstrap documentation can be found here_ | ||
2237 | 62 | |||
2238 | 63 | You will find a directory called bootstrap3 with the bootstrap's source code, the main objective of | ||
2239 | 64 | do that is be able to just pull from original bootstrap project and commit in this module almost | ||
2240 | 65 | directly. | ||
2241 | 66 | |||
2242 | 67 | Is you want compile your own version of bootstrap_ download the source code in the link_ | ||
2243 | 68 | |||
2244 | 69 | .. _here http://getbootstrap.com/ | ||
2245 | 70 | .. _bootstrap https://github.com/twbs/bootstrap/ | ||
2246 | 71 | .. _link https://github.com/twbs/bootstrap/ | ||
2247 | 72 | """, | ||
2248 | 73 | 'version': "1.0", | ||
2249 | 74 | 'depends': [ | ||
2250 | 75 | 'web' | ||
2251 | 76 | ], | ||
2252 | 77 | 'js': [ | ||
2253 | 78 | 'static/src/js/bootstrap.js', | ||
2254 | 79 | 'static/src/js/bootstrap-lightbox.js', | ||
2255 | 80 | #'static/src/js/ekko-lightbox.js', | ||
2256 | 81 | ], | ||
2257 | 82 | 'css': [ | ||
2258 | 83 | 'static/src/css/bs3-openerp.css', | ||
2259 | 84 | 'static/src/css/bs3-lightbox.css', | ||
2260 | 85 | ], | ||
2261 | 86 | 'qweb': [ | ||
2262 | 87 | ], | ||
2263 | 88 | 'installable': True, | ||
2264 | 89 | 'auto_install': False, | ||
2265 | 90 | 'web_preload': False, #set to True if you want this module be available always without ask. | ||
2266 | 91 | } | ||
2267 | 0 | 92 | ||
2268 | === added directory 'web_bootstrap3/static' | |||
2269 | === added directory 'web_bootstrap3/static/src' | |||
2270 | === added directory 'web_bootstrap3/static/src/css' | |||
2271 | === added file 'web_bootstrap3/static/src/css/bs3-lightbox.css' | |||
2272 | --- web_bootstrap3/static/src/css/bs3-lightbox.css 1970-01-01 00:00:00 +0000 | |||
2273 | +++ web_bootstrap3/static/src/css/bs3-lightbox.css 2014-04-22 22:55:50 +0000 | |||
2274 | @@ -0,0 +1,91 @@ | |||
2275 | 1 | /*! | ||
2276 | 2 | * bootstrap-lightbox.css v0.6.1 | ||
2277 | 3 | * Copyright 2013 Jason Butz | ||
2278 | 4 | * http://www.apache.org/licenses/LICENSE-2.0.txt | ||
2279 | 5 | */ | ||
2280 | 6 | .lightbox-open { | ||
2281 | 7 | overflow: hidden; | ||
2282 | 8 | } | ||
2283 | 9 | |||
2284 | 10 | body.lightbox-open, .lightbox-open .navbar-fixed-top, .lightbox-open .navbar-fixed-bottom { | ||
2285 | 11 | margin-right: 15px; | ||
2286 | 12 | } | ||
2287 | 13 | |||
2288 | 14 | .lightbox { | ||
2289 | 15 | position: fixed; | ||
2290 | 16 | top: 0; | ||
2291 | 17 | right: 0; | ||
2292 | 18 | bottom: 0; | ||
2293 | 19 | left: 0; | ||
2294 | 20 | z-index: 1040; | ||
2295 | 21 | display: none; | ||
2296 | 22 | overflow: auto; | ||
2297 | 23 | overflow-y: scroll; | ||
2298 | 24 | } | ||
2299 | 25 | |||
2300 | 26 | .lightbox .fade .lightbox-dialog { | ||
2301 | 27 | -webkit-transform: translate(0, -25%); | ||
2302 | 28 | -ms-transform: translate(0, -25%); | ||
2303 | 29 | transform: translate(0, -25%); | ||
2304 | 30 | -webkit-transition: -webkit-transform 0.3s ease-out; | ||
2305 | 31 | -moz-transition: -moz-transform 0.3s ease-out; | ||
2306 | 32 | -o-transition: -o-transform 0.3s ease-out; | ||
2307 | 33 | transition: transform 0.3s ease-out; | ||
2308 | 34 | } | ||
2309 | 35 | |||
2310 | 36 | .lightbox .in .lightbox-dialog { | ||
2311 | 37 | -webkit-transform: translate(0, 0); | ||
2312 | 38 | -ms-transform: translate(0, 0); | ||
2313 | 39 | transform: translate(0, 0); | ||
2314 | 40 | } | ||
2315 | 41 | .lightbox .lightbox-dialog { | ||
2316 | 42 | z-index: 1050; | ||
2317 | 43 | width: auto; | ||
2318 | 44 | /*padding: 10px;*/ | ||
2319 | 45 | margin-right: auto; | ||
2320 | 46 | margin-left: auto; | ||
2321 | 47 | } | ||
2322 | 48 | .lightbox .lightbox-dialog .lightbox-header { | ||
2323 | 49 | float: right; | ||
2324 | 50 | } | ||
2325 | 51 | .lightbox .lightbox-dialog .lightbox-header .close { | ||
2326 | 52 | margin-top: -2px; | ||
2327 | 53 | } | ||
2328 | 54 | .lightbox .lightbox-dialog .lightbox-content { | ||
2329 | 55 | position: relative; | ||
2330 | 56 | display: inline-block; | ||
2331 | 57 | padding: 10px; | ||
2332 | 58 | background-color: #ffffff; | ||
2333 | 59 | border: 1px solid #999999; | ||
2334 | 60 | border: 1px solid rgba(0, 0, 0, 0.2); | ||
2335 | 61 | border-radius: 6px; | ||
2336 | 62 | outline: none; | ||
2337 | 63 | -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); | ||
2338 | 64 | box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); | ||
2339 | 65 | background-clip: padding-box; | ||
2340 | 66 | } | ||
2341 | 67 | .lightbox .lightbox-dialog .lightbox-content .lightbox-caption { | ||
2342 | 68 | position: absolute; | ||
2343 | 69 | right: 8px; | ||
2344 | 70 | bottom: 8px; | ||
2345 | 71 | left: 10px; | ||
2346 | 72 | padding: 2%; | ||
2347 | 73 | font-size: 14px; | ||
2348 | 74 | line-height: 18px; | ||
2349 | 75 | color: white; | ||
2350 | 76 | text-align: center; | ||
2351 | 77 | text-shadow: 0 -1px 0 #000000; | ||
2352 | 78 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); | ||
2353 | 79 | background: #000; | ||
2354 | 80 | background: rgba(0, 0, 0, 0.6); | ||
2355 | 81 | } | ||
2356 | 82 | |||
2357 | 83 | .lightbox.lightbox-html { | ||
2358 | 84 | position: fixed; | ||
2359 | 85 | width: 1018px; | ||
2360 | 86 | height: 682px; | ||
2361 | 87 | top: 24px; | ||
2362 | 88 | left: 50%; | ||
2363 | 89 | margin-left: -509px; | ||
2364 | 90 | display: none; | ||
2365 | 91 | } | ||
2366 | 0 | 92 | ||
2367 | === added file 'web_bootstrap3/static/src/css/bs3-openerp.css' | |||
2368 | --- web_bootstrap3/static/src/css/bs3-openerp.css 1970-01-01 00:00:00 +0000 | |||
2369 | +++ web_bootstrap3/static/src/css/bs3-openerp.css 2014-04-22 22:55:50 +0000 | |||
2370 | @@ -0,0 +1,6022 @@ | |||
2371 | 1 | .bs3 { | ||
2372 | 2 | /*! | ||
2373 | 3 | * Bootstrap v3.0.0 | ||
2374 | 4 | * | ||
2375 | 5 | * Copyright 2013 Twitter, Inc | ||
2376 | 6 | * Licensed under the Apache License v2.0 | ||
2377 | 7 | * http://www.apache.org/licenses/LICENSE-2.0 | ||
2378 | 8 | * | ||
2379 | 9 | * Designed and built with all the love in the world by @mdo and @fat. | ||
2380 | 10 | */ | ||
2381 | 11 | |||
2382 | 12 | /*! normalize.css v2.1.0 | MIT License | git.io/normalize */ | ||
2383 | 13 | |||
2384 | 14 | } | ||
2385 | 15 | .bs3 article, | ||
2386 | 16 | .bs3 aside, | ||
2387 | 17 | .bs3 details, | ||
2388 | 18 | .bs3 figcaption, | ||
2389 | 19 | .bs3 figure, | ||
2390 | 20 | .bs3 footer, | ||
2391 | 21 | .bs3 header, | ||
2392 | 22 | .bs3 hgroup, | ||
2393 | 23 | .bs3 main, | ||
2394 | 24 | .bs3 nav, | ||
2395 | 25 | .bs3 section, | ||
2396 | 26 | .bs3 summary { | ||
2397 | 27 | display: block; | ||
2398 | 28 | } | ||
2399 | 29 | .bs3 audio, | ||
2400 | 30 | .bs3 canvas, | ||
2401 | 31 | .bs3 video { | ||
2402 | 32 | display: inline-block; | ||
2403 | 33 | } | ||
2404 | 34 | .bs3 audio:not([controls]) { | ||
2405 | 35 | display: none; | ||
2406 | 36 | height: 0; | ||
2407 | 37 | } | ||
2408 | 38 | .bs3 [hidden] { | ||
2409 | 39 | display: none; | ||
2410 | 40 | } | ||
2411 | 41 | .bs3 html { | ||
2412 | 42 | font-family: sans-serif; | ||
2413 | 43 | -webkit-text-size-adjust: 100%; | ||
2414 | 44 | -ms-text-size-adjust: 100%; | ||
2415 | 45 | } | ||
2416 | 46 | .bs3 body { | ||
2417 | 47 | margin: 0; | ||
2418 | 48 | } | ||
2419 | 49 | .bs3 a:focus { | ||
2420 | 50 | outline: thin dotted; | ||
2421 | 51 | } | ||
2422 | 52 | .bs3 a:active, | ||
2423 | 53 | .bs3 a:hover { | ||
2424 | 54 | outline: 0; | ||
2425 | 55 | } | ||
2426 | 56 | .bs3 h1 { | ||
2427 | 57 | font-size: 2em; | ||
2428 | 58 | margin: 0.67em 0; | ||
2429 | 59 | } | ||
2430 | 60 | .bs3 abbr[title] { | ||
2431 | 61 | border-bottom: 1px dotted; | ||
2432 | 62 | } | ||
2433 | 63 | .bs3 b, | ||
2434 | 64 | .bs3 strong { | ||
2435 | 65 | font-weight: bold; | ||
2436 | 66 | } | ||
2437 | 67 | .bs3 dfn { | ||
2438 | 68 | font-style: italic; | ||
2439 | 69 | } | ||
2440 | 70 | .bs3 hr { | ||
2441 | 71 | -moz-box-sizing: content-box; | ||
2442 | 72 | box-sizing: content-box; | ||
2443 | 73 | height: 0; | ||
2444 | 74 | } | ||
2445 | 75 | .bs3 mark { | ||
2446 | 76 | background: #ff0; | ||
2447 | 77 | color: #000; | ||
2448 | 78 | } | ||
2449 | 79 | .bs3 code, | ||
2450 | 80 | .bs3 kbd, | ||
2451 | 81 | .bs3 pre, | ||
2452 | 82 | .bs3 samp { | ||
2453 | 83 | font-family: monospace, serif; | ||
2454 | 84 | font-size: 1em; | ||
2455 | 85 | } | ||
2456 | 86 | .bs3 pre { | ||
2457 | 87 | white-space: pre-wrap; | ||
2458 | 88 | } | ||
2459 | 89 | .bs3 q { | ||
2460 | 90 | quotes: "\201C" "\201D" "\2018" "\2019"; | ||
2461 | 91 | } | ||
2462 | 92 | .bs3 small { | ||
2463 | 93 | font-size: 80%; | ||
2464 | 94 | } | ||
2465 | 95 | .bs3 sub, | ||
2466 | 96 | .bs3 sup { | ||
2467 | 97 | font-size: 75%; | ||
2468 | 98 | line-height: 0; | ||
2469 | 99 | position: relative; | ||
2470 | 100 | vertical-align: baseline; | ||
2471 | 101 | } | ||
2472 | 102 | .bs3 sup { | ||
2473 | 103 | top: -0.5em; | ||
2474 | 104 | } | ||
2475 | 105 | .bs3 sub { | ||
2476 | 106 | bottom: -0.25em; | ||
2477 | 107 | } | ||
2478 | 108 | .bs3 img { | ||
2479 | 109 | border: 0; | ||
2480 | 110 | } | ||
2481 | 111 | .bs3 svg:not(:root) { | ||
2482 | 112 | overflow: hidden; | ||
2483 | 113 | } | ||
2484 | 114 | .bs3 figure { | ||
2485 | 115 | margin: 0; | ||
2486 | 116 | } | ||
2487 | 117 | .bs3 fieldset { | ||
2488 | 118 | border: 1px solid #c0c0c0; | ||
2489 | 119 | margin: 0 2px; | ||
2490 | 120 | padding: 0.35em 0.625em 0.75em; | ||
2491 | 121 | } | ||
2492 | 122 | .bs3 legend { | ||
2493 | 123 | border: 0; | ||
2494 | 124 | padding: 0; | ||
2495 | 125 | } | ||
2496 | 126 | .bs3 button, | ||
2497 | 127 | .bs3 input, | ||
2498 | 128 | .bs3 select, | ||
2499 | 129 | .bs3 textarea { | ||
2500 | 130 | font-family: inherit; | ||
2501 | 131 | font-size: 100%; | ||
2502 | 132 | margin: 0; | ||
2503 | 133 | } | ||
2504 | 134 | .bs3 button, | ||
2505 | 135 | .bs3 input { | ||
2506 | 136 | line-height: normal; | ||
2507 | 137 | } | ||
2508 | 138 | .bs3 button, | ||
2509 | 139 | .bs3 select { | ||
2510 | 140 | text-transform: none; | ||
2511 | 141 | } | ||
2512 | 142 | .bs3 button, | ||
2513 | 143 | .bs3 html input[type="button"], | ||
2514 | 144 | .bs3 input[type="reset"], | ||
2515 | 145 | .bs3 input[type="submit"] { | ||
2516 | 146 | -webkit-appearance: button; | ||
2517 | 147 | cursor: pointer; | ||
2518 | 148 | } | ||
2519 | 149 | .bs3 button[disabled], | ||
2520 | 150 | .bs3 html input[disabled] { | ||
2521 | 151 | cursor: default; | ||
2522 | 152 | } | ||
2523 | 153 | .bs3 input[type="checkbox"], | ||
2524 | 154 | .bs3 input[type="radio"] { | ||
2525 | 155 | box-sizing: border-box; | ||
2526 | 156 | padding: 0; | ||
2527 | 157 | } | ||
2528 | 158 | .bs3 input[type="search"] { | ||
2529 | 159 | -webkit-appearance: textfield; | ||
2530 | 160 | -moz-box-sizing: content-box; | ||
2531 | 161 | -webkit-box-sizing: content-box; | ||
2532 | 162 | box-sizing: content-box; | ||
2533 | 163 | } | ||
2534 | 164 | .bs3 input[type="search"]::-webkit-search-cancel-button, | ||
2535 | 165 | .bs3 input[type="search"]::-webkit-search-decoration { | ||
2536 | 166 | -webkit-appearance: none; | ||
2537 | 167 | } | ||
2538 | 168 | .bs3 button::-moz-focus-inner, | ||
2539 | 169 | .bs3 input::-moz-focus-inner { | ||
2540 | 170 | border: 0; | ||
2541 | 171 | padding: 0; | ||
2542 | 172 | } | ||
2543 | 173 | .bs3 textarea { | ||
2544 | 174 | overflow: auto; | ||
2545 | 175 | vertical-align: top; | ||
2546 | 176 | } | ||
2547 | 177 | .bs3 table { | ||
2548 | 178 | border-collapse: collapse; | ||
2549 | 179 | border-spacing: 0; | ||
2550 | 180 | } | ||
2551 | 181 | @media print { | ||
2552 | 182 | .bs3 * { | ||
2553 | 183 | text-shadow: none !important; | ||
2554 | 184 | color: #000 !important; | ||
2555 | 185 | background: transparent !important; | ||
2556 | 186 | box-shadow: none !important; | ||
2557 | 187 | } | ||
2558 | 188 | .bs3 a, | ||
2559 | 189 | .bs3 a:visited { | ||
2560 | 190 | text-decoration: underline; | ||
2561 | 191 | } | ||
2562 | 192 | .bs3 a[href]:after { | ||
2563 | 193 | content: " (" attr(href) ")"; | ||
2564 | 194 | } | ||
2565 | 195 | .bs3 abbr[title]:after { | ||
2566 | 196 | content: " (" attr(title) ")"; | ||
2567 | 197 | } | ||
2568 | 198 | .bs3 .ir a:after, | ||
2569 | 199 | .bs3 a[href^="javascript:"]:after, | ||
2570 | 200 | .bs3 a[href^="#"]:after { | ||
2571 | 201 | content: ""; | ||
2572 | 202 | } | ||
2573 | 203 | .bs3 pre, | ||
2574 | 204 | .bs3 blockquote { | ||
2575 | 205 | border: 1px solid #999; | ||
2576 | 206 | page-break-inside: avoid; | ||
2577 | 207 | } | ||
2578 | 208 | .bs3 thead { | ||
2579 | 209 | display: table-header-group; | ||
2580 | 210 | } | ||
2581 | 211 | .bs3 tr, | ||
2582 | 212 | .bs3 img { | ||
2583 | 213 | page-break-inside: avoid; | ||
2584 | 214 | } | ||
2585 | 215 | .bs3 img { | ||
2586 | 216 | max-width: 100% !important; | ||
2587 | 217 | } | ||
2588 | 218 | @page { | ||
2589 | 219 | margin: 2cm .5cm; | ||
2590 | 220 | } | ||
2591 | 221 | .bs3 p, | ||
2592 | 222 | .bs3 h2, | ||
2593 | 223 | .bs3 h3 { | ||
2594 | 224 | orphans: 3; | ||
2595 | 225 | widows: 3; | ||
2596 | 226 | } | ||
2597 | 227 | .bs3 h2, | ||
2598 | 228 | .bs3 h3 { | ||
2599 | 229 | page-break-after: avoid; | ||
2600 | 230 | } | ||
2601 | 231 | .bs3 .navbar { | ||
2602 | 232 | display: none; | ||
2603 | 233 | } | ||
2604 | 234 | .bs3 .table td, | ||
2605 | 235 | .bs3 .table th { | ||
2606 | 236 | background-color: #fff !important; | ||
2607 | 237 | } | ||
2608 | 238 | .bs3 .btn > .caret, | ||
2609 | 239 | .bs3 .dropup > .btn > .caret { | ||
2610 | 240 | border-top-color: #000 !important; | ||
2611 | 241 | } | ||
2612 | 242 | .bs3 .label { | ||
2613 | 243 | border: 1px solid #000; | ||
2614 | 244 | } | ||
2615 | 245 | .bs3 .table { | ||
2616 | 246 | border-collapse: collapse !important; | ||
2617 | 247 | } | ||
2618 | 248 | .bs3 .table-bordered th, | ||
2619 | 249 | .bs3 .table-bordered td { | ||
2620 | 250 | border: 1px solid #ddd !important; | ||
2621 | 251 | } | ||
2622 | 252 | } | ||
2623 | 253 | .bs3 *, | ||
2624 | 254 | .bs3 *:before, | ||
2625 | 255 | .bs3 *:after { | ||
2626 | 256 | -webkit-box-sizing: border-box; | ||
2627 | 257 | -moz-box-sizing: border-box; | ||
2628 | 258 | box-sizing: border-box; | ||
2629 | 259 | } | ||
2630 | 260 | .bs3 html { | ||
2631 | 261 | font-size: 62.5%; | ||
2632 | 262 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); | ||
2633 | 263 | } | ||
2634 | 264 | .bs3 body { | ||
2635 | 265 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; | ||
2636 | 266 | font-size: 14px; | ||
2637 | 267 | line-height: 1.428571429; | ||
2638 | 268 | color: #333333; | ||
2639 | 269 | background-color: #ffffff; | ||
2640 | 270 | } | ||
2641 | 271 | .bs3 input, | ||
2642 | 272 | .bs3 button, | ||
2643 | 273 | .bs3 select, | ||
2644 | 274 | .bs3 textarea { | ||
2645 | 275 | font-family: inherit; | ||
2646 | 276 | font-size: inherit; | ||
2647 | 277 | line-height: inherit; | ||
2648 | 278 | } | ||
2649 | 279 | .bs3 a { | ||
2650 | 280 | color: #428bca; | ||
2651 | 281 | text-decoration: none; | ||
2652 | 282 | } | ||
2653 | 283 | .bs3 a:hover, | ||
2654 | 284 | .bs3 a:focus { | ||
2655 | 285 | color: #2a6496; | ||
2656 | 286 | text-decoration: underline; | ||
2657 | 287 | } | ||
2658 | 288 | .bs3 a:focus { | ||
2659 | 289 | outline: thin dotted #333; | ||
2660 | 290 | outline: 5px auto -webkit-focus-ring-color; | ||
2661 | 291 | outline-offset: -2px; | ||
2662 | 292 | } | ||
2663 | 293 | .bs3 img { | ||
2664 | 294 | vertical-align: middle; | ||
2665 | 295 | } | ||
2666 | 296 | .bs3 .img-responsive { | ||
2667 | 297 | display: block; | ||
2668 | 298 | max-width: 100%; | ||
2669 | 299 | height: auto; | ||
2670 | 300 | } | ||
2671 | 301 | .bs3 .img-rounded { | ||
2672 | 302 | border-radius: 6px; | ||
2673 | 303 | } | ||
2674 | 304 | .bs3 .img-thumbnail { | ||
2675 | 305 | padding: 4px; | ||
2676 | 306 | line-height: 1.428571429; | ||
2677 | 307 | background-color: #ffffff; | ||
2678 | 308 | border: 1px solid #dddddd; | ||
2679 | 309 | border-radius: 4px; | ||
2680 | 310 | -webkit-transition: all 0.2s ease-in-out; | ||
2681 | 311 | transition: all 0.2s ease-in-out; | ||
2682 | 312 | display: inline-block; | ||
2683 | 313 | max-width: 100%; | ||
2684 | 314 | height: auto; | ||
2685 | 315 | } | ||
2686 | 316 | .bs3 .img-circle { | ||
2687 | 317 | border-radius: 50%; | ||
2688 | 318 | } | ||
2689 | 319 | .bs3 hr { | ||
2690 | 320 | margin-top: 20px; | ||
2691 | 321 | margin-bottom: 20px; | ||
2692 | 322 | border: 0; | ||
2693 | 323 | border-top: 1px solid #eeeeee; | ||
2694 | 324 | } | ||
2695 | 325 | .bs3 .sr-only { | ||
2696 | 326 | position: absolute; | ||
2697 | 327 | width: 1px; | ||
2698 | 328 | height: 1px; | ||
2699 | 329 | margin: -1px; | ||
2700 | 330 | padding: 0; | ||
2701 | 331 | overflow: hidden; | ||
2702 | 332 | clip: rect(0 0 0 0); | ||
2703 | 333 | border: 0; | ||
2704 | 334 | } | ||
2705 | 335 | .bs3 p { | ||
2706 | 336 | margin: 0 0 10px; | ||
2707 | 337 | } | ||
2708 | 338 | .bs3 .lead { | ||
2709 | 339 | margin-bottom: 20px; | ||
2710 | 340 | font-size: 16.099999999999998px; | ||
2711 | 341 | font-weight: 200; | ||
2712 | 342 | line-height: 1.4; | ||
2713 | 343 | } | ||
2714 | 344 | @media (min-width: 768px) { | ||
2715 | 345 | .bs3 .lead { | ||
2716 | 346 | font-size: 21px; | ||
2717 | 347 | } | ||
2718 | 348 | } | ||
2719 | 349 | .bs3 small, | ||
2720 | 350 | .bs3 .small { | ||
2721 | 351 | font-size: 85%; | ||
2722 | 352 | } | ||
2723 | 353 | .bs3 cite { | ||
2724 | 354 | font-style: normal; | ||
2725 | 355 | } | ||
2726 | 356 | .bs3 .text-muted { | ||
2727 | 357 | color: #999999; | ||
2728 | 358 | } | ||
2729 | 359 | .bs3 .text-primary { | ||
2730 | 360 | color: #428bca; | ||
2731 | 361 | } | ||
2732 | 362 | .bs3 .text-primary:hover { | ||
2733 | 363 | color: #3071a9; | ||
2734 | 364 | } | ||
2735 | 365 | .bs3 .text-warning { | ||
2736 | 366 | color: #c09853; | ||
2737 | 367 | } | ||
2738 | 368 | .bs3 .text-warning:hover { | ||
2739 | 369 | color: #a47e3c; | ||
2740 | 370 | } | ||
2741 | 371 | .bs3 .text-danger { | ||
2742 | 372 | color: #b94a48; | ||
2743 | 373 | } | ||
2744 | 374 | .bs3 .text-danger:hover { | ||
2745 | 375 | color: #953b39; | ||
2746 | 376 | } | ||
2747 | 377 | .bs3 .text-success { | ||
2748 | 378 | color: #468847; | ||
2749 | 379 | } | ||
2750 | 380 | .bs3 .text-success:hover { | ||
2751 | 381 | color: #356635; | ||
2752 | 382 | } | ||
2753 | 383 | .bs3 .text-info { | ||
2754 | 384 | color: #3a87ad; | ||
2755 | 385 | } | ||
2756 | 386 | .bs3 .text-info:hover { | ||
2757 | 387 | color: #2d6987; | ||
2758 | 388 | } | ||
2759 | 389 | .bs3 .text-left { | ||
2760 | 390 | text-align: left; | ||
2761 | 391 | } | ||
2762 | 392 | .bs3 .text-right { | ||
2763 | 393 | text-align: right; | ||
2764 | 394 | } | ||
2765 | 395 | .bs3 .text-center { | ||
2766 | 396 | text-align: center; | ||
2767 | 397 | } | ||
2768 | 398 | .bs3 h1, | ||
2769 | 399 | .bs3 h2, | ||
2770 | 400 | .bs3 h3, | ||
2771 | 401 | .bs3 h4, | ||
2772 | 402 | .bs3 h5, | ||
2773 | 403 | .bs3 h6, | ||
2774 | 404 | .bs3 .h1, | ||
2775 | 405 | .bs3 .h2, | ||
2776 | 406 | .bs3 .h3, | ||
2777 | 407 | .bs3 .h4, | ||
2778 | 408 | .bs3 .h5, | ||
2779 | 409 | .bs3 .h6 { | ||
2780 | 410 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; | ||
2781 | 411 | font-weight: 500; | ||
2782 | 412 | line-height: 1.1; | ||
2783 | 413 | color: inherit; | ||
2784 | 414 | } | ||
2785 | 415 | .bs3 h1 small, | ||
2786 | 416 | .bs3 h2 small, | ||
2787 | 417 | .bs3 h3 small, | ||
2788 | 418 | .bs3 h4 small, | ||
2789 | 419 | .bs3 h5 small, | ||
2790 | 420 | .bs3 h6 small, | ||
2791 | 421 | .bs3 .h1 small, | ||
2792 | 422 | .bs3 .h2 small, | ||
2793 | 423 | .bs3 .h3 small, | ||
2794 | 424 | .bs3 .h4 small, | ||
2795 | 425 | .bs3 .h5 small, | ||
2796 | 426 | .bs3 .h6 small { | ||
2797 | 427 | font-weight: normal; | ||
2798 | 428 | line-height: 1; | ||
2799 | 429 | color: #999999; | ||
2800 | 430 | } | ||
2801 | 431 | .bs3 h1, | ||
2802 | 432 | .bs3 h2, | ||
2803 | 433 | .bs3 h3 { | ||
2804 | 434 | margin-top: 20px; | ||
2805 | 435 | margin-bottom: 10px; | ||
2806 | 436 | } | ||
2807 | 437 | .bs3 h1 small, | ||
2808 | 438 | .bs3 h2 small, | ||
2809 | 439 | .bs3 h3 small { | ||
2810 | 440 | font-size: 65%; | ||
2811 | 441 | } | ||
2812 | 442 | .bs3 h4, | ||
2813 | 443 | .bs3 h5, | ||
2814 | 444 | .bs3 h6 { | ||
2815 | 445 | margin-top: 10px; | ||
2816 | 446 | margin-bottom: 10px; | ||
2817 | 447 | } | ||
2818 | 448 | .bs3 h4 small, | ||
2819 | 449 | .bs3 h5 small, | ||
2820 | 450 | .bs3 h6 small { | ||
2821 | 451 | font-size: 75%; | ||
2822 | 452 | } | ||
2823 | 453 | .bs3 h1, | ||
2824 | 454 | .bs3 .h1 { | ||
2825 | 455 | font-size: 36px; | ||
2826 | 456 | } | ||
2827 | 457 | .bs3 h2, | ||
2828 | 458 | .bs3 .h2 { | ||
2829 | 459 | font-size: 30px; | ||
2830 | 460 | } | ||
2831 | 461 | .bs3 h3, | ||
2832 | 462 | .bs3 .h3 { | ||
2833 | 463 | font-size: 24px; | ||
2834 | 464 | } | ||
2835 | 465 | .bs3 h4, | ||
2836 | 466 | .bs3 .h4 { | ||
2837 | 467 | font-size: 18px; | ||
2838 | 468 | } | ||
2839 | 469 | .bs3 h5, | ||
2840 | 470 | .bs3 .h5 { | ||
2841 | 471 | font-size: 14px; | ||
2842 | 472 | } | ||
2843 | 473 | .bs3 h6, | ||
2844 | 474 | .bs3 .h6 { | ||
2845 | 475 | font-size: 12px; | ||
2846 | 476 | } | ||
2847 | 477 | .bs3 .page-header { | ||
2848 | 478 | padding-bottom: 9px; | ||
2849 | 479 | margin: 40px 0 20px; | ||
2850 | 480 | border-bottom: 1px solid #eeeeee; | ||
2851 | 481 | } | ||
2852 | 482 | .bs3 ul, | ||
2853 | 483 | .bs3 ol { | ||
2854 | 484 | margin-top: 0; | ||
2855 | 485 | margin-bottom: 10px; | ||
2856 | 486 | } | ||
2857 | 487 | .bs3 ul ul, | ||
2858 | 488 | .bs3 ol ul, | ||
2859 | 489 | .bs3 ul ol, | ||
2860 | 490 | .bs3 ol ol { | ||
2861 | 491 | margin-bottom: 0; | ||
2862 | 492 | } | ||
2863 | 493 | .bs3 .list-unstyled { | ||
2864 | 494 | padding-left: 0; | ||
2865 | 495 | list-style: none; | ||
2866 | 496 | } | ||
2867 | 497 | .bs3 .list-inline { | ||
2868 | 498 | padding-left: 0; | ||
2869 | 499 | list-style: none; | ||
2870 | 500 | } | ||
2871 | 501 | .bs3 .list-inline > li { | ||
2872 | 502 | display: inline-block; | ||
2873 | 503 | padding-left: 5px; | ||
2874 | 504 | padding-right: 5px; | ||
2875 | 505 | } | ||
2876 | 506 | .bs3 dl { | ||
2877 | 507 | margin-bottom: 20px; | ||
2878 | 508 | } | ||
2879 | 509 | .bs3 dt, | ||
2880 | 510 | .bs3 dd { | ||
2881 | 511 | line-height: 1.428571429; | ||
2882 | 512 | } | ||
2883 | 513 | .bs3 dt { | ||
2884 | 514 | font-weight: bold; | ||
2885 | 515 | } | ||
2886 | 516 | .bs3 dd { | ||
2887 | 517 | margin-left: 0; | ||
2888 | 518 | } | ||
2889 | 519 | @media (min-width: 768px) { | ||
2890 | 520 | .bs3 .dl-horizontal dt { | ||
2891 | 521 | float: left; | ||
2892 | 522 | width: 160px; | ||
2893 | 523 | clear: left; | ||
2894 | 524 | text-align: right; | ||
2895 | 525 | overflow: hidden; | ||
2896 | 526 | text-overflow: ellipsis; | ||
2897 | 527 | white-space: nowrap; | ||
2898 | 528 | } | ||
2899 | 529 | .bs3 .dl-horizontal dd { | ||
2900 | 530 | margin-left: 180px; | ||
2901 | 531 | } | ||
2902 | 532 | .bs3 .dl-horizontal dd:before, | ||
2903 | 533 | .bs3 .dl-horizontal dd:after { | ||
2904 | 534 | content: " "; | ||
2905 | 535 | /* 1 */ | ||
2906 | 536 | |||
2907 | 537 | display: table; | ||
2908 | 538 | /* 2 */ | ||
2909 | 539 | |||
2910 | 540 | } | ||
2911 | 541 | .bs3 .dl-horizontal dd:after { | ||
2912 | 542 | clear: both; | ||
2913 | 543 | } | ||
2914 | 544 | .bs3 .dl-horizontal dd:before, | ||
2915 | 545 | .bs3 .dl-horizontal dd:after { | ||
2916 | 546 | content: " "; | ||
2917 | 547 | /* 1 */ | ||
2918 | 548 | |||
2919 | 549 | display: table; | ||
2920 | 550 | /* 2 */ | ||
2921 | 551 | |||
2922 | 552 | } | ||
2923 | 553 | .bs3 .dl-horizontal dd:after { | ||
2924 | 554 | clear: both; | ||
2925 | 555 | } | ||
2926 | 556 | } | ||
2927 | 557 | .bs3 abbr[title], | ||
2928 | 558 | .bs3 abbr[data-original-title] { | ||
2929 | 559 | cursor: help; | ||
2930 | 560 | border-bottom: 1px dotted #999999; | ||
2931 | 561 | } | ||
2932 | 562 | .bs3 abbr.initialism { | ||
2933 | 563 | font-size: 90%; | ||
2934 | 564 | text-transform: uppercase; | ||
2935 | 565 | } | ||
2936 | 566 | .bs3 blockquote { | ||
2937 | 567 | padding: 10px 20px; | ||
2938 | 568 | margin: 0 0 20px; | ||
2939 | 569 | border-left: 5px solid #eeeeee; | ||
2940 | 570 | } | ||
2941 | 571 | .bs3 blockquote p { | ||
2942 | 572 | font-size: 17.5px; | ||
2943 | 573 | font-weight: 300; | ||
2944 | 574 | line-height: 1.25; | ||
2945 | 575 | } | ||
2946 | 576 | .bs3 blockquote p:last-child { | ||
2947 | 577 | margin-bottom: 0; | ||
2948 | 578 | } | ||
2949 | 579 | .bs3 blockquote small { | ||
2950 | 580 | display: block; | ||
2951 | 581 | line-height: 1.428571429; | ||
2952 | 582 | color: #999999; | ||
2953 | 583 | } | ||
2954 | 584 | .bs3 blockquote small:before { | ||
2955 | 585 | content: '\2014 \00A0'; | ||
2956 | 586 | } | ||
2957 | 587 | .bs3 blockquote.pull-right { | ||
2958 | 588 | padding-right: 15px; | ||
2959 | 589 | padding-left: 0; | ||
2960 | 590 | border-right: 5px solid #eeeeee; | ||
2961 | 591 | border-left: 0; | ||
2962 | 592 | } | ||
2963 | 593 | .bs3 blockquote.pull-right p, | ||
2964 | 594 | .bs3 blockquote.pull-right small { | ||
2965 | 595 | text-align: right; | ||
2966 | 596 | } | ||
2967 | 597 | .bs3 blockquote.pull-right small:before { | ||
2968 | 598 | content: ''; | ||
2969 | 599 | } | ||
2970 | 600 | .bs3 blockquote.pull-right small:after { | ||
2971 | 601 | content: '\00A0 \2014'; | ||
2972 | 602 | } | ||
2973 | 603 | .bs3 q:before, | ||
2974 | 604 | .bs3 q:after, | ||
2975 | 605 | .bs3 blockquote:before, | ||
2976 | 606 | .bs3 blockquote:after { | ||
2977 | 607 | content: ""; | ||
2978 | 608 | } | ||
2979 | 609 | .bs3 address { | ||
2980 | 610 | display: block; | ||
2981 | 611 | margin-bottom: 20px; | ||
2982 | 612 | font-style: normal; | ||
2983 | 613 | line-height: 1.428571429; | ||
2984 | 614 | } | ||
2985 | 615 | .bs3 code, | ||
2986 | 616 | .bs3 pre { | ||
2987 | 617 | font-family: Monaco, Menlo, Consolas, "Courier New", monospace; | ||
2988 | 618 | } | ||
2989 | 619 | .bs3 code { | ||
2990 | 620 | padding: 2px 4px; | ||
2991 | 621 | font-size: 90%; | ||
2992 | 622 | color: #c7254e; | ||
2993 | 623 | background-color: #f9f2f4; | ||
2994 | 624 | white-space: nowrap; | ||
2995 | 625 | border-radius: 4px; | ||
2996 | 626 | } | ||
2997 | 627 | .bs3 pre { | ||
2998 | 628 | display: block; | ||
2999 | 629 | padding: 9.5px; | ||
3000 | 630 | margin: 0 0 10px; | ||
3001 | 631 | font-size: 13px; | ||
3002 | 632 | line-height: 1.428571429; | ||
3003 | 633 | word-break: break-all; | ||
3004 | 634 | word-wrap: break-word; | ||
3005 | 635 | color: #333333; | ||
3006 | 636 | background-color: #f5f5f5; | ||
3007 | 637 | border: 1px solid #cccccc; | ||
3008 | 638 | border-radius: 4px; | ||
3009 | 639 | } | ||
3010 | 640 | .bs3 pre.prettyprint { | ||
3011 | 641 | margin-bottom: 20px; | ||
3012 | 642 | } | ||
3013 | 643 | .bs3 pre code { | ||
3014 | 644 | padding: 0; | ||
3015 | 645 | font-size: inherit; | ||
3016 | 646 | color: inherit; | ||
3017 | 647 | white-space: pre-wrap; | ||
3018 | 648 | background-color: transparent; | ||
3019 | 649 | border: 0; | ||
3020 | 650 | } | ||
3021 | 651 | .bs3 .pre-scrollable { | ||
3022 | 652 | max-height: 340px; | ||
3023 | 653 | overflow-y: scroll; | ||
3024 | 654 | } | ||
3025 | 655 | .bs3 .container { | ||
3026 | 656 | margin-right: auto; | ||
3027 | 657 | margin-left: auto; | ||
3028 | 658 | padding-left: 15px; | ||
3029 | 659 | padding-right: 15px; | ||
3030 | 660 | } | ||
3031 | 661 | .bs3 .container:before, | ||
3032 | 662 | .bs3 .container:after { | ||
3033 | 663 | content: " "; | ||
3034 | 664 | /* 1 */ | ||
3035 | 665 | |||
3036 | 666 | display: table; | ||
3037 | 667 | /* 2 */ | ||
3038 | 668 | |||
3039 | 669 | } | ||
3040 | 670 | .bs3 .container:after { | ||
3041 | 671 | clear: both; | ||
3042 | 672 | } | ||
3043 | 673 | .bs3 .container:before, | ||
3044 | 674 | .bs3 .container:after { | ||
3045 | 675 | content: " "; | ||
3046 | 676 | /* 1 */ | ||
3047 | 677 | |||
3048 | 678 | display: table; | ||
3049 | 679 | /* 2 */ | ||
3050 | 680 | |||
3051 | 681 | } | ||
3052 | 682 | .bs3 .container:after { | ||
3053 | 683 | clear: both; | ||
3054 | 684 | } | ||
3055 | 685 | .bs3 .row { | ||
3056 | 686 | margin-left: -15px; | ||
3057 | 687 | margin-right: -15px; | ||
3058 | 688 | } | ||
3059 | 689 | .bs3 .row:before, | ||
3060 | 690 | .bs3 .row:after { | ||
3061 | 691 | content: " "; | ||
3062 | 692 | /* 1 */ | ||
3063 | 693 | |||
3064 | 694 | display: table; | ||
3065 | 695 | /* 2 */ | ||
3066 | 696 | |||
3067 | 697 | } | ||
3068 | 698 | .bs3 .row:after { | ||
3069 | 699 | clear: both; | ||
3070 | 700 | } | ||
3071 | 701 | .bs3 .row:before, | ||
3072 | 702 | .bs3 .row:after { | ||
3073 | 703 | content: " "; | ||
3074 | 704 | /* 1 */ | ||
3075 | 705 | |||
3076 | 706 | display: table; | ||
3077 | 707 | /* 2 */ | ||
3078 | 708 | |||
3079 | 709 | } | ||
3080 | 710 | .bs3 .row:after { | ||
3081 | 711 | clear: both; | ||
3082 | 712 | } | ||
3083 | 713 | .bs3 .col-xs-1, | ||
3084 | 714 | .bs3 .col-xs-2, | ||
3085 | 715 | .bs3 .col-xs-3, | ||
3086 | 716 | .bs3 .col-xs-4, | ||
3087 | 717 | .bs3 .col-xs-5, | ||
3088 | 718 | .bs3 .col-xs-6, | ||
3089 | 719 | .bs3 .col-xs-7, | ||
3090 | 720 | .bs3 .col-xs-8, | ||
3091 | 721 | .bs3 .col-xs-9, | ||
3092 | 722 | .bs3 .col-xs-10, | ||
3093 | 723 | .bs3 .col-xs-11, | ||
3094 | 724 | .bs3 .col-xs-12, | ||
3095 | 725 | .bs3 .col-sm-1, | ||
3096 | 726 | .bs3 .col-sm-2, | ||
3097 | 727 | .bs3 .col-sm-3, | ||
3098 | 728 | .bs3 .col-sm-4, | ||
3099 | 729 | .bs3 .col-sm-5, | ||
3100 | 730 | .bs3 .col-sm-6, | ||
3101 | 731 | .bs3 .col-sm-7, | ||
3102 | 732 | .bs3 .col-sm-8, | ||
3103 | 733 | .bs3 .col-sm-9, | ||
3104 | 734 | .bs3 .col-sm-10, | ||
3105 | 735 | .bs3 .col-sm-11, | ||
3106 | 736 | .bs3 .col-sm-12, | ||
3107 | 737 | .bs3 .col-md-1, | ||
3108 | 738 | .bs3 .col-md-2, | ||
3109 | 739 | .bs3 .col-md-3, | ||
3110 | 740 | .bs3 .col-md-4, | ||
3111 | 741 | .bs3 .col-md-5, | ||
3112 | 742 | .bs3 .col-md-6, | ||
3113 | 743 | .bs3 .col-md-7, | ||
3114 | 744 | .bs3 .col-md-8, | ||
3115 | 745 | .bs3 .col-md-9, | ||
3116 | 746 | .bs3 .col-md-10, | ||
3117 | 747 | .bs3 .col-md-11, | ||
3118 | 748 | .bs3 .col-md-12, | ||
3119 | 749 | .bs3 .col-lg-1, | ||
3120 | 750 | .bs3 .col-lg-2, | ||
3121 | 751 | .bs3 .col-lg-3, | ||
3122 | 752 | .bs3 .col-lg-4, | ||
3123 | 753 | .bs3 .col-lg-5, | ||
3124 | 754 | .bs3 .col-lg-6, | ||
3125 | 755 | .bs3 .col-lg-7, | ||
3126 | 756 | .bs3 .col-lg-8, | ||
3127 | 757 | .bs3 .col-lg-9, | ||
3128 | 758 | .bs3 .col-lg-10, | ||
3129 | 759 | .bs3 .col-lg-11, | ||
3130 | 760 | .bs3 .col-lg-12 { | ||
3131 | 761 | position: relative; | ||
3132 | 762 | min-height: 1px; | ||
3133 | 763 | padding-left: 15px; | ||
3134 | 764 | padding-right: 15px; | ||
3135 | 765 | } | ||
3136 | 766 | .bs3 .col-xs-1, | ||
3137 | 767 | .bs3 .col-xs-2, | ||
3138 | 768 | .bs3 .col-xs-3, | ||
3139 | 769 | .bs3 .col-xs-4, | ||
3140 | 770 | .bs3 .col-xs-5, | ||
3141 | 771 | .bs3 .col-xs-6, | ||
3142 | 772 | .bs3 .col-xs-7, | ||
3143 | 773 | .bs3 .col-xs-8, | ||
3144 | 774 | .bs3 .col-xs-9, | ||
3145 | 775 | .bs3 .col-xs-10, | ||
3146 | 776 | .bs3 .col-xs-11 { | ||
3147 | 777 | float: left; | ||
3148 | 778 | } | ||
3149 | 779 | .bs3 .col-xs-1 { | ||
3150 | 780 | width: 8.333333333333332%; | ||
3151 | 781 | } | ||
3152 | 782 | .bs3 .col-xs-2 { | ||
3153 | 783 | width: 16.666666666666664%; | ||
3154 | 784 | } | ||
3155 | 785 | .bs3 .col-xs-3 { | ||
3156 | 786 | width: 25%; | ||
3157 | 787 | } | ||
3158 | 788 | .bs3 .col-xs-4 { | ||
3159 | 789 | width: 33.33333333333333%; | ||
3160 | 790 | } | ||
3161 | 791 | .bs3 .col-xs-5 { | ||
3162 | 792 | width: 41.66666666666667%; | ||
3163 | 793 | } | ||
3164 | 794 | .bs3 .col-xs-6 { | ||
3165 | 795 | width: 50%; | ||
3166 | 796 | } | ||
3167 | 797 | .bs3 .col-xs-7 { | ||
3168 | 798 | width: 58.333333333333336%; | ||
3169 | 799 | } | ||
3170 | 800 | .bs3 .col-xs-8 { | ||
3171 | 801 | width: 66.66666666666666%; | ||
3172 | 802 | } | ||
3173 | 803 | .bs3 .col-xs-9 { | ||
3174 | 804 | width: 75%; | ||
3175 | 805 | } | ||
3176 | 806 | .bs3 .col-xs-10 { | ||
3177 | 807 | width: 83.33333333333334%; | ||
3178 | 808 | } | ||
3179 | 809 | .bs3 .col-xs-11 { | ||
3180 | 810 | width: 91.66666666666666%; | ||
3181 | 811 | } | ||
3182 | 812 | .bs3 .col-xs-12 { | ||
3183 | 813 | width: 100%; | ||
3184 | 814 | } | ||
3185 | 815 | @media (min-width: 768px) { | ||
3186 | 816 | .bs3 .container { | ||
3187 | 817 | width: 750px; | ||
3188 | 818 | } | ||
3189 | 819 | .bs3 .col-sm-1, | ||
3190 | 820 | .bs3 .col-sm-2, | ||
3191 | 821 | .bs3 .col-sm-3, | ||
3192 | 822 | .bs3 .col-sm-4, | ||
3193 | 823 | .bs3 .col-sm-5, | ||
3194 | 824 | .bs3 .col-sm-6, | ||
3195 | 825 | .bs3 .col-sm-7, | ||
3196 | 826 | .bs3 .col-sm-8, | ||
3197 | 827 | .bs3 .col-sm-9, | ||
3198 | 828 | .bs3 .col-sm-10, | ||
3199 | 829 | .bs3 .col-sm-11 { | ||
3200 | 830 | float: left; | ||
3201 | 831 | } | ||
3202 | 832 | .bs3 .col-sm-1 { | ||
3203 | 833 | width: 8.333333333333332%; | ||
3204 | 834 | } | ||
3205 | 835 | .bs3 .col-sm-2 { | ||
3206 | 836 | width: 16.666666666666664%; | ||
3207 | 837 | } | ||
3208 | 838 | .bs3 .col-sm-3 { | ||
3209 | 839 | width: 25%; | ||
3210 | 840 | } | ||
3211 | 841 | .bs3 .col-sm-4 { | ||
3212 | 842 | width: 33.33333333333333%; | ||
3213 | 843 | } | ||
3214 | 844 | .bs3 .col-sm-5 { | ||
3215 | 845 | width: 41.66666666666667%; | ||
3216 | 846 | } | ||
3217 | 847 | .bs3 .col-sm-6 { | ||
3218 | 848 | width: 50%; | ||
3219 | 849 | } | ||
3220 | 850 | .bs3 .col-sm-7 { | ||
3221 | 851 | width: 58.333333333333336%; | ||
3222 | 852 | } | ||
3223 | 853 | .bs3 .col-sm-8 { | ||
3224 | 854 | width: 66.66666666666666%; | ||
3225 | 855 | } | ||
3226 | 856 | .bs3 .col-sm-9 { | ||
3227 | 857 | width: 75%; | ||
3228 | 858 | } | ||
3229 | 859 | .bs3 .col-sm-10 { | ||
3230 | 860 | width: 83.33333333333334%; | ||
3231 | 861 | } | ||
3232 | 862 | .bs3 .col-sm-11 { | ||
3233 | 863 | width: 91.66666666666666%; | ||
3234 | 864 | } | ||
3235 | 865 | .bs3 .col-sm-12 { | ||
3236 | 866 | width: 100%; | ||
3237 | 867 | } | ||
3238 | 868 | .bs3 .col-sm-push-1 { | ||
3239 | 869 | left: 8.333333333333332%; | ||
3240 | 870 | } | ||
3241 | 871 | .bs3 .col-sm-push-2 { | ||
3242 | 872 | left: 16.666666666666664%; | ||
3243 | 873 | } | ||
3244 | 874 | .bs3 .col-sm-push-3 { | ||
3245 | 875 | left: 25%; | ||
3246 | 876 | } | ||
3247 | 877 | .bs3 .col-sm-push-4 { | ||
3248 | 878 | left: 33.33333333333333%; | ||
3249 | 879 | } | ||
3250 | 880 | .bs3 .col-sm-push-5 { | ||
3251 | 881 | left: 41.66666666666667%; | ||
3252 | 882 | } | ||
3253 | 883 | .bs3 .col-sm-push-6 { | ||
3254 | 884 | left: 50%; | ||
3255 | 885 | } | ||
3256 | 886 | .bs3 .col-sm-push-7 { | ||
3257 | 887 | left: 58.333333333333336%; | ||
3258 | 888 | } | ||
3259 | 889 | .bs3 .col-sm-push-8 { | ||
3260 | 890 | left: 66.66666666666666%; | ||
3261 | 891 | } | ||
3262 | 892 | .bs3 .col-sm-push-9 { | ||
3263 | 893 | left: 75%; | ||
3264 | 894 | } | ||
3265 | 895 | .bs3 .col-sm-push-10 { | ||
3266 | 896 | left: 83.33333333333334%; | ||
3267 | 897 | } | ||
3268 | 898 | .bs3 .col-sm-push-11 { | ||
3269 | 899 | left: 91.66666666666666%; | ||
3270 | 900 | } | ||
3271 | 901 | .bs3 .col-sm-pull-1 { | ||
3272 | 902 | right: 8.333333333333332%; | ||
3273 | 903 | } | ||
3274 | 904 | .bs3 .col-sm-pull-2 { | ||
3275 | 905 | right: 16.666666666666664%; | ||
3276 | 906 | } | ||
3277 | 907 | .bs3 .col-sm-pull-3 { | ||
3278 | 908 | right: 25%; | ||
3279 | 909 | } | ||
3280 | 910 | .bs3 .col-sm-pull-4 { | ||
3281 | 911 | right: 33.33333333333333%; | ||
3282 | 912 | } | ||
3283 | 913 | .bs3 .col-sm-pull-5 { | ||
3284 | 914 | right: 41.66666666666667%; | ||
3285 | 915 | } | ||
3286 | 916 | .bs3 .col-sm-pull-6 { | ||
3287 | 917 | right: 50%; | ||
3288 | 918 | } | ||
3289 | 919 | .bs3 .col-sm-pull-7 { | ||
3290 | 920 | right: 58.333333333333336%; | ||
3291 | 921 | } | ||
3292 | 922 | .bs3 .col-sm-pull-8 { | ||
3293 | 923 | right: 66.66666666666666%; | ||
3294 | 924 | } | ||
3295 | 925 | .bs3 .col-sm-pull-9 { | ||
3296 | 926 | right: 75%; | ||
3297 | 927 | } | ||
3298 | 928 | .bs3 .col-sm-pull-10 { | ||
3299 | 929 | right: 83.33333333333334%; | ||
3300 | 930 | } | ||
3301 | 931 | .bs3 .col-sm-pull-11 { | ||
3302 | 932 | right: 91.66666666666666%; | ||
3303 | 933 | } | ||
3304 | 934 | .bs3 .col-sm-offset-1 { | ||
3305 | 935 | margin-left: 8.333333333333332%; | ||
3306 | 936 | } | ||
3307 | 937 | .bs3 .col-sm-offset-2 { | ||
3308 | 938 | margin-left: 16.666666666666664%; | ||
3309 | 939 | } | ||
3310 | 940 | .bs3 .col-sm-offset-3 { | ||
3311 | 941 | margin-left: 25%; | ||
3312 | 942 | } | ||
3313 | 943 | .bs3 .col-sm-offset-4 { | ||
3314 | 944 | margin-left: 33.33333333333333%; | ||
3315 | 945 | } | ||
3316 | 946 | .bs3 .col-sm-offset-5 { | ||
3317 | 947 | margin-left: 41.66666666666667%; | ||
3318 | 948 | } | ||
3319 | 949 | .bs3 .col-sm-offset-6 { | ||
3320 | 950 | margin-left: 50%; | ||
3321 | 951 | } | ||
3322 | 952 | .bs3 .col-sm-offset-7 { | ||
3323 | 953 | margin-left: 58.333333333333336%; | ||
3324 | 954 | } | ||
3325 | 955 | .bs3 .col-sm-offset-8 { | ||
3326 | 956 | margin-left: 66.66666666666666%; | ||
3327 | 957 | } | ||
3328 | 958 | .bs3 .col-sm-offset-9 { | ||
3329 | 959 | margin-left: 75%; | ||
3330 | 960 | } | ||
3331 | 961 | .bs3 .col-sm-offset-10 { | ||
3332 | 962 | margin-left: 83.33333333333334%; | ||
3333 | 963 | } | ||
3334 | 964 | .bs3 .col-sm-offset-11 { | ||
3335 | 965 | margin-left: 91.66666666666666%; | ||
3336 | 966 | } | ||
3337 | 967 | } | ||
3338 | 968 | @media (min-width: 992px) { | ||
3339 | 969 | .bs3 .container { | ||
3340 | 970 | width: 970px; | ||
3341 | 971 | } | ||
3342 | 972 | .bs3 .col-md-1, | ||
3343 | 973 | .bs3 .col-md-2, | ||
3344 | 974 | .bs3 .col-md-3, | ||
3345 | 975 | .bs3 .col-md-4, | ||
3346 | 976 | .bs3 .col-md-5, | ||
3347 | 977 | .bs3 .col-md-6, | ||
3348 | 978 | .bs3 .col-md-7, | ||
3349 | 979 | .bs3 .col-md-8, | ||
3350 | 980 | .bs3 .col-md-9, | ||
3351 | 981 | .bs3 .col-md-10, | ||
3352 | 982 | .bs3 .col-md-11 { | ||
3353 | 983 | float: left; | ||
3354 | 984 | } | ||
3355 | 985 | .bs3 .col-md-1 { | ||
3356 | 986 | width: 8.333333333333332%; | ||
3357 | 987 | } | ||
3358 | 988 | .bs3 .col-md-2 { | ||
3359 | 989 | width: 16.666666666666664%; | ||
3360 | 990 | } | ||
3361 | 991 | .bs3 .col-md-3 { | ||
3362 | 992 | width: 25%; | ||
3363 | 993 | } | ||
3364 | 994 | .bs3 .col-md-4 { | ||
3365 | 995 | width: 33.33333333333333%; | ||
3366 | 996 | } | ||
3367 | 997 | .bs3 .col-md-5 { | ||
3368 | 998 | width: 41.66666666666667%; | ||
3369 | 999 | } | ||
3370 | 1000 | .bs3 .col-md-6 { | ||
3371 | 1001 | width: 50%; | ||
3372 | 1002 | } | ||
3373 | 1003 | .bs3 .col-md-7 { | ||
3374 | 1004 | width: 58.333333333333336%; | ||
3375 | 1005 | } | ||
3376 | 1006 | .bs3 .col-md-8 { | ||
3377 | 1007 | width: 66.66666666666666%; | ||
3378 | 1008 | } | ||
3379 | 1009 | .bs3 .col-md-9 { | ||
3380 | 1010 | width: 75%; | ||
3381 | 1011 | } | ||
3382 | 1012 | .bs3 .col-md-10 { | ||
3383 | 1013 | width: 83.33333333333334%; | ||
3384 | 1014 | } | ||
3385 | 1015 | .bs3 .col-md-11 { | ||
3386 | 1016 | width: 91.66666666666666%; | ||
3387 | 1017 | } | ||
3388 | 1018 | .bs3 .col-md-12 { | ||
3389 | 1019 | width: 100%; | ||
3390 | 1020 | } | ||
3391 | 1021 | .bs3 .col-md-push-0 { | ||
3392 | 1022 | left: auto; | ||
3393 | 1023 | } | ||
3394 | 1024 | .bs3 .col-md-push-1 { | ||
3395 | 1025 | left: 8.333333333333332%; | ||
3396 | 1026 | } | ||
3397 | 1027 | .bs3 .col-md-push-2 { | ||
3398 | 1028 | left: 16.666666666666664%; | ||
3399 | 1029 | } | ||
3400 | 1030 | .bs3 .col-md-push-3 { | ||
3401 | 1031 | left: 25%; | ||
3402 | 1032 | } | ||
3403 | 1033 | .bs3 .col-md-push-4 { | ||
3404 | 1034 | left: 33.33333333333333%; | ||
3405 | 1035 | } | ||
3406 | 1036 | .bs3 .col-md-push-5 { | ||
3407 | 1037 | left: 41.66666666666667%; | ||
3408 | 1038 | } | ||
3409 | 1039 | .bs3 .col-md-push-6 { | ||
3410 | 1040 | left: 50%; | ||
3411 | 1041 | } | ||
3412 | 1042 | .bs3 .col-md-push-7 { | ||
3413 | 1043 | left: 58.333333333333336%; | ||
3414 | 1044 | } | ||
3415 | 1045 | .bs3 .col-md-push-8 { | ||
3416 | 1046 | left: 66.66666666666666%; | ||
3417 | 1047 | } | ||
3418 | 1048 | .bs3 .col-md-push-9 { | ||
3419 | 1049 | left: 75%; | ||
3420 | 1050 | } | ||
3421 | 1051 | .bs3 .col-md-push-10 { | ||
3422 | 1052 | left: 83.33333333333334%; | ||
3423 | 1053 | } | ||
3424 | 1054 | .bs3 .col-md-push-11 { | ||
3425 | 1055 | left: 91.66666666666666%; | ||
3426 | 1056 | } | ||
3427 | 1057 | .bs3 .col-md-pull-0 { | ||
3428 | 1058 | right: auto; | ||
3429 | 1059 | } | ||
3430 | 1060 | .bs3 .col-md-pull-1 { | ||
3431 | 1061 | right: 8.333333333333332%; | ||
3432 | 1062 | } | ||
3433 | 1063 | .bs3 .col-md-pull-2 { | ||
3434 | 1064 | right: 16.666666666666664%; | ||
3435 | 1065 | } | ||
3436 | 1066 | .bs3 .col-md-pull-3 { | ||
3437 | 1067 | right: 25%; | ||
3438 | 1068 | } | ||
3439 | 1069 | .bs3 .col-md-pull-4 { | ||
3440 | 1070 | right: 33.33333333333333%; | ||
3441 | 1071 | } | ||
3442 | 1072 | .bs3 .col-md-pull-5 { | ||
3443 | 1073 | right: 41.66666666666667%; | ||
3444 | 1074 | } | ||
3445 | 1075 | .bs3 .col-md-pull-6 { | ||
3446 | 1076 | right: 50%; | ||
3447 | 1077 | } | ||
3448 | 1078 | .bs3 .col-md-pull-7 { | ||
3449 | 1079 | right: 58.333333333333336%; | ||
3450 | 1080 | } | ||
3451 | 1081 | .bs3 .col-md-pull-8 { | ||
3452 | 1082 | right: 66.66666666666666%; | ||
3453 | 1083 | } | ||
3454 | 1084 | .bs3 .col-md-pull-9 { | ||
3455 | 1085 | right: 75%; | ||
3456 | 1086 | } | ||
3457 | 1087 | .bs3 .col-md-pull-10 { | ||
3458 | 1088 | right: 83.33333333333334%; | ||
3459 | 1089 | } | ||
3460 | 1090 | .bs3 .col-md-pull-11 { | ||
3461 | 1091 | right: 91.66666666666666%; | ||
3462 | 1092 | } | ||
3463 | 1093 | .bs3 .col-md-offset-0 { | ||
3464 | 1094 | margin-left: 0; | ||
3465 | 1095 | } | ||
3466 | 1096 | .bs3 .col-md-offset-1 { | ||
3467 | 1097 | margin-left: 8.333333333333332%; | ||
3468 | 1098 | } | ||
3469 | 1099 | .bs3 .col-md-offset-2 { | ||
3470 | 1100 | margin-left: 16.666666666666664%; | ||
3471 | 1101 | } | ||
3472 | 1102 | .bs3 .col-md-offset-3 { | ||
3473 | 1103 | margin-left: 25%; | ||
3474 | 1104 | } | ||
3475 | 1105 | .bs3 .col-md-offset-4 { | ||
3476 | 1106 | margin-left: 33.33333333333333%; | ||
3477 | 1107 | } | ||
3478 | 1108 | .bs3 .col-md-offset-5 { | ||
3479 | 1109 | margin-left: 41.66666666666667%; | ||
3480 | 1110 | } | ||
3481 | 1111 | .bs3 .col-md-offset-6 { | ||
3482 | 1112 | margin-left: 50%; | ||
3483 | 1113 | } | ||
3484 | 1114 | .bs3 .col-md-offset-7 { | ||
3485 | 1115 | margin-left: 58.333333333333336%; | ||
3486 | 1116 | } | ||
3487 | 1117 | .bs3 .col-md-offset-8 { | ||
3488 | 1118 | margin-left: 66.66666666666666%; | ||
3489 | 1119 | } | ||
3490 | 1120 | .bs3 .col-md-offset-9 { | ||
3491 | 1121 | margin-left: 75%; | ||
3492 | 1122 | } | ||
3493 | 1123 | .bs3 .col-md-offset-10 { | ||
3494 | 1124 | margin-left: 83.33333333333334%; | ||
3495 | 1125 | } | ||
3496 | 1126 | .bs3 .col-md-offset-11 { | ||
3497 | 1127 | margin-left: 91.66666666666666%; | ||
3498 | 1128 | } | ||
3499 | 1129 | } | ||
3500 | 1130 | @media (min-width: 1200px) { | ||
3501 | 1131 | .bs3 .container { | ||
3502 | 1132 | width: 1170px; | ||
3503 | 1133 | } | ||
3504 | 1134 | .bs3 .col-lg-1, | ||
3505 | 1135 | .bs3 .col-lg-2, | ||
3506 | 1136 | .bs3 .col-lg-3, | ||
3507 | 1137 | .bs3 .col-lg-4, | ||
3508 | 1138 | .bs3 .col-lg-5, | ||
3509 | 1139 | .bs3 .col-lg-6, | ||
3510 | 1140 | .bs3 .col-lg-7, | ||
3511 | 1141 | .bs3 .col-lg-8, | ||
3512 | 1142 | .bs3 .col-lg-9, | ||
3513 | 1143 | .bs3 .col-lg-10, | ||
3514 | 1144 | .bs3 .col-lg-11 { | ||
3515 | 1145 | float: left; | ||
3516 | 1146 | } | ||
3517 | 1147 | .bs3 .col-lg-1 { | ||
3518 | 1148 | width: 8.333333333333332%; | ||
3519 | 1149 | } | ||
3520 | 1150 | .bs3 .col-lg-2 { | ||
3521 | 1151 | width: 16.666666666666664%; | ||
3522 | 1152 | } | ||
3523 | 1153 | .bs3 .col-lg-3 { | ||
3524 | 1154 | width: 25%; | ||
3525 | 1155 | } | ||
3526 | 1156 | .bs3 .col-lg-4 { | ||
3527 | 1157 | width: 33.33333333333333%; | ||
3528 | 1158 | } | ||
3529 | 1159 | .bs3 .col-lg-5 { | ||
3530 | 1160 | width: 41.66666666666667%; | ||
3531 | 1161 | } | ||
3532 | 1162 | .bs3 .col-lg-6 { | ||
3533 | 1163 | width: 50%; | ||
3534 | 1164 | } | ||
3535 | 1165 | .bs3 .col-lg-7 { | ||
3536 | 1166 | width: 58.333333333333336%; | ||
3537 | 1167 | } | ||
3538 | 1168 | .bs3 .col-lg-8 { | ||
3539 | 1169 | width: 66.66666666666666%; | ||
3540 | 1170 | } | ||
3541 | 1171 | .bs3 .col-lg-9 { | ||
3542 | 1172 | width: 75%; | ||
3543 | 1173 | } | ||
3544 | 1174 | .bs3 .col-lg-10 { | ||
3545 | 1175 | width: 83.33333333333334%; | ||
3546 | 1176 | } | ||
3547 | 1177 | .bs3 .col-lg-11 { | ||
3548 | 1178 | width: 91.66666666666666%; | ||
3549 | 1179 | } | ||
3550 | 1180 | .bs3 .col-lg-12 { | ||
3551 | 1181 | width: 100%; | ||
3552 | 1182 | } | ||
3553 | 1183 | .bs3 .col-lg-push-0 { | ||
3554 | 1184 | left: auto; | ||
3555 | 1185 | } | ||
3556 | 1186 | .bs3 .col-lg-push-1 { | ||
3557 | 1187 | left: 8.333333333333332%; | ||
3558 | 1188 | } | ||
3559 | 1189 | .bs3 .col-lg-push-2 { | ||
3560 | 1190 | left: 16.666666666666664%; | ||
3561 | 1191 | } | ||
3562 | 1192 | .bs3 .col-lg-push-3 { | ||
3563 | 1193 | left: 25%; | ||
3564 | 1194 | } | ||
3565 | 1195 | .bs3 .col-lg-push-4 { | ||
3566 | 1196 | left: 33.33333333333333%; | ||
3567 | 1197 | } | ||
3568 | 1198 | .bs3 .col-lg-push-5 { | ||
3569 | 1199 | left: 41.66666666666667%; | ||
3570 | 1200 | } | ||
3571 | 1201 | .bs3 .col-lg-push-6 { | ||
3572 | 1202 | left: 50%; | ||
3573 | 1203 | } | ||
3574 | 1204 | .bs3 .col-lg-push-7 { | ||
3575 | 1205 | left: 58.333333333333336%; | ||
3576 | 1206 | } | ||
3577 | 1207 | .bs3 .col-lg-push-8 { | ||
3578 | 1208 | left: 66.66666666666666%; | ||
3579 | 1209 | } | ||
3580 | 1210 | .bs3 .col-lg-push-9 { | ||
3581 | 1211 | left: 75%; | ||
3582 | 1212 | } | ||
3583 | 1213 | .bs3 .col-lg-push-10 { | ||
3584 | 1214 | left: 83.33333333333334%; | ||
3585 | 1215 | } | ||
3586 | 1216 | .bs3 .col-lg-push-11 { | ||
3587 | 1217 | left: 91.66666666666666%; | ||
3588 | 1218 | } | ||
3589 | 1219 | .bs3 .col-lg-pull-0 { | ||
3590 | 1220 | right: auto; | ||
3591 | 1221 | } | ||
3592 | 1222 | .bs3 .col-lg-pull-1 { | ||
3593 | 1223 | right: 8.333333333333332%; | ||
3594 | 1224 | } | ||
3595 | 1225 | .bs3 .col-lg-pull-2 { | ||
3596 | 1226 | right: 16.666666666666664%; | ||
3597 | 1227 | } | ||
3598 | 1228 | .bs3 .col-lg-pull-3 { | ||
3599 | 1229 | right: 25%; | ||
3600 | 1230 | } | ||
3601 | 1231 | .bs3 .col-lg-pull-4 { | ||
3602 | 1232 | right: 33.33333333333333%; | ||
3603 | 1233 | } | ||
3604 | 1234 | .bs3 .col-lg-pull-5 { | ||
3605 | 1235 | right: 41.66666666666667%; | ||
3606 | 1236 | } | ||
3607 | 1237 | .bs3 .col-lg-pull-6 { | ||
3608 | 1238 | right: 50%; | ||
3609 | 1239 | } | ||
3610 | 1240 | .bs3 .col-lg-pull-7 { | ||
3611 | 1241 | right: 58.333333333333336%; | ||
3612 | 1242 | } | ||
3613 | 1243 | .bs3 .col-lg-pull-8 { | ||
3614 | 1244 | right: 66.66666666666666%; | ||
3615 | 1245 | } | ||
3616 | 1246 | .bs3 .col-lg-pull-9 { | ||
3617 | 1247 | right: 75%; | ||
3618 | 1248 | } | ||
3619 | 1249 | .bs3 .col-lg-pull-10 { | ||
3620 | 1250 | right: 83.33333333333334%; | ||
3621 | 1251 | } | ||
3622 | 1252 | .bs3 .col-lg-pull-11 { | ||
3623 | 1253 | right: 91.66666666666666%; | ||
3624 | 1254 | } | ||
3625 | 1255 | .bs3 .col-lg-offset-0 { | ||
3626 | 1256 | margin-left: 0; | ||
3627 | 1257 | } | ||
3628 | 1258 | .bs3 .col-lg-offset-1 { | ||
3629 | 1259 | margin-left: 8.333333333333332%; | ||
3630 | 1260 | } | ||
3631 | 1261 | .bs3 .col-lg-offset-2 { | ||
3632 | 1262 | margin-left: 16.666666666666664%; | ||
3633 | 1263 | } | ||
3634 | 1264 | .bs3 .col-lg-offset-3 { | ||
3635 | 1265 | margin-left: 25%; | ||
3636 | 1266 | } | ||
3637 | 1267 | .bs3 .col-lg-offset-4 { | ||
3638 | 1268 | margin-left: 33.33333333333333%; | ||
3639 | 1269 | } | ||
3640 | 1270 | .bs3 .col-lg-offset-5 { | ||
3641 | 1271 | margin-left: 41.66666666666667%; | ||
3642 | 1272 | } | ||
3643 | 1273 | .bs3 .col-lg-offset-6 { | ||
3644 | 1274 | margin-left: 50%; | ||
3645 | 1275 | } | ||
3646 | 1276 | .bs3 .col-lg-offset-7 { | ||
3647 | 1277 | margin-left: 58.333333333333336%; | ||
3648 | 1278 | } | ||
3649 | 1279 | .bs3 .col-lg-offset-8 { | ||
3650 | 1280 | margin-left: 66.66666666666666%; | ||
3651 | 1281 | } | ||
3652 | 1282 | .bs3 .col-lg-offset-9 { | ||
3653 | 1283 | margin-left: 75%; | ||
3654 | 1284 | } | ||
3655 | 1285 | .bs3 .col-lg-offset-10 { | ||
3656 | 1286 | margin-left: 83.33333333333334%; | ||
3657 | 1287 | } | ||
3658 | 1288 | .bs3 .col-lg-offset-11 { | ||
3659 | 1289 | margin-left: 91.66666666666666%; | ||
3660 | 1290 | } | ||
3661 | 1291 | } | ||
3662 | 1292 | .bs3 table { | ||
3663 | 1293 | max-width: 100%; | ||
3664 | 1294 | background-color: transparent; | ||
3665 | 1295 | } | ||
3666 | 1296 | .bs3 th { | ||
3667 | 1297 | text-align: left; | ||
3668 | 1298 | } | ||
3669 | 1299 | .bs3 .table { | ||
3670 | 1300 | width: 100%; | ||
3671 | 1301 | margin-bottom: 20px; | ||
3672 | 1302 | } | ||
3673 | 1303 | .bs3 .table > thead > tr > th, | ||
3674 | 1304 | .bs3 .table > tbody > tr > th, | ||
3675 | 1305 | .bs3 .table > tfoot > tr > th, | ||
3676 | 1306 | .bs3 .table > thead > tr > td, | ||
3677 | 1307 | .bs3 .table > tbody > tr > td, | ||
3678 | 1308 | .bs3 .table > tfoot > tr > td { | ||
3679 | 1309 | padding: 8px; | ||
3680 | 1310 | line-height: 1.428571429; | ||
3681 | 1311 | vertical-align: top; | ||
3682 | 1312 | border-top: 1px solid #dddddd; | ||
3683 | 1313 | } | ||
3684 | 1314 | .bs3 .table > thead > tr > th { | ||
3685 | 1315 | vertical-align: bottom; | ||
3686 | 1316 | border-bottom: 2px solid #dddddd; | ||
3687 | 1317 | } | ||
3688 | 1318 | .bs3 .table > caption + thead > tr:first-child > th, | ||
3689 | 1319 | .bs3 .table > colgroup + thead > tr:first-child > th, | ||
3690 | 1320 | .bs3 .table > thead:first-child > tr:first-child > th, | ||
3691 | 1321 | .bs3 .table > caption + thead > tr:first-child > td, | ||
3692 | 1322 | .bs3 .table > colgroup + thead > tr:first-child > td, | ||
3693 | 1323 | .bs3 .table > thead:first-child > tr:first-child > td { | ||
3694 | 1324 | border-top: 0; | ||
3695 | 1325 | } | ||
3696 | 1326 | .bs3 .table > tbody + tbody { | ||
3697 | 1327 | border-top: 2px solid #dddddd; | ||
3698 | 1328 | } | ||
3699 | 1329 | .bs3 .table .table { | ||
3700 | 1330 | background-color: #ffffff; | ||
3701 | 1331 | } | ||
3702 | 1332 | .bs3 .table-condensed > thead > tr > th, | ||
3703 | 1333 | .bs3 .table-condensed > tbody > tr > th, | ||
3704 | 1334 | .bs3 .table-condensed > tfoot > tr > th, | ||
3705 | 1335 | .bs3 .table-condensed > thead > tr > td, | ||
3706 | 1336 | .bs3 .table-condensed > tbody > tr > td, | ||
3707 | 1337 | .bs3 .table-condensed > tfoot > tr > td { | ||
3708 | 1338 | padding: 5px; | ||
3709 | 1339 | } | ||
3710 | 1340 | .bs3 .table-bordered { | ||
3711 | 1341 | border: 1px solid #dddddd; | ||
3712 | 1342 | } | ||
3713 | 1343 | .bs3 .table-bordered > thead > tr > th, | ||
3714 | 1344 | .bs3 .table-bordered > tbody > tr > th, | ||
3715 | 1345 | .bs3 .table-bordered > tfoot > tr > th, | ||
3716 | 1346 | .bs3 .table-bordered > thead > tr > td, | ||
3717 | 1347 | .bs3 .table-bordered > tbody > tr > td, | ||
3718 | 1348 | .bs3 .table-bordered > tfoot > tr > td { | ||
3719 | 1349 | border: 1px solid #dddddd; | ||
3720 | 1350 | } | ||
3721 | 1351 | .bs3 .table-bordered > thead > tr > th, | ||
3722 | 1352 | .bs3 .table-bordered > thead > tr > td { | ||
3723 | 1353 | border-bottom-width: 2px; | ||
3724 | 1354 | } | ||
3725 | 1355 | .bs3 .table-striped > tbody > tr:nth-child(odd) > td, | ||
3726 | 1356 | .bs3 .table-striped > tbody > tr:nth-child(odd) > th { | ||
3727 | 1357 | background-color: #f9f9f9; | ||
3728 | 1358 | } | ||
3729 | 1359 | .bs3 .table-hover > tbody > tr:hover > td, | ||
3730 | 1360 | .bs3 .table-hover > tbody > tr:hover > th { | ||
3731 | 1361 | background-color: #f5f5f5; | ||
3732 | 1362 | } | ||
3733 | 1363 | .bs3 table col[class*="col-"] { | ||
3734 | 1364 | float: none; | ||
3735 | 1365 | display: table-column; | ||
3736 | 1366 | } | ||
3737 | 1367 | .bs3 table td[class*="col-"], | ||
3738 | 1368 | .bs3 table th[class*="col-"] { | ||
3739 | 1369 | float: none; | ||
3740 | 1370 | display: table-cell; | ||
3741 | 1371 | } | ||
3742 | 1372 | .bs3 .table > thead > tr > td.active, | ||
3743 | 1373 | .bs3 .table > tbody > tr > td.active, | ||
3744 | 1374 | .bs3 .table > tfoot > tr > td.active, | ||
3745 | 1375 | .bs3 .table > thead > tr > th.active, | ||
3746 | 1376 | .bs3 .table > tbody > tr > th.active, | ||
3747 | 1377 | .bs3 .table > tfoot > tr > th.active, | ||
3748 | 1378 | .bs3 .table > thead > tr.active > td, | ||
3749 | 1379 | .bs3 .table > tbody > tr.active > td, | ||
3750 | 1380 | .bs3 .table > tfoot > tr.active > td, | ||
3751 | 1381 | .bs3 .table > thead > tr.active > th, | ||
3752 | 1382 | .bs3 .table > tbody > tr.active > th, | ||
3753 | 1383 | .bs3 .table > tfoot > tr.active > th { | ||
3754 | 1384 | background-color: #f5f5f5; | ||
3755 | 1385 | } | ||
3756 | 1386 | .bs3 .table > thead > tr > td.success, | ||
3757 | 1387 | .bs3 .table > tbody > tr > td.success, | ||
3758 | 1388 | .bs3 .table > tfoot > tr > td.success, | ||
3759 | 1389 | .bs3 .table > thead > tr > th.success, | ||
3760 | 1390 | .bs3 .table > tbody > tr > th.success, | ||
3761 | 1391 | .bs3 .table > tfoot > tr > th.success, | ||
3762 | 1392 | .bs3 .table > thead > tr.success > td, | ||
3763 | 1393 | .bs3 .table > tbody > tr.success > td, | ||
3764 | 1394 | .bs3 .table > tfoot > tr.success > td, | ||
3765 | 1395 | .bs3 .table > thead > tr.success > th, | ||
3766 | 1396 | .bs3 .table > tbody > tr.success > th, | ||
3767 | 1397 | .bs3 .table > tfoot > tr.success > th { | ||
3768 | 1398 | background-color: #dff0d8; | ||
3769 | 1399 | border-color: #d6e9c6; | ||
3770 | 1400 | } | ||
3771 | 1401 | .bs3 .table-hover > tbody > tr > td.success:hover, | ||
3772 | 1402 | .bs3 .table-hover > tbody > tr > th.success:hover, | ||
3773 | 1403 | .bs3 .table-hover > tbody > tr.success:hover > td, | ||
3774 | 1404 | .bs3 .table-hover > tbody > tr.success:hover > th { | ||
3775 | 1405 | background-color: #d0e9c6; | ||
3776 | 1406 | border-color: #c9e2b3; | ||
3777 | 1407 | } | ||
3778 | 1408 | .bs3 .table > thead > tr > td.danger, | ||
3779 | 1409 | .bs3 .table > tbody > tr > td.danger, | ||
3780 | 1410 | .bs3 .table > tfoot > tr > td.danger, | ||
3781 | 1411 | .bs3 .table > thead > tr > th.danger, | ||
3782 | 1412 | .bs3 .table > tbody > tr > th.danger, | ||
3783 | 1413 | .bs3 .table > tfoot > tr > th.danger, | ||
3784 | 1414 | .bs3 .table > thead > tr.danger > td, | ||
3785 | 1415 | .bs3 .table > tbody > tr.danger > td, | ||
3786 | 1416 | .bs3 .table > tfoot > tr.danger > td, | ||
3787 | 1417 | .bs3 .table > thead > tr.danger > th, | ||
3788 | 1418 | .bs3 .table > tbody > tr.danger > th, | ||
3789 | 1419 | .bs3 .table > tfoot > tr.danger > th { | ||
3790 | 1420 | background-color: #f2dede; | ||
3791 | 1421 | border-color: #eed3d7; | ||
3792 | 1422 | } | ||
3793 | 1423 | .bs3 .table-hover > tbody > tr > td.danger:hover, | ||
3794 | 1424 | .bs3 .table-hover > tbody > tr > th.danger:hover, | ||
3795 | 1425 | .bs3 .table-hover > tbody > tr.danger:hover > td, | ||
3796 | 1426 | .bs3 .table-hover > tbody > tr.danger:hover > th { | ||
3797 | 1427 | background-color: #ebcccc; | ||
3798 | 1428 | border-color: #e6c1c7; | ||
3799 | 1429 | } | ||
3800 | 1430 | .bs3 .table > thead > tr > td.warning, | ||
3801 | 1431 | .bs3 .table > tbody > tr > td.warning, | ||
3802 | 1432 | .bs3 .table > tfoot > tr > td.warning, | ||
3803 | 1433 | .bs3 .table > thead > tr > th.warning, | ||
3804 | 1434 | .bs3 .table > tbody > tr > th.warning, | ||
3805 | 1435 | .bs3 .table > tfoot > tr > th.warning, | ||
3806 | 1436 | .bs3 .table > thead > tr.warning > td, | ||
3807 | 1437 | .bs3 .table > tbody > tr.warning > td, | ||
3808 | 1438 | .bs3 .table > tfoot > tr.warning > td, | ||
3809 | 1439 | .bs3 .table > thead > tr.warning > th, | ||
3810 | 1440 | .bs3 .table > tbody > tr.warning > th, | ||
3811 | 1441 | .bs3 .table > tfoot > tr.warning > th { | ||
3812 | 1442 | background-color: #fcf8e3; | ||
3813 | 1443 | border-color: #fbeed5; | ||
3814 | 1444 | } | ||
3815 | 1445 | .bs3 .table-hover > tbody > tr > td.warning:hover, | ||
3816 | 1446 | .bs3 .table-hover > tbody > tr > th.warning:hover, | ||
3817 | 1447 | .bs3 .table-hover > tbody > tr.warning:hover > td, | ||
3818 | 1448 | .bs3 .table-hover > tbody > tr.warning:hover > th { | ||
3819 | 1449 | background-color: #faf2cc; | ||
3820 | 1450 | border-color: #f8e5be; | ||
3821 | 1451 | } | ||
3822 | 1452 | @media (max-width: 768px) { | ||
3823 | 1453 | .bs3 .table-responsive { | ||
3824 | 1454 | width: 100%; | ||
3825 | 1455 | margin-bottom: 15px; | ||
3826 | 1456 | overflow-y: hidden; | ||
3827 | 1457 | overflow-x: scroll; | ||
3828 | 1458 | -ms-overflow-style: -ms-autohiding-scrollbar; | ||
3829 | 1459 | border: 1px solid #dddddd; | ||
3830 | 1460 | -webkit-overflow-scrolling: touch; | ||
3831 | 1461 | } | ||
3832 | 1462 | .bs3 .table-responsive > .table { | ||
3833 | 1463 | margin-bottom: 0; | ||
3834 | 1464 | background-color: #fff; | ||
3835 | 1465 | } | ||
3836 | 1466 | .bs3 .table-responsive > .table > thead > tr > th, | ||
3837 | 1467 | .bs3 .table-responsive > .table > tbody > tr > th, | ||
3838 | 1468 | .bs3 .table-responsive > .table > tfoot > tr > th, | ||
3839 | 1469 | .bs3 .table-responsive > .table > thead > tr > td, | ||
3840 | 1470 | .bs3 .table-responsive > .table > tbody > tr > td, | ||
3841 | 1471 | .bs3 .table-responsive > .table > tfoot > tr > td { | ||
3842 | 1472 | white-space: nowrap; | ||
3843 | 1473 | } | ||
3844 | 1474 | .bs3 .table-responsive > .table-bordered { | ||
3845 | 1475 | border: 0; | ||
3846 | 1476 | } | ||
3847 | 1477 | .bs3 .table-responsive > .table-bordered > thead > tr > th:first-child, | ||
3848 | 1478 | .bs3 .table-responsive > .table-bordered > tbody > tr > th:first-child, | ||
3849 | 1479 | .bs3 .table-responsive > .table-bordered > tfoot > tr > th:first-child, | ||
3850 | 1480 | .bs3 .table-responsive > .table-bordered > thead > tr > td:first-child, | ||
3851 | 1481 | .bs3 .table-responsive > .table-bordered > tbody > tr > td:first-child, | ||
3852 | 1482 | .bs3 .table-responsive > .table-bordered > tfoot > tr > td:first-child { | ||
3853 | 1483 | border-left: 0; | ||
3854 | 1484 | } | ||
3855 | 1485 | .bs3 .table-responsive > .table-bordered > thead > tr > th:last-child, | ||
3856 | 1486 | .bs3 .table-responsive > .table-bordered > tbody > tr > th:last-child, | ||
3857 | 1487 | .bs3 .table-responsive > .table-bordered > tfoot > tr > th:last-child, | ||
3858 | 1488 | .bs3 .table-responsive > .table-bordered > thead > tr > td:last-child, | ||
3859 | 1489 | .bs3 .table-responsive > .table-bordered > tbody > tr > td:last-child, | ||
3860 | 1490 | .bs3 .table-responsive > .table-bordered > tfoot > tr > td:last-child { | ||
3861 | 1491 | border-right: 0; | ||
3862 | 1492 | } | ||
3863 | 1493 | .bs3 .table-responsive > .table-bordered > thead > tr:last-child > th, | ||
3864 | 1494 | .bs3 .table-responsive > .table-bordered > tbody > tr:last-child > th, | ||
3865 | 1495 | .bs3 .table-responsive > .table-bordered > tfoot > tr:last-child > th, | ||
3866 | 1496 | .bs3 .table-responsive > .table-bordered > thead > tr:last-child > td, | ||
3867 | 1497 | .bs3 .table-responsive > .table-bordered > tbody > tr:last-child > td, | ||
3868 | 1498 | .bs3 .table-responsive > .table-bordered > tfoot > tr:last-child > td { | ||
3869 | 1499 | border-bottom: 0; | ||
3870 | 1500 | } | ||
3871 | 1501 | } | ||
3872 | 1502 | .bs3 fieldset { | ||
3873 | 1503 | padding: 0; | ||
3874 | 1504 | margin: 0; | ||
3875 | 1505 | border: 0; | ||
3876 | 1506 | } | ||
3877 | 1507 | .bs3 legend { | ||
3878 | 1508 | display: block; | ||
3879 | 1509 | width: 100%; | ||
3880 | 1510 | padding: 0; | ||
3881 | 1511 | margin-bottom: 20px; | ||
3882 | 1512 | font-size: 21px; | ||
3883 | 1513 | line-height: inherit; | ||
3884 | 1514 | color: #333333; | ||
3885 | 1515 | border: 0; | ||
3886 | 1516 | border-bottom: 1px solid #e5e5e5; | ||
3887 | 1517 | } | ||
3888 | 1518 | .bs3 label { | ||
3889 | 1519 | display: inline-block; | ||
3890 | 1520 | margin-bottom: 5px; | ||
3891 | 1521 | font-weight: bold; | ||
3892 | 1522 | } | ||
3893 | 1523 | .bs3 input[type="search"] { | ||
3894 | 1524 | -webkit-box-sizing: border-box; | ||
3895 | 1525 | -moz-box-sizing: border-box; | ||
3896 | 1526 | box-sizing: border-box; | ||
3897 | 1527 | } | ||
3898 | 1528 | .bs3 input[type="radio"], | ||
3899 | 1529 | .bs3 input[type="checkbox"] { | ||
3900 | 1530 | margin: 4px 0 0; | ||
3901 | 1531 | margin-top: 1px \9; | ||
3902 | 1532 | /* IE8-9 */ | ||
3903 | 1533 | |||
3904 | 1534 | line-height: normal; | ||
3905 | 1535 | } | ||
3906 | 1536 | .bs3 input[type="file"] { | ||
3907 | 1537 | display: block; | ||
3908 | 1538 | } | ||
3909 | 1539 | .bs3 select[multiple], | ||
3910 | 1540 | .bs3 select[size] { | ||
3911 | 1541 | height: auto; | ||
3912 | 1542 | } | ||
3913 | 1543 | .bs3 select optgroup { | ||
3914 | 1544 | font-size: inherit; | ||
3915 | 1545 | font-style: inherit; | ||
3916 | 1546 | font-family: inherit; | ||
3917 | 1547 | } | ||
3918 | 1548 | .bs3 input[type="file"]:focus, | ||
3919 | 1549 | .bs3 input[type="radio"]:focus, | ||
3920 | 1550 | .bs3 input[type="checkbox"]:focus { | ||
3921 | 1551 | outline: thin dotted #333; | ||
3922 | 1552 | outline: 5px auto -webkit-focus-ring-color; | ||
3923 | 1553 | outline-offset: -2px; | ||
3924 | 1554 | } | ||
3925 | 1555 | .bs3 input[type="number"]::-webkit-outer-spin-button, | ||
3926 | 1556 | .bs3 input[type="number"]::-webkit-inner-spin-button { | ||
3927 | 1557 | height: auto; | ||
3928 | 1558 | } | ||
3929 | 1559 | .bs3 output { | ||
3930 | 1560 | display: block; | ||
3931 | 1561 | padding-top: 7px; | ||
3932 | 1562 | font-size: 14px; | ||
3933 | 1563 | line-height: 1.428571429; | ||
3934 | 1564 | color: #555555; | ||
3935 | 1565 | vertical-align: middle; | ||
3936 | 1566 | } | ||
3937 | 1567 | .bs3 .form-control:-moz-placeholder { | ||
3938 | 1568 | color: #999999; | ||
3939 | 1569 | } | ||
3940 | 1570 | .bs3 .form-control::-moz-placeholder { | ||
3941 | 1571 | color: #999999; | ||
3942 | 1572 | } | ||
3943 | 1573 | .bs3 .form-control:-ms-input-placeholder { | ||
3944 | 1574 | color: #999999; | ||
3945 | 1575 | } | ||
3946 | 1576 | .bs3 .form-control::-webkit-input-placeholder { | ||
3947 | 1577 | color: #999999; | ||
3948 | 1578 | } | ||
3949 | 1579 | .bs3 .form-control { | ||
3950 | 1580 | display: block; | ||
3951 | 1581 | width: 100%; | ||
3952 | 1582 | height: 34px; | ||
3953 | 1583 | padding: 6px 12px; | ||
3954 | 1584 | font-size: 14px; | ||
3955 | 1585 | line-height: 1.428571429; | ||
3956 | 1586 | color: #555555; | ||
3957 | 1587 | vertical-align: middle; | ||
3958 | 1588 | background-color: #ffffff; | ||
3959 | 1589 | background-image: none; | ||
3960 | 1590 | border: 1px solid #cccccc; | ||
3961 | 1591 | border-radius: 4px; | ||
3962 | 1592 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); | ||
3963 | 1593 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); | ||
3964 | 1594 | -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; | ||
3965 | 1595 | transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; | ||
3966 | 1596 | } | ||
3967 | 1597 | .bs3 .form-control:focus { | ||
3968 | 1598 | border-color: #66afe9; | ||
3969 | 1599 | outline: 0; | ||
3970 | 1600 | -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); | ||
3971 | 1601 | box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); | ||
3972 | 1602 | } | ||
3973 | 1603 | .bs3 .form-control[disabled], | ||
3974 | 1604 | .bs3 .form-control[readonly], | ||
3975 | 1605 | fieldset[disabled] .bs3 .form-control { | ||
3976 | 1606 | cursor: not-allowed; | ||
3977 | 1607 | background-color: #eeeeee; | ||
3978 | 1608 | } | ||
3979 | 1609 | textarea.bs3 .form-control { | ||
3980 | 1610 | height: auto; | ||
3981 | 1611 | } | ||
3982 | 1612 | .bs3 .form-group { | ||
3983 | 1613 | margin-bottom: 15px; | ||
3984 | 1614 | } | ||
3985 | 1615 | .bs3 .radio, | ||
3986 | 1616 | .bs3 .checkbox { | ||
3987 | 1617 | display: block; | ||
3988 | 1618 | min-height: 20px; | ||
3989 | 1619 | margin-top: 10px; | ||
3990 | 1620 | margin-bottom: 10px; | ||
3991 | 1621 | padding-left: 20px; | ||
3992 | 1622 | vertical-align: middle; | ||
3993 | 1623 | } | ||
3994 | 1624 | .bs3 .radio label, | ||
3995 | 1625 | .bs3 .checkbox label { | ||
3996 | 1626 | display: inline; | ||
3997 | 1627 | margin-bottom: 0; | ||
3998 | 1628 | font-weight: normal; | ||
3999 | 1629 | cursor: pointer; | ||
4000 | 1630 | } | ||
4001 | 1631 | .bs3 .radio input[type="radio"], | ||
4002 | 1632 | .bs3 .radio-inline input[type="radio"], | ||
4003 | 1633 | .bs3 .checkbox input[type="checkbox"], | ||
4004 | 1634 | .bs3 .checkbox-inline input[type="checkbox"] { | ||
4005 | 1635 | float: left; | ||
4006 | 1636 | margin-left: -20px; | ||
4007 | 1637 | } | ||
4008 | 1638 | .bs3 .radio + .radio, | ||
4009 | 1639 | .bs3 .checkbox + .checkbox { | ||
4010 | 1640 | margin-top: -5px; | ||
4011 | 1641 | } | ||
4012 | 1642 | .bs3 .radio-inline, | ||
4013 | 1643 | .bs3 .checkbox-inline { | ||
4014 | 1644 | display: inline-block; | ||
4015 | 1645 | padding-left: 20px; | ||
4016 | 1646 | margin-bottom: 0; | ||
4017 | 1647 | vertical-align: middle; | ||
4018 | 1648 | font-weight: normal; | ||
4019 | 1649 | cursor: pointer; | ||
4020 | 1650 | } | ||
4021 | 1651 | .bs3 .radio-inline + .radio-inline, | ||
4022 | 1652 | .bs3 .checkbox-inline + .checkbox-inline { | ||
4023 | 1653 | margin-top: 0; | ||
4024 | 1654 | margin-left: 10px; | ||
4025 | 1655 | } | ||
4026 | 1656 | .bs3 input[type="radio"][disabled], | ||
4027 | 1657 | .bs3 input[type="checkbox"][disabled], | ||
4028 | 1658 | .bs3 .radio[disabled], | ||
4029 | 1659 | .bs3 .radio-inline[disabled], | ||
4030 | 1660 | .bs3 .checkbox[disabled], | ||
4031 | 1661 | .bs3 .checkbox-inline[disabled], | ||
4032 | 1662 | fieldset[disabled] .bs3 input[type="radio"], | ||
4033 | 1663 | fieldset[disabled] .bs3 input[type="checkbox"], | ||
4034 | 1664 | fieldset[disabled] .bs3 .radio, | ||
4035 | 1665 | fieldset[disabled] .bs3 .radio-inline, | ||
4036 | 1666 | fieldset[disabled] .bs3 .checkbox, | ||
4037 | 1667 | fieldset[disabled] .bs3 .checkbox-inline { | ||
4038 | 1668 | cursor: not-allowed; | ||
4039 | 1669 | } | ||
4040 | 1670 | .bs3 .input-sm { | ||
4041 | 1671 | height: 30px; | ||
4042 | 1672 | padding: 5px 10px; | ||
4043 | 1673 | font-size: 12px; | ||
4044 | 1674 | line-height: 1.5; | ||
4045 | 1675 | border-radius: 3px; | ||
4046 | 1676 | } | ||
4047 | 1677 | select.bs3 .input-sm { | ||
4048 | 1678 | height: 30px; | ||
4049 | 1679 | line-height: 30px; | ||
4050 | 1680 | } | ||
4051 | 1681 | textarea.bs3 .input-sm { | ||
4052 | 1682 | height: auto; | ||
4053 | 1683 | } | ||
4054 | 1684 | .bs3 .input-lg { | ||
4055 | 1685 | height: 45px; | ||
4056 | 1686 | padding: 10px 16px; | ||
4057 | 1687 | font-size: 18px; | ||
4058 | 1688 | line-height: 1.33; | ||
4059 | 1689 | border-radius: 6px; | ||
4060 | 1690 | } | ||
4061 | 1691 | select.bs3 .input-lg { | ||
4062 | 1692 | height: 45px; | ||
4063 | 1693 | line-height: 45px; | ||
4064 | 1694 | } | ||
4065 | 1695 | textarea.bs3 .input-lg { | ||
4066 | 1696 | height: auto; | ||
4067 | 1697 | } | ||
4068 | 1698 | .bs3 .has-warning .help-block, | ||
4069 | 1699 | .bs3 .has-warning .control-label { | ||
4070 | 1700 | color: #c09853; | ||
4071 | 1701 | } | ||
4072 | 1702 | .bs3 .has-warning .form-control { | ||
4073 | 1703 | border-color: #c09853; | ||
4074 | 1704 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); | ||
4075 | 1705 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); | ||
4076 | 1706 | } | ||
4077 | 1707 | .bs3 .has-warning .form-control:focus { | ||
4078 | 1708 | border-color: #a47e3c; | ||
4079 | 1709 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; | ||
4080 | 1710 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; | ||
4081 | 1711 | } | ||
4082 | 1712 | .bs3 .has-warning .input-group-addon { | ||
4083 | 1713 | color: #c09853; | ||
4084 | 1714 | border-color: #c09853; | ||
4085 | 1715 | background-color: #fcf8e3; | ||
4086 | 1716 | } | ||
4087 | 1717 | .bs3 .has-error .help-block, | ||
4088 | 1718 | .bs3 .has-error .control-label { | ||
4089 | 1719 | color: #b94a48; | ||
4090 | 1720 | } | ||
4091 | 1721 | .bs3 .has-error .form-control { | ||
4092 | 1722 | border-color: #b94a48; | ||
4093 | 1723 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); | ||
4094 | 1724 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); | ||
4095 | 1725 | } | ||
4096 | 1726 | .bs3 .has-error .form-control:focus { | ||
4097 | 1727 | border-color: #953b39; | ||
4098 | 1728 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; | ||
4099 | 1729 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; | ||
4100 | 1730 | } | ||
4101 | 1731 | .bs3 .has-error .input-group-addon { | ||
4102 | 1732 | color: #b94a48; | ||
4103 | 1733 | border-color: #b94a48; | ||
4104 | 1734 | background-color: #f2dede; | ||
4105 | 1735 | } | ||
4106 | 1736 | .bs3 .has-success .help-block, | ||
4107 | 1737 | .bs3 .has-success .control-label { | ||
4108 | 1738 | color: #468847; | ||
4109 | 1739 | } | ||
4110 | 1740 | .bs3 .has-success .form-control { | ||
4111 | 1741 | border-color: #468847; | ||
4112 | 1742 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); | ||
4113 | 1743 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); | ||
4114 | 1744 | } | ||
4115 | 1745 | .bs3 .has-success .form-control:focus { | ||
4116 | 1746 | border-color: #356635; | ||
4117 | 1747 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; | ||
4118 | 1748 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; | ||
4119 | 1749 | } | ||
4120 | 1750 | .bs3 .has-success .input-group-addon { | ||
4121 | 1751 | color: #468847; | ||
4122 | 1752 | border-color: #468847; | ||
4123 | 1753 | background-color: #dff0d8; | ||
4124 | 1754 | } | ||
4125 | 1755 | .bs3 .form-control-static { | ||
4126 | 1756 | margin-bottom: 0; | ||
4127 | 1757 | padding-top: 7px; | ||
4128 | 1758 | } | ||
4129 | 1759 | .bs3 .help-block { | ||
4130 | 1760 | display: block; | ||
4131 | 1761 | margin-top: 5px; | ||
4132 | 1762 | margin-bottom: 10px; | ||
4133 | 1763 | color: #737373; | ||
4134 | 1764 | } | ||
4135 | 1765 | @media (min-width: 768px) { | ||
4136 | 1766 | .bs3 .form-inline .form-group { | ||
4137 | 1767 | display: inline-block; | ||
4138 | 1768 | margin-bottom: 0; | ||
4139 | 1769 | vertical-align: middle; | ||
4140 | 1770 | } | ||
4141 | 1771 | .bs3 .form-inline .form-control { | ||
4142 | 1772 | display: inline-block; | ||
4143 | 1773 | } | ||
4144 | 1774 | .bs3 .form-inline .radio, | ||
4145 | 1775 | .bs3 .form-inline .checkbox { | ||
4146 | 1776 | display: inline-block; | ||
4147 | 1777 | margin-top: 0; | ||
4148 | 1778 | margin-bottom: 0; | ||
4149 | 1779 | padding-left: 0; | ||
4150 | 1780 | } | ||
4151 | 1781 | .bs3 .form-inline .radio input[type="radio"], | ||
4152 | 1782 | .bs3 .form-inline .checkbox input[type="checkbox"] { | ||
4153 | 1783 | float: none; | ||
4154 | 1784 | margin-left: 0; | ||
4155 | 1785 | } | ||
4156 | 1786 | } | ||
4157 | 1787 | .bs3 .form-horizontal .control-label, | ||
4158 | 1788 | .bs3 .form-horizontal .radio, | ||
4159 | 1789 | .bs3 .form-horizontal .checkbox, | ||
4160 | 1790 | .bs3 .form-horizontal .radio-inline, | ||
4161 | 1791 | .bs3 .form-horizontal .checkbox-inline { | ||
4162 | 1792 | margin-top: 0; | ||
4163 | 1793 | margin-bottom: 0; | ||
4164 | 1794 | padding-top: 7px; | ||
4165 | 1795 | } | ||
4166 | 1796 | .bs3 .form-horizontal .form-group { | ||
4167 | 1797 | margin-left: -15px; | ||
4168 | 1798 | margin-right: -15px; | ||
4169 | 1799 | } | ||
4170 | 1800 | .bs3 .form-horizontal .form-group:before, | ||
4171 | 1801 | .bs3 .form-horizontal .form-group:after { | ||
4172 | 1802 | content: " "; | ||
4173 | 1803 | /* 1 */ | ||
4174 | 1804 | |||
4175 | 1805 | display: table; | ||
4176 | 1806 | /* 2 */ | ||
4177 | 1807 | |||
4178 | 1808 | } | ||
4179 | 1809 | .bs3 .form-horizontal .form-group:after { | ||
4180 | 1810 | clear: both; | ||
4181 | 1811 | } | ||
4182 | 1812 | .bs3 .form-horizontal .form-group:before, | ||
4183 | 1813 | .bs3 .form-horizontal .form-group:after { | ||
4184 | 1814 | content: " "; | ||
4185 | 1815 | /* 1 */ | ||
4186 | 1816 | |||
4187 | 1817 | display: table; | ||
4188 | 1818 | /* 2 */ | ||
4189 | 1819 | |||
4190 | 1820 | } | ||
4191 | 1821 | .bs3 .form-horizontal .form-group:after { | ||
4192 | 1822 | clear: both; | ||
4193 | 1823 | } | ||
4194 | 1824 | @media (min-width: 768px) { | ||
4195 | 1825 | .bs3 .form-horizontal .control-label { | ||
4196 | 1826 | text-align: right; | ||
4197 | 1827 | } | ||
4198 | 1828 | } | ||
4199 | 1829 | .bs3 .btn { | ||
4200 | 1830 | display: inline-block; | ||
4201 | 1831 | padding: 6px 12px; | ||
4202 | 1832 | margin-bottom: 0; | ||
4203 | 1833 | font-size: 14px; | ||
4204 | 1834 | font-weight: normal; | ||
4205 | 1835 | line-height: 1.428571429; | ||
4206 | 1836 | text-align: center; | ||
4207 | 1837 | vertical-align: middle; | ||
4208 | 1838 | cursor: pointer; | ||
4209 | 1839 | background-image: none; | ||
4210 | 1840 | border: 1px solid transparent; | ||
4211 | 1841 | border-radius: 4px; | ||
4212 | 1842 | white-space: nowrap; | ||
4213 | 1843 | -webkit-user-select: none; | ||
4214 | 1844 | -moz-user-select: none; | ||
4215 | 1845 | -ms-user-select: none; | ||
4216 | 1846 | -o-user-select: none; | ||
4217 | 1847 | user-select: none; | ||
4218 | 1848 | } | ||
4219 | 1849 | .bs3 .btn:focus { | ||
4220 | 1850 | outline: thin dotted #333; | ||
4221 | 1851 | outline: 5px auto -webkit-focus-ring-color; | ||
4222 | 1852 | outline-offset: -2px; | ||
4223 | 1853 | } | ||
4224 | 1854 | .bs3 .btn:hover, | ||
4225 | 1855 | .bs3 .btn:focus { | ||
4226 | 1856 | color: #333333; | ||
4227 | 1857 | text-decoration: none; | ||
4228 | 1858 | } | ||
4229 | 1859 | .bs3 .btn:active, | ||
4230 | 1860 | .bs3 .btn.active { | ||
4231 | 1861 | outline: 0; | ||
4232 | 1862 | background-image: none; | ||
4233 | 1863 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); | ||
4234 | 1864 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); | ||
4235 | 1865 | } | ||
4236 | 1866 | .bs3 .btn.disabled, | ||
4237 | 1867 | .bs3 .btn[disabled], | ||
4238 | 1868 | fieldset[disabled] .bs3 .btn { | ||
4239 | 1869 | cursor: not-allowed; | ||
4240 | 1870 | pointer-events: none; | ||
4241 | 1871 | opacity: 0.65; | ||
4242 | 1872 | filter: alpha(opacity=65); | ||
4243 | 1873 | -webkit-box-shadow: none; | ||
4244 | 1874 | box-shadow: none; | ||
4245 | 1875 | } | ||
4246 | 1876 | .bs3 .btn-default { | ||
4247 | 1877 | color: #333333; | ||
4248 | 1878 | background-color: #ffffff; | ||
4249 | 1879 | border-color: #cccccc; | ||
4250 | 1880 | } | ||
4251 | 1881 | .bs3 .btn-default:hover, | ||
4252 | 1882 | .bs3 .btn-default:focus, | ||
4253 | 1883 | .bs3 .btn-default:active, | ||
4254 | 1884 | .bs3 .btn-default.active, | ||
4255 | 1885 | .open .dropdown-toggle.bs3 .btn-default { | ||
4256 | 1886 | color: #333333; | ||
4257 | 1887 | background-color: #ebebeb; | ||
4258 | 1888 | border-color: #adadad; | ||
4259 | 1889 | } | ||
4260 | 1890 | .bs3 .btn-default:active, | ||
4261 | 1891 | .bs3 .btn-default.active, | ||
4262 | 1892 | .open .dropdown-toggle.bs3 .btn-default { | ||
4263 | 1893 | background-image: none; | ||
4264 | 1894 | } | ||
4265 | 1895 | .bs3 .btn-default.disabled, | ||
4266 | 1896 | .bs3 .btn-default[disabled], | ||
4267 | 1897 | fieldset[disabled] .bs3 .btn-default, | ||
4268 | 1898 | .bs3 .btn-default.disabled:hover, | ||
4269 | 1899 | .bs3 .btn-default[disabled]:hover, | ||
4270 | 1900 | fieldset[disabled] .bs3 .btn-default:hover, | ||
4271 | 1901 | .bs3 .btn-default.disabled:focus, | ||
4272 | 1902 | .bs3 .btn-default[disabled]:focus, | ||
4273 | 1903 | fieldset[disabled] .bs3 .btn-default:focus, | ||
4274 | 1904 | .bs3 .btn-default.disabled:active, | ||
4275 | 1905 | .bs3 .btn-default[disabled]:active, | ||
4276 | 1906 | fieldset[disabled] .bs3 .btn-default:active, | ||
4277 | 1907 | .bs3 .btn-default.disabled.active, | ||
4278 | 1908 | .bs3 .btn-default[disabled].active, | ||
4279 | 1909 | fieldset[disabled] .bs3 .btn-default.active { | ||
4280 | 1910 | background-color: #ffffff; | ||
4281 | 1911 | border-color: #cccccc; | ||
4282 | 1912 | } | ||
4283 | 1913 | .bs3 .btn-primary { | ||
4284 | 1914 | color: #ffffff; | ||
4285 | 1915 | background-color: #428bca; | ||
4286 | 1916 | border-color: #357ebd; | ||
4287 | 1917 | } | ||
4288 | 1918 | .bs3 .btn-primary:hover, | ||
4289 | 1919 | .bs3 .btn-primary:focus, | ||
4290 | 1920 | .bs3 .btn-primary:active, | ||
4291 | 1921 | .bs3 .btn-primary.active, | ||
4292 | 1922 | .open .dropdown-toggle.bs3 .btn-primary { | ||
4293 | 1923 | color: #ffffff; | ||
4294 | 1924 | background-color: #3276b1; | ||
4295 | 1925 | border-color: #285e8e; | ||
4296 | 1926 | } | ||
4297 | 1927 | .bs3 .btn-primary:active, | ||
4298 | 1928 | .bs3 .btn-primary.active, | ||
4299 | 1929 | .open .dropdown-toggle.bs3 .btn-primary { | ||
4300 | 1930 | background-image: none; | ||
4301 | 1931 | } | ||
4302 | 1932 | .bs3 .btn-primary.disabled, | ||
4303 | 1933 | .bs3 .btn-primary[disabled], | ||
4304 | 1934 | fieldset[disabled] .bs3 .btn-primary, | ||
4305 | 1935 | .bs3 .btn-primary.disabled:hover, | ||
4306 | 1936 | .bs3 .btn-primary[disabled]:hover, | ||
4307 | 1937 | fieldset[disabled] .bs3 .btn-primary:hover, | ||
4308 | 1938 | .bs3 .btn-primary.disabled:focus, | ||
4309 | 1939 | .bs3 .btn-primary[disabled]:focus, | ||
4310 | 1940 | fieldset[disabled] .bs3 .btn-primary:focus, | ||
4311 | 1941 | .bs3 .btn-primary.disabled:active, | ||
4312 | 1942 | .bs3 .btn-primary[disabled]:active, | ||
4313 | 1943 | fieldset[disabled] .bs3 .btn-primary:active, | ||
4314 | 1944 | .bs3 .btn-primary.disabled.active, | ||
4315 | 1945 | .bs3 .btn-primary[disabled].active, | ||
4316 | 1946 | fieldset[disabled] .bs3 .btn-primary.active { | ||
4317 | 1947 | background-color: #428bca; | ||
4318 | 1948 | border-color: #357ebd; | ||
4319 | 1949 | } | ||
4320 | 1950 | .bs3 .btn-warning { | ||
4321 | 1951 | color: #ffffff; | ||
4322 | 1952 | background-color: #f0ad4e; | ||
4323 | 1953 | border-color: #eea236; | ||
4324 | 1954 | } | ||
4325 | 1955 | .bs3 .btn-warning:hover, | ||
4326 | 1956 | .bs3 .btn-warning:focus, | ||
4327 | 1957 | .bs3 .btn-warning:active, | ||
4328 | 1958 | .bs3 .btn-warning.active, | ||
4329 | 1959 | .open .dropdown-toggle.bs3 .btn-warning { | ||
4330 | 1960 | color: #ffffff; | ||
4331 | 1961 | background-color: #ed9c28; | ||
4332 | 1962 | border-color: #d58512; | ||
4333 | 1963 | } | ||
4334 | 1964 | .bs3 .btn-warning:active, | ||
4335 | 1965 | .bs3 .btn-warning.active, | ||
4336 | 1966 | .open .dropdown-toggle.bs3 .btn-warning { | ||
4337 | 1967 | background-image: none; | ||
4338 | 1968 | } | ||
4339 | 1969 | .bs3 .btn-warning.disabled, | ||
4340 | 1970 | .bs3 .btn-warning[disabled], | ||
4341 | 1971 | fieldset[disabled] .bs3 .btn-warning, | ||
4342 | 1972 | .bs3 .btn-warning.disabled:hover, | ||
4343 | 1973 | .bs3 .btn-warning[disabled]:hover, | ||
4344 | 1974 | fieldset[disabled] .bs3 .btn-warning:hover, | ||
4345 | 1975 | .bs3 .btn-warning.disabled:focus, | ||
4346 | 1976 | .bs3 .btn-warning[disabled]:focus, | ||
4347 | 1977 | fieldset[disabled] .bs3 .btn-warning:focus, | ||
4348 | 1978 | .bs3 .btn-warning.disabled:active, | ||
4349 | 1979 | .bs3 .btn-warning[disabled]:active, | ||
4350 | 1980 | fieldset[disabled] .bs3 .btn-warning:active, | ||
4351 | 1981 | .bs3 .btn-warning.disabled.active, | ||
4352 | 1982 | .bs3 .btn-warning[disabled].active, | ||
4353 | 1983 | fieldset[disabled] .bs3 .btn-warning.active { | ||
4354 | 1984 | background-color: #f0ad4e; | ||
4355 | 1985 | border-color: #eea236; | ||
4356 | 1986 | } | ||
4357 | 1987 | .bs3 .btn-danger { | ||
4358 | 1988 | color: #ffffff; | ||
4359 | 1989 | background-color: #d9534f; | ||
4360 | 1990 | border-color: #d43f3a; | ||
4361 | 1991 | } | ||
4362 | 1992 | .bs3 .btn-danger:hover, | ||
4363 | 1993 | .bs3 .btn-danger:focus, | ||
4364 | 1994 | .bs3 .btn-danger:active, | ||
4365 | 1995 | .bs3 .btn-danger.active, | ||
4366 | 1996 | .open .dropdown-toggle.bs3 .btn-danger { | ||
4367 | 1997 | color: #ffffff; | ||
4368 | 1998 | background-color: #d2322d; | ||
4369 | 1999 | border-color: #ac2925; | ||
4370 | 2000 | } | ||
4371 | 2001 | .bs3 .btn-danger:active, | ||
4372 | 2002 | .bs3 .btn-danger.active, | ||
4373 | 2003 | .open .dropdown-toggle.bs3 .btn-danger { | ||
4374 | 2004 | background-image: none; | ||
4375 | 2005 | } | ||
4376 | 2006 | .bs3 .btn-danger.disabled, | ||
4377 | 2007 | .bs3 .btn-danger[disabled], | ||
4378 | 2008 | fieldset[disabled] .bs3 .btn-danger, | ||
4379 | 2009 | .bs3 .btn-danger.disabled:hover, | ||
4380 | 2010 | .bs3 .btn-danger[disabled]:hover, | ||
4381 | 2011 | fieldset[disabled] .bs3 .btn-danger:hover, | ||
4382 | 2012 | .bs3 .btn-danger.disabled:focus, | ||
4383 | 2013 | .bs3 .btn-danger[disabled]:focus, | ||
4384 | 2014 | fieldset[disabled] .bs3 .btn-danger:focus, | ||
4385 | 2015 | .bs3 .btn-danger.disabled:active, | ||
4386 | 2016 | .bs3 .btn-danger[disabled]:active, | ||
4387 | 2017 | fieldset[disabled] .bs3 .btn-danger:active, | ||
4388 | 2018 | .bs3 .btn-danger.disabled.active, | ||
4389 | 2019 | .bs3 .btn-danger[disabled].active, | ||
4390 | 2020 | fieldset[disabled] .bs3 .btn-danger.active { | ||
4391 | 2021 | background-color: #d9534f; | ||
4392 | 2022 | border-color: #d43f3a; | ||
4393 | 2023 | } | ||
4394 | 2024 | .bs3 .btn-success { | ||
4395 | 2025 | color: #ffffff; | ||
4396 | 2026 | background-color: #5cb85c; | ||
4397 | 2027 | border-color: #4cae4c; | ||
4398 | 2028 | } | ||
4399 | 2029 | .bs3 .btn-success:hover, | ||
4400 | 2030 | .bs3 .btn-success:focus, | ||
4401 | 2031 | .bs3 .btn-success:active, | ||
4402 | 2032 | .bs3 .btn-success.active, | ||
4403 | 2033 | .open .dropdown-toggle.bs3 .btn-success { | ||
4404 | 2034 | color: #ffffff; | ||
4405 | 2035 | background-color: #47a447; | ||
4406 | 2036 | border-color: #398439; | ||
4407 | 2037 | } | ||
4408 | 2038 | .bs3 .btn-success:active, | ||
4409 | 2039 | .bs3 .btn-success.active, | ||
4410 | 2040 | .open .dropdown-toggle.bs3 .btn-success { | ||
4411 | 2041 | background-image: none; | ||
4412 | 2042 | } | ||
4413 | 2043 | .bs3 .btn-success.disabled, | ||
4414 | 2044 | .bs3 .btn-success[disabled], | ||
4415 | 2045 | fieldset[disabled] .bs3 .btn-success, | ||
4416 | 2046 | .bs3 .btn-success.disabled:hover, | ||
4417 | 2047 | .bs3 .btn-success[disabled]:hover, | ||
4418 | 2048 | fieldset[disabled] .bs3 .btn-success:hover, | ||
4419 | 2049 | .bs3 .btn-success.disabled:focus, | ||
4420 | 2050 | .bs3 .btn-success[disabled]:focus, | ||
4421 | 2051 | fieldset[disabled] .bs3 .btn-success:focus, | ||
4422 | 2052 | .bs3 .btn-success.disabled:active, | ||
4423 | 2053 | .bs3 .btn-success[disabled]:active, | ||
4424 | 2054 | fieldset[disabled] .bs3 .btn-success:active, | ||
4425 | 2055 | .bs3 .btn-success.disabled.active, | ||
4426 | 2056 | .bs3 .btn-success[disabled].active, | ||
4427 | 2057 | fieldset[disabled] .bs3 .btn-success.active { | ||
4428 | 2058 | background-color: #5cb85c; | ||
4429 | 2059 | border-color: #4cae4c; | ||
4430 | 2060 | } | ||
4431 | 2061 | .bs3 .btn-info { | ||
4432 | 2062 | color: #ffffff; | ||
4433 | 2063 | background-color: #5bc0de; | ||
4434 | 2064 | border-color: #46b8da; | ||
4435 | 2065 | } | ||
4436 | 2066 | .bs3 .btn-info:hover, | ||
4437 | 2067 | .bs3 .btn-info:focus, | ||
4438 | 2068 | .bs3 .btn-info:active, | ||
4439 | 2069 | .bs3 .btn-info.active, | ||
4440 | 2070 | .open .dropdown-toggle.bs3 .btn-info { | ||
4441 | 2071 | color: #ffffff; | ||
4442 | 2072 | background-color: #39b3d7; | ||
4443 | 2073 | border-color: #269abc; | ||
4444 | 2074 | } | ||
4445 | 2075 | .bs3 .btn-info:active, | ||
4446 | 2076 | .bs3 .btn-info.active, | ||
4447 | 2077 | .open .dropdown-toggle.bs3 .btn-info { | ||
4448 | 2078 | background-image: none; | ||
4449 | 2079 | } | ||
4450 | 2080 | .bs3 .btn-info.disabled, | ||
4451 | 2081 | .bs3 .btn-info[disabled], | ||
4452 | 2082 | fieldset[disabled] .bs3 .btn-info, | ||
4453 | 2083 | .bs3 .btn-info.disabled:hover, | ||
4454 | 2084 | .bs3 .btn-info[disabled]:hover, | ||
4455 | 2085 | fieldset[disabled] .bs3 .btn-info:hover, | ||
4456 | 2086 | .bs3 .btn-info.disabled:focus, | ||
4457 | 2087 | .bs3 .btn-info[disabled]:focus, | ||
4458 | 2088 | fieldset[disabled] .bs3 .btn-info:focus, | ||
4459 | 2089 | .bs3 .btn-info.disabled:active, | ||
4460 | 2090 | .bs3 .btn-info[disabled]:active, | ||
4461 | 2091 | fieldset[disabled] .bs3 .btn-info:active, | ||
4462 | 2092 | .bs3 .btn-info.disabled.active, | ||
4463 | 2093 | .bs3 .btn-info[disabled].active, | ||
4464 | 2094 | fieldset[disabled] .bs3 .btn-info.active { | ||
4465 | 2095 | background-color: #5bc0de; | ||
4466 | 2096 | border-color: #46b8da; | ||
4467 | 2097 | } | ||
4468 | 2098 | .bs3 .btn-link { | ||
4469 | 2099 | color: #428bca; | ||
4470 | 2100 | font-weight: normal; | ||
4471 | 2101 | cursor: pointer; | ||
4472 | 2102 | border-radius: 0; | ||
4473 | 2103 | } | ||
4474 | 2104 | .bs3 .btn-link, | ||
4475 | 2105 | .bs3 .btn-link:active, | ||
4476 | 2106 | .bs3 .btn-link[disabled], | ||
4477 | 2107 | fieldset[disabled] .bs3 .btn-link { | ||
4478 | 2108 | background-color: transparent; | ||
4479 | 2109 | -webkit-box-shadow: none; | ||
4480 | 2110 | box-shadow: none; | ||
4481 | 2111 | } | ||
4482 | 2112 | .bs3 .btn-link, | ||
4483 | 2113 | .bs3 .btn-link:hover, | ||
4484 | 2114 | .bs3 .btn-link:focus, | ||
4485 | 2115 | .bs3 .btn-link:active { | ||
4486 | 2116 | border-color: transparent; | ||
4487 | 2117 | } | ||
4488 | 2118 | .bs3 .btn-link:hover, | ||
4489 | 2119 | .bs3 .btn-link:focus { | ||
4490 | 2120 | color: #2a6496; | ||
4491 | 2121 | text-decoration: underline; | ||
4492 | 2122 | background-color: transparent; | ||
4493 | 2123 | } | ||
4494 | 2124 | .bs3 .btn-link[disabled]:hover, | ||
4495 | 2125 | fieldset[disabled] .bs3 .btn-link:hover, | ||
4496 | 2126 | .bs3 .btn-link[disabled]:focus, | ||
4497 | 2127 | fieldset[disabled] .bs3 .btn-link:focus { | ||
4498 | 2128 | color: #999999; | ||
4499 | 2129 | text-decoration: none; | ||
4500 | 2130 | } | ||
4501 | 2131 | .bs3 .btn-lg { | ||
4502 | 2132 | padding: 10px 16px; | ||
4503 | 2133 | font-size: 18px; | ||
4504 | 2134 | line-height: 1.33; | ||
4505 | 2135 | border-radius: 6px; | ||
4506 | 2136 | } | ||
4507 | 2137 | .bs3 .btn-sm, | ||
4508 | 2138 | .bs3 .btn-xs { | ||
4509 | 2139 | padding: 5px 10px; | ||
4510 | 2140 | font-size: 12px; | ||
4511 | 2141 | line-height: 1.5; | ||
4512 | 2142 | border-radius: 3px; | ||
4513 | 2143 | } | ||
4514 | 2144 | .bs3 .btn-xs { | ||
4515 | 2145 | padding: 1px 5px; | ||
4516 | 2146 | } | ||
4517 | 2147 | .bs3 .btn-block { | ||
4518 | 2148 | display: block; | ||
4519 | 2149 | width: 100%; | ||
4520 | 2150 | padding-left: 0; | ||
4521 | 2151 | padding-right: 0; | ||
4522 | 2152 | } | ||
4523 | 2153 | .bs3 .btn-block + .btn-block { | ||
4524 | 2154 | margin-top: 5px; | ||
4525 | 2155 | } | ||
4526 | 2156 | .bs3 input[type="submit"].btn-block, | ||
4527 | 2157 | .bs3 input[type="reset"].btn-block, | ||
4528 | 2158 | .bs3 input[type="button"].btn-block { | ||
4529 | 2159 | width: 100%; | ||
4530 | 2160 | } | ||
4531 | 2161 | .bs3 .fade { | ||
4532 | 2162 | opacity: 0; | ||
4533 | 2163 | -webkit-transition: opacity 0.15s linear; | ||
4534 | 2164 | transition: opacity 0.15s linear; | ||
4535 | 2165 | } | ||
4536 | 2166 | .bs3 .fade.in { | ||
4537 | 2167 | opacity: 1; | ||
4538 | 2168 | } | ||
4539 | 2169 | .bs3 .collapse { | ||
4540 | 2170 | display: none; | ||
4541 | 2171 | } | ||
4542 | 2172 | .bs3 .collapse.in { | ||
4543 | 2173 | display: block; | ||
4544 | 2174 | } | ||
4545 | 2175 | .bs3 .collapsing { | ||
4546 | 2176 | position: relative; | ||
4547 | 2177 | height: 0; | ||
4548 | 2178 | overflow: hidden; | ||
4549 | 2179 | -webkit-transition: height 0.35s ease; | ||
4550 | 2180 | transition: height 0.35s ease; | ||
4551 | 2181 | } | ||
4552 | 2182 | @font-face { | ||
4553 | 2183 | font-family: 'Glyphicons Halflings'; | ||
4554 | 2184 | src: url('../fonts/glyphicons-halflings-regular.eot'); | ||
4555 | 2185 | src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg'); | ||
4556 | 2186 | } | ||
4557 | 2187 | .bs3 .glyphicon { | ||
4558 | 2188 | position: relative; | ||
4559 | 2189 | top: 1px; | ||
4560 | 2190 | display: inline-block; | ||
4561 | 2191 | font-family: 'Glyphicons Halflings'; | ||
4562 | 2192 | font-style: normal; | ||
4563 | 2193 | font-weight: normal; | ||
4564 | 2194 | line-height: 1; | ||
4565 | 2195 | -webkit-font-smoothing: antialiased; | ||
4566 | 2196 | } | ||
4567 | 2197 | .bs3 .glyphicon:empty { | ||
4568 | 2198 | width: 1em; | ||
4569 | 2199 | } | ||
4570 | 2200 | .bs3 .glyphicon-asterisk:before { | ||
4571 | 2201 | content: "\2a"; | ||
4572 | 2202 | } | ||
4573 | 2203 | .bs3 .glyphicon-plus:before { | ||
4574 | 2204 | content: "\2b"; | ||
4575 | 2205 | } | ||
4576 | 2206 | .bs3 .glyphicon-euro:before { | ||
4577 | 2207 | content: "\20ac"; | ||
4578 | 2208 | } | ||
4579 | 2209 | .bs3 .glyphicon-minus:before { | ||
4580 | 2210 | content: "\2212"; | ||
4581 | 2211 | } | ||
4582 | 2212 | .bs3 .glyphicon-cloud:before { | ||
4583 | 2213 | content: "\2601"; | ||
4584 | 2214 | } | ||
4585 | 2215 | .bs3 .glyphicon-envelope:before { | ||
4586 | 2216 | content: "\2709"; | ||
4587 | 2217 | } | ||
4588 | 2218 | .bs3 .glyphicon-pencil:before { | ||
4589 | 2219 | content: "\270f"; | ||
4590 | 2220 | } | ||
4591 | 2221 | .bs3 .glyphicon-glass:before { | ||
4592 | 2222 | content: "\e001"; | ||
4593 | 2223 | } | ||
4594 | 2224 | .bs3 .glyphicon-music:before { | ||
4595 | 2225 | content: "\e002"; | ||
4596 | 2226 | } | ||
4597 | 2227 | .bs3 .glyphicon-search:before { | ||
4598 | 2228 | content: "\e003"; | ||
4599 | 2229 | } | ||
4600 | 2230 | .bs3 .glyphicon-heart:before { | ||
4601 | 2231 | content: "\e005"; | ||
4602 | 2232 | } | ||
4603 | 2233 | .bs3 .glyphicon-star:before { | ||
4604 | 2234 | content: "\e006"; | ||
4605 | 2235 | } | ||
4606 | 2236 | .bs3 .glyphicon-star-empty:before { | ||
4607 | 2237 | content: "\e007"; | ||
4608 | 2238 | } | ||
4609 | 2239 | .bs3 .glyphicon-user:before { | ||
4610 | 2240 | content: "\e008"; | ||
4611 | 2241 | } | ||
4612 | 2242 | .bs3 .glyphicon-film:before { | ||
4613 | 2243 | content: "\e009"; | ||
4614 | 2244 | } | ||
4615 | 2245 | .bs3 .glyphicon-th-large:before { | ||
4616 | 2246 | content: "\e010"; | ||
4617 | 2247 | } | ||
4618 | 2248 | .bs3 .glyphicon-th:before { | ||
4619 | 2249 | content: "\e011"; | ||
4620 | 2250 | } | ||
4621 | 2251 | .bs3 .glyphicon-th-list:before { | ||
4622 | 2252 | content: "\e012"; | ||
4623 | 2253 | } | ||
4624 | 2254 | .bs3 .glyphicon-ok:before { | ||
4625 | 2255 | content: "\e013"; | ||
4626 | 2256 | } | ||
4627 | 2257 | .bs3 .glyphicon-remove:before { | ||
4628 | 2258 | content: "\e014"; | ||
4629 | 2259 | } | ||
4630 | 2260 | .bs3 .glyphicon-zoom-in:before { | ||
4631 | 2261 | content: "\e015"; | ||
4632 | 2262 | } | ||
4633 | 2263 | .bs3 .glyphicon-zoom-out:before { | ||
4634 | 2264 | content: "\e016"; | ||
4635 | 2265 | } | ||
4636 | 2266 | .bs3 .glyphicon-off:before { | ||
4637 | 2267 | content: "\e017"; | ||
4638 | 2268 | } | ||
4639 | 2269 | .bs3 .glyphicon-signal:before { | ||
4640 | 2270 | content: "\e018"; | ||
4641 | 2271 | } | ||
4642 | 2272 | .bs3 .glyphicon-cog:before { | ||
4643 | 2273 | content: "\e019"; | ||
4644 | 2274 | } | ||
4645 | 2275 | .bs3 .glyphicon-trash:before { | ||
4646 | 2276 | content: "\e020"; | ||
4647 | 2277 | } | ||
4648 | 2278 | .bs3 .glyphicon-home:before { | ||
4649 | 2279 | content: "\e021"; | ||
4650 | 2280 | } | ||
4651 | 2281 | .bs3 .glyphicon-file:before { | ||
4652 | 2282 | content: "\e022"; | ||
4653 | 2283 | } | ||
4654 | 2284 | .bs3 .glyphicon-time:before { | ||
4655 | 2285 | content: "\e023"; | ||
4656 | 2286 | } | ||
4657 | 2287 | .bs3 .glyphicon-road:before { | ||
4658 | 2288 | content: "\e024"; | ||
4659 | 2289 | } | ||
4660 | 2290 | .bs3 .glyphicon-download-alt:before { | ||
4661 | 2291 | content: "\e025"; | ||
4662 | 2292 | } | ||
4663 | 2293 | .bs3 .glyphicon-download:before { | ||
4664 | 2294 | content: "\e026"; | ||
4665 | 2295 | } | ||
4666 | 2296 | .bs3 .glyphicon-upload:before { | ||
4667 | 2297 | content: "\e027"; | ||
4668 | 2298 | } | ||
4669 | 2299 | .bs3 .glyphicon-inbox:before { | ||
4670 | 2300 | content: "\e028"; | ||
4671 | 2301 | } | ||
4672 | 2302 | .bs3 .glyphicon-play-circle:before { | ||
4673 | 2303 | content: "\e029"; | ||
4674 | 2304 | } | ||
4675 | 2305 | .bs3 .glyphicon-repeat:before { | ||
4676 | 2306 | content: "\e030"; | ||
4677 | 2307 | } | ||
4678 | 2308 | .bs3 .glyphicon-refresh:before { | ||
4679 | 2309 | content: "\e031"; | ||
4680 | 2310 | } | ||
4681 | 2311 | .bs3 .glyphicon-list-alt:before { | ||
4682 | 2312 | content: "\e032"; | ||
4683 | 2313 | } | ||
4684 | 2314 | .bs3 .glyphicon-flag:before { | ||
4685 | 2315 | content: "\e034"; | ||
4686 | 2316 | } | ||
4687 | 2317 | .bs3 .glyphicon-headphones:before { | ||
4688 | 2318 | content: "\e035"; | ||
4689 | 2319 | } | ||
4690 | 2320 | .bs3 .glyphicon-volume-off:before { | ||
4691 | 2321 | content: "\e036"; | ||
4692 | 2322 | } | ||
4693 | 2323 | .bs3 .glyphicon-volume-down:before { | ||
4694 | 2324 | content: "\e037"; | ||
4695 | 2325 | } | ||
4696 | 2326 | .bs3 .glyphicon-volume-up:before { | ||
4697 | 2327 | content: "\e038"; | ||
4698 | 2328 | } | ||
4699 | 2329 | .bs3 .glyphicon-qrcode:before { | ||
4700 | 2330 | content: "\e039"; | ||
4701 | 2331 | } | ||
4702 | 2332 | .bs3 .glyphicon-barcode:before { | ||
4703 | 2333 | content: "\e040"; | ||
4704 | 2334 | } | ||
4705 | 2335 | .bs3 .glyphicon-tag:before { | ||
4706 | 2336 | content: "\e041"; | ||
4707 | 2337 | } | ||
4708 | 2338 | .bs3 .glyphicon-tags:before { | ||
4709 | 2339 | content: "\e042"; | ||
4710 | 2340 | } | ||
4711 | 2341 | .bs3 .glyphicon-book:before { | ||
4712 | 2342 | content: "\e043"; | ||
4713 | 2343 | } | ||
4714 | 2344 | .bs3 .glyphicon-print:before { | ||
4715 | 2345 | content: "\e045"; | ||
4716 | 2346 | } | ||
4717 | 2347 | .bs3 .glyphicon-font:before { | ||
4718 | 2348 | content: "\e047"; | ||
4719 | 2349 | } | ||
4720 | 2350 | .bs3 .glyphicon-bold:before { | ||
4721 | 2351 | content: "\e048"; | ||
4722 | 2352 | } | ||
4723 | 2353 | .bs3 .glyphicon-italic:before { | ||
4724 | 2354 | content: "\e049"; | ||
4725 | 2355 | } | ||
4726 | 2356 | .bs3 .glyphicon-text-height:before { | ||
4727 | 2357 | content: "\e050"; | ||
4728 | 2358 | } | ||
4729 | 2359 | .bs3 .glyphicon-text-width:before { | ||
4730 | 2360 | content: "\e051"; | ||
4731 | 2361 | } | ||
4732 | 2362 | .bs3 .glyphicon-align-left:before { | ||
4733 | 2363 | content: "\e052"; | ||
4734 | 2364 | } | ||
4735 | 2365 | .bs3 .glyphicon-align-center:before { | ||
4736 | 2366 | content: "\e053"; | ||
4737 | 2367 | } | ||
4738 | 2368 | .bs3 .glyphicon-align-right:before { | ||
4739 | 2369 | content: "\e054"; | ||
4740 | 2370 | } | ||
4741 | 2371 | .bs3 .glyphicon-align-justify:before { | ||
4742 | 2372 | content: "\e055"; | ||
4743 | 2373 | } | ||
4744 | 2374 | .bs3 .glyphicon-list:before { | ||
4745 | 2375 | content: "\e056"; | ||
4746 | 2376 | } | ||
4747 | 2377 | .bs3 .glyphicon-indent-left:before { | ||
4748 | 2378 | content: "\e057"; | ||
4749 | 2379 | } | ||
4750 | 2380 | .bs3 .glyphicon-indent-right:before { | ||
4751 | 2381 | content: "\e058"; | ||
4752 | 2382 | } | ||
4753 | 2383 | .bs3 .glyphicon-facetime-video:before { | ||
4754 | 2384 | content: "\e059"; | ||
4755 | 2385 | } | ||
4756 | 2386 | .bs3 .glyphicon-picture:before { | ||
4757 | 2387 | content: "\e060"; | ||
4758 | 2388 | } | ||
4759 | 2389 | .bs3 .glyphicon-map-marker:before { | ||
4760 | 2390 | content: "\e062"; | ||
4761 | 2391 | } | ||
4762 | 2392 | .bs3 .glyphicon-adjust:before { | ||
4763 | 2393 | content: "\e063"; | ||
4764 | 2394 | } | ||
4765 | 2395 | .bs3 .glyphicon-tint:before { | ||
4766 | 2396 | content: "\e064"; | ||
4767 | 2397 | } | ||
4768 | 2398 | .bs3 .glyphicon-edit:before { | ||
4769 | 2399 | content: "\e065"; | ||
4770 | 2400 | } | ||
4771 | 2401 | .bs3 .glyphicon-share:before { | ||
4772 | 2402 | content: "\e066"; | ||
4773 | 2403 | } | ||
4774 | 2404 | .bs3 .glyphicon-check:before { | ||
4775 | 2405 | content: "\e067"; | ||
4776 | 2406 | } | ||
4777 | 2407 | .bs3 .glyphicon-move:before { | ||
4778 | 2408 | content: "\e068"; | ||
4779 | 2409 | } | ||
4780 | 2410 | .bs3 .glyphicon-step-backward:before { | ||
4781 | 2411 | content: "\e069"; | ||
4782 | 2412 | } | ||
4783 | 2413 | .bs3 .glyphicon-fast-backward:before { | ||
4784 | 2414 | content: "\e070"; | ||
4785 | 2415 | } | ||
4786 | 2416 | .bs3 .glyphicon-backward:before { | ||
4787 | 2417 | content: "\e071"; | ||
4788 | 2418 | } | ||
4789 | 2419 | .bs3 .glyphicon-play:before { | ||
4790 | 2420 | content: "\e072"; | ||
4791 | 2421 | } | ||
4792 | 2422 | .bs3 .glyphicon-pause:before { | ||
4793 | 2423 | content: "\e073"; | ||
4794 | 2424 | } | ||
4795 | 2425 | .bs3 .glyphicon-stop:before { | ||
4796 | 2426 | content: "\e074"; | ||
4797 | 2427 | } | ||
4798 | 2428 | .bs3 .glyphicon-forward:before { | ||
4799 | 2429 | content: "\e075"; | ||
4800 | 2430 | } | ||
4801 | 2431 | .bs3 .glyphicon-fast-forward:before { | ||
4802 | 2432 | content: "\e076"; | ||
4803 | 2433 | } | ||
4804 | 2434 | .bs3 .glyphicon-step-forward:before { | ||
4805 | 2435 | content: "\e077"; | ||
4806 | 2436 | } | ||
4807 | 2437 | .bs3 .glyphicon-eject:before { | ||
4808 | 2438 | content: "\e078"; | ||
4809 | 2439 | } | ||
4810 | 2440 | .bs3 .glyphicon-chevron-left:before { | ||
4811 | 2441 | content: "\e079"; | ||
4812 | 2442 | } | ||
4813 | 2443 | .bs3 .glyphicon-chevron-right:before { | ||
4814 | 2444 | content: "\e080"; | ||
4815 | 2445 | } | ||
4816 | 2446 | .bs3 .glyphicon-plus-sign:before { | ||
4817 | 2447 | content: "\e081"; | ||
4818 | 2448 | } | ||
4819 | 2449 | .bs3 .glyphicon-minus-sign:before { | ||
4820 | 2450 | content: "\e082"; | ||
4821 | 2451 | } | ||
4822 | 2452 | .bs3 .glyphicon-remove-sign:before { | ||
4823 | 2453 | content: "\e083"; | ||
4824 | 2454 | } | ||
4825 | 2455 | .bs3 .glyphicon-ok-sign:before { | ||
4826 | 2456 | content: "\e084"; | ||
4827 | 2457 | } | ||
4828 | 2458 | .bs3 .glyphicon-question-sign:before { | ||
4829 | 2459 | content: "\e085"; | ||
4830 | 2460 | } | ||
4831 | 2461 | .bs3 .glyphicon-info-sign:before { | ||
4832 | 2462 | content: "\e086"; | ||
4833 | 2463 | } | ||
4834 | 2464 | .bs3 .glyphicon-screenshot:before { | ||
4835 | 2465 | content: "\e087"; | ||
4836 | 2466 | } | ||
4837 | 2467 | .bs3 .glyphicon-remove-circle:before { | ||
4838 | 2468 | content: "\e088"; | ||
4839 | 2469 | } | ||
4840 | 2470 | .bs3 .glyphicon-ok-circle:before { | ||
4841 | 2471 | content: "\e089"; | ||
4842 | 2472 | } | ||
4843 | 2473 | .bs3 .glyphicon-ban-circle:before { | ||
4844 | 2474 | content: "\e090"; | ||
4845 | 2475 | } | ||
4846 | 2476 | .bs3 .glyphicon-arrow-left:before { | ||
4847 | 2477 | content: "\e091"; | ||
4848 | 2478 | } | ||
4849 | 2479 | .bs3 .glyphicon-arrow-right:before { | ||
4850 | 2480 | content: "\e092"; | ||
4851 | 2481 | } | ||
4852 | 2482 | .bs3 .glyphicon-arrow-up:before { | ||
4853 | 2483 | content: "\e093"; | ||
4854 | 2484 | } | ||
4855 | 2485 | .bs3 .glyphicon-arrow-down:before { | ||
4856 | 2486 | content: "\e094"; | ||
4857 | 2487 | } | ||
4858 | 2488 | .bs3 .glyphicon-share-alt:before { | ||
4859 | 2489 | content: "\e095"; | ||
4860 | 2490 | } | ||
4861 | 2491 | .bs3 .glyphicon-resize-full:before { | ||
4862 | 2492 | content: "\e096"; | ||
4863 | 2493 | } | ||
4864 | 2494 | .bs3 .glyphicon-resize-small:before { | ||
4865 | 2495 | content: "\e097"; | ||
4866 | 2496 | } | ||
4867 | 2497 | .bs3 .glyphicon-exclamation-sign:before { | ||
4868 | 2498 | content: "\e101"; | ||
4869 | 2499 | } | ||
4870 | 2500 | .bs3 .glyphicon-gift:before { | ||
4871 | 2501 | content: "\e102"; | ||
4872 | 2502 | } | ||
4873 | 2503 | .bs3 .glyphicon-leaf:before { | ||
4874 | 2504 | content: "\e103"; | ||
4875 | 2505 | } | ||
4876 | 2506 | .bs3 .glyphicon-eye-open:before { | ||
4877 | 2507 | content: "\e105"; | ||
4878 | 2508 | } | ||
4879 | 2509 | .bs3 .glyphicon-eye-close:before { | ||
4880 | 2510 | content: "\e106"; | ||
4881 | 2511 | } | ||
4882 | 2512 | .bs3 .glyphicon-warning-sign:before { | ||
4883 | 2513 | content: "\e107"; | ||
4884 | 2514 | } | ||
4885 | 2515 | .bs3 .glyphicon-plane:before { | ||
4886 | 2516 | content: "\e108"; | ||
4887 | 2517 | } | ||
4888 | 2518 | .bs3 .glyphicon-random:before { | ||
4889 | 2519 | content: "\e110"; | ||
4890 | 2520 | } | ||
4891 | 2521 | .bs3 .glyphicon-comment:before { | ||
4892 | 2522 | content: "\e111"; | ||
4893 | 2523 | } | ||
4894 | 2524 | .bs3 .glyphicon-magnet:before { | ||
4895 | 2525 | content: "\e112"; | ||
4896 | 2526 | } | ||
4897 | 2527 | .bs3 .glyphicon-chevron-up:before { | ||
4898 | 2528 | content: "\e113"; | ||
4899 | 2529 | } | ||
4900 | 2530 | .bs3 .glyphicon-chevron-down:before { | ||
4901 | 2531 | content: "\e114"; | ||
4902 | 2532 | } | ||
4903 | 2533 | .bs3 .glyphicon-retweet:before { | ||
4904 | 2534 | content: "\e115"; | ||
4905 | 2535 | } | ||
4906 | 2536 | .bs3 .glyphicon-shopping-cart:before { | ||
4907 | 2537 | content: "\e116"; | ||
4908 | 2538 | } | ||
4909 | 2539 | .bs3 .glyphicon-folder-close:before { | ||
4910 | 2540 | content: "\e117"; | ||
4911 | 2541 | } | ||
4912 | 2542 | .bs3 .glyphicon-folder-open:before { | ||
4913 | 2543 | content: "\e118"; | ||
4914 | 2544 | } | ||
4915 | 2545 | .bs3 .glyphicon-resize-vertical:before { | ||
4916 | 2546 | content: "\e119"; | ||
4917 | 2547 | } | ||
4918 | 2548 | .bs3 .glyphicon-resize-horizontal:before { | ||
4919 | 2549 | content: "\e120"; | ||
4920 | 2550 | } | ||
4921 | 2551 | .bs3 .glyphicon-hdd:before { | ||
4922 | 2552 | content: "\e121"; | ||
4923 | 2553 | } | ||
4924 | 2554 | .bs3 .glyphicon-bullhorn:before { | ||
4925 | 2555 | content: "\e122"; | ||
4926 | 2556 | } | ||
4927 | 2557 | .bs3 .glyphicon-certificate:before { | ||
4928 | 2558 | content: "\e124"; | ||
4929 | 2559 | } | ||
4930 | 2560 | .bs3 .glyphicon-thumbs-up:before { | ||
4931 | 2561 | content: "\e125"; | ||
4932 | 2562 | } | ||
4933 | 2563 | .bs3 .glyphicon-thumbs-down:before { | ||
4934 | 2564 | content: "\e126"; | ||
4935 | 2565 | } | ||
4936 | 2566 | .bs3 .glyphicon-hand-right:before { | ||
4937 | 2567 | content: "\e127"; | ||
4938 | 2568 | } | ||
4939 | 2569 | .bs3 .glyphicon-hand-left:before { | ||
4940 | 2570 | content: "\e128"; | ||
4941 | 2571 | } | ||
4942 | 2572 | .bs3 .glyphicon-hand-up:before { | ||
4943 | 2573 | content: "\e129"; | ||
4944 | 2574 | } | ||
4945 | 2575 | .bs3 .glyphicon-hand-down:before { | ||
4946 | 2576 | content: "\e130"; | ||
4947 | 2577 | } | ||
4948 | 2578 | .bs3 .glyphicon-circle-arrow-right:before { | ||
4949 | 2579 | content: "\e131"; | ||
4950 | 2580 | } | ||
4951 | 2581 | .bs3 .glyphicon-circle-arrow-left:before { | ||
4952 | 2582 | content: "\e132"; | ||
4953 | 2583 | } | ||
4954 | 2584 | .bs3 .glyphicon-circle-arrow-up:before { | ||
4955 | 2585 | content: "\e133"; | ||
4956 | 2586 | } | ||
4957 | 2587 | .bs3 .glyphicon-circle-arrow-down:before { | ||
4958 | 2588 | content: "\e134"; | ||
4959 | 2589 | } | ||
4960 | 2590 | .bs3 .glyphicon-globe:before { | ||
4961 | 2591 | content: "\e135"; | ||
4962 | 2592 | } | ||
4963 | 2593 | .bs3 .glyphicon-tasks:before { | ||
4964 | 2594 | content: "\e137"; | ||
4965 | 2595 | } | ||
4966 | 2596 | .bs3 .glyphicon-filter:before { | ||
4967 | 2597 | content: "\e138"; | ||
4968 | 2598 | } | ||
4969 | 2599 | .bs3 .glyphicon-fullscreen:before { | ||
4970 | 2600 | content: "\e140"; | ||
4971 | 2601 | } | ||
4972 | 2602 | .bs3 .glyphicon-dashboard:before { | ||
4973 | 2603 | content: "\e141"; | ||
4974 | 2604 | } | ||
4975 | 2605 | .bs3 .glyphicon-heart-empty:before { | ||
4976 | 2606 | content: "\e143"; | ||
4977 | 2607 | } | ||
4978 | 2608 | .bs3 .glyphicon-link:before { | ||
4979 | 2609 | content: "\e144"; | ||
4980 | 2610 | } | ||
4981 | 2611 | .bs3 .glyphicon-phone:before { | ||
4982 | 2612 | content: "\e145"; | ||
4983 | 2613 | } | ||
4984 | 2614 | .bs3 .glyphicon-usd:before { | ||
4985 | 2615 | content: "\e148"; | ||
4986 | 2616 | } | ||
4987 | 2617 | .bs3 .glyphicon-gbp:before { | ||
4988 | 2618 | content: "\e149"; | ||
4989 | 2619 | } | ||
4990 | 2620 | .bs3 .glyphicon-sort:before { | ||
4991 | 2621 | content: "\e150"; | ||
4992 | 2622 | } | ||
4993 | 2623 | .bs3 .glyphicon-sort-by-alphabet:before { | ||
4994 | 2624 | content: "\e151"; | ||
4995 | 2625 | } | ||
4996 | 2626 | .bs3 .glyphicon-sort-by-alphabet-alt:before { | ||
4997 | 2627 | content: "\e152"; | ||
4998 | 2628 | } | ||
4999 | 2629 | .bs3 .glyphicon-sort-by-order:before { | ||
5000 | 2630 | content: "\e153"; |
Hi, Oscar, thanks for the MP. Could you please clean MP with only the module web_hideleftmenu?
Regards.