diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index 7cbf0b27036..0ef39d5884d 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -588,7 +588,7 @@
+ '|',('customer','=',True),('supplier','=',True)]" context="{'default_supplier': 1}"/>
diff --git a/addons/account_cancel/i18n/bs.po b/addons/account_cancel/i18n/bs.po
index 7e816663ac3..633fbd8a3aa 100644
--- a/addons/account_cancel/i18n/bs.po
+++ b/addons/account_cancel/i18n/bs.po
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2010-09-29 11:28+0000\n"
-"Last-Translator: OpenERP Administrators \n"
+"PO-Revision-Date: 2014-02-18 16:35+0000\n"
+"Last-Translator: Boško Stojaković \n"
"Language-Team: Bosnian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-01-28 06:28+0000\n"
-"X-Generator: Launchpad (build 16914)\n"
+"X-Launchpad-Export-Date: 2014-02-19 05:23+0000\n"
+"X-Generator: Launchpad (build 16916)\n"
#. module: account_cancel
#: view:account.invoice:0
msgid "Cancel"
-msgstr ""
+msgstr "Otkaži"
#~ msgid "Account Cancel"
#~ msgstr "Računovodstvo - povrat"
diff --git a/addons/account_followup/i18n/fi.po b/addons/account_followup/i18n/fi.po
index 5397bf50cdd..90c26ac222e 100644
--- a/addons/account_followup/i18n/fi.po
+++ b/addons/account_followup/i18n/fi.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2011-11-11 15:21+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2014-02-16 20:38+0000\n"
+"Last-Translator: Harri Luuppala \n"
"Language-Team: Finnish \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-01-28 05:51+0000\n"
-"X-Generator: Launchpad (build 16914)\n"
+"X-Launchpad-Export-Date: 2014-02-17 05:38+0000\n"
+"X-Generator: Launchpad (build 16916)\n"
#. module: account_followup
#: model:email.template,subject:account_followup.email_template_account_followup_default
@@ -55,12 +55,12 @@ msgstr ""
#: view:account_followup.followup.line:0
#: field:account_followup.followup.line,manual_action:0
msgid "Manual Action"
-msgstr ""
+msgstr "Manuaalinen toimenpide"
#. module: account_followup
#: field:account_followup.sending.results,needprinting:0
msgid "Needs Printing"
-msgstr ""
+msgstr "Odottaa tulostusta"
#. module: account_followup
#: view:res.partner:0
diff --git a/addons/base_iban/base_iban_data.xml b/addons/base_iban/base_iban_data.xml
index eafc8dfcff8..e4f520db4d5 100644
--- a/addons/base_iban/base_iban_data.xml
+++ b/addons/base_iban/base_iban_data.xml
@@ -13,7 +13,7 @@
bank_bic
-
+
diff --git a/addons/event_sale/i18n/fi.po b/addons/event_sale/i18n/fi.po
new file mode 100644
index 00000000000..0220b172e4d
--- /dev/null
+++ b/addons/event_sale/i18n/fi.po
@@ -0,0 +1,94 @@
+# Finnish translation for openobject-addons
+# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:05+0000\n"
+"PO-Revision-Date: 2014-02-18 20:10+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Finnish \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2014-02-19 05:23+0000\n"
+"X-Generator: Launchpad (build 16916)\n"
+
+#. module: event_sale
+#: model:ir.model,name:event_sale.model_product_product
+msgid "Product"
+msgstr "Tuote"
+
+#. module: event_sale
+#: help:product.product,event_ok:0
+msgid ""
+"Determine if a product needs to create automatically an event registration "
+"at the confirmation of a sales order line."
+msgstr ""
+
+#. module: event_sale
+#: help:sale.order.line,event_id:0
+msgid ""
+"Choose an event and it will automatically create a registration for this "
+"event."
+msgstr ""
+"Valitse tapahtuma ja se luo automaattisesti rekisteröinnin kyseiseen "
+"tapahtumaan."
+
+#. module: event_sale
+#: model:event.event,name:event_sale.event_technical_training
+msgid "Technical training in Grand-Rosiere"
+msgstr ""
+
+#. module: event_sale
+#: help:product.product,event_type_id:0
+msgid ""
+"Select event types so when we use this product in sales order lines, it will "
+"filter events of this type only."
+msgstr ""
+"Valitse tapahtumatyypit, joiden avulla myyntitilausrivillä voidaan suodattaa "
+"vain tämän tyyppiset tapahtumat."
+
+#. module: event_sale
+#: field:product.product,event_type_id:0
+msgid "Type of Event"
+msgstr "Tapahtumatyyppi"
+
+#. module: event_sale
+#: field:sale.order.line,event_ok:0
+msgid "event_ok"
+msgstr ""
+
+#. module: event_sale
+#: field:product.product,event_ok:0
+msgid "Event Subscription"
+msgstr "Tapahtumaan rekisteröityminen"
+
+#. module: event_sale
+#: field:sale.order.line,event_type_id:0
+msgid "Event Type"
+msgstr "Tapahtumatyyppi"
+
+#. module: event_sale
+#: model:product.template,name:event_sale.event_product_product_template
+msgid "Technical Training"
+msgstr "Tekninen koulutus"
+
+#. module: event_sale
+#: code:addons/event_sale/event_sale.py:88
+#, python-format
+msgid "The registration %s has been created from the Sales Order %s."
+msgstr "Rekisteröinti %s on luotu myyntitilaukselta %s."
+
+#. module: event_sale
+#: field:sale.order.line,event_id:0
+msgid "Event"
+msgstr "Tapahtuma"
+
+#. module: event_sale
+#: model:ir.model,name:event_sale.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Myyntitilausrivi"
diff --git a/addons/fleet/fleet.py b/addons/fleet/fleet.py
index 2750485844a..8aea73ba405 100644
--- a/addons/fleet/fleet.py
+++ b/addons/fleet/fleet.py
@@ -62,19 +62,8 @@ class fleet_vehicle_cost(osv.Model):
res[record.id] = _('Unknown')
return res
- def _cost_name_get_fnc(self, cr, uid, ids, name, unknow_none, context=None):
- res = {}
- for record in self.browse(cr, uid, ids, context=context):
- name = record.vehicle_id.name
- if record.cost_subtype_id.name:
- name += ' / '+ record.cost_subtype_id.name
- if record.date:
- name += ' / '+ record.date
- res[record.id] = name
- return res
-
_columns = {
- 'name': fields.function(_cost_name_get_fnc, type="char", string='Name', store=True),
+ 'name': fields.related('vehicle_id', 'name', type="char", string='Name', store=True),
'vehicle_id': fields.many2one('fleet.vehicle', 'Vehicle', required=True, help='Vehicle concerned by this log'),
'cost_subtype_id': fields.many2one('fleet.service.type', 'Type', help='Cost type purchased with this cost'),
'amount': fields.float('Total Price'),
diff --git a/addons/fleet/fleet_view.xml b/addons/fleet/fleet_view.xml
index c8929d2b492..d8c47e43b9d 100644
--- a/addons/fleet/fleet_view.xml
+++ b/addons/fleet/fleet_view.xml
@@ -832,6 +832,9 @@
+
Service Types
fleet.service.type
@@ -848,6 +851,17 @@
+
+ fleet.vehicle.cost.tree
+ fleet.vehicle.cost
+
+
+
+
+
+
+
+
fleet.vehicle.cost.graph
@@ -939,31 +953,5 @@
-
diff --git a/addons/hr/hr.py b/addons/hr/hr.py
index 101629482eb..a13a1866493 100644
--- a/addons/hr/hr.py
+++ b/addons/hr/hr.py
@@ -21,6 +21,7 @@
import logging
+from openerp import SUPERUSER_ID
from openerp import tools
from openerp.modules.module import get_module_resource
from openerp.osv import fields, osv
@@ -248,27 +249,46 @@ class hr_employee(osv.osv):
'color': 0,
}
- def create(self, cr, uid, data, context=None):
- if context is None:
- context = {}
- create_ctx = dict(context, mail_create_nolog=True)
- employee_id = super(hr_employee, self).create(cr, uid, data, context=create_ctx)
+ def _broadcast_welcome(self, cr, uid, employee_id, context=None):
+ """ Broadcast the welcome message to all users in the employee company. """
employee = self.browse(cr, uid, employee_id, context=context)
+ partner_ids = []
+ _model, group_id = self.pool['ir.model.data'].get_object_reference(cr, uid, 'base', 'group_user')
if employee.user_id:
- res_users = self.pool['res.users']
- # send a copy to every user of the company
- # TODO: post to the `Whole Company` mail.group when we'll be able to link to the employee record
- _model, group_id = self.pool['ir.model.data'].get_object_reference(cr, uid, 'base', 'group_user')
- user_ids = res_users.search(cr, uid, [('company_id', '=', employee.user_id.company_id.id),
- ('groups_id', 'in', group_id)])
- partner_ids = list(set(u.partner_id.id for u in res_users.browse(cr, uid, user_ids, context=context)))
+ company_id = employee.user_id.company_id.id
+ elif employee.company_id:
+ company_id = employee.company_id.id
+ elif employee.job_id:
+ company_id = employee.job_id.company_id.id
+ elif employee.department_id:
+ company_id = employee.department_id.company_id.id
else:
- partner_ids = []
- self.message_post(cr, uid, [employee_id],
+ company_id = self.pool['res.company']._company_default_get(cr, uid, 'hr.employee', context=context)
+ res_users = self.pool['res.users']
+ user_ids = res_users.search(
+ cr, SUPERUSER_ID, [
+ ('company_id', '=', company_id),
+ ('groups_id', 'in', group_id)
+ ], context=context)
+ partner_ids = list(set(u.partner_id.id for u in res_users.browse(cr, SUPERUSER_ID, user_ids, context=context)))
+ self.message_post(
+ cr, uid, [employee_id],
body=_('Welcome to %s! Please help him/her take the first steps with OpenERP!') % (employee.name),
partner_ids=partner_ids,
subtype='mail.mt_comment', context=context
)
+ return True
+
+ def create(self, cr, uid, data, context=None):
+ if context is None:
+ context = {}
+ if context.get("mail_broadcast"):
+ context['mail_create_nolog'] = True
+
+ employee_id = super(hr_employee, self).create(cr, uid, data, context=context)
+
+ if context.get("mail_broadcast"):
+ self._broadcast_welcome(cr, uid, employee_id, context=context)
return employee_id
def unlink(self, cr, uid, ids, context=None):
diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py
index c48aa1e9563..e0ca8dfacdc 100644
--- a/addons/hr_recruitment/hr_recruitment.py
+++ b/addons/hr_recruitment/hr_recruitment.py
@@ -452,6 +452,7 @@ class hr_applicant(osv.Model):
contact_name = self.pool.get('res.partner').name_get(cr, uid, [applicant.partner_id.id])[0][1]
if applicant.job_id and (applicant.partner_name or contact_name):
applicant.job_id.write({'no_of_hired_employee': applicant.job_id.no_of_hired_employee + 1}, context=context)
+ create_ctx = dict(context, mail_broadcast=True)
emp_id = hr_employee.create(cr, uid, {'name': applicant.partner_name or contact_name,
'job_id': applicant.job_id.id,
'address_home_id': address_id,
@@ -459,7 +460,7 @@ class hr_applicant(osv.Model):
'address_id': applicant.company_id and applicant.company_id.partner_id and applicant.company_id.partner_id.id or False,
'work_email': applicant.department_id and applicant.department_id.company_id and applicant.department_id.company_id.email or False,
'work_phone': applicant.department_id and applicant.department_id.company_id and applicant.department_id.company_id.phone or False,
- })
+ }, context=create_ctx)
self.write(cr, uid, [applicant.id], {'emp_id': emp_id}, context=context)
self.pool['hr.job'].message_post(
cr, uid, [applicant.job_id.id],
diff --git a/addons/hw_proxy/doc/_images/posbox_doc_schema.png b/addons/hw_proxy/doc/_images/posbox_doc_schema.png
new file mode 100644
index 00000000000..929675db9e8
Binary files /dev/null and b/addons/hw_proxy/doc/_images/posbox_doc_schema.png differ
diff --git a/addons/hw_proxy/doc/_images/posbox_doc_schema.svg b/addons/hw_proxy/doc/_images/posbox_doc_schema.svg
new file mode 100644
index 00000000000..92d02849cf0
--- /dev/null
+++ b/addons/hw_proxy/doc/_images/posbox_doc_schema.svg
@@ -0,0 +1,548 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2A Power
+ SD Card
+ HDMI
+ USB
+ RJ45
+ Composite
+ Audio
+ Audio
+ Ready
+ Power
+ Network
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/hw_proxy/doc/index.rst b/addons/hw_proxy/doc/index.rst
new file mode 100644
index 00000000000..b5bbf71a2ab
--- /dev/null
+++ b/addons/hw_proxy/doc/index.rst
@@ -0,0 +1,395 @@
+====================
+PosBox Documentation
+====================
+
+Posbox Setup Guide
+==================
+
+Prerequisites
+-------------
+
+Before you start setting up your PosPox make sure you have everything.
+You will need :
+
+- The PosBox
+- A 2A Power adapter
+- A computer or tablet with an up to date Firefox, Chrome or Safari web
+ browser (we recommend Chrome)
+- A running SaaS or V8.0 OpenERP Instance with the Point of Sale
+ Installed.
+- A local network set up with DHCP ( this is the default setting )
+- A RJ45 Ethrnet Cable
+- An Epson USB TM-T20 Printer or another compatible printer.
+- A Honewell Voyager USB Barcode Scanner or another compatible scanner.
+- An Epson compatible cash drawer.
+
+Setup
+-----
+
+.. image:: _images/posbox_doc_schema.png
+ :width: 100%
+ :align: center
+
+1) Power the PosBox.
+~~~~~~~~~~~~~~~~~~~~
+
+Plug the PosBox to the 2A Power Adapter, a bright red status led should
+light up.
+
+2) Connect it to the Local Network
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Connect the PosBox to the Local Network with the RJ45 Cable. Make sure
+You connect the PosBox to the same Network as your POS device. Once
+connected a bright yellow status led should light up, and a green status
+led should flash.
+
+3) Connect the USB Printer
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Put a paper roll in the printer, power it up, then connect it to one of
+the PosBox's USB port
+
+4) Connect the cash drawer
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The cash drawer should be connected to the printer with the RJ25 cable
+
+5) Connect the USB Barcode Scanner
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Connect the usb barcode scanner to one of the PosBox's USB port. The
+Barcode Scanner should immediately light up and emit a loud beep.
+
+6) Configure the USB Barcode Scanner
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The barcode scanner should be configured in QWERTY and emit a new line /
+return symbol after each scan. This is most likely the default
+configuration of your barcode scanner.
+
+7) Make sure the PosBox is ready
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Once powered, The PosBox needs less than a minute to boot. Once the
+PosBox is ready, it should print a status receipt with its IP Adress.
+Also, the last status led, just after the red power status led, should
+be permanently lit green.
+
+8) Set up the Point of Sale
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Make sure to activate the 'Print via Proxy', 'Remote Scanning' or
+'Cashdrawer' options in the Point of Sale configuration. If you are
+using firefox, you must manually specify the PosBox's IP address which
+was printed on the status receipt.
+
+If you are running multiple Point of Sales on the same PosBox, make sure
+that only one of them has Remote Scanning activated.
+
+9) Launch the Point of Sale.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If you didn't spcecify the PosBox's IP address in the config, the POS
+will need some time to perform a network scan to find the PosBox. This
+is only done once.
+
+The Point of Sale is now connected to the PosBox and your Hardware
+should be ready to use.
+
+PosBoxless Setup Guide
+======================
+
+If you are running your Point of Sale on a debian-based linux
+distribution, you do not need the PosBox as you can run its software
+locally. However the installation process is not foolproof. You'll need
+at least to know how to install and run openerp. You may also run into
+issues specific to your distribution or to your particular setup and
+hardware configuration.
+
+Prerequisites
+-------------
+
+- A debian based linux distribution (Debian, Ubuntu, Mint, etc.)
+- A running trunk version of the OpenERP server
+- You must uninstall any esc-pos printer driver as it will conflict
+ with OpenERP's built-in driver.
+
+Setup
+-----
+
+1) Extra dependencies
+~~~~~~~~~~~~~~~~~~~~~
+
+The driver modules requires the installation of new python modules:
+
+::
+
+ $ sudo pip install pyserial
+ $ sudo pip install --pre pyusb
+
+2) Database Setup
+~~~~~~~~~~~~~~~~~
+
+You must create a database called ``posbox`` with the modules
+``hw_proxy``, ``hw_escpos``, and ``hw_scanner`` installed.
+
+3) Access Rights
+~~~~~~~~~~~~~~~~
+
+The drivers need raw access to the printer and barcode scanner devices.
+Doing so requires a bit system administration. First we are going to
+create a group that has haccess to usb devices:
+
+::
+
+ $ sudo groupadd usbusers
+
+Then we add the user who will run the OpenERP server to ``usbusers``
+
+::
+
+ $ sudo useradd -G usbusers USERNAME
+
+Then we need to create a udev rule that will automatically allow members
+of ``usbusers`` to access raw usb devices. To do so create a file called
+``99-usbusers.rule`` in the ``/etc/udev/rules.d/`` directory with the
+following content:
+
+::
+
+ SUBSYSTEM=="usb", GROUP="usbusers", MODE="0660"
+ SUBSYSTEMS=="usb", GROUP="usbusers", MODE="0660"
+
+Then you need to reboot your machine.
+
+4) Start the local OpenERP Installl
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+We must launch the OpenERP server on the port ``8069`` with the correct
+database settings:
+
+::
+
+ $ ./server/openerp-server --addons-path=addons,web/addons --db-filter='^posbox$' \
+ --xmlrpc-port=8069 -d posbox
+
+5) Check that everything works
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Plug all your hardware to your machine's USB ports, and go to
+``http://localhost/hw_proxy/status`` refresh the page a few times and
+see if all your devices are indicated as *Connected*. Possible source of
+errors are: The paths on the distribution differ from the paths expected
+by the drivers, another process has grabbed exclusive access to the
+devices, the udev rules do not apply or a superceeded by others.
+
+5) Automatically Start OpenERP
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+You must now make sure that this OpenERP install is automatically
+started after boot. There are various ways to do so, and how to do it
+depends on your particular setup. We use *systemd* on the PosBox, but
+*upstart* or *sysvinit* are other options.
+
+6) Set up the Point of Sale
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Make sure that one of the posbox Make sure the IP Adress field in the
+POS Config is either ``127.0.0.1`` or ``localhost`` or simply leave it
+empty.
+
+PosBox Technical Documentation
+==============================
+
+Technical Overview
+------------------
+
+The PosBox Hardware
+~~~~~~~~~~~~~~~~~~~
+
+The PosBox's Hardware is based on a model B Raspberry Pi, a popular
+open-source micro-computer. The Raspberry Pi is powered with a 2A
+micro-usb power adapter. 2A is needed to give enough power to the
+barcode scanners. And we recommend Samsung power adapters for their
+availability and reliability ( but beware of counterfeits ). The
+Raspberry is protected by a ModMyPi Raspberry Pi Case. The Software is
+installed on a 8Gb Class 10 or Higher SD Card. The SD Card's class is
+important to ensure good performances. All this hardware is easily
+available worldwide from independant vendors.
+
+Compatible Peripherals
+~~~~~~~~~~~~~~~~~~~~~~
+
+- Printers:
+
+ - Epson TM-T20
+ - Support for Other Esc-Pos compatible printers can be easily added
+ on a case-by-case basis, please see the *Unsupported Printers*
+ chapter of this manual.
+
+- Barcode Scannners:
+
+ - Metapace S61
+ - Honeywell Voyager 95x0 Series.
+ - Most other barcode scanners should work out of the box. Some
+ barcode scanners need more power than the PosBox can provide and
+ must be plugged in a self-powered USB HUB. This is the case for
+ Datalogic Barcode Scanners.
+
+- Cash Drawers:
+
+ - As the cash drawers are connected to the printer, All Epson
+ compatible cash drawers should work out of the Box.
+
+The PosBox Software
+~~~~~~~~~~~~~~~~~~~
+
+The PosBox runs a Raspbian Linux distribution, a Debian derivative
+optimized for the Raspberry Pi. It also runs a barebones install of
+OpenERP which provides the webserver and the drivers. The printer &
+scanner drivers are implemented as openerp modules. Those modules are
+named ``hw_proxy``, ``hw_escpos``, ``hw_scanner`` and are the only
+modules installed and running. OpenERP is only used for the framework it
+provides. No business data is processed or stored on the PosBox. The
+OpenERP install is a full bazaar clone of the ``trunk`` branch, and can
+thus be updated trough the usual means.
+
+We use systemd to manage the Openerp server. Systemd makes sure OpenERP
+starts up at boot and is always up and running. Its systemd unit file is
+called ``openerp.service``, and can be found in
+``/etc/systemd/system/openerp.service``. The systemd version used is
+quite old and thus ``journalctl`` is not available. All logs can be
+found in instead ``/var/logs/syslog``
+
+We removed all graphical software from the default install to reduce to
+image size but nothing prevents you from reinstalling them.
+
+Local Access
+~~~~~~~~~~~~
+
+If you plug a QWERTY USB keyboard into one of the PosBox's USB ports,
+and if you connect a computer monitor to the *HDMI* port of the PosBox,
+you can use it as a small UNIX computer and perform various
+administration tasks.
+
+Once the PosBox is ready press ``ALT-F2`` to access the login prompt.
+The login is ``pi`` and the password ``admin``. The OpenERP install is
+in the ``~/openerp`` directory along with a few scripts to help with
+debugging and administration.
+
+Remote Access
+~~~~~~~~~~~~~
+
+If you have the PosBox's IP address and a SSH client you can access the
+PosBox's system remotely. The login / password are ``pi``/``admin``
+
+Unsupported Printers
+~~~~~~~~~~~~~~~~~~~~
+
+The PosBox should be able to print to any ESC-POS printer, not just the
+Epson TM-T20. If You have such a printer, you can activate it with the
+following steps:
+
+- Get local or remote access to the PosBox.
+- Plug in your printer
+- type ``lsusb`` in a prompt
+- Find your printer in the list of connected USB devices
+- Find your printer's vendor id: It consists of two hexadecimal numbers
+ separated by a colon.
+- Edit ``~/openerp/addons/hw_escpos/escpos/supported_devices.py`` and
+ add an entry for your printer.
+- Restar The PosBox.
+- If everything works properly you can send your printer's name and
+ vendor ID to ``support@openerp.com`` and we'll add it to the list of
+ supported devices.
+
+Updating The PosBox Software
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The best way to update the PosBox software is to download a new version
+of the image and flash the SD-Card with it. This operation is described
+in details on the following tutorial
+``http://elinux.org/RPi_Easy_SD_Card_Setup``, just replace the standard
+raspberry pi image to the latest one found at
+``http://nightly.openerp.com/trunk/posbox/``
+
+Troubleshoot
+------------
+
+The POS cannot connect to the PosBox.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- The easiest way to make sure the PosBox is properly set-up is to turn
+ it on with the printer plugged in as it will print a receipt
+ indicating any error if encountered or the PosBox's IP adress in case
+ of success. If no receipt is printed, check the following steps:
+- Make sure the PosBox is powered on, indicated by a brightly lid red
+ status LED.
+- Make sure the PosBox is ready, this is indicated by a brightly lid
+ green status LED just above the red power status LED. The PosBox
+ should be ready one minute after it is powered on.
+- Make sure the PosBox is connected to the Network. This is indicated
+ by a brightly lid yellow status LED.
+- Make sure the PosBox is connected to the same network as your POS
+ device. Both the device and the posbox should be visible in the list
+ of connected devices on your network router.
+- Make sure that your LAN is set up with DHCP, and gives ip Address in
+ the range 192.168.0.X, 192.168.1.X, 10.0.0.X. If you cannot setup
+ your LAN that way, you must manually set up your PosBox's ip-address.
+ See the relevant paragraph in the Setup chapter of this documentation
+- If you have specified the PosBox's IP address in the config, make
+ sure it correspond to the printed on the PosBox's status receipt.
+- Make sure that the POS is not loaded over HTTPS.
+- A bug in Firefox's HTTP implementation prevents the autodiscovery
+ from working reliably. When using Firefox you should manually set up
+ the PosBox's ip address in the POS config.
+
+The Barcode Scanner is not working
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- The PosBox needs a 2A power supply to work with some barcode
+ scanners. If you are not using the provided power supply, make sure
+ the one you use has enough power.
+- Some barcode scanners will need more than 2A and will not work, or
+ will work unreliably, even with the provided power supply. In those
+ case you can plug the barcode scanner in a self-powered USB Hub.
+- Some poorly built barcode scanners do not advertise themselves as
+ barcode scanners but as a usb keyboard instead, and will not be
+ recognized by the PosBox.
+
+The Barcode Scanner is not working reliably
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Make sure that no more than one device with 'Scan via Proxy' enabled
+ are connected to the PosBox at the same time.
+
+Printing the receipt takes too much time.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- A small delay before the first print is expected, as the PosBox will
+ do some preprocessing to speed up the next printings. If you suffer
+ delays afterwards it is most likely due to poor network connection
+ between the POS and the PosBox.
+
+Some characters are not correctly printed on the receipt.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- The PosBox does not support all languages and characters. It
+ currently supports latin and cyrillic based scripts, with basic
+ japanese support.
+
+The Printer is Offline
+~~~~~~~~~~~~~~~~~~~~~~
+
+- The PosBox only supports EPSON TM-T20 printers. Make sure the printer
+ is connected, powered, has enough paper and has its lid closed, and
+ does is not in an error status. If the error persists, please contact
+ support.
+
+The Cashdrawer does not open.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- The cashdrawer should be connected to the printer and should be
+ activated in the POS Configuration
+
diff --git a/addons/mrp/tests/test_multicompany.py b/addons/mrp/tests/test_multicompany.py
index f38a31a70de..8be3cde7295 100644
--- a/addons/mrp/tests/test_multicompany.py
+++ b/addons/mrp/tests/test_multicompany.py
@@ -48,7 +48,6 @@ class TestMrpMulticompany(common.TransactionCase):
fields = ['location_src_id', 'location_dest_id']
defaults = self.stock_location.default_get(cr, uid, ['location_id', 'location_dest_id', 'type'], context)
for field in fields:
- print field, uid, defaults
if defaults.get(field):
try:
self.stock_location.check_access_rule(cr, uid, [defaults[field]], 'read', context)
diff --git a/addons/mrp_jit/i18n/lv.po b/addons/mrp_jit/i18n/lv.po
new file mode 100644
index 00000000000..73f5e37c30b
--- /dev/null
+++ b/addons/mrp_jit/i18n/lv.po
@@ -0,0 +1,49 @@
+# Latvian translation for openobject-addons
+# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2014-02-14 10:33+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Latvian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2014-02-15 06:38+0000\n"
+"X-Generator: Launchpad (build 16916)\n"
+
+#. module: mrp_jit
+#: model:ir.module.module,shortdesc:mrp_jit.module_meta_information
+msgid "MRP JIT"
+msgstr ""
+
+#. module: mrp_jit
+#: model:ir.module.module,description:mrp_jit.module_meta_information
+msgid ""
+"\n"
+" This module allows Just In Time computation of procurement orders.\n"
+"\n"
+" If you install this module, you will not have to run the regular "
+"procurement \n"
+" scheduler anymore (but you still need to run the minimum order point "
+"rule \n"
+" scheduler, or for example let it run daily.)\n"
+" All procurement orders will be processed immediately, which could in "
+"some\n"
+" cases entail a small performance impact.\n"
+"\n"
+" It may also increase your stock size because products are reserved as "
+"soon\n"
+" as possible and the scheduler time range is not taken into account "
+"anymore. \n"
+" In that case, you can not use priorities any more on the different "
+"picking.\n"
+" \n"
+" \n"
+" "
+msgstr ""
diff --git a/addons/note/i18n/fi.po b/addons/note/i18n/fi.po
new file mode 100644
index 00000000000..3dd81b62b05
--- /dev/null
+++ b/addons/note/i18n/fi.po
@@ -0,0 +1,286 @@
+# Finnish translation for openobject-addons
+# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:04+0000\n"
+"PO-Revision-Date: 2014-02-18 16:05+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Finnish \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2014-02-19 05:23+0000\n"
+"X-Generator: Launchpad (build 16916)\n"
+
+#. module: note
+#: field:note.note,memo:0
+msgid "Note Content"
+msgstr "Muistiinpanon sisältö"
+
+#. module: note
+#: view:note.stage:0
+msgid "Stages of Notes"
+msgstr "Muistiipanojen vaiheet"
+
+#. module: note
+#: model:note.stage,name:note.demo_note_stage_04
+#: model:note.stage,name:note.note_stage_02
+msgid "This Week"
+msgstr "Tämä viikko"
+
+#. module: note
+#: model:ir.model,name:note.model_base_config_settings
+msgid "base.config.settings"
+msgstr ""
+
+#. module: note
+#: model:ir.model,name:note.model_note_tag
+msgid "Note Tag"
+msgstr "Muistiinpanon tunniste"
+
+#. module: note
+#: model:res.groups,name:note.group_note_fancy
+msgid "Notes / Fancy mode"
+msgstr ""
+
+#. module: note
+#: model:ir.model,name:note.model_note_note
+#: view:note.note:0
+msgid "Note"
+msgstr "Muistiinpano"
+
+#. module: note
+#: view:note.note:0
+msgid "Group By..."
+msgstr "Ryhmittely..."
+
+#. module: note
+#: field:note.note,message_follower_ids:0
+msgid "Followers"
+msgstr "Seuraajat"
+
+#. module: note
+#: model:ir.actions.act_window,help:note.action_note_note
+msgid ""
+"\n"
+" Click to add a personal note.\n"
+"
\n"
+" Use notes to organize personal tasks or notes. All\n"
+" notes are private; no one else will be able to see them. "
+"However\n"
+" you can share some notes with other people by inviting "
+"followers\n"
+" on the note. (Useful for meeting minutes, especially if\n"
+" you activate the pad feature for collaborative writings).\n"
+"
\n"
+" You can customize how you process your notes/tasks by adding,\n"
+" removing or modifying columns.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: note
+#: model:note.stage,name:note.demo_note_stage_01
+#: model:note.stage,name:note.note_stage_01
+msgid "Today"
+msgstr "Tänään"
+
+#. module: note
+#: model:ir.model,name:note.model_res_users
+msgid "Users"
+msgstr "Käyttäjät"
+
+#. module: note
+#: view:note.note:0
+msgid "í"
+msgstr "í"
+
+#. module: note
+#: view:note.stage:0
+msgid "Stage of Notes"
+msgstr "Muistiinpanojenvaiheet"
+
+#. module: note
+#: field:note.note,message_unread:0
+msgid "Unread Messages"
+msgstr "Lukemattomat viestit"
+
+#. module: note
+#: field:note.note,current_partner_id:0
+msgid "unknown"
+msgstr ""
+
+#. module: note
+#: view:note.note:0
+msgid "By sticky note Category"
+msgstr "Muistilaput ryhmittäin"
+
+#. module: note
+#: help:note.note,message_unread:0
+msgid "If checked new messages require your attention."
+msgstr "Jos valittu, uudet viestit vaativat huomiosi."
+
+#. module: note
+#: field:note.stage,name:0
+msgid "Stage Name"
+msgstr "Vaiheen nimi"
+
+#. module: note
+#: field:note.note,message_is_follower:0
+msgid "Is a Follower"
+msgstr "on seuraaja"
+
+#. module: note
+#: model:note.stage,name:note.demo_note_stage_02
+msgid "Tomorrow"
+msgstr "Huomenna"
+
+#. module: note
+#: view:note.note:0
+#: field:note.note,open:0
+msgid "Active"
+msgstr "Aktiivinen"
+
+#. module: note
+#: help:note.stage,user_id:0
+msgid "Owner of the note stage."
+msgstr "Muistiinpanon vaiheen omistaja."
+
+#. module: note
+#: model:ir.ui.menu,name:note.menu_notes_stage
+msgid "Categories"
+msgstr "Ryhmät"
+
+#. module: note
+#: view:note.note:0
+#: field:note.note,stage_id:0
+msgid "Stage"
+msgstr "Vaihe"
+
+#. module: note
+#: field:note.tag,name:0
+msgid "Tag Name"
+msgstr "Tunnisteen nimi"
+
+#. module: note
+#: field:note.note,message_ids:0
+msgid "Messages"
+msgstr "Viestit"
+
+#. module: note
+#: view:base.config.settings:0
+#: model:ir.actions.act_window,name:note.action_note_note
+#: model:ir.ui.menu,name:note.menu_note_notes
+#: view:note.note:0
+#: model:note.stage,name:note.note_stage_04
+msgid "Notes"
+msgstr "Muistiinpanot"
+
+#. module: note
+#: model:note.stage,name:note.demo_note_stage_03
+#: model:note.stage,name:note.note_stage_03
+msgid "Later"
+msgstr "Myöhemmin"
+
+#. module: note
+#: model:ir.model,name:note.model_note_stage
+msgid "Note Stage"
+msgstr "Muistiinpanon vaihe"
+
+#. module: note
+#: field:note.note,message_summary:0
+msgid "Summary"
+msgstr "Yhteenveto"
+
+#. module: note
+#: field:note.note,stage_ids:0
+msgid "Stages of Users"
+msgstr "Käyttäjien vaiheet"
+
+#. module: note
+#: field:note.note,name:0
+msgid "Note Summary"
+msgstr "Muistiinpanon yhteenveto"
+
+#. module: note
+#: model:ir.actions.act_window,name:note.action_note_stage
+#: view:note.note:0
+msgid "Stages"
+msgstr "Vaiheet"
+
+#. module: note
+#: help:note.note,message_ids:0
+msgid "Messages and communication history"
+msgstr "Viesti- ja kommunikointihistoria"
+
+#. module: note
+#: view:note.note:0
+msgid "Delete"
+msgstr "Poista"
+
+#. module: note
+#: field:note.note,color:0
+msgid "Color Index"
+msgstr "Väri-indeksi"
+
+#. module: note
+#: field:note.note,sequence:0
+#: field:note.stage,sequence:0
+msgid "Sequence"
+msgstr "Järjestysluku"
+
+#. module: note
+#: view:note.note:0
+#: field:note.note,tag_ids:0
+msgid "Tags"
+msgstr "Tunnisteet"
+
+#. module: note
+#: view:note.note:0
+msgid "Archive"
+msgstr "Arkisto"
+
+#. module: note
+#: field:base.config.settings,module_note_pad:0
+msgid "Use collaborative pads (etherpad)"
+msgstr "Käytä yhteistyöhön tauluja (Etherpad)"
+
+#. module: note
+#: help:note.note,message_summary:0
+msgid ""
+"Holds the Chatter summary (number of messages, ...). This summary is "
+"directly in html format in order to be inserted in kanban views."
+msgstr ""
+"Sisältää viestien yhteenvedon (viestien määrän,...). Tämä yhteenveto on "
+"valmiiksi html-muodossa, jotta se voidaan viedä kanban näkymään."
+
+#. module: note
+#: field:base.config.settings,group_note_fancy:0
+msgid "Use fancy layouts for notes"
+msgstr ""
+
+#. module: note
+#: field:note.note,current_partner_id:0
+#: field:note.stage,user_id:0
+msgid "Owner"
+msgstr "Omistaja"
+
+#. module: note
+#: help:note.stage,sequence:0
+msgid "Used to order the note stages"
+msgstr "Käytetään järjestämään muistiinpanon vaiheet"
+
+#. module: note
+#: field:note.note,date_done:0
+msgid "Date done"
+msgstr "Valmis pvm."
+
+#. module: note
+#: field:note.stage,fold:0
+msgid "Folded by Default"
+msgstr "Tyhjää ei näytetä"
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index 30fcff2e5e6..0d97fdb1a0b 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -69,7 +69,7 @@ class pos_config(osv.osv):
'currency_id' : fields.function(_get_currency, type="many2one", string="Currency", relation="res.currency"),
'iface_self_checkout' : fields.boolean('Self Checkout Mode',
help="Check this if this point of sale should open by default in a self checkout mode. If unchecked, OpenERP uses the normal cashier mode by default."),
- 'iface_cashdrawer' : fields.boolean('Cashdrawer',help="Automatically open the cashdrawer"),
+ 'iface_cashdrawer' : fields.boolean('Cashdrawer', help="Automatically open the cashdrawer"),
'iface_payment_terminal' : fields.boolean('Payment Terminal', help="Enables Payment Terminal integration"),
'iface_electronic_scale' : fields.boolean('Electronic Scale', help="Enables Electronic Scale integration"),
'iface_vkeyboard' : fields.boolean('Virtual KeyBoard', help="Enables an integrated Virtual Keyboard"),
@@ -1305,7 +1305,7 @@ class product_product(osv.osv):
'income_pdt': fields.boolean('Point of Sale Cash In', help="Check if, this is a product you can use to put cash into a statement for the point of sale backend."),
'expense_pdt': fields.boolean('Point of Sale Cash Out', help="Check if, this is a product you can use to take cash from a statement for the point of sale backend, example: money lost, transfer to bank, etc."),
'available_in_pos': fields.boolean('Available in the Point of Sale', help='Check if you want this product to appear in the Point of Sale'),
- 'to_weight' : fields.boolean('To Weight', help="Check if the product should be weighted (mainly used with self check-out interface)."),
+ 'to_weight' : fields.boolean('To Weigh', help="Check if the product should be weighted (mainly used with self check-out interface)."),
}
_defaults = {
diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml
index 50573017909..7740020e37f 100644
--- a/addons/point_of_sale/point_of_sale_view.xml
+++ b/addons/point_of_sale/point_of_sale_view.xml
@@ -116,8 +116,8 @@
Click to create a new order.
- Use this menu to browse your preceeding orders. To record new
- orders, you should better use the menu Your Session for
+ Use this menu to browse previous orders. To record new
+ orders, you may use the menu Your Session for
the touchscreen interface.
@@ -979,7 +979,7 @@
currencies in your cash registers at the beginning and the end
of each session.
- Note that you should better to use the menu Your Session
+ Note that you may use the menu Your Session
to quickly open a new session.
diff --git a/addons/product_expiry/i18n/lv.po b/addons/product_expiry/i18n/lv.po
new file mode 100644
index 00000000000..b67ab049d9f
--- /dev/null
+++ b/addons/product_expiry/i18n/lv.po
@@ -0,0 +1,149 @@
+# Latvian translation for openobject-addons
+# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:06+0000\n"
+"PO-Revision-Date: 2014-02-14 10:38+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Latvian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2014-02-15 06:38+0000\n"
+"X-Generator: Launchpad (build 16916)\n"
+
+#. module: product_expiry
+#: model:product.template,name:product_expiry.product_product_from_product_template
+msgid "Ham"
+msgstr ""
+
+#. module: product_expiry
+#: model:product.template,name:product_expiry.product_product_lait_product_template
+msgid "Cow milk"
+msgstr ""
+
+#. module: product_expiry
+#: field:product.product,life_time:0
+msgid "Product Life Time"
+msgstr ""
+
+#. module: product_expiry
+#: help:stock.production.lot,removal_date:0
+msgid ""
+"This is the date on which the goods with this Serial Number should be "
+"removed from the stock."
+msgstr ""
+
+#. module: product_expiry
+#: help:product.product,removal_time:0
+msgid ""
+"When a new a Serial Number is issued, this is the number of days before the "
+"goods should be removed from the stock."
+msgstr ""
+
+#. module: product_expiry
+#: field:product.product,use_time:0
+msgid "Product Use Time"
+msgstr ""
+
+#. module: product_expiry
+#: model:ir.model,name:product_expiry.model_product_product
+msgid "Product"
+msgstr ""
+
+#. module: product_expiry
+#: help:product.product,use_time:0
+msgid ""
+"When a new a Serial Number is issued, this is the number of days before the "
+"goods starts deteriorating, without being dangerous yet."
+msgstr ""
+
+#. module: product_expiry
+#: field:product.product,removal_time:0
+msgid "Product Removal Time"
+msgstr ""
+
+#. module: product_expiry
+#: help:stock.production.lot,alert_date:0
+msgid ""
+"This is the date on which an alert should be notified about the goods with "
+"this Serial Number."
+msgstr ""
+
+#. module: product_expiry
+#: model:ir.model,name:product_expiry.model_stock_production_lot
+msgid "Serial Number"
+msgstr ""
+
+#. module: product_expiry
+#: help:product.product,alert_time:0
+msgid ""
+"When a new a Serial Number is issued, this is the number of days before an "
+"alert should be notified."
+msgstr ""
+
+#. module: product_expiry
+#: field:stock.production.lot,removal_date:0
+msgid "Removal Date"
+msgstr ""
+
+#. module: product_expiry
+#: model:product.template,name:product_expiry.product_product_pain_product_template
+msgid "Bread"
+msgstr ""
+
+#. module: product_expiry
+#: view:product.product:0
+msgid "Dates"
+msgstr ""
+
+#. module: product_expiry
+#: field:stock.production.lot,life_date:0
+msgid "End of Life Date"
+msgstr ""
+
+#. module: product_expiry
+#: field:stock.production.lot,use_date:0
+msgid "Best before Date"
+msgstr ""
+
+#. module: product_expiry
+#: model:product.template,name:product_expiry.product_product_jambon_product_template
+msgid "French cheese Camenbert"
+msgstr ""
+
+#. module: product_expiry
+#: help:product.product,life_time:0
+msgid ""
+"When a new a Serial Number is issued, this is the number of days before the "
+"goods may become dangerous and must not be consumed."
+msgstr ""
+
+#. module: product_expiry
+#: field:stock.production.lot,alert_date:0
+msgid "Alert Date"
+msgstr ""
+
+#. module: product_expiry
+#: help:stock.production.lot,use_date:0
+msgid ""
+"This is the date on which the goods with this Serial Number start "
+"deteriorating, without being dangerous yet."
+msgstr ""
+
+#. module: product_expiry
+#: help:stock.production.lot,life_date:0
+msgid ""
+"This is the date on which the goods with this Serial Number may become "
+"dangerous and must not be consumed."
+msgstr ""
+
+#. module: product_expiry
+#: field:product.product,alert_time:0
+msgid "Product Alert Time"
+msgstr ""
diff --git a/addons/product_manufacturer/i18n/lv.po b/addons/product_manufacturer/i18n/lv.po
new file mode 100644
index 00000000000..11f3ce174bc
--- /dev/null
+++ b/addons/product_manufacturer/i18n/lv.po
@@ -0,0 +1,72 @@
+# Latvian translation for openobject-addons
+# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:06+0000\n"
+"PO-Revision-Date: 2014-02-14 10:44+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Latvian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2014-02-15 06:38+0000\n"
+"X-Generator: Launchpad (build 16916)\n"
+
+#. module: product_manufacturer
+#: field:product.product,manufacturer_pref:0
+msgid "Manufacturer Product Code"
+msgstr ""
+
+#. module: product_manufacturer
+#: model:ir.model,name:product_manufacturer.model_product_product
+#: field:product.manufacturer.attribute,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: product_manufacturer
+#: view:product.manufacturer.attribute:0
+msgid "Product Template Name"
+msgstr ""
+
+#. module: product_manufacturer
+#: model:ir.model,name:product_manufacturer.model_product_manufacturer_attribute
+msgid "Product attributes"
+msgstr ""
+
+#. module: product_manufacturer
+#: view:product.manufacturer.attribute:0
+#: view:product.product:0
+msgid "Product Attributes"
+msgstr ""
+
+#. module: product_manufacturer
+#: field:product.manufacturer.attribute,name:0
+msgid "Attribute"
+msgstr ""
+
+#. module: product_manufacturer
+#: field:product.manufacturer.attribute,value:0
+msgid "Value"
+msgstr ""
+
+#. module: product_manufacturer
+#: view:product.product:0
+#: field:product.product,attribute_ids:0
+msgid "Attributes"
+msgstr ""
+
+#. module: product_manufacturer
+#: field:product.product,manufacturer_pname:0
+msgid "Manufacturer Product Name"
+msgstr ""
+
+#. module: product_manufacturer
+#: view:product.product:0
+#: field:product.product,manufacturer:0
+msgid "Manufacturer"
+msgstr ""
diff --git a/addons/product_margin/i18n/lv.po b/addons/product_margin/i18n/lv.po
new file mode 100644
index 00000000000..f3b02ebe601
--- /dev/null
+++ b/addons/product_margin/i18n/lv.po
@@ -0,0 +1,283 @@
+# Latvian translation for openobject-addons
+# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:06+0000\n"
+"PO-Revision-Date: 2014-02-14 10:46+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Latvian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2014-02-15 06:38+0000\n"
+"X-Generator: Launchpad (build 16916)\n"
+
+#. module: product_margin
+#: view:product.product:0
+#: field:product.product,turnover:0
+msgid "Turnover"
+msgstr ""
+
+#. module: product_margin
+#: field:product.product,expected_margin_rate:0
+msgid "Expected Margin (%)"
+msgstr ""
+
+#. module: product_margin
+#: field:product.margin,from_date:0
+msgid "From"
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,total_cost:0
+msgid ""
+"Sum of Multiplication of Invoice price and quantity of Supplier Invoices "
+msgstr ""
+
+#. module: product_margin
+#: field:product.margin,to_date:0
+msgid "To"
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,total_margin:0
+msgid "Turnover - Standard price"
+msgstr ""
+
+#. module: product_margin
+#: field:product.product,total_margin_rate:0
+msgid "Total Margin Rate(%)"
+msgstr ""
+
+#. module: product_margin
+#: selection:product.margin,invoice_state:0
+#: selection:product.product,invoice_state:0
+msgid "Draft, Open and Paid"
+msgstr ""
+
+#. module: product_margin
+#: code:addons/product_margin/wizard/product_margin.py:73
+#: model:ir.actions.act_window,name:product_margin.product_margin_act_window
+#: model:ir.ui.menu,name:product_margin.menu_action_product_margin
+#: view:product.product:0
+#, python-format
+msgid "Product Margins"
+msgstr ""
+
+#. module: product_margin
+#: field:product.product,purchase_avg_price:0
+#: field:product.product,sale_avg_price:0
+msgid "Avg. Unit Price"
+msgstr ""
+
+#. module: product_margin
+#: field:product.product,sale_num_invoiced:0
+msgid "# Invoiced in Sale"
+msgstr ""
+
+#. module: product_margin
+#: view:product.product:0
+msgid "Catalog Price"
+msgstr ""
+
+#. module: product_margin
+#: selection:product.margin,invoice_state:0
+#: selection:product.product,invoice_state:0
+msgid "Paid"
+msgstr ""
+
+#. module: product_margin
+#: view:product.product:0
+#: field:product.product,sales_gap:0
+msgid "Sales Gap"
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,sales_gap:0
+msgid "Expected Sale - Turn Over"
+msgstr ""
+
+#. module: product_margin
+#: field:product.product,sale_expected:0
+msgid "Expected Sale"
+msgstr ""
+
+#. module: product_margin
+#: view:product.product:0
+msgid "Standard Price"
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,purchase_num_invoiced:0
+msgid "Sum of Quantity in Supplier Invoices"
+msgstr ""
+
+#. module: product_margin
+#: field:product.product,date_to:0
+msgid "Margin Date To"
+msgstr ""
+
+#. module: product_margin
+#: view:product.product:0
+msgid "Analysis Criteria"
+msgstr ""
+
+#. module: product_margin
+#: view:product.product:0
+#: field:product.product,total_cost:0
+msgid "Total Cost"
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,normal_cost:0
+msgid "Sum of Multiplication of Cost price and quantity of Supplier Invoices"
+msgstr ""
+
+#. module: product_margin
+#: field:product.product,expected_margin:0
+msgid "Expected Margin"
+msgstr ""
+
+#. module: product_margin
+#: view:product.product:0
+msgid "#Purchased"
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,expected_margin_rate:0
+msgid "Expected margin * 100 / Expected Sale"
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,sale_avg_price:0
+msgid "Avg. Price in Customer Invoices."
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,purchase_avg_price:0
+msgid "Avg. Price in Supplier Invoices "
+msgstr ""
+
+#. module: product_margin
+#: field:product.margin,invoice_state:0
+#: field:product.product,invoice_state:0
+msgid "Invoice State"
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,purchase_gap:0
+msgid "Normal Cost - Total Cost"
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,sale_expected:0
+msgid ""
+"Sum of Multiplication of Sale Catalog price and quantity of Customer Invoices"
+msgstr ""
+
+#. module: product_margin
+#: field:product.product,total_margin:0
+msgid "Total Margin"
+msgstr ""
+
+#. module: product_margin
+#: field:product.product,date_from:0
+msgid "Margin Date From"
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,turnover:0
+msgid ""
+"Sum of Multiplication of Invoice price and quantity of Customer Invoices"
+msgstr ""
+
+#. module: product_margin
+#: field:product.product,normal_cost:0
+msgid "Normal Cost"
+msgstr ""
+
+#. module: product_margin
+#: view:product.product:0
+msgid "Purchases"
+msgstr ""
+
+#. module: product_margin
+#: field:product.product,purchase_num_invoiced:0
+msgid "# Invoiced in Purchase"
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,expected_margin:0
+msgid "Expected Sale - Normal Cost"
+msgstr ""
+
+#. module: product_margin
+#: view:product.margin:0
+msgid "Properties categories"
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,total_margin_rate:0
+msgid "Total margin * 100 / Turnover"
+msgstr ""
+
+#. module: product_margin
+#: view:product.margin:0
+msgid "Open Margins"
+msgstr ""
+
+#. module: product_margin
+#: selection:product.margin,invoice_state:0
+#: selection:product.product,invoice_state:0
+msgid "Open and Paid"
+msgstr ""
+
+#. module: product_margin
+#: view:product.product:0
+msgid "Sales"
+msgstr ""
+
+#. module: product_margin
+#: model:ir.model,name:product_margin.model_product_product
+msgid "Product"
+msgstr ""
+
+#. module: product_margin
+#: view:product.margin:0
+msgid "General Information"
+msgstr ""
+
+#. module: product_margin
+#: field:product.product,purchase_gap:0
+msgid "Purchase Gap"
+msgstr ""
+
+#. module: product_margin
+#: view:product.margin:0
+msgid "Cancel"
+msgstr ""
+
+#. module: product_margin
+#: view:product.product:0
+msgid "Margins"
+msgstr ""
+
+#. module: product_margin
+#: help:product.product,sale_num_invoiced:0
+msgid "Sum of Quantity in Customer Invoices"
+msgstr ""
+
+#. module: product_margin
+#: view:product.margin:0
+msgid "or"
+msgstr ""
+
+#. module: product_margin
+#: model:ir.model,name:product_margin.model_product_margin
+msgid "Product Margin"
+msgstr ""
diff --git a/addons/website/__init__.py b/addons/website/__init__.py
index 185183a2257..9cea13339d9 100644
--- a/addons/website/__init__.py
+++ b/addons/website/__init__.py
@@ -1,3 +1,3 @@
import controllers
-
import models
+import tests
diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py
index 5a5226cef81..7bc701edde1 100644
--- a/addons/website/controllers/main.py
+++ b/addons/website/controllers/main.py
@@ -411,3 +411,5 @@ class Website(openerp.addons.web.controllers.main.Home):
if res:
return res
return request.redirect('/')
+
+# vim:et:
diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index 38e47cabf58..c73de9d10a7 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -87,7 +87,10 @@ def slug(value):
else:
# assume name_search result tuple
id, name = value
- return "%s-%d" % (slugify(name), id)
+ slugname = slugify(name)
+ if not slugname:
+ return str(id)
+ return "%s-%d" % (slugname, id)
def urlplus(url, params):
return werkzeug.Href(url)(params or None)
diff --git a/addons/website/static/lib/bootstrap/css/bootstrap-theme.min.css b/addons/website/static/lib/bootstrap/css/bootstrap-theme.min.css
deleted file mode 100644
index 01687ed6e0f..00000000000
--- a/addons/website/static/lib/bootstrap/css/bootstrap-theme.min.css
+++ /dev/null
@@ -1,268 +0,0 @@
-.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger {
-text-shadow:0 -1px 0 rgba(0,0,0,0.2);
--webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);
-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);
-}
-
-.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active {
--webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);
-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);
-}
-
-.btn:active,.btn.active {
-background-image:none;
-}
-
-.btn-default {
-text-shadow:0 1px 0 #fff;
-background-image:linear-gradient(tobottom,#fff0,#e6e6e6100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);
-border-color:#ccc;
-}
-
-.btn-default:active,.btn-default.active {
-background-color:#e6e6e6;
-border-color:#e0e0e0;
-}
-
-.btn-primary {
-background-image:linear-gradient(tobottom,#428bca0,#3071a9100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0);
-border-color:#2d6ca2;
-}
-
-.btn-primary:active,.btn-primary.active {
-background-color:#3071a9;
-border-color:#2d6ca2;
-}
-
-.btn-success {
-background-image:linear-gradient(tobottom,#5cb85c0,#449d44100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0);
-border-color:#419641;
-}
-
-.btn-success:active,.btn-success.active {
-background-color:#449d44;
-border-color:#419641;
-}
-
-.btn-warning {
-background-image:linear-gradient(tobottom,#f0ad4e0,#ec971f100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0);
-border-color:#eb9316;
-}
-
-.btn-warning:active,.btn-warning.active {
-background-color:#ec971f;
-border-color:#eb9316;
-}
-
-.btn-danger {
-background-image:linear-gradient(tobottom,#d9534f0,#c9302c100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0);
-border-color:#c12e2a;
-}
-
-.btn-danger:active,.btn-danger.active {
-background-color:#c9302c;
-border-color:#c12e2a;
-}
-
-.btn-info {
-background-image:linear-gradient(tobottom,#5bc0de0,#31b0d5100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0);
-border-color:#2aabd2;
-}
-
-.btn-info:active,.btn-info.active {
-background-color:#31b0d5;
-border-color:#2aabd2;
-}
-
-.thumbnail,.img-thumbnail {
--webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);
-box-shadow:0 1px 2px rgba(0,0,0,0.075);
-}
-
-.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus {
-background-color:#357ebd;
-background-image:linear-gradient(tobottom,#428bca0,#357ebd100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0);
-}
-
-.navbar {
-background-image:linear-gradient(tobottom,#fff0,#f8f8f8100%);
-background-repeat:repeat-x;
-border-radius:4px;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);
--webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);
-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);
-}
-
-.navbar .navbar-nav>.active>a {
-background-color:#f8f8f8;
-}
-
-.navbar-brand,.navbar-nav>li>a {
-text-shadow:0 1px 0 rgba(255,255,255,0.25);
-}
-
-.navbar-inverse {
-background-image:linear-gradient(tobottom,#3c3c3c0,#222100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0);
-}
-
-.navbar-inverse .navbar-nav>.active>a {
-background-color:#222;
-}
-
-.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a {
-text-shadow:0 -1px 0 rgba(0,0,0,0.25);
-}
-
-.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom {
-border-radius:0;
-}
-
-.alert {
-text-shadow:0 1px 0 rgba(255,255,255,0.2);
--webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);
-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);
-}
-
-.alert-success {
-background-image:linear-gradient(tobottom,#dff0d80,#c8e5bc100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0);
-border-color:#b2dba1;
-}
-
-.alert-info {
-background-image:linear-gradient(tobottom,#d9edf70,#b9def0100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0);
-border-color:#9acfea;
-}
-
-.alert-warning {
-background-image:linear-gradient(tobottom,#fcf8e30,#f8efc0100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0);
-border-color:#f5e79e;
-}
-
-.alert-danger {
-background-image:linear-gradient(tobottom,#f2dede0,#e7c3c3100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0);
-border-color:#dca7a7;
-}
-
-.progress {
-background-image:linear-gradient(tobottom,#ebebeb0,#f5f5f5100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0);
-}
-
-.progress-bar {
-background-image:linear-gradient(tobottom,#428bca0,#3071a9100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0);
-}
-
-.progress-bar-success {
-background-image:linear-gradient(tobottom,#5cb85c0,#449d44100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0);
-}
-
-.progress-bar-info {
-background-image:linear-gradient(tobottom,#5bc0de0,#31b0d5100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0);
-}
-
-.progress-bar-warning {
-background-image:linear-gradient(tobottom,#f0ad4e0,#ec971f100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0);
-}
-
-.progress-bar-danger {
-background-image:linear-gradient(tobottom,#d9534f0,#c9302c100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0);
-}
-
-.list-group {
-border-radius:4px;
--webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);
-box-shadow:0 1px 2px rgba(0,0,0,0.075);
-}
-
-.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus {
-text-shadow:0 -1px 0 #3071a9;
-background-image:linear-gradient(tobottom,#428bca0,#3278b3100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0);
-border-color:#3278b3;
-}
-
-.panel {
--webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);
-box-shadow:0 1px 2px rgba(0,0,0,0.05);
-}
-
-.panel-default>.panel-heading {
-background-image:linear-gradient(tobottom,#f5f5f50,#e8e8e8100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0);
-}
-
-.panel-primary>.panel-heading {
-background-image:linear-gradient(tobottom,#428bca0,#357ebd100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0);
-}
-
-.panel-success>.panel-heading {
-background-image:linear-gradient(tobottom,#dff0d80,#d0e9c6100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0);
-}
-
-.panel-info>.panel-heading {
-background-image:linear-gradient(tobottom,#d9edf70,#c4e3f3100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0);
-}
-
-.panel-warning>.panel-heading {
-background-image:linear-gradient(tobottom,#fcf8e30,#faf2cc100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0);
-}
-
-.panel-danger>.panel-heading {
-background-image:linear-gradient(tobottom,#f2dede0,#ebcccc100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0);
-}
-
-.well {
-background-image:linear-gradient(tobottom,#e8e8e80,#f5f5f5100%);
-background-repeat:repeat-x;
-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);
--webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);
-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);
-border-color:#dcdcdc;
-}
\ No newline at end of file
diff --git a/addons/website/static/lib/bootstrap/css/bootstrap.css b/addons/website/static/lib/bootstrap/css/bootstrap.css
deleted file mode 100644
index 75fe40edd05..00000000000
--- a/addons/website/static/lib/bootstrap/css/bootstrap.css
+++ /dev/null
@@ -1,3788 +0,0 @@
-/*! * Bootstrap v3.0.0 * * Copyright 2013 Twitter, Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world by @mdo and @fat. */
-/*! normalize.css v2.1.0 | MIT License | git.io/normalize */
-article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary {
- display:block}
-audio,canvas,video {
- display:inline-block}
-audio:not([controls]) {
- display:none;
- height:0}
-[hidden] {
- display:none}
-html {
- font-family:sans-serif;
- -webkit-text-size-adjust:100%;
- -ms-text-size-adjust:100%}
-body {
- margin:0}
-a:focus {
- outline:thin dotted}
-a:active,a:hover {
- outline:0}
-h1 {
- margin:.67em 0;
- font-size:2em}
-abbr[title] {
- border-bottom:1px dotted}
-b,strong {
- font-weight:bold}
-dfn {
- font-style:italic}
-hr {
- height:0;
- -moz-box-sizing:content-box;
- box-sizing:content-box}
-mark {
- color:#000;
- background:#ff0}
-code,kbd,pre,samp {
- font-family:monospace,serif;
- font-size:1em}
-pre {
- white-space:pre-wrap}
-q {
- quotes:"\201C" "\201D" "\2018" "\2019"}
-small {
- font-size:80%}
-sub,sup {
- position:relative;
- font-size:75%;
- line-height:0;
- vertical-align:baseline}
-sup {
- top:-0.5em}
-sub {
- bottom:-0.25em}
-img {
- border:0}
-svg:not(:root) {
- overflow:hidden}
-figure {
- margin:0}
-fieldset {
- padding:.35em .625em .75em;
- margin:0 2px;
- border:1px solid #c0c0c0}
-legend {
- padding:0;
- border:0}
-button,input,select,textarea {
- margin:0;
- font-family:inherit;
- font-size:100%}
-button,input {
- line-height:normal}
-button,select {
- text-transform:none}
-button,html input[type="button"],input[type="reset"],input[type="submit"] {
- cursor:pointer;
- -webkit-appearance:button}
-button[disabled],html input[disabled] {
- cursor:default}
-input[type="checkbox"],input[type="radio"] {
- padding:0;
- box-sizing:border-box}
-input[type="search"] {
- -webkit-box-sizing:content-box;
- -moz-box-sizing:content-box;
- box-sizing:content-box;
- -webkit-appearance:textfield}
-input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration {
- -webkit-appearance:none}
-button::-moz-focus-inner,input::-moz-focus-inner {
- padding:0;
- border:0}
-textarea {
- overflow:auto;
- vertical-align:top}
-table {
- border-collapse:collapse;
- border-spacing:0}
-@media print {
- * {
- color:#000!important;
- text-shadow:none!important;
- background:transparent!important;
- box-shadow:none!important}
-a,a:visited {
- text-decoration:underline}
-a[href]:after {
- content:" (" attr(href) ")"}
-abbr[title]:after {
- content:" (" attr(title) ")"}
-.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after {
- content:""}
-pre,blockquote {
- border:1px solid #999;
- page-break-inside:avoid}
-thead {
- display:table-header-group}
-tr,img {
- page-break-inside:avoid}
-img {
- max-width:100%!important}
-@page {
- margin:2cm .5cm}
-p,h2,h3 {
- orphans:3;
- widows:3}
-h2,h3 {
- page-break-after:avoid}
-.navbar {
- display:none}
-.table td,.table th {
- background-color:#fff!important}
-.btn>.caret,.dropup>.btn>.caret {
- border-top-color:#000!important}
-.label {
- border:1px solid #000}
-.table {
- border-collapse:collapse!important}
-.table-bordered th,.table-bordered td {
- border:1px solid #ddd!important}
-}
-*,*:before,*:after {
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box}
-html {
- font-size:62.5%;
- -webkit-tap-highlight-color:rgba(0,0,0,0)}
-body {
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-size:14px;
- line-height:1.428571429;
- color:#333;
- background-color:#fff}
-input,button,select,textarea {
- font-family:inherit;
- font-size:inherit;
- line-height:inherit}
-button,input,select[multiple],textarea {
- background-image:none}
-a {
- color:#428bca;
- text-decoration:none}
-a:hover,a:focus {
- color:#2a6496;
- text-decoration:underline}
-a:focus {
- outline:thin dotted #333;
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px}
-img {
- vertical-align:middle}
-.img-responsive {
- display:block;
- height:auto;
- max-width:100%}
-.img-rounded {
- border-radius:6px}
-.img-thumbnail {
- display:inline-block;
- height:auto;
- max-width:100%;
- padding:4px;
- line-height:1.428571429;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:4px;
- -webkit-transition:all .2s ease-in-out;
- transition:all .2s ease-in-out}
-.img-circle {
- border-radius:50%}
-hr {
- margin-top:20px;
- margin-bottom:20px;
- border:0;
- border-top:1px solid #eee}
-.sr-only {
- position:absolute;
- width:1px;
- height:1px;
- padding:0;
- margin:-1px;
- overflow:hidden;
- clip:rect(0 0 0 0);
- border:0}
-p {
- margin:0 0 10px}
-.lead {
- margin-bottom:20px;
- font-size:16.099999999999998px;
- font-weight:200;
- line-height:1.4}
-@media(min-width:768px) {
- .lead {
- font-size:21px}
-}
-small {
- font-size:85%}
-cite {
- font-style:normal}
-.text-muted {
- color:#999}
-.text-primary {
- color:#428bca}
-.text-warning {
- color:#c09853}
-.text-danger {
- color:#b94a48}
-.text-success {
- color:#468847}
-.text-info {
- color:#3a87ad}
-.text-left {
- text-align:left}
-.text-right {
- text-align:right}
-.text-center {
- text-align:center}
-h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6 {
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-weight:500;
- line-height:1.1}
-h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small {
- font-weight:normal;
- line-height:1;
- color:#999}
-h1,h2,h3 {
- margin-top:20px;
- margin-bottom:10px}
-h4,h5,h6 {
- margin-top:10px;
- margin-bottom:10px}
-h1,.h1 {
- font-size:36px}
-h2,.h2 {
- font-size:30px}
-h3,.h3 {
- font-size:24px}
-h4,.h4 {
- font-size:18px}
-h5,.h5 {
- font-size:14px}
-h6,.h6 {
- font-size:12px}
-h1 small,.h1 small {
- font-size:24px}
-h2 small,.h2 small {
- font-size:18px}
-h3 small,.h3 small,h4 small,.h4 small {
- font-size:14px}
-.page-header {
- padding-bottom:9px;
- margin:40px 0 20px;
- border-bottom:1px solid #eee}
-ul,ol {
- margin-top:0;
- margin-bottom:10px}
-ul ul,ol ul,ul ol,ol ol {
- margin-bottom:0}
-.list-unstyled {
- padding-left:0;
- list-style:none}
-.list-inline {
- padding-left:0;
- list-style:none}
-.list-inline>li {
- display:inline-block;
- padding-right:5px;
- padding-left:5px}
-dl {
- margin-bottom:20px}
-dt,dd {
- line-height:1.428571429}
-dt {
- font-weight:bold}
-dd {
- margin-left:0}
-@media(min-width:768px) {
- .dl-horizontal dt {
- float:left;
- width:160px;
- overflow:hidden;
- clear:left;
- text-align:right;
- text-overflow:ellipsis;
- white-space:nowrap}
-.dl-horizontal dd {
- margin-left:180px}
-.dl-horizontal dd:before,.dl-horizontal dd:after {
- display:table;
- content:" "}
-.dl-horizontal dd:after {
- clear:both}
-.dl-horizontal dd:before,.dl-horizontal dd:after {
- display:table;
- content:" "}
-.dl-horizontal dd:after {
- clear:both}
-}
-abbr[title],abbr[data-original-title] {
- cursor:help;
- border-bottom:1px dotted #999}
-abbr.initialism {
- font-size:90%;
- text-transform:uppercase}
-blockquote {
- padding:10px 20px;
- margin:0 0 20px;
- border-left:5px solid #eee}
-blockquote p {
- font-size:17.5px;
- font-weight:300;
- line-height:1.25}
-blockquote p:last-child {
- margin-bottom:0}
-blockquote small {
- display:block;
- line-height:1.428571429;
- color:#999}
-blockquote small:before {
- content:'\2014 \00A0'}
-blockquote.pull-right {
- padding-right:15px;
- padding-left:0;
- border-right:5px solid #eee;
- border-left:0}
-blockquote.pull-right p,blockquote.pull-right small {
- text-align:right}
-blockquote.pull-right small:before {
- content:''}
-blockquote.pull-right small:after {
- content:'\00A0 \2014'}
-q:before,q:after,blockquote:before,blockquote:after {
- content:""}
-address {
- display:block;
- margin-bottom:20px;
- font-style:normal;
- line-height:1.428571429}
-code,pre {
- font-family:Monaco,Menlo,Consolas,"Courier New",monospace}
-code {
- padding:2px 4px;
- font-size:90%;
- color:#c7254e;
- white-space:nowrap;
- background-color:#f9f2f4;
- border-radius:4px}
-pre {
- display:block;
- padding:9.5px;
- margin:0 0 10px;
- font-size:13px;
- line-height:1.428571429;
- color:#333;
- word-break:break-all;
- word-wrap:break-word;
- background-color:#f5f5f5;
- border:1px solid #ccc;
- border-radius:4px}
-pre.prettyprint {
- margin-bottom:20px}
-pre code {
- padding:0;
- font-size:inherit;
- color:inherit;
- white-space:pre-wrap;
- background-color:transparent;
- border:0}
-.pre-scrollable {
- max-height:340px;
- overflow-y:scroll}
-.container {
- padding-right:15px;
- padding-left:15px;
- margin-right:auto;
- margin-left:auto}
-.container:before,.container:after {
- display:table;
- content:" "}
-.container:after {
- clear:both}
-.container:before,.container:after {
- display:table;
- content:" "}
-.container:after {
- clear:both}
-.row {
- margin-right:-15px;
- margin-left:-15px}
-.row:before,.row:after {
- display:table;
- content:" "}
-.row:after {
- clear:both}
-.row:before,.row:after {
- display:table;
- content:" "}
-.row:after {
- clear:both}
-.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12 {
- position:relative;
- min-height:1px;
- padding-right:15px;
- padding-left:15px}
-.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11 {
- float:left}
-.col-xs-1 {
- width:8.333333333333332%}
-.col-xs-2 {
- width:16.666666666666664%}
-.col-xs-3 {
- width:25%}
-.col-xs-4 {
- width:33.33333333333333%}
-.col-xs-5 {
- width:41.66666666666667%}
-.col-xs-6 {
- width:50%}
-.col-xs-7 {
- width:58.333333333333336%}
-.col-xs-8 {
- width:66.66666666666666%}
-.col-xs-9 {
- width:75%}
-.col-xs-10 {
- width:83.33333333333334%}
-.col-xs-11 {
- width:91.66666666666666%}
-.col-xs-12 {
- width:100%}
-@media(min-width:768px) {
- .container {
- max-width:750px}
-.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11 {
- float:left}
-.col-sm-1 {
- width:8.333333333333332%}
-.col-sm-2 {
- width:16.666666666666664%}
-.col-sm-3 {
- width:25%}
-.col-sm-4 {
- width:33.33333333333333%}
-.col-sm-5 {
- width:41.66666666666667%}
-.col-sm-6 {
- width:50%}
-.col-sm-7 {
- width:58.333333333333336%}
-.col-sm-8 {
- width:66.66666666666666%}
-.col-sm-9 {
- width:75%}
-.col-sm-10 {
- width:83.33333333333334%}
-.col-sm-11 {
- width:91.66666666666666%}
-.col-sm-12 {
- width:100%}
-.col-sm-push-1 {
- left:8.333333333333332%}
-.col-sm-push-2 {
- left:16.666666666666664%}
-.col-sm-push-3 {
- left:25%}
-.col-sm-push-4 {
- left:33.33333333333333%}
-.col-sm-push-5 {
- left:41.66666666666667%}
-.col-sm-push-6 {
- left:50%}
-.col-sm-push-7 {
- left:58.333333333333336%}
-.col-sm-push-8 {
- left:66.66666666666666%}
-.col-sm-push-9 {
- left:75%}
-.col-sm-push-10 {
- left:83.33333333333334%}
-.col-sm-push-11 {
- left:91.66666666666666%}
-.col-sm-pull-1 {
- right:8.333333333333332%}
-.col-sm-pull-2 {
- right:16.666666666666664%}
-.col-sm-pull-3 {
- right:25%}
-.col-sm-pull-4 {
- right:33.33333333333333%}
-.col-sm-pull-5 {
- right:41.66666666666667%}
-.col-sm-pull-6 {
- right:50%}
-.col-sm-pull-7 {
- right:58.333333333333336%}
-.col-sm-pull-8 {
- right:66.66666666666666%}
-.col-sm-pull-9 {
- right:75%}
-.col-sm-pull-10 {
- right:83.33333333333334%}
-.col-sm-pull-11 {
- right:91.66666666666666%}
-.col-sm-offset-1 {
- margin-left:8.333333333333332%}
-.col-sm-offset-2 {
- margin-left:16.666666666666664%}
-.col-sm-offset-3 {
- margin-left:25%}
-.col-sm-offset-4 {
- margin-left:33.33333333333333%}
-.col-sm-offset-5 {
- margin-left:41.66666666666667%}
-.col-sm-offset-6 {
- margin-left:50%}
-.col-sm-offset-7 {
- margin-left:58.333333333333336%}
-.col-sm-offset-8 {
- margin-left:66.66666666666666%}
-.col-sm-offset-9 {
- margin-left:75%}
-.col-sm-offset-10 {
- margin-left:83.33333333333334%}
-.col-sm-offset-11 {
- margin-left:91.66666666666666%}
-}
-@media(min-width:992px) {
- .container {
- max-width:970px}
-.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11 {
- float:left}
-.col-md-1 {
- width:8.333333333333332%}
-.col-md-2 {
- width:16.666666666666664%}
-.col-md-3 {
- width:25%}
-.col-md-4 {
- width:33.33333333333333%}
-.col-md-5 {
- width:41.66666666666667%}
-.col-md-6 {
- width:50%}
-.col-md-7 {
- width:58.333333333333336%}
-.col-md-8 {
- width:66.66666666666666%}
-.col-md-9 {
- width:75%}
-.col-md-10 {
- width:83.33333333333334%}
-.col-md-11 {
- width:91.66666666666666%}
-.col-md-12 {
- width:100%}
-.col-md-push-0 {
- left:auto}
-.col-md-push-1 {
- left:8.333333333333332%}
-.col-md-push-2 {
- left:16.666666666666664%}
-.col-md-push-3 {
- left:25%}
-.col-md-push-4 {
- left:33.33333333333333%}
-.col-md-push-5 {
- left:41.66666666666667%}
-.col-md-push-6 {
- left:50%}
-.col-md-push-7 {
- left:58.333333333333336%}
-.col-md-push-8 {
- left:66.66666666666666%}
-.col-md-push-9 {
- left:75%}
-.col-md-push-10 {
- left:83.33333333333334%}
-.col-md-push-11 {
- left:91.66666666666666%}
-.col-md-pull-0 {
- right:auto}
-.col-md-pull-1 {
- right:8.333333333333332%}
-.col-md-pull-2 {
- right:16.666666666666664%}
-.col-md-pull-3 {
- right:25%}
-.col-md-pull-4 {
- right:33.33333333333333%}
-.col-md-pull-5 {
- right:41.66666666666667%}
-.col-md-pull-6 {
- right:50%}
-.col-md-pull-7 {
- right:58.333333333333336%}
-.col-md-pull-8 {
- right:66.66666666666666%}
-.col-md-pull-9 {
- right:75%}
-.col-md-pull-10 {
- right:83.33333333333334%}
-.col-md-pull-11 {
- right:91.66666666666666%}
-.col-md-offset-0 {
- margin-left:0}
-.col-md-offset-1 {
- margin-left:8.333333333333332%}
-.col-md-offset-2 {
- margin-left:16.666666666666664%}
-.col-md-offset-3 {
- margin-left:25%}
-.col-md-offset-4 {
- margin-left:33.33333333333333%}
-.col-md-offset-5 {
- margin-left:41.66666666666667%}
-.col-md-offset-6 {
- margin-left:50%}
-.col-md-offset-7 {
- margin-left:58.333333333333336%}
-.col-md-offset-8 {
- margin-left:66.66666666666666%}
-.col-md-offset-9 {
- margin-left:75%}
-.col-md-offset-10 {
- margin-left:83.33333333333334%}
-.col-md-offset-11 {
- margin-left:91.66666666666666%}
-}
-@media(min-width:1200px) {
- .container {
- max-width:1170px}
-.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11 {
- float:left}
-.col-lg-1 {
- width:8.333333333333332%}
-.col-lg-2 {
- width:16.666666666666664%}
-.col-lg-3 {
- width:25%}
-.col-lg-4 {
- width:33.33333333333333%}
-.col-lg-5 {
- width:41.66666666666667%}
-.col-lg-6 {
- width:50%}
-.col-lg-7 {
- width:58.333333333333336%}
-.col-lg-8 {
- width:66.66666666666666%}
-.col-lg-9 {
- width:75%}
-.col-lg-10 {
- width:83.33333333333334%}
-.col-lg-11 {
- width:91.66666666666666%}
-.col-lg-12 {
- width:100%}
-.col-lg-push-0 {
- left:auto}
-.col-lg-push-1 {
- left:8.333333333333332%}
-.col-lg-push-2 {
- left:16.666666666666664%}
-.col-lg-push-3 {
- left:25%}
-.col-lg-push-4 {
- left:33.33333333333333%}
-.col-lg-push-5 {
- left:41.66666666666667%}
-.col-lg-push-6 {
- left:50%}
-.col-lg-push-7 {
- left:58.333333333333336%}
-.col-lg-push-8 {
- left:66.66666666666666%}
-.col-lg-push-9 {
- left:75%}
-.col-lg-push-10 {
- left:83.33333333333334%}
-.col-lg-push-11 {
- left:91.66666666666666%}
-.col-lg-pull-0 {
- right:auto}
-.col-lg-pull-1 {
- right:8.333333333333332%}
-.col-lg-pull-2 {
- right:16.666666666666664%}
-.col-lg-pull-3 {
- right:25%}
-.col-lg-pull-4 {
- right:33.33333333333333%}
-.col-lg-pull-5 {
- right:41.66666666666667%}
-.col-lg-pull-6 {
- right:50%}
-.col-lg-pull-7 {
- right:58.333333333333336%}
-.col-lg-pull-8 {
- right:66.66666666666666%}
-.col-lg-pull-9 {
- right:75%}
-.col-lg-pull-10 {
- right:83.33333333333334%}
-.col-lg-pull-11 {
- right:91.66666666666666%}
-.col-lg-offset-0 {
- margin-left:0}
-.col-lg-offset-1 {
- margin-left:8.333333333333332%}
-.col-lg-offset-2 {
- margin-left:16.666666666666664%}
-.col-lg-offset-3 {
- margin-left:25%}
-.col-lg-offset-4 {
- margin-left:33.33333333333333%}
-.col-lg-offset-5 {
- margin-left:41.66666666666667%}
-.col-lg-offset-6 {
- margin-left:50%}
-.col-lg-offset-7 {
- margin-left:58.333333333333336%}
-.col-lg-offset-8 {
- margin-left:66.66666666666666%}
-.col-lg-offset-9 {
- margin-left:75%}
-.col-lg-offset-10 {
- margin-left:83.33333333333334%}
-.col-lg-offset-11 {
- margin-left:91.66666666666666%}
-}
-table {
- max-width:100%;
- background-color:transparent}
-th {
- text-align:left}
-.table {
- width:100%;
- margin-bottom:20px}
-.table thead>tr>th,.table tbody>tr>th,.table tfoot>tr>th,.table thead>tr>td,.table tbody>tr>td,.table tfoot>tr>td {
- padding:8px;
- line-height:1.428571429;
- vertical-align:top;
- border-top:1px solid #ddd}
-.table thead>tr>th {
- vertical-align:bottom;
- border-bottom:2px solid #ddd}
-.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child td {
- border-top:0}
-.table tbody+tbody {
- border-top:2px solid #ddd}
-.table .table {
- background-color:#fff}
-.table-condensed thead>tr>th,.table-condensed tbody>tr>th,.table-condensed tfoot>tr>th,.table-condensed thead>tr>td,.table-condensed tbody>tr>td,.table-condensed tfoot>tr>td {
- padding:5px}
-.table-bordered {
- border:1px solid #ddd}
-.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td {
- border:1px solid #ddd}
-.table-bordered>thead>tr>th,.table-bordered>thead>tr>td {
- border-bottom-width:2px}
-.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th {
- background-color:#f9f9f9}
-.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th {
- background-color:#f5f5f5}
-table col[class*="col-"] {
- display:table-column;
- float:none}
-table td[class*="col-"],table th[class*="col-"] {
- display:table-cell;
- float:none}
-.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th {
- background-color:#f5f5f5}
-.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th {
- background-color:#dff0d8;
- border-color:#d6e9c6}
-.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td {
- background-color:#d0e9c6;
- border-color:#c9e2b3}
-.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th {
- background-color:#f2dede;
- border-color:#eed3d7}
-.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td {
- background-color:#ebcccc;
- border-color:#e6c1c7}
-.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th {
- background-color:#fcf8e3;
- border-color:#fbeed5}
-.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td {
- background-color:#faf2cc;
- border-color:#f8e5be}
-@media(max-width:768px) {
- .table-responsive {
- width:100%;
- margin-bottom:15px;
- overflow-x:scroll;
- overflow-y:hidden;
- border:1px solid #ddd}
-.table-responsive>.table {
- margin-bottom:0;
- background-color:#fff}
-.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td {
- white-space:nowrap}
-.table-responsive>.table-bordered {
- border:0}
-.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child {
- border-left:0}
-.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child {
- border-right:0}
-.table-responsive>.table-bordered>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td {
- border-bottom:0}
-}
-fieldset {
- padding:0;
- margin:0;
- border:0}
-legend {
- display:block;
- width:100%;
- padding:0;
- margin-bottom:20px;
- font-size:21px;
- line-height:inherit;
- color:#333;
- border:0;
- border-bottom:1px solid #e5e5e5}
-label {
- display:inline-block;
- margin-bottom:5px;
- font-weight:bold}
-input[type="search"] {
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box}
-input[type="radio"],input[type="checkbox"] {
- margin:4px 0 0;
- margin-top:1px \9;
- line-height:normal}
-input[type="file"] {
- display:block}
-select[multiple],select[size] {
- height:auto}
-select optgroup {
- font-family:inherit;
- font-size:inherit;
- font-style:inherit}
-input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus {
- outline:thin dotted #333;
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px}
-input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button {
- height:auto}
-.form-control:-moz-placeholder {
- color:#999}
-.form-control::-moz-placeholder {
- color:#999}
-.form-control:-ms-input-placeholder {
- color:#999}
-.form-control::-webkit-input-placeholder {
- color:#999}
-.form-control {
- display:block;
- width:100%;
- height:34px;
- padding:6px 12px;
- font-size:14px;
- line-height:1.428571429;
- color:#555;
- vertical-align:middle;
- background-color:#fff;
- border:1px solid #ccc;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);
- -webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;
- transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}
-.form-control:focus {
- border-color:#66afe9;
- outline:0;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);
- box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}
-.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control {
- cursor:not-allowed;
- background-color:#eee}
-textarea.form-control {
- height:auto}
-.form-group {
- margin-bottom:15px}
-.radio,.checkbox {
- display:block;
- min-height:20px;
- padding-left:20px;
- margin-top:10px;
- margin-bottom:10px;
- vertical-align:middle}
-.radio label,.checkbox label {
- display:inline;
- margin-bottom:0;
- font-weight:normal;
- cursor:pointer}
-.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"] {
- float:left;
- margin-left:-20px}
-.radio+.radio,.checkbox+.checkbox {
- margin-top:-5px}
-.radio-inline,.checkbox-inline {
- display:inline-block;
- padding-left:20px;
- margin-bottom:0;
- font-weight:normal;
- vertical-align:middle;
- cursor:pointer}
-.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline {
- margin-top:0;
- margin-left:10px}
-input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline {
- cursor:not-allowed}
-.input-sm {
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px}
-select.input-sm {
- height:30px;
- line-height:30px}
-textarea.input-sm {
- height:auto}
-.input-lg {
- height:45px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.33;
- border-radius:6px}
-select.input-lg {
- height:45px;
- line-height:45px}
-textarea.input-lg {
- height:auto}
-.has-warning .help-block,.has-warning .control-label {
- color:#c09853}
-.has-warning .form-control {
- border-color:#c09853;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}
-.has-warning .form-control:focus {
- border-color:#a47e3c;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;
- box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}
-.has-warning .input-group-addon {
- color:#c09853;
- background-color:#fcf8e3;
- border-color:#c09853}
-.has-error .help-block,.has-error .control-label {
- color:#b94a48}
-.has-error .form-control {
- border-color:#b94a48;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}
-.has-error .form-control:focus {
- border-color:#953b39;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;
- box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}
-.has-error .input-group-addon {
- color:#b94a48;
- background-color:#f2dede;
- border-color:#b94a48}
-.has-success .help-block,.has-success .control-label {
- color:#468847}
-.has-success .form-control {
- border-color:#468847;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}
-.has-success .form-control:focus {
- border-color:#356635;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;
- box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}
-.has-success .input-group-addon {
- color:#468847;
- background-color:#dff0d8;
- border-color:#468847}
-.form-control-static {
- padding-top:7px;
- margin-bottom:0}
-.help-block {
- display:block;
- margin-top:5px;
- margin-bottom:10px;
- color:#737373}
-@media(min-width:768px) {
- .form-inline .form-group {
- display:inline-block;
- margin-bottom:0;
- vertical-align:middle}
-.form-inline .form-control {
- display:inline-block}
-.form-inline .radio,.form-inline .checkbox {
- display:inline-block;
- padding-left:0;
- margin-top:0;
- margin-bottom:0}
-.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"] {
- float:none;
- margin-left:0}
-}
-.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline {
- padding-top:7px;
- margin-top:0;
- margin-bottom:0}
-.form-horizontal .form-group {
- margin-right:-15px;
- margin-left:-15px}
-.form-horizontal .form-group:before,.form-horizontal .form-group:after {
- display:table;
- content:" "}
-.form-horizontal .form-group:after {
- clear:both}
-.form-horizontal .form-group:before,.form-horizontal .form-group:after {
- display:table;
- content:" "}
-.form-horizontal .form-group:after {
- clear:both}
-@media(min-width:768px) {
- .form-horizontal .control-label {
- text-align:right}
-}
-.btn {
- display:inline-block;
- padding:6px 12px;
- margin-bottom:0;
- font-size:14px;
- font-weight:normal;
- line-height:1.428571429;
- text-align:center;
- white-space:nowrap;
- vertical-align:middle;
- cursor:pointer;
- border:1px solid transparent;
- border-radius:4px;
- -webkit-user-select:none;
- -moz-user-select:none;
- -ms-user-select:none;
- -o-user-select:none;
- user-select:none}
-.btn:focus {
- outline:thin dotted #333;
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px}
-.btn:hover,.btn:focus {
- color:#333;
- text-decoration:none}
-.btn:active,.btn.active {
- background-image:none;
- outline:0;
- -webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);
- box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}
-.btn.disabled,.btn[disabled],fieldset[disabled] .btn {
- pointer-events:none;
- cursor:not-allowed;
- opacity:.65;
- filter:alpha(opacity=65);
- -webkit-box-shadow:none;
- box-shadow:none}
-.btn-default {
- color:#333;
- background-color:#fff;
- border-color:#ccc}
-.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default {
- color:#333;
- background-color:#ebebeb;
- border-color:#adadad}
-.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default {
- background-image:none}
-.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active {
- background-color:#fff;
- border-color:#ccc}
-.btn-primary {
- color:#fff;
- background-color:#428bca;
- border-color:#357ebd}
-.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary {
- color:#fff;
- background-color:#3276b1;
- border-color:#285e8e}
-.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary {
- background-image:none}
-.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active {
- background-color:#428bca;
- border-color:#357ebd}
-.btn-warning {
- color:#fff;
- background-color:#f0ad4e;
- border-color:#eea236}
-.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning {
- color:#fff;
- background-color:#ed9c28;
- border-color:#d58512}
-.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning {
- background-image:none}
-.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active {
- background-color:#f0ad4e;
- border-color:#eea236}
-.btn-danger {
- color:#fff;
- background-color:#d9534f;
- border-color:#d43f3a}
-.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger {
- color:#fff;
- background-color:#d2322d;
- border-color:#ac2925}
-.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger {
- background-image:none}
-.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active {
- background-color:#d9534f;
- border-color:#d43f3a}
-.btn-success {
- color:#fff;
- background-color:#5cb85c;
- border-color:#4cae4c}
-.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success {
- color:#fff;
- background-color:#47a447;
- border-color:#398439}
-.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success {
- background-image:none}
-.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active {
- background-color:#5cb85c;
- border-color:#4cae4c}
-.btn-info {
- color:#fff;
- background-color:#5bc0de;
- border-color:#46b8da}
-.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info {
- color:#fff;
- background-color:#39b3d7;
- border-color:#269abc}
-.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info {
- background-image:none}
-.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active {
- background-color:#5bc0de;
- border-color:#46b8da}
-.btn-link {
- font-weight:normal;
- color:#428bca;
- cursor:pointer;
- border-radius:0}
-.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link {
- background-color:transparent;
- -webkit-box-shadow:none;
- box-shadow:none}
-.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active {
- border-color:transparent}
-.btn-link:hover,.btn-link:focus {
- color:#2a6496;
- text-decoration:underline;
- background-color:transparent}
-.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus {
- color:#999;
- text-decoration:none}
-.btn-lg {
- padding:10px 16px;
- font-size:18px;
- line-height:1.33;
- border-radius:6px}
-.btn-sm,.btn-xs {
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px}
-.btn-xs {
- padding:1px 5px}
-.btn-block {
- display:block;
- width:100%;
- padding-right:0;
- padding-left:0}
-.btn-block+.btn-block {
- margin-top:5px}
-input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block {
- width:100%}
-.fade {
- opacity:0;
- -webkit-transition:opacity .15s linear;
- transition:opacity .15s linear}
-.fade.in {
- opacity:1}
-.collapse {
- display:none}
-.collapse.in {
- display:block}
-.collapsing {
- position:relative;
- height:0;
- overflow:hidden;
- -webkit-transition:height .35s ease;
- transition:height .35s ease}
-@font-face {
- font-family:'Glyphicons Halflings';
- src:url('../fonts/glyphicons-halflings-regular.eot');
- 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')}
-.glyphicon {
- position:relative;
- top:1px;
- display:inline-block;
- font-family:'Glyphicons Halflings';
- -webkit-font-smoothing:antialiased;
- font-style:normal;
- font-weight:normal;
- line-height:1}
-.glyphicon-asterisk:before {
- content:"\2a"}
-.glyphicon-plus:before {
- content:"\2b"}
-.glyphicon-euro:before {
- content:"\20ac"}
-.glyphicon-minus:before {
- content:"\2212"}
-.glyphicon-cloud:before {
- content:"\2601"}
-.glyphicon-envelope:before {
- content:"\2709"}
-.glyphicon-pencil:before {
- content:"\270f"}
-.glyphicon-glass:before {
- content:"\e001"}
-.glyphicon-music:before {
- content:"\e002"}
-.glyphicon-search:before {
- content:"\e003"}
-.glyphicon-heart:before {
- content:"\e005"}
-.glyphicon-star:before {
- content:"\e006"}
-.glyphicon-star-empty:before {
- content:"\e007"}
-.glyphicon-user:before {
- content:"\e008"}
-.glyphicon-film:before {
- content:"\e009"}
-.glyphicon-th-large:before {
- content:"\e010"}
-.glyphicon-th:before {
- content:"\e011"}
-.glyphicon-th-list:before {
- content:"\e012"}
-.glyphicon-ok:before {
- content:"\e013"}
-.glyphicon-remove:before {
- content:"\e014"}
-.glyphicon-zoom-in:before {
- content:"\e015"}
-.glyphicon-zoom-out:before {
- content:"\e016"}
-.glyphicon-off:before {
- content:"\e017"}
-.glyphicon-signal:before {
- content:"\e018"}
-.glyphicon-cog:before {
- content:"\e019"}
-.glyphicon-trash:before {
- content:"\e020"}
-.glyphicon-home:before {
- content:"\e021"}
-.glyphicon-file:before {
- content:"\e022"}
-.glyphicon-time:before {
- content:"\e023"}
-.glyphicon-road:before {
- content:"\e024"}
-.glyphicon-download-alt:before {
- content:"\e025"}
-.glyphicon-download:before {
- content:"\e026"}
-.glyphicon-upload:before {
- content:"\e027"}
-.glyphicon-inbox:before {
- content:"\e028"}
-.glyphicon-play-circle:before {
- content:"\e029"}
-.glyphicon-repeat:before {
- content:"\e030"}
-.glyphicon-refresh:before {
- content:"\e031"}
-.glyphicon-list-alt:before {
- content:"\e032"}
-.glyphicon-flag:before {
- content:"\e034"}
-.glyphicon-headphones:before {
- content:"\e035"}
-.glyphicon-volume-off:before {
- content:"\e036"}
-.glyphicon-volume-down:before {
- content:"\e037"}
-.glyphicon-volume-up:before {
- content:"\e038"}
-.glyphicon-qrcode:before {
- content:"\e039"}
-.glyphicon-barcode:before {
- content:"\e040"}
-.glyphicon-tag:before {
- content:"\e041"}
-.glyphicon-tags:before {
- content:"\e042"}
-.glyphicon-book:before {
- content:"\e043"}
-.glyphicon-print:before {
- content:"\e045"}
-.glyphicon-font:before {
- content:"\e047"}
-.glyphicon-bold:before {
- content:"\e048"}
-.glyphicon-italic:before {
- content:"\e049"}
-.glyphicon-text-height:before {
- content:"\e050"}
-.glyphicon-text-width:before {
- content:"\e051"}
-.glyphicon-align-left:before {
- content:"\e052"}
-.glyphicon-align-center:before {
- content:"\e053"}
-.glyphicon-align-right:before {
- content:"\e054"}
-.glyphicon-align-justify:before {
- content:"\e055"}
-.glyphicon-list:before {
- content:"\e056"}
-.glyphicon-indent-left:before {
- content:"\e057"}
-.glyphicon-indent-right:before {
- content:"\e058"}
-.glyphicon-facetime-video:before {
- content:"\e059"}
-.glyphicon-picture:before {
- content:"\e060"}
-.glyphicon-map-marker:before {
- content:"\e062"}
-.glyphicon-adjust:before {
- content:"\e063"}
-.glyphicon-tint:before {
- content:"\e064"}
-.glyphicon-edit:before {
- content:"\e065"}
-.glyphicon-share:before {
- content:"\e066"}
-.glyphicon-check:before {
- content:"\e067"}
-.glyphicon-move:before {
- content:"\e068"}
-.glyphicon-step-backward:before {
- content:"\e069"}
-.glyphicon-fast-backward:before {
- content:"\e070"}
-.glyphicon-backward:before {
- content:"\e071"}
-.glyphicon-play:before {
- content:"\e072"}
-.glyphicon-pause:before {
- content:"\e073"}
-.glyphicon-stop:before {
- content:"\e074"}
-.glyphicon-forward:before {
- content:"\e075"}
-.glyphicon-fast-forward:before {
- content:"\e076"}
-.glyphicon-step-forward:before {
- content:"\e077"}
-.glyphicon-eject:before {
- content:"\e078"}
-.glyphicon-chevron-left:before {
- content:"\e079"}
-.glyphicon-chevron-right:before {
- content:"\e080"}
-.glyphicon-plus-sign:before {
- content:"\e081"}
-.glyphicon-minus-sign:before {
- content:"\e082"}
-.glyphicon-remove-sign:before {
- content:"\e083"}
-.glyphicon-ok-sign:before {
- content:"\e084"}
-.glyphicon-question-sign:before {
- content:"\e085"}
-.glyphicon-info-sign:before {
- content:"\e086"}
-.glyphicon-screenshot:before {
- content:"\e087"}
-.glyphicon-remove-circle:before {
- content:"\e088"}
-.glyphicon-ok-circle:before {
- content:"\e089"}
-.glyphicon-ban-circle:before {
- content:"\e090"}
-.glyphicon-arrow-left:before {
- content:"\e091"}
-.glyphicon-arrow-right:before {
- content:"\e092"}
-.glyphicon-arrow-up:before {
- content:"\e093"}
-.glyphicon-arrow-down:before {
- content:"\e094"}
-.glyphicon-share-alt:before {
- content:"\e095"}
-.glyphicon-resize-full:before {
- content:"\e096"}
-.glyphicon-resize-small:before {
- content:"\e097"}
-.glyphicon-exclamation-sign:before {
- content:"\e101"}
-.glyphicon-gift:before {
- content:"\e102"}
-.glyphicon-leaf:before {
- content:"\e103"}
-.glyphicon-eye-open:before {
- content:"\e105"}
-.glyphicon-eye-close:before {
- content:"\e106"}
-.glyphicon-warning-sign:before {
- content:"\e107"}
-.glyphicon-plane:before {
- content:"\e108"}
-.glyphicon-random:before {
- content:"\e110"}
-.glyphicon-comment:before {
- content:"\e111"}
-.glyphicon-magnet:before {
- content:"\e112"}
-.glyphicon-chevron-up:before {
- content:"\e113"}
-.glyphicon-chevron-down:before {
- content:"\e114"}
-.glyphicon-retweet:before {
- content:"\e115"}
-.glyphicon-shopping-cart:before {
- content:"\e116"}
-.glyphicon-folder-close:before {
- content:"\e117"}
-.glyphicon-folder-open:before {
- content:"\e118"}
-.glyphicon-resize-vertical:before {
- content:"\e119"}
-.glyphicon-resize-horizontal:before {
- content:"\e120"}
-.glyphicon-hdd:before {
- content:"\e121"}
-.glyphicon-bullhorn:before {
- content:"\e122"}
-.glyphicon-certificate:before {
- content:"\e124"}
-.glyphicon-thumbs-up:before {
- content:"\e125"}
-.glyphicon-thumbs-down:before {
- content:"\e126"}
-.glyphicon-hand-right:before {
- content:"\e127"}
-.glyphicon-hand-left:before {
- content:"\e128"}
-.glyphicon-hand-up:before {
- content:"\e129"}
-.glyphicon-hand-down:before {
- content:"\e130"}
-.glyphicon-circle-arrow-right:before {
- content:"\e131"}
-.glyphicon-circle-arrow-left:before {
- content:"\e132"}
-.glyphicon-circle-arrow-up:before {
- content:"\e133"}
-.glyphicon-circle-arrow-down:before {
- content:"\e134"}
-.glyphicon-globe:before {
- content:"\e135"}
-.glyphicon-tasks:before {
- content:"\e137"}
-.glyphicon-filter:before {
- content:"\e138"}
-.glyphicon-fullscreen:before {
- content:"\e140"}
-.glyphicon-dashboard:before {
- content:"\e141"}
-.glyphicon-heart-empty:before {
- content:"\e143"}
-.glyphicon-link:before {
- content:"\e144"}
-.glyphicon-phone:before {
- content:"\e145"}
-.glyphicon-usd:before {
- content:"\e148"}
-.glyphicon-gbp:before {
- content:"\e149"}
-.glyphicon-sort:before {
- content:"\e150"}
-.glyphicon-sort-by-alphabet:before {
- content:"\e151"}
-.glyphicon-sort-by-alphabet-alt:before {
- content:"\e152"}
-.glyphicon-sort-by-order:before {
- content:"\e153"}
-.glyphicon-sort-by-order-alt:before {
- content:"\e154"}
-.glyphicon-sort-by-attributes:before {
- content:"\e155"}
-.glyphicon-sort-by-attributes-alt:before {
- content:"\e156"}
-.glyphicon-unchecked:before {
- content:"\e157"}
-.glyphicon-expand:before {
- content:"\e158"}
-.glyphicon-collapse-down:before {
- content:"\e159"}
-.glyphicon-collapse-up:before {
- content:"\e160"}
-.glyphicon-log-in:before {
- content:"\e161"}
-.glyphicon-flash:before {
- content:"\e162"}
-.glyphicon-log-out:before {
- content:"\e163"}
-.glyphicon-new-window:before {
- content:"\e164"}
-.glyphicon-record:before {
- content:"\e165"}
-.glyphicon-save:before {
- content:"\e166"}
-.glyphicon-open:before {
- content:"\e167"}
-.glyphicon-saved:before {
- content:"\e168"}
-.glyphicon-import:before {
- content:"\e169"}
-.glyphicon-export:before {
- content:"\e170"}
-.glyphicon-send:before {
- content:"\e171"}
-.glyphicon-floppy-disk:before {
- content:"\e172"}
-.glyphicon-floppy-saved:before {
- content:"\e173"}
-.glyphicon-floppy-remove:before {
- content:"\e174"}
-.glyphicon-floppy-save:before {
- content:"\e175"}
-.glyphicon-floppy-open:before {
- content:"\e176"}
-.glyphicon-credit-card:before {
- content:"\e177"}
-.glyphicon-transfer:before {
- content:"\e178"}
-.glyphicon-cutlery:before {
- content:"\e179"}
-.glyphicon-header:before {
- content:"\e180"}
-.glyphicon-compressed:before {
- content:"\e181"}
-.glyphicon-earphone:before {
- content:"\e182"}
-.glyphicon-phone-alt:before {
- content:"\e183"}
-.glyphicon-tower:before {
- content:"\e184"}
-.glyphicon-stats:before {
- content:"\e185"}
-.glyphicon-sd-video:before {
- content:"\e186"}
-.glyphicon-hd-video:before {
- content:"\e187"}
-.glyphicon-subtitles:before {
- content:"\e188"}
-.glyphicon-sound-stereo:before {
- content:"\e189"}
-.glyphicon-sound-dolby:before {
- content:"\e190"}
-.glyphicon-sound-5-1:before {
- content:"\e191"}
-.glyphicon-sound-6-1:before {
- content:"\e192"}
-.glyphicon-sound-7-1:before {
- content:"\e193"}
-.glyphicon-copyright-mark:before {
- content:"\e194"}
-.glyphicon-registration-mark:before {
- content:"\e195"}
-.glyphicon-cloud-download:before {
- content:"\e197"}
-.glyphicon-cloud-upload:before {
- content:"\e198"}
-.glyphicon-tree-conifer:before {
- content:"\e199"}
-.glyphicon-tree-deciduous:before {
- content:"\e200"}
-.glyphicon-briefcase:before {
- content:"\1f4bc"}
-.glyphicon-calendar:before {
- content:"\1f4c5"}
-.glyphicon-pushpin:before {
- content:"\1f4cc"}
-.glyphicon-paperclip:before {
- content:"\1f4ce"}
-.glyphicon-camera:before {
- content:"\1f4f7"}
-.glyphicon-lock:before {
- content:"\1f512"}
-.glyphicon-bell:before {
- content:"\1f514"}
-.glyphicon-bookmark:before {
- content:"\1f516"}
-.glyphicon-fire:before {
- content:"\1f525"}
-.glyphicon-wrench:before {
- content:"\1f527"}
-.caret {
- display:inline-block;
- width:0;
- height:0;
- margin-left:2px;
- vertical-align:middle;
- border-top:4px solid #000;
- border-right:4px solid transparent;
- border-bottom:0 dotted;
- border-left:4px solid transparent;
- content:""}
-.dropdown {
- position:relative}
-.dropdown-toggle:focus {
- outline:0}
-.dropdown-menu {
- position:absolute;
- top:100%;
- left:0;
- z-index:1000;
- display:none;
- float:left;
- min-width:160px;
- padding:5px 0;
- margin:2px 0 0;
- font-size:14px;
- list-style:none;
- background-color:#fff;
- border:1px solid #ccc;
- border:1px solid rgba(0,0,0,0.15);
- border-radius:4px;
- -webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);
- box-shadow:0 6px 12px rgba(0,0,0,0.175);
- background-clip:padding-box}
-.dropdown-menu.pull-right {
- right:0;
- left:auto}
-.dropdown-menu .divider {
- height:1px;
- margin:9px 0;
- overflow:hidden;
- background-color:#e5e5e5}
-.dropdown-menu>li>a {
- display:block;
- padding:3px 20px;
- clear:both;
- font-weight:normal;
- line-height:1.428571429;
- color:#333;
- white-space:nowrap}
-.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus {
- color:#fff;
- text-decoration:none;
- background-color:#428bca}
-.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus {
- color:#fff;
- text-decoration:none;
- background-color:#428bca;
- outline:0}
-.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus {
- color:#999}
-.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus {
- text-decoration:none;
- cursor:not-allowed;
- background-color:transparent;
- background-image:none;
- filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}
-.open>.dropdown-menu {
- display:block}
-.open>a {
- outline:0}
-.dropdown-header {
- display:block;
- padding:3px 20px;
- font-size:12px;
- line-height:1.428571429;
- color:#999}
-.dropdown-backdrop {
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:990}
-.pull-right>.dropdown-menu {
- right:0;
- left:auto}
-.dropup .caret,.navbar-fixed-bottom .dropdown .caret {
- border-top:0 dotted;
- border-bottom:4px solid #000;
- content:""}
-.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu {
- top:auto;
- bottom:100%;
- margin-bottom:1px}
-@media(min-width:768px) {
- .navbar-right .dropdown-menu {
- right:0;
- left:auto}
-}
-.btn-default .caret {
- border-top-color:#333}
-.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret {
- border-top-color:#fff}
-.dropup .btn-default .caret {
- border-bottom-color:#333}
-.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret {
- border-bottom-color:#fff}
-.btn-group,.btn-group-vertical {
- position:relative;
- display:inline-block;
- vertical-align:middle}
-.btn-group>.btn,.btn-group-vertical>.btn {
- position:relative;
- float:left}
-.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active {
- z-index:2}
-.btn-group>.btn:focus,.btn-group-vertical>.btn:focus {
- outline:0}
-.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group {
- margin-left:-1px}
-.btn-toolbar:before,.btn-toolbar:after {
- display:table;
- content:" "}
-.btn-toolbar:after {
- clear:both}
-.btn-toolbar:before,.btn-toolbar:after {
- display:table;
- content:" "}
-.btn-toolbar:after {
- clear:both}
-.btn-toolbar .btn-group {
- float:left}
-.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group {
- margin-left:5px}
-.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
- border-radius:0}
-.btn-group>.btn:first-child {
- margin-left:0}
-.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle) {
- border-top-right-radius:0;
- border-bottom-right-radius:0}
-.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child) {
- border-bottom-left-radius:0;
- border-top-left-radius:0}
-.btn-group>.btn-group {
- float:left}
-.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn {
- border-radius:0}
-.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle {
- border-top-right-radius:0;
- border-bottom-right-radius:0}
-.btn-group>.btn-group:last-child>.btn:first-child {
- border-bottom-left-radius:0;
- border-top-left-radius:0}
-.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle {
- outline:0}
-.btn-group-xs>.btn {
- padding:5px 10px;
- padding:1px 5px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px}
-.btn-group-sm>.btn {
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px}
-.btn-group-lg>.btn {
- padding:10px 16px;
- font-size:18px;
- line-height:1.33;
- border-radius:6px}
-.btn-group>.btn+.dropdown-toggle {
- padding-right:8px;
- padding-left:8px}
-.btn-group>.btn-lg+.dropdown-toggle {
- padding-right:12px;
- padding-left:12px}
-.btn-group.open .dropdown-toggle {
- -webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);
- box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}
-.btn .caret {
- margin-left:0}
-.btn-lg .caret {
- border-width:5px 5px 0;
- border-bottom-width:0}
-.dropup .btn-lg .caret {
- border-width:0 5px 5px}
-.btn-group-vertical>.btn,.btn-group-vertical>.btn-group {
- display:block;
- float:none;
- width:100%;
- max-width:100%}
-.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after {
- display:table;
- content:" "}
-.btn-group-vertical>.btn-group:after {
- clear:both}
-.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after {
- display:table;
- content:" "}
-.btn-group-vertical>.btn-group:after {
- clear:both}
-.btn-group-vertical>.btn-group>.btn {
- float:none}
-.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group {
- margin-top:-1px;
- margin-left:0}
-.btn-group-vertical>.btn:not(:first-child):not(:last-child) {
- border-radius:0}
-.btn-group-vertical>.btn:first-child:not(:last-child) {
- border-top-right-radius:4px;
- border-bottom-right-radius:0;
- border-bottom-left-radius:0}
-.btn-group-vertical>.btn:last-child:not(:first-child) {
- border-top-right-radius:0;
- border-bottom-left-radius:4px;
- border-top-left-radius:0}
-.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn {
- border-radius:0}
-.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle {
- border-bottom-right-radius:0;
- border-bottom-left-radius:0}
-.btn-group-vertical>.btn-group:last-child>.btn:first-child {
- border-top-right-radius:0;
- border-top-left-radius:0}
-.btn-group-justified {
- display:table;
- width:100%;
- border-collapse:separate;
- table-layout:fixed}
-.btn-group-justified .btn {
- display:table-cell;
- float:none;
- width:1%}
-[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"] {
- display:none}
-.input-group {
- position:relative;
- display:table;
- border-collapse:separate}
-.input-group.col {
- float:none;
- padding-right:0;
- padding-left:0}
-.input-group .form-control {
- width:100%;
- margin-bottom:0}
-.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn {
- height:45px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.33;
- border-radius:6px}
-select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn {
- height:45px;
- line-height:45px}
-textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn {
- height:auto}
-.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn {
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px}
-select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn {
- height:30px;
- line-height:30px}
-textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn {
- height:auto}
-.input-group-addon,.input-group-btn,.input-group .form-control {
- display:table-cell}
-.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child) {
- border-radius:0}
-.input-group-addon,.input-group-btn {
- width:1%;
- white-space:nowrap;
- vertical-align:middle}
-.input-group-addon {
- padding:6px 12px;
- font-size:14px;
- font-weight:normal;
- line-height:1;
- text-align:center;
- background-color:#eee;
- border:1px solid #ccc;
- border-radius:4px}
-.input-group-addon.input-sm {
- padding:5px 10px;
- font-size:12px;
- border-radius:3px}
-.input-group-addon.input-lg {
- padding:10px 16px;
- font-size:18px;
- border-radius:6px}
-.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"] {
- margin-top:0}
-.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle) {
- border-top-right-radius:0;
- border-bottom-right-radius:0}
-.input-group-addon:first-child {
- border-right:0}
-.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child) {
- border-bottom-left-radius:0;
- border-top-left-radius:0}
-.input-group-addon:last-child {
- border-left:0}
-.input-group-btn {
- position:relative;
- white-space:nowrap}
-.input-group-btn>.btn {
- position:relative}
-.input-group-btn>.btn+.btn {
- margin-left:-4px}
-.input-group-btn>.btn:hover,.input-group-btn>.btn:active {
- z-index:2}
-.nav {
- padding-left:0;
- margin-bottom:0;
- list-style:none}
-.nav:before,.nav:after {
- display:table;
- content:" "}
-.nav:after {
- clear:both}
-.nav:before,.nav:after {
- display:table;
- content:" "}
-.nav:after {
- clear:both}
-.nav>li {
- position:relative;
- display:block}
-.nav>li>a {
- position:relative;
- display:block;
- padding:10px 15px}
-.nav>li>a:hover,.nav>li>a:focus {
- text-decoration:none;
- background-color:#eee}
-.nav>li.disabled>a {
- color:#999}
-.nav>li.disabled>a:hover,.nav>li.disabled>a:focus {
- color:#999;
- text-decoration:none;
- cursor:not-allowed;
- background-color:transparent}
-.nav .open>a,.nav .open>a:hover,.nav .open>a:focus {
- background-color:#eee;
- border-color:#428bca}
-.nav .nav-divider {
- height:1px;
- margin:9px 0;
- overflow:hidden;
- background-color:#e5e5e5}
-.nav>li>a>img {
- max-width:none}
-.nav-tabs {
- border-bottom:1px solid #ddd}
-.nav-tabs>li {
- float:left;
- margin-bottom:-1px}
-.nav-tabs>li>a {
- margin-right:2px;
- line-height:1.428571429;
- border:1px solid transparent;
- border-radius:4px 4px 0 0}
-.nav-tabs>li>a:hover {
- border-color:#eee #eee #ddd}
-.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus {
- color:#555;
- cursor:default;
- background-color:#fff;
- border:1px solid #ddd;
- border-bottom-color:transparent}
-.nav-tabs.nav-justified {
- width:100%;
- border-bottom:0}
-.nav-tabs.nav-justified>li {
- float:none}
-.nav-tabs.nav-justified>li>a {
- text-align:center}
-@media(min-width:768px) {
- .nav-tabs.nav-justified>li {
- display:table-cell;
- width:1%}
-}
-.nav-tabs.nav-justified>li>a {
- margin-right:0;
- border-bottom:1px solid #ddd}
-.nav-tabs.nav-justified>.active>a {
- border-bottom-color:#fff}
-.nav-pills>li {
- float:left}
-.nav-pills>li>a {
- border-radius:5px}
-.nav-pills>li+li {
- margin-left:2px}
-.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus {
- color:#fff;
- background-color:#428bca}
-.nav-stacked>li {
- float:none}
-.nav-stacked>li+li {
- margin-top:2px;
- margin-left:0}
-.nav-justified {
- width:100%}
-.nav-justified>li {
- float:none}
-.nav-justified>li>a {
- text-align:center}
-@media(min-width:768px) {
- .nav-justified>li {
- display:table-cell;
- width:1%}
-}
-.nav-tabs-justified {
- border-bottom:0}
-.nav-tabs-justified>li>a {
- margin-right:0;
- border-bottom:1px solid #ddd}
-.nav-tabs-justified>.active>a {
- border-bottom-color:#fff}
-.tabbable:before,.tabbable:after {
- display:table;
- content:" "}
-.tabbable:after {
- clear:both}
-.tabbable:before,.tabbable:after {
- display:table;
- content:" "}
-.tabbable:after {
- clear:both}
-.tab-content>.tab-pane,.pill-content>.pill-pane {
- display:none}
-.tab-content>.active,.pill-content>.active {
- display:block}
-.nav .caret {
- border-top-color:#428bca;
- border-bottom-color:#428bca}
-.nav a:hover .caret {
- border-top-color:#2a6496;
- border-bottom-color:#2a6496}
-.nav-tabs .dropdown-menu {
- margin-top:-1px;
- border-top-right-radius:0;
- border-top-left-radius:0}
-.navbar {
- position:relative;
- z-index:1000;
- min-height:50px;
- margin-bottom:20px;
- border:1px solid transparent}
-.navbar:before,.navbar:after {
- display:table;
- content:" "}
-.navbar:after {
- clear:both}
-.navbar:before,.navbar:after {
- display:table;
- content:" "}
-.navbar:after {
- clear:both}
-@media(min-width:768px) {
- .navbar {
- border-radius:4px}
-}
-.navbar-header:before,.navbar-header:after {
- display:table;
- content:" "}
-.navbar-header:after {
- clear:both}
-.navbar-header:before,.navbar-header:after {
- display:table;
- content:" "}
-.navbar-header:after {
- clear:both}
-@media(min-width:768px) {
- .navbar-header {
- float:left}
-}
-.navbar-collapse {
- max-height:340px;
- padding-right:15px;
- padding-left:15px;
- overflow-x:visible;
- border-top:1px solid transparent;
- box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);
- -webkit-overflow-scrolling:touch}
-.navbar-collapse:before,.navbar-collapse:after {
- display:table;
- content:" "}
-.navbar-collapse:after {
- clear:both}
-.navbar-collapse:before,.navbar-collapse:after {
- display:table;
- content:" "}
-.navbar-collapse:after {
- clear:both}
-.navbar-collapse.in {
- overflow-y:auto}
-@media(min-width:768px) {
- .navbar-collapse {
- width:auto;
- border-top:0;
- box-shadow:none}
-.navbar-collapse.collapse {
- display:block!important;
- height:auto!important;
- padding-bottom:0;
- overflow:visible!important}
-.navbar-collapse.in {
- overflow-y:visible}
-.navbar-collapse .navbar-nav.navbar-left:first-child {
- margin-left:-15px}
-.navbar-collapse .navbar-nav.navbar-right:last-child {
- margin-right:-15px}
-.navbar-collapse .navbar-text:last-child {
- margin-right:0}
-}
-.container>.navbar-header,.container>.navbar-collapse {
- margin-right:-15px;
- margin-left:-15px}
-@media(min-width:768px) {
- .container>.navbar-header,.container>.navbar-collapse {
- margin-right:0;
- margin-left:0}
-}
-.navbar-static-top {
- border-width:0 0 1px}
-@media(min-width:768px) {
- .navbar-static-top {
- border-radius:0}
-}
-.navbar-fixed-top,.navbar-fixed-bottom {
- position:fixed;
- right:0;
- left:0;
- border-width:0 0 1px}
-@media(min-width:768px) {
- .navbar-fixed-top,.navbar-fixed-bottom {
- border-radius:0}
-}
-.navbar-fixed-top {
- top:0;
- z-index:1030}
-.navbar-fixed-bottom {
- bottom:0;
- margin-bottom:0}
-.navbar-brand {
- float:left;
- padding:15px 15px;
- font-size:18px;
- line-height:20px}
-.navbar-brand:hover,.navbar-brand:focus {
- text-decoration:none}
-@media(min-width:768px) {
- .navbar>.container .navbar-brand {
- margin-left:-15px}
-}
-.navbar-toggle {
- position:relative;
- float:right;
- padding:9px 10px;
- margin-top:8px;
- margin-right:15px;
- margin-bottom:8px;
- background-color:transparent;
- border:1px solid transparent;
- border-radius:4px}
-.navbar-toggle .icon-bar {
- display:block;
- width:22px;
- height:2px;
- border-radius:1px}
-.navbar-toggle .icon-bar+.icon-bar {
- margin-top:4px}
-@media(min-width:768px) {
- .navbar-toggle {
- display:none}
-}
-.navbar-nav {
- margin:7.5px -15px}
-.navbar-nav>li>a {
- padding-top:10px;
- padding-bottom:10px;
- line-height:20px}
-@media(max-width:767px) {
- .navbar-nav .open .dropdown-menu {
- position:static;
- float:none;
- width:auto;
- margin-top:0;
- background-color:transparent;
- border:0;
- box-shadow:none}
-.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header {
- padding:5px 15px 5px 25px}
-.navbar-nav .open .dropdown-menu>li>a {
- line-height:20px}
-.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus {
- background-image:none}
-}
-@media(min-width:768px) {
- .navbar-nav {
- float:left;
- margin:0}
-.navbar-nav>li {
- float:left}
-.navbar-nav>li>a {
- padding-top:15px;
- padding-bottom:15px}
-}
-@media(min-width:768px) {
- .navbar-left {
- float:left!important}
-.navbar-right {
- float:right!important}
-}
-.navbar-form {
- padding:10px 15px;
- margin-top:8px;
- margin-right:-15px;
- margin-bottom:8px;
- margin-left:-15px;
- border-top:1px solid transparent;
- border-bottom:1px solid transparent;
- -webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);
- box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}
-@media(min-width:768px) {
- .navbar-form .form-group {
- display:inline-block;
- margin-bottom:0;
- vertical-align:middle}
-.navbar-form .form-control {
- display:inline-block}
-.navbar-form .radio,.navbar-form .checkbox {
- display:inline-block;
- padding-left:0;
- margin-top:0;
- margin-bottom:0}
-.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"] {
- float:none;
- margin-left:0}
-}
-@media(max-width:767px) {
- .navbar-form .form-group {
- margin-bottom:5px}
-}
-@media(min-width:768px) {
- .navbar-form {
- width:auto;
- padding-top:0;
- padding-bottom:0;
- margin-right:0;
- margin-left:0;
- border:0;
- -webkit-box-shadow:none;
- box-shadow:none}
-}
-.navbar-nav>li>.dropdown-menu {
- margin-top:0;
- border-top-right-radius:0;
- border-top-left-radius:0}
-.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu {
- border-bottom-right-radius:0;
- border-bottom-left-radius:0}
-.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right {
- right:0;
- left:auto}
-.navbar-btn {
- margin-top:8px;
- margin-bottom:8px}
-.navbar-text {
- float:left;
- margin-top:15px;
- margin-bottom:15px}
-@media(min-width:768px) {
- .navbar-text {
- margin-right:15px;
- margin-left:15px}
-}
-.navbar-default {
- background-color:#f8f8f8;
- border-color:#e7e7e7}
-.navbar-default .navbar-brand {
- color:#777}
-.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus {
- color:#5e5e5e;
- background-color:transparent}
-.navbar-default .navbar-text {
- color:#777}
-.navbar-default .navbar-nav>li>a {
- color:#777}
-.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus {
- color:#333;
- background-color:transparent}
-.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus {
- color:#555;
- background-color:#e7e7e7}
-.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus {
- color:#ccc;
- background-color:transparent}
-.navbar-default .navbar-toggle {
- border-color:#ddd}
-.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus {
- background-color:#ddd}
-.navbar-default .navbar-toggle .icon-bar {
- background-color:#ccc}
-.navbar-default .navbar-collapse,.navbar-default .navbar-form {
- border-color:#e6e6e6}
-.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret {
- border-top-color:#333;
- border-bottom-color:#333}
-.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus {
- color:#555;
- background-color:#e7e7e7}
-.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret {
- border-top-color:#555;
- border-bottom-color:#555}
-.navbar-default .navbar-nav>.dropdown>a .caret {
- border-top-color:#777;
- border-bottom-color:#777}
-@media(max-width:767px) {
- .navbar-default .navbar-nav .open .dropdown-menu>li>a {
- color:#777}
-.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus {
- color:#333;
- background-color:transparent}
-.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus {
- color:#555;
- background-color:#e7e7e7}
-.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus {
- color:#ccc;
- background-color:transparent}
-}
-.navbar-default .navbar-link {
- color:#777}
-.navbar-default .navbar-link:hover {
- color:#333}
-.navbar-inverse {
- background-color:#222;
- border-color:#080808}
-.navbar-inverse .navbar-brand {
- color:#999}
-.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus {
- color:#fff;
- background-color:transparent}
-.navbar-inverse .navbar-text {
- color:#999}
-.navbar-inverse .navbar-nav>li>a {
- color:#999}
-.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus {
- color:#fff;
- background-color:transparent}
-.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus {
- color:#fff;
- background-color:#080808}
-.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus {
- color:#444;
- background-color:transparent}
-.navbar-inverse .navbar-toggle {
- border-color:#333}
-.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus {
- background-color:#333}
-.navbar-inverse .navbar-toggle .icon-bar {
- background-color:#fff}
-.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form {
- border-color:#101010}
-.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus {
- color:#fff;
- background-color:#080808}
-.navbar-inverse .navbar-nav>.dropdown>a:hover .caret {
- border-top-color:#fff;
- border-bottom-color:#fff}
-.navbar-inverse .navbar-nav>.dropdown>a .caret {
- border-top-color:#999;
- border-bottom-color:#999}
-.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret {
- border-top-color:#fff;
- border-bottom-color:#fff}
-@media(max-width:767px) {
- .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header {
- border-color:#080808}
-.navbar-inverse .navbar-nav .open .dropdown-menu>li>a {
- color:#999}
-.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus {
- color:#fff;
- background-color:transparent}
-.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus {
- color:#fff;
- background-color:#080808}
-.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus {
- color:#444;
- background-color:transparent}
-}
-.navbar-inverse .navbar-link {
- color:#999}
-.navbar-inverse .navbar-link:hover {
- color:#fff}
-.breadcrumb {
- padding:8px 15px;
- margin-bottom:20px;
- list-style:none;
- background-color:#f5f5f5;
- border-radius:4px}
-.breadcrumb>li {
- display:inline-block}
-.breadcrumb>li+li:before {
- padding:0 5px;
- color:#ccc;
- content:"/\00a0"}
-.breadcrumb>.active {
- color:#999}
-.pagination {
- display:inline-block;
- padding-left:0;
- margin:20px 0;
- border-radius:4px}
-.pagination>li {
- display:inline}
-.pagination>li>a,.pagination>li>span {
- position:relative;
- float:left;
- padding:6px 12px;
- margin-left:-1px;
- line-height:1.428571429;
- text-decoration:none;
- background-color:#fff;
- border:1px solid #ddd}
-.pagination>li:first-child>a,.pagination>li:first-child>span {
- margin-left:0;
- border-bottom-left-radius:4px;
- border-top-left-radius:4px}
-.pagination>li:last-child>a,.pagination>li:last-child>span {
- border-top-right-radius:4px;
- border-bottom-right-radius:4px}
-.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus {
- background-color:#eee}
-.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus {
- z-index:2;
- color:#fff;
- cursor:default;
- background-color:#428bca;
- border-color:#428bca}
-.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus {
- color:#999;
- cursor:not-allowed;
- background-color:#fff;
- border-color:#ddd}
-.pagination-lg>li>a,.pagination-lg>li>span {
- padding:10px 16px;
- font-size:18px}
-.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span {
- border-bottom-left-radius:6px;
- border-top-left-radius:6px}
-.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span {
- border-top-right-radius:6px;
- border-bottom-right-radius:6px}
-.pagination-sm>li>a,.pagination-sm>li>span {
- padding:5px 10px;
- font-size:12px}
-.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span {
- border-bottom-left-radius:3px;
- border-top-left-radius:3px}
-.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span {
- border-top-right-radius:3px;
- border-bottom-right-radius:3px}
-.pager {
- padding-left:0;
- margin:20px 0;
- text-align:center;
- list-style:none}
-.pager:before,.pager:after {
- display:table;
- content:" "}
-.pager:after {
- clear:both}
-.pager:before,.pager:after {
- display:table;
- content:" "}
-.pager:after {
- clear:both}
-.pager li {
- display:inline}
-.pager li>a,.pager li>span {
- display:inline-block;
- padding:5px 14px;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:15px}
-.pager li>a:hover,.pager li>a:focus {
- text-decoration:none;
- background-color:#eee}
-.pager .next>a,.pager .next>span {
- float:right}
-.pager .previous>a,.pager .previous>span {
- float:left}
-.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span {
- color:#999;
- cursor:not-allowed;
- background-color:#fff}
-.label {
- display:inline;
- padding:.2em .6em .3em;
- font-size:75%;
- font-weight:bold;
- line-height:1;
- color:#fff;
- text-align:center;
- white-space:nowrap;
- vertical-align:baseline;
- border-radius:.25em}
-.label[href]:hover,.label[href]:focus {
- color:#fff;
- text-decoration:none;
- cursor:pointer}
-.label:empty {
- display:none}
-.label-default {
- background-color:#999}
-.label-default[href]:hover,.label-default[href]:focus {
- background-color:#808080}
-.label-primary {
- background-color:#428bca}
-.label-primary[href]:hover,.label-primary[href]:focus {
- background-color:#3071a9}
-.label-success {
- background-color:#5cb85c}
-.label-success[href]:hover,.label-success[href]:focus {
- background-color:#449d44}
-.label-info {
- background-color:#5bc0de}
-.label-info[href]:hover,.label-info[href]:focus {
- background-color:#31b0d5}
-.label-warning {
- background-color:#f0ad4e}
-.label-warning[href]:hover,.label-warning[href]:focus {
- background-color:#ec971f}
-.label-danger {
- background-color:#d9534f}
-.label-danger[href]:hover,.label-danger[href]:focus {
- background-color:#c9302c}
-.badge {
- display:inline-block;
- min-width:10px;
- padding:3px 7px;
- font-size:12px;
- font-weight:bold;
- line-height:1;
- color:#fff;
- text-align:center;
- white-space:nowrap;
- vertical-align:baseline;
- background-color:#999;
- border-radius:10px}
-.badge:empty {
- display:none}
-a.badge:hover,a.badge:focus {
- color:#fff;
- text-decoration:none;
- cursor:pointer}
-.btn .badge {
- position:relative;
- top:-1px}
-a.list-group-item.active>.badge,.nav-pills>.active>a>.badge {
- color:#428bca;
- background-color:#fff}
-.nav-pills>li>a>.badge {
- margin-left:3px}
-.jumbotron {
- padding:30px;
- margin-bottom:30px;
- font-size:21px;
- font-weight:200;
- line-height:2.1428571435;
- color:inherit;
- background-color:#eee}
-.jumbotron h1 {
- line-height:1;
- color:inherit}
-.jumbotron p {
- line-height:1.4}
-.container .jumbotron {
- border-radius:6px}
-@media screen and (min-width:768px) {
- .jumbotron {
- padding-top:48px;
- padding-bottom:48px}
-.container .jumbotron {
- padding-right:60px;
- padding-left:60px}
-.jumbotron h1 {
- font-size:63px}
-}
-.thumbnail {
- display:inline-block;
- display:block;
- height:auto;
- max-width:100%;
- padding:4px;
- line-height:1.428571429;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:4px;
- -webkit-transition:all .2s ease-in-out;
- transition:all .2s ease-in-out}
-.thumbnail>img {
- display:block;
- height:auto;
- max-width:100%}
-a.thumbnail:hover,a.thumbnail:focus {
- border-color:#428bca}
-.thumbnail>img {
- margin-right:auto;
- margin-left:auto}
-.thumbnail .caption {
- padding:9px;
- color:#333}
-.alert {
- padding:15px;
- margin-bottom:20px;
- border:1px solid transparent;
- border-radius:4px}
-.alert h4 {
- margin-top:0;
- color:inherit}
-.alert .alert-link {
- font-weight:bold}
-.alert>p,.alert>ul {
- margin-bottom:0}
-.alert>p+p {
- margin-top:5px}
-.alert-dismissable {
- padding-right:35px}
-.alert-dismissable .close {
- position:relative;
- top:-2px;
- right:-21px;
- color:inherit}
-.alert-success {
- color:#468847;
- background-color:#dff0d8;
- border-color:#d6e9c6}
-.alert-success hr {
- border-top-color:#c9e2b3}
-.alert-success .alert-link {
- color:#356635}
-.alert-info {
- color:#3a87ad;
- background-color:#d9edf7;
- border-color:#bce8f1}
-.alert-info hr {
- border-top-color:#a6e1ec}
-.alert-info .alert-link {
- color:#2d6987}
-.alert-warning {
- color:#c09853;
- background-color:#fcf8e3;
- border-color:#fbeed5}
-.alert-warning hr {
- border-top-color:#f8e5be}
-.alert-warning .alert-link {
- color:#a47e3c}
-.alert-danger {
- color:#b94a48;
- background-color:#f2dede;
- border-color:#eed3d7}
-.alert-danger hr {
- border-top-color:#e6c1c7}
-.alert-danger .alert-link {
- color:#953b39}
-@-webkit-keyframes progress-bar-stripes {
- from {
- background-position:40px 0}
-to {
- background-position:0 0}
-}
-@-moz-keyframes progress-bar-stripes {
- from {
- background-position:40px 0}
-to {
- background-position:0 0}
-}
-@-o-keyframes progress-bar-stripes {
- from {
- background-position:0 0}
-to {
- background-position:40px 0}
-}
-@keyframes progress-bar-stripes {
- from {
- background-position:40px 0}
-to {
- background-position:0 0}
-}
-.progress {
- height:20px;
- margin-bottom:20px;
- overflow:hidden;
- background-color:#f5f5f5;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);
- box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}
-.progress-bar {
- float:left;
- width:0;
- height:100%;
- font-size:12px;
- color:#fff;
- text-align:center;
- background-color:#428bca;
- -webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);
- box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);
- -webkit-transition:width .6s ease;
- transition:width .6s ease}
-.progress-striped .progress-bar {
- background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
- background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
- background-size:40px 40px}
-.progress.active .progress-bar {
- -webkit-animation:progress-bar-stripes 2s linear infinite;
- -moz-animation:progress-bar-stripes 2s linear infinite;
- -ms-animation:progress-bar-stripes 2s linear infinite;
- -o-animation:progress-bar-stripes 2s linear infinite;
- animation:progress-bar-stripes 2s linear infinite}
-.progress-bar-success {
- background-color:#5cb85c}
-.progress-striped .progress-bar-success {
- background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
- background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}
-.progress-bar-info {
- background-color:#5bc0de}
-.progress-striped .progress-bar-info {
- background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
- background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}
-.progress-bar-warning {
- background-color:#f0ad4e}
-.progress-striped .progress-bar-warning {
- background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
- background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}
-.progress-bar-danger {
- background-color:#d9534f}
-.progress-striped .progress-bar-danger {
- background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
- background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}
-.media,.media-body {
- overflow:hidden;
- zoom:1}
-.media,.media .media {
- margin-top:15px}
-.media:first-child {
- margin-top:0}
-.media-object {
- display:block}
-.media-heading {
- margin:0 0 5px}
-.media>.pull-left {
- margin-right:10px}
-.media>.pull-right {
- margin-left:10px}
-.media-list {
- padding-left:0;
- list-style:none}
-.list-group {
- padding-left:0;
- margin-bottom:20px}
-.list-group-item {
- position:relative;
- display:block;
- padding:10px 15px;
- margin-bottom:-1px;
- background-color:#fff;
- border:1px solid #ddd}
-.list-group-item:first-child {
- border-top-right-radius:4px;
- border-top-left-radius:4px}
-.list-group-item:last-child {
- margin-bottom:0;
- border-bottom-right-radius:4px;
- border-bottom-left-radius:4px}
-.list-group-item>.badge {
- float:right}
-.list-group-item>.badge+.badge {
- margin-right:5px}
-a.list-group-item {
- color:#555}
-a.list-group-item .list-group-item-heading {
- color:#333}
-a.list-group-item:hover,a.list-group-item:focus {
- text-decoration:none;
- background-color:#f5f5f5}
-.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus {
- z-index:2;
- color:#fff;
- background-color:#428bca;
- border-color:#428bca}
-.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading {
- color:inherit}
-.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text {
- color:#e1edf7}
-.list-group-item-heading {
- margin-top:0;
- margin-bottom:5px}
-.list-group-item-text {
- margin-bottom:0;
- line-height:1.3}
-.panel {
- margin-bottom:20px;
- background-color:#fff;
- border:1px solid transparent;
- border-radius:4px;
- -webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);
- box-shadow:0 1px 1px rgba(0,0,0,0.05)}
-.panel-body {
- padding:15px}
-.panel-body:before,.panel-body:after {
- display:table;
- content:" "}
-.panel-body:after {
- clear:both}
-.panel-body:before,.panel-body:after {
- display:table;
- content:" "}
-.panel-body:after {
- clear:both}
-.panel>.list-group {
- margin-bottom:0}
-.panel>.list-group .list-group-item {
- border-width:1px 0}
-.panel>.list-group .list-group-item:first-child {
- border-top-right-radius:0;
- border-top-left-radius:0}
-.panel>.list-group .list-group-item:last-child {
- border-bottom:0}
-.panel-heading+.list-group .list-group-item:first-child {
- border-top-width:0}
-.panel>.table {
- margin-bottom:0}
-.panel>.panel-body+.table {
- border-top:1px solid #ddd}
-.panel-heading {
- padding:10px 15px;
- border-bottom:1px solid transparent;
- border-top-right-radius:3px;
- border-top-left-radius:3px}
-.panel-title {
- margin-top:0;
- margin-bottom:0;
- font-size:16px}
-.panel-title>a {
- color:inherit}
-.panel-footer {
- padding:10px 15px;
- background-color:#f5f5f5;
- border-top:1px solid #ddd;
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px}
-.panel-group .panel {
- margin-bottom:0;
- overflow:hidden;
- border-radius:4px}
-.panel-group .panel+.panel {
- margin-top:5px}
-.panel-group .panel-heading {
- border-bottom:0}
-.panel-group .panel-heading+.panel-collapse .panel-body {
- border-top:1px solid #ddd}
-.panel-group .panel-footer {
- border-top:0}
-.panel-group .panel-footer+.panel-collapse .panel-body {
- border-bottom:1px solid #ddd}
-.panel-default {
- border-color:#ddd}
-.panel-default>.panel-heading {
- color:#333;
- background-color:#f5f5f5;
- border-color:#ddd}
-.panel-default>.panel-heading+.panel-collapse .panel-body {
- border-top-color:#ddd}
-.panel-default>.panel-footer+.panel-collapse .panel-body {
- border-bottom-color:#ddd}
-.panel-primary {
- border-color:#428bca}
-.panel-primary>.panel-heading {
- color:#fff;
- background-color:#428bca;
- border-color:#428bca}
-.panel-primary>.panel-heading+.panel-collapse .panel-body {
- border-top-color:#428bca}
-.panel-primary>.panel-footer+.panel-collapse .panel-body {
- border-bottom-color:#428bca}
-.panel-success {
- border-color:#d6e9c6}
-.panel-success>.panel-heading {
- color:#468847;
- background-color:#dff0d8;
- border-color:#d6e9c6}
-.panel-success>.panel-heading+.panel-collapse .panel-body {
- border-top-color:#d6e9c6}
-.panel-success>.panel-footer+.panel-collapse .panel-body {
- border-bottom-color:#d6e9c6}
-.panel-warning {
- border-color:#fbeed5}
-.panel-warning>.panel-heading {
- color:#c09853;
- background-color:#fcf8e3;
- border-color:#fbeed5}
-.panel-warning>.panel-heading+.panel-collapse .panel-body {
- border-top-color:#fbeed5}
-.panel-warning>.panel-footer+.panel-collapse .panel-body {
- border-bottom-color:#fbeed5}
-.panel-danger {
- border-color:#eed3d7}
-.panel-danger>.panel-heading {
- color:#b94a48;
- background-color:#f2dede;
- border-color:#eed3d7}
-.panel-danger>.panel-heading+.panel-collapse .panel-body {
- border-top-color:#eed3d7}
-.panel-danger>.panel-footer+.panel-collapse .panel-body {
- border-bottom-color:#eed3d7}
-.panel-info {
- border-color:#bce8f1}
-.panel-info>.panel-heading {
- color:#3a87ad;
- background-color:#d9edf7;
- border-color:#bce8f1}
-.panel-info>.panel-heading+.panel-collapse .panel-body {
- border-top-color:#bce8f1}
-.panel-info>.panel-footer+.panel-collapse .panel-body {
- border-bottom-color:#bce8f1}
-.well {
- min-height:20px;
- padding:19px;
- margin-bottom:20px;
- background-color:#f5f5f5;
- border:1px solid #e3e3e3;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);
- box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}
-.well blockquote {
- border-color:#ddd;
- border-color:rgba(0,0,0,0.15)}
-.well-lg {
- padding:24px;
- border-radius:6px}
-.well-sm {
- padding:9px;
- border-radius:3px}
-.close {
- float:right;
- font-size:21px;
- font-weight:bold;
- line-height:1;
- color:#000;
- text-shadow:0 1px 0 #fff;
- opacity:.2;
- filter:alpha(opacity=20)}
-.close:hover,.close:focus {
- color:#000;
- text-decoration:none;
- cursor:pointer;
- opacity:.5;
- filter:alpha(opacity=50)}
-button.close {
- padding:0;
- cursor:pointer;
- background:transparent;
- border:0;
- -webkit-appearance:none}
-.modal-open {
- overflow:hidden}
-body.modal-open,.modal-open .navbar-fixed-top,.modal-open .navbar-fixed-bottom {
- margin-right:15px}
-.modal {
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:1040;
- display:none;
- overflow:auto;
- overflow-y:scroll}
-.modal.fade .modal-dialog {
- -webkit-transform:translate(0,-25%);
- -ms-transform:translate(0,-25%);
- transform:translate(0,-25%);
- -webkit-transition:-webkit-transform .3s ease-out;
- -moz-transition:-moz-transform .3s ease-out;
- -o-transition:-o-transform .3s ease-out;
- transition:transform .3s ease-out}
-.modal.in .modal-dialog {
- -webkit-transform:translate(0,0);
- -ms-transform:translate(0,0);
- transform:translate(0,0)}
-.modal-dialog {
- z-index:1050;
- width:auto;
- padding:10px;
- margin-right:auto;
- margin-left:auto}
-.modal-content {
- position:relative;
- background-color:#fff;
- border:1px solid #999;
- border:1px solid rgba(0,0,0,0.2);
- border-radius:6px;
- outline:0;
- -webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);
- box-shadow:0 3px 9px rgba(0,0,0,0.5);
- background-clip:padding-box}
-.modal-backdrop {
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:1030;
- background-color:#000}
-.modal-backdrop.fade {
- opacity:0;
- filter:alpha(opacity=0)}
-.modal-backdrop.in {
- opacity:.5;
- filter:alpha(opacity=50)}
-.modal-header {
- min-height:16.428571429px;
- padding:15px;
- border-bottom:1px solid #e5e5e5}
-.modal-header .close {
- margin-top:-2px}
-.modal-title {
- margin:0;
- line-height:1.428571429}
-.modal-body {
- position:relative;
- padding:20px}
-.modal-footer {
- padding:19px 20px 20px;
- margin-top:15px;
- text-align:right;
- border-top:1px solid #e5e5e5}
-.modal-footer:before,.modal-footer:after {
- display:table;
- content:" "}
-.modal-footer:after {
- clear:both}
-.modal-footer:before,.modal-footer:after {
- display:table;
- content:" "}
-.modal-footer:after {
- clear:both}
-.modal-footer .btn+.btn {
- margin-bottom:0;
- margin-left:5px}
-.modal-footer .btn-group .btn+.btn {
- margin-left:-1px}
-.modal-footer .btn-block+.btn-block {
- margin-left:0}
-@media screen and (min-width:768px) {
- .modal-dialog {
- right:auto;
- left:50%;
- width:600px;
- padding-top:30px;
- padding-bottom:30px}
-.modal-content {
- -webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);
- box-shadow:0 5px 15px rgba(0,0,0,0.5)}
-}
-.tooltip {
- position:absolute;
- z-index:1030;
- display:block;
- font-size:12px;
- line-height:1.4;
- opacity:0;
- filter:alpha(opacity=0);
- visibility:visible}
-.tooltip.in {
- opacity:.9;
- filter:alpha(opacity=90)}
-.tooltip.top {
- padding:5px 0;
- margin-top:-3px}
-.tooltip.right {
- padding:0 5px;
- margin-left:3px}
-.tooltip.bottom {
- padding:5px 0;
- margin-top:3px}
-.tooltip.left {
- padding:0 5px;
- margin-left:-3px}
-.tooltip-inner {
- max-width:200px;
- padding:3px 8px;
- color:#fff;
- text-align:center;
- text-decoration:none;
- background-color:#000;
- border-radius:4px}
-.tooltip-arrow {
- position:absolute;
- width:0;
- height:0;
- border-color:transparent;
- border-style:solid}
-.tooltip.top .tooltip-arrow {
- bottom:0;
- left:50%;
- margin-left:-5px;
- border-top-color:#000;
- border-width:5px 5px 0}
-.tooltip.top-left .tooltip-arrow {
- bottom:0;
- left:5px;
- border-top-color:#000;
- border-width:5px 5px 0}
-.tooltip.top-right .tooltip-arrow {
- right:5px;
- bottom:0;
- border-top-color:#000;
- border-width:5px 5px 0}
-.tooltip.right .tooltip-arrow {
- top:50%;
- left:0;
- margin-top:-5px;
- border-right-color:#000;
- border-width:5px 5px 5px 0}
-.tooltip.left .tooltip-arrow {
- top:50%;
- right:0;
- margin-top:-5px;
- border-left-color:#000;
- border-width:5px 0 5px 5px}
-.tooltip.bottom .tooltip-arrow {
- top:0;
- left:50%;
- margin-left:-5px;
- border-bottom-color:#000;
- border-width:0 5px 5px}
-.tooltip.bottom-left .tooltip-arrow {
- top:0;
- left:5px;
- border-bottom-color:#000;
- border-width:0 5px 5px}
-.tooltip.bottom-right .tooltip-arrow {
- top:0;
- right:5px;
- border-bottom-color:#000;
- border-width:0 5px 5px}
-.popover {
- position:absolute;
- top:0;
- left:0;
- z-index:1010;
- display:none;
- max-width:276px;
- padding:1px;
- text-align:left;
- white-space:normal;
- background-color:#fff;
- border:1px solid #ccc;
- border:1px solid rgba(0,0,0,0.2);
- border-radius:6px;
- -webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);
- box-shadow:0 5px 10px rgba(0,0,0,0.2);
- background-clip:padding-box}
-.popover.top {
- margin-top:-10px}
-.popover.right {
- margin-left:10px}
-.popover.bottom {
- margin-top:10px}
-.popover.left {
- margin-left:-10px}
-.popover-title {
- padding:8px 14px;
- margin:0;
- font-size:14px;
- font-weight:normal;
- line-height:18px;
- background-color:#f7f7f7;
- border-bottom:1px solid #ebebeb;
- border-radius:5px 5px 0 0}
-.popover-content {
- padding:9px 14px}
-.popover .arrow,.popover .arrow:after {
- position:absolute;
- display:block;
- width:0;
- height:0;
- border-color:transparent;
- border-style:solid}
-.popover .arrow {
- border-width:11px}
-.popover .arrow:after {
- border-width:10px;
- content:""}
-.popover.top .arrow {
- bottom:-11px;
- left:50%;
- margin-left:-11px;
- border-top-color:#999;
- border-top-color:rgba(0,0,0,0.25);
- border-bottom-width:0}
-.popover.top .arrow:after {
- bottom:1px;
- margin-left:-10px;
- border-top-color:#fff;
- border-bottom-width:0;
- content:" "}
-.popover.right .arrow {
- top:50%;
- left:-11px;
- margin-top:-11px;
- border-right-color:#999;
- border-right-color:rgba(0,0,0,0.25);
- border-left-width:0}
-.popover.right .arrow:after {
- bottom:-10px;
- left:1px;
- border-right-color:#fff;
- border-left-width:0;
- content:" "}
-.popover.bottom .arrow {
- top:-11px;
- left:50%;
- margin-left:-11px;
- border-bottom-color:#999;
- border-bottom-color:rgba(0,0,0,0.25);
- border-top-width:0}
-.popover.bottom .arrow:after {
- top:1px;
- margin-left:-10px;
- border-bottom-color:#fff;
- border-top-width:0;
- content:" "}
-.popover.left .arrow {
- top:50%;
- right:-11px;
- margin-top:-11px;
- border-left-color:#999;
- border-left-color:rgba(0,0,0,0.25);
- border-right-width:0}
-.popover.left .arrow:after {
- right:1px;
- bottom:-10px;
- border-left-color:#fff;
- border-right-width:0;
- content:" "}
-.carousel {
- position:relative}
-.carousel-inner {
- position:relative;
- width:100%;
- overflow:hidden}
-.carousel-inner>.item {
- position:relative;
- display:none;
- -webkit-transition:.6s ease-in-out left;
- transition:.6s ease-in-out left}
-.carousel-inner>.item>img,.carousel-inner>.item>a>img {
- display:block;
- height:auto;
- max-width:100%;
- line-height:1}
-.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev {
- display:block}
-.carousel-inner>.active {
- left:0}
-.carousel-inner>.next,.carousel-inner>.prev {
- position:absolute;
- top:0;
- width:100%}
-.carousel-inner>.next {
- left:100%}
-.carousel-inner>.prev {
- left:-100%}
-.carousel-inner>.next.left,.carousel-inner>.prev.right {
- left:0}
-.carousel-inner>.active.left {
- left:-100%}
-.carousel-inner>.active.right {
- left:100%}
-.carousel-control {
- position:absolute;
- top:0;
- bottom:0;
- left:0;
- width:15%;
- font-size:20px;
- color:#fff;
- text-align:center;
- text-shadow:0 1px 2px rgba(0,0,0,0.6);
- opacity:.5;
- filter:alpha(opacity=50)}
-.carousel-control.left {
- background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));
- background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));
- background-image:-moz-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);
- background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);
- background-repeat:repeat-x;
- filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}
-.carousel-control.right {
- right:0;
- left:auto;
- background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));
- background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));
- background-image:-moz-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);
- background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);
- background-repeat:repeat-x;
- filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}
-.carousel-control:hover,.carousel-control:focus {
- color:#fff;
- text-decoration:none;
- opacity:.9;
- filter:alpha(opacity=90)}
-.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right {
- position:absolute;
- top:50%;
- left:50%;
- z-index:5;
- display:inline-block}
-.carousel-control .icon-prev,.carousel-control .icon-next {
- width:20px;
- height:20px;
- margin-top:-10px;
- margin-left:-10px;
- font-family:serif}
-.carousel-control .icon-prev:before {
- content:'\2039'}
-.carousel-control .icon-next:before {
- content:'\203a'}
-.carousel-indicators {
- position:absolute;
- bottom:10px;
- left:50%;
- z-index:15;
- width:60%;
- padding-left:0;
- margin-left:-30%;
- text-align:center;
- list-style:none}
-.carousel-indicators li {
- display:inline-block;
- width:10px;
- height:10px;
- margin:1px;
- text-indent:-999px;
- cursor:pointer;
- border:1px solid #fff;
- border-radius:10px}
-.carousel-indicators .active {
- width:12px;
- height:12px;
- margin:0;
- background-color:#fff}
-.carousel-caption {
- position:absolute;
- right:15%;
- bottom:20px;
- left:15%;
- z-index:10;
- padding-top:20px;
- padding-bottom:20px;
- color:#fff;
- text-align:center;
- text-shadow:0 1px 2px rgba(0,0,0,0.6)}
-.carousel-caption .btn {
- text-shadow:none}
-@media screen and (min-width:768px) {
- .carousel-control .icon-prev,.carousel-control .icon-next {
- width:30px;
- height:30px;
- margin-top:-15px;
- margin-left:-15px;
- font-size:30px}
-.carousel-caption {
- right:20%;
- left:20%;
- padding-bottom:30px}
-.carousel-indicators {
- bottom:20px}
-}
-.clearfix:before,.clearfix:after {
- display:table;
- content:" "}
-.clearfix:after {
- clear:both}
-.pull-right {
- float:right!important}
-.pull-left {
- float:left!important}
-.hide {
- display:none!important}
-.show {
- display:block!important}
-.invisible {
- visibility:hidden}
-.text-hide {
- font:0/0 a;
- color:transparent;
- text-shadow:none;
- background-color:transparent;
- border:0}
-.affix {
- position:fixed}
-@-ms-viewport {
- width:device-width}
-@media screen and (max-width:400px) {
- @-ms-viewport {
- width:320px}
-}
-.hidden {
- display:none!important;
- visibility:hidden!important}
-.visible-xs {
- display:none!important}
-tr.visible-xs {
- display:none!important}
-th.visible-xs,td.visible-xs {
- display:none!important}
-@media(max-width:767px) {
- .visible-xs {
- display:block!important}
-tr.visible-xs {
- display:table-row!important}
-th.visible-xs,td.visible-xs {
- display:table-cell!important}
-}
-@media(min-width:768px) and (max-width:991px) {
- .visible-xs.visible-sm {
- display:block!important}
-tr.visible-xs.visible-sm {
- display:table-row!important}
-th.visible-xs.visible-sm,td.visible-xs.visible-sm {
- display:table-cell!important}
-}
-@media(min-width:992px) and (max-width:1199px) {
- .visible-xs.visible-md {
- display:block!important}
-tr.visible-xs.visible-md {
- display:table-row!important}
-th.visible-xs.visible-md,td.visible-xs.visible-md {
- display:table-cell!important}
-}
-@media(min-width:1200px) {
- .visible-xs.visible-lg {
- display:block!important}
-tr.visible-xs.visible-lg {
- display:table-row!important}
-th.visible-xs.visible-lg,td.visible-xs.visible-lg {
- display:table-cell!important}
-}
-.visible-sm {
- display:none!important}
-tr.visible-sm {
- display:none!important}
-th.visible-sm,td.visible-sm {
- display:none!important}
-@media(max-width:767px) {
- .visible-sm.visible-xs {
- display:block!important}
-tr.visible-sm.visible-xs {
- display:table-row!important}
-th.visible-sm.visible-xs,td.visible-sm.visible-xs {
- display:table-cell!important}
-}
-@media(min-width:768px) and (max-width:991px) {
- .visible-sm {
- display:block!important}
-tr.visible-sm {
- display:table-row!important}
-th.visible-sm,td.visible-sm {
- display:table-cell!important}
-}
-@media(min-width:992px) and (max-width:1199px) {
- .visible-sm.visible-md {
- display:block!important}
-tr.visible-sm.visible-md {
- display:table-row!important}
-th.visible-sm.visible-md,td.visible-sm.visible-md {
- display:table-cell!important}
-}
-@media(min-width:1200px) {
- .visible-sm.visible-lg {
- display:block!important}
-tr.visible-sm.visible-lg {
- display:table-row!important}
-th.visible-sm.visible-lg,td.visible-sm.visible-lg {
- display:table-cell!important}
-}
-.visible-md {
- display:none!important}
-tr.visible-md {
- display:none!important}
-th.visible-md,td.visible-md {
- display:none!important}
-@media(max-width:767px) {
- .visible-md.visible-xs {
- display:block!important}
-tr.visible-md.visible-xs {
- display:table-row!important}
-th.visible-md.visible-xs,td.visible-md.visible-xs {
- display:table-cell!important}
-}
-@media(min-width:768px) and (max-width:991px) {
- .visible-md.visible-sm {
- display:block!important}
-tr.visible-md.visible-sm {
- display:table-row!important}
-th.visible-md.visible-sm,td.visible-md.visible-sm {
- display:table-cell!important}
-}
-@media(min-width:992px) and (max-width:1199px) {
- .visible-md {
- display:block!important}
-tr.visible-md {
- display:table-row!important}
-th.visible-md,td.visible-md {
- display:table-cell!important}
-}
-@media(min-width:1200px) {
- .visible-md.visible-lg {
- display:block!important}
-tr.visible-md.visible-lg {
- display:table-row!important}
-th.visible-md.visible-lg,td.visible-md.visible-lg {
- display:table-cell!important}
-}
-.visible-lg {
- display:none!important}
-tr.visible-lg {
- display:none!important}
-th.visible-lg,td.visible-lg {
- display:none!important}
-@media(max-width:767px) {
- .visible-lg.visible-xs {
- display:block!important}
-tr.visible-lg.visible-xs {
- display:table-row!important}
-th.visible-lg.visible-xs,td.visible-lg.visible-xs {
- display:table-cell!important}
-}
-@media(min-width:768px) and (max-width:991px) {
- .visible-lg.visible-sm {
- display:block!important}
-tr.visible-lg.visible-sm {
- display:table-row!important}
-th.visible-lg.visible-sm,td.visible-lg.visible-sm {
- display:table-cell!important}
-}
-@media(min-width:992px) and (max-width:1199px) {
- .visible-lg.visible-md {
- display:block!important}
-tr.visible-lg.visible-md {
- display:table-row!important}
-th.visible-lg.visible-md,td.visible-lg.visible-md {
- display:table-cell!important}
-}
-@media(min-width:1200px) {
- .visible-lg {
- display:block!important}
-tr.visible-lg {
- display:table-row!important}
-th.visible-lg,td.visible-lg {
- display:table-cell!important}
-}
-.hidden-xs {
- display:block!important}
-tr.hidden-xs {
- display:table-row!important}
-th.hidden-xs,td.hidden-xs {
- display:table-cell!important}
-@media(max-width:767px) {
- .hidden-xs {
- display:none!important}
-tr.hidden-xs {
- display:none!important}
-th.hidden-xs,td.hidden-xs {
- display:none!important}
-}
-@media(min-width:768px) and (max-width:991px) {
- .hidden-xs.hidden-sm {
- display:none!important}
-tr.hidden-xs.hidden-sm {
- display:none!important}
-th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm {
- display:none!important}
-}
-@media(min-width:992px) and (max-width:1199px) {
- .hidden-xs.hidden-md {
- display:none!important}
-tr.hidden-xs.hidden-md {
- display:none!important}
-th.hidden-xs.hidden-md,td.hidden-xs.hidden-md {
- display:none!important}
-}
-@media(min-width:1200px) {
- .hidden-xs.hidden-lg {
- display:none!important}
-tr.hidden-xs.hidden-lg {
- display:none!important}
-th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg {
- display:none!important}
-}
-.hidden-sm {
- display:block!important}
-tr.hidden-sm {
- display:table-row!important}
-th.hidden-sm,td.hidden-sm {
- display:table-cell!important}
-@media(max-width:767px) {
- .hidden-sm.hidden-xs {
- display:none!important}
-tr.hidden-sm.hidden-xs {
- display:none!important}
-th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs {
- display:none!important}
-}
-@media(min-width:768px) and (max-width:991px) {
- .hidden-sm {
- display:none!important}
-tr.hidden-sm {
- display:none!important}
-th.hidden-sm,td.hidden-sm {
- display:none!important}
-}
-@media(min-width:992px) and (max-width:1199px) {
- .hidden-sm.hidden-md {
- display:none!important}
-tr.hidden-sm.hidden-md {
- display:none!important}
-th.hidden-sm.hidden-md,td.hidden-sm.hidden-md {
- display:none!important}
-}
-@media(min-width:1200px) {
- .hidden-sm.hidden-lg {
- display:none!important}
-tr.hidden-sm.hidden-lg {
- display:none!important}
-th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg {
- display:none!important}
-}
-.hidden-md {
- display:block!important}
-tr.hidden-md {
- display:table-row!important}
-th.hidden-md,td.hidden-md {
- display:table-cell!important}
-@media(max-width:767px) {
- .hidden-md.hidden-xs {
- display:none!important}
-tr.hidden-md.hidden-xs {
- display:none!important}
-th.hidden-md.hidden-xs,td.hidden-md.hidden-xs {
- display:none!important}
-}
-@media(min-width:768px) and (max-width:991px) {
- .hidden-md.hidden-sm {
- display:none!important}
-tr.hidden-md.hidden-sm {
- display:none!important}
-th.hidden-md.hidden-sm,td.hidden-md.hidden-sm {
- display:none!important}
-}
-@media(min-width:992px) and (max-width:1199px) {
- .hidden-md {
- display:none!important}
-tr.hidden-md {
- display:none!important}
-th.hidden-md,td.hidden-md {
- display:none!important}
-}
-@media(min-width:1200px) {
- .hidden-md.hidden-lg {
- display:none!important}
-tr.hidden-md.hidden-lg {
- display:none!important}
-th.hidden-md.hidden-lg,td.hidden-md.hidden-lg {
- display:none!important}
-}
-.hidden-lg {
- display:block!important}
-tr.hidden-lg {
- display:table-row!important}
-th.hidden-lg,td.hidden-lg {
- display:table-cell!important}
-@media(max-width:767px) {
- .hidden-lg.hidden-xs {
- display:none!important}
-tr.hidden-lg.hidden-xs {
- display:none!important}
-th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs {
- display:none!important}
-}
-@media(min-width:768px) and (max-width:991px) {
- .hidden-lg.hidden-sm {
- display:none!important}
-tr.hidden-lg.hidden-sm {
- display:none!important}
-th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm {
- display:none!important}
-}
-@media(min-width:992px) and (max-width:1199px) {
- .hidden-lg.hidden-md {
- display:none!important}
-tr.hidden-lg.hidden-md {
- display:none!important}
-th.hidden-lg.hidden-md,td.hidden-lg.hidden-md {
- display:none!important}
-}
-@media(min-width:1200px) {
- .hidden-lg {
- display:none!important}
-tr.hidden-lg {
- display:none!important}
-th.hidden-lg,td.hidden-lg {
- display:none!important}
-}
-.visible-print {
- display:none!important}
-tr.visible-print {
- display:none!important}
-th.visible-print,td.visible-print {
- display:none!important}
-@media print {
- .visible-print {
- display:block!important}
-tr.visible-print {
- display:table-row!important}
-th.visible-print,td.visible-print {
- display:table-cell!important}
-.hidden-print {
- display:none!important}
-tr.hidden-print {
- display:none!important}
-th.hidden-print,td.hidden-print {
- display:none!important}
-}
-
diff --git a/addons/website/static/lib/bootstrap/fonts/glyphicons-halflings-regular.eot b/addons/website/static/lib/bootstrap/fonts/glyphicons-halflings-regular.eot
deleted file mode 100644
index 87eaa434234..00000000000
Binary files a/addons/website/static/lib/bootstrap/fonts/glyphicons-halflings-regular.eot and /dev/null differ
diff --git a/addons/website/static/lib/bootstrap/fonts/glyphicons-halflings-regular.svg b/addons/website/static/lib/bootstrap/fonts/glyphicons-halflings-regular.svg
deleted file mode 100644
index 5fee0685496..00000000000
--- a/addons/website/static/lib/bootstrap/fonts/glyphicons-halflings-regular.svg
+++ /dev/null
@@ -1,228 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/addons/website/static/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf b/addons/website/static/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf
deleted file mode 100644
index be784dc1d5b..00000000000
Binary files a/addons/website/static/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf and /dev/null differ
diff --git a/addons/website/static/lib/bootstrap/fonts/glyphicons-halflings-regular.woff b/addons/website/static/lib/bootstrap/fonts/glyphicons-halflings-regular.woff
deleted file mode 100644
index 2cc3e4852a5..00000000000
Binary files a/addons/website/static/lib/bootstrap/fonts/glyphicons-halflings-regular.woff and /dev/null differ
diff --git a/addons/website/static/lib/bootstrap/img/glyphicons-halflings-white.png b/addons/website/static/lib/bootstrap/img/glyphicons-halflings-white.png
deleted file mode 100644
index 3bf6484a29d..00000000000
Binary files a/addons/website/static/lib/bootstrap/img/glyphicons-halflings-white.png and /dev/null differ
diff --git a/addons/website/static/lib/bootstrap/img/glyphicons-halflings.png b/addons/website/static/lib/bootstrap/img/glyphicons-halflings.png
deleted file mode 100644
index a9969993201..00000000000
Binary files a/addons/website/static/lib/bootstrap/img/glyphicons-halflings.png and /dev/null differ
diff --git a/addons/website/static/lib/bootstrap/js/bootstrap.js b/addons/website/static/lib/bootstrap/js/bootstrap.js
deleted file mode 100644
index b22be6fce1d..00000000000
--- a/addons/website/static/lib/bootstrap/js/bootstrap.js
+++ /dev/null
@@ -1,2006 +0,0 @@
-/*!
- * Bootstrap v3.0.1 by @fat and @mdo
- * Copyright 2013 Twitter, Inc.
- * Licensed under http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world by @mdo and @fat.
- */
-
-if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery") }
-
-/* ========================================================================
- * Bootstrap: transition.js v3.0.1
- * http://getbootstrap.com/javascript/#transitions
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
- // ============================================================
-
- function transitionEnd() {
- var el = document.createElement('bootstrap')
-
- var transEndEventNames = {
- 'WebkitTransition' : 'webkitTransitionEnd'
- , 'MozTransition' : 'transitionend'
- , 'OTransition' : 'oTransitionEnd otransitionend'
- , 'transition' : 'transitionend'
- }
-
- for (var name in transEndEventNames) {
- if (el.style[name] !== undefined) {
- return { end: transEndEventNames[name] }
- }
- }
- }
-
- // http://blog.alexmaccaw.com/css-transitions
- $.fn.emulateTransitionEnd = function (duration) {
- var called = false, $el = this
- $(this).one($.support.transition.end, function () { called = true })
- var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
- setTimeout(callback, duration)
- return this
- }
-
- $(function () {
- $.support.transition = transitionEnd()
- })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: alert.js v3.0.1
- * http://getbootstrap.com/javascript/#alerts
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // ALERT CLASS DEFINITION
- // ======================
-
- var dismiss = '[data-dismiss="alert"]'
- var Alert = function (el) {
- $(el).on('click', dismiss, this.close)
- }
-
- Alert.prototype.close = function (e) {
- var $this = $(this)
- var selector = $this.attr('data-target')
-
- if (!selector) {
- selector = $this.attr('href')
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
- }
-
- var $parent = $(selector)
-
- if (e) e.preventDefault()
-
- if (!$parent.length) {
- $parent = $this.hasClass('alert') ? $this : $this.parent()
- }
-
- $parent.trigger(e = $.Event('close.bs.alert'))
-
- if (e.isDefaultPrevented()) return
-
- $parent.removeClass('in')
-
- function removeElement() {
- $parent.trigger('closed.bs.alert').remove()
- }
-
- $.support.transition && $parent.hasClass('fade') ?
- $parent
- .one($.support.transition.end, removeElement)
- .emulateTransitionEnd(150) :
- removeElement()
- }
-
-
- // ALERT PLUGIN DEFINITION
- // =======================
-
- var old = $.fn.alert
-
- $.fn.alert = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.alert')
-
- if (!data) $this.data('bs.alert', (data = new Alert(this)))
- if (typeof option == 'string') data[option].call($this)
- })
- }
-
- $.fn.alert.Constructor = Alert
-
-
- // ALERT NO CONFLICT
- // =================
-
- $.fn.alert.noConflict = function () {
- $.fn.alert = old
- return this
- }
-
-
- // ALERT DATA-API
- // ==============
-
- $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: button.js v3.0.1
- * http://getbootstrap.com/javascript/#buttons
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // BUTTON PUBLIC CLASS DEFINITION
- // ==============================
-
- var Button = function (element, options) {
- this.$element = $(element)
- this.options = $.extend({}, Button.DEFAULTS, options)
- }
-
- Button.DEFAULTS = {
- loadingText: 'loading...'
- }
-
- Button.prototype.setState = function (state) {
- var d = 'disabled'
- var $el = this.$element
- var val = $el.is('input') ? 'val' : 'html'
- var data = $el.data()
-
- state = state + 'Text'
-
- if (!data.resetText) $el.data('resetText', $el[val]())
-
- $el[val](data[state] || this.options[state])
-
- // push to event loop to allow forms to submit
- setTimeout(function () {
- state == 'loadingText' ?
- $el.addClass(d).attr(d, d) :
- $el.removeClass(d).removeAttr(d);
- }, 0)
- }
-
- Button.prototype.toggle = function () {
- var $parent = this.$element.closest('[data-toggle="buttons"]')
-
- if ($parent.length) {
- var $input = this.$element.find('input')
- .prop('checked', !this.$element.hasClass('active'))
- .trigger('change')
- if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active')
- }
-
- this.$element.toggleClass('active')
- }
-
-
- // BUTTON PLUGIN DEFINITION
- // ========================
-
- var old = $.fn.button
-
- $.fn.button = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.button')
- var options = typeof option == 'object' && option
-
- if (!data) $this.data('bs.button', (data = new Button(this, options)))
-
- if (option == 'toggle') data.toggle()
- else if (option) data.setState(option)
- })
- }
-
- $.fn.button.Constructor = Button
-
-
- // BUTTON NO CONFLICT
- // ==================
-
- $.fn.button.noConflict = function () {
- $.fn.button = old
- return this
- }
-
-
- // BUTTON DATA-API
- // ===============
-
- $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
- var $btn = $(e.target)
- if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
- $btn.button('toggle')
- e.preventDefault()
- })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: carousel.js v3.0.1
- * http://getbootstrap.com/javascript/#carousel
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // CAROUSEL CLASS DEFINITION
- // =========================
-
- var Carousel = function (element, options) {
- this.$element = $(element)
- this.$indicators = this.$element.find('.carousel-indicators')
- this.options = options
- this.paused =
- this.sliding =
- this.interval =
- this.$active =
- this.$items = null
-
- this.options.pause == 'hover' && this.$element
- .on('mouseenter', $.proxy(this.pause, this))
- .on('mouseleave', $.proxy(this.cycle, this))
- }
-
- Carousel.DEFAULTS = {
- interval: 5000
- , pause: 'hover'
- , wrap: true
- }
-
- Carousel.prototype.cycle = function (e) {
- e || (this.paused = false)
-
- this.interval && clearInterval(this.interval)
-
- this.options.interval
- && !this.paused
- && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
-
- return this
- }
-
- Carousel.prototype.getActiveIndex = function () {
- this.$active = this.$element.find('.item.active')
- this.$items = this.$active.parent().children()
-
- return this.$items.index(this.$active)
- }
-
- Carousel.prototype.to = function (pos) {
- var that = this
- var activeIndex = this.getActiveIndex()
-
- if (pos > (this.$items.length - 1) || pos < 0) return
-
- if (this.sliding) return this.$element.one('slid', function () { that.to(pos) })
- if (activeIndex == pos) return this.pause().cycle()
-
- return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
- }
-
- Carousel.prototype.pause = function (e) {
- e || (this.paused = true)
-
- if (this.$element.find('.next, .prev').length && $.support.transition.end) {
- this.$element.trigger($.support.transition.end)
- this.cycle(true)
- }
-
- this.interval = clearInterval(this.interval)
-
- return this
- }
-
- Carousel.prototype.next = function () {
- if (this.sliding) return
- return this.slide('next')
- }
-
- Carousel.prototype.prev = function () {
- if (this.sliding) return
- return this.slide('prev')
- }
-
- Carousel.prototype.slide = function (type, next) {
- var $active = this.$element.find('.item.active')
- var $next = next || $active[type]()
- var isCycling = this.interval
- var direction = type == 'next' ? 'left' : 'right'
- var fallback = type == 'next' ? 'first' : 'last'
- var that = this
-
- if (!$next.length) {
- if (!this.options.wrap) return
- $next = this.$element.find('.item')[fallback]()
- }
-
- this.sliding = true
-
- isCycling && this.pause()
-
- var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
-
- if ($next.hasClass('active')) return
-
- if (this.$indicators.length) {
- this.$indicators.find('.active').removeClass('active')
- this.$element.one('slid', function () {
- var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
- $nextIndicator && $nextIndicator.addClass('active')
- })
- }
-
- if ($.support.transition && this.$element.hasClass('slide')) {
- this.$element.trigger(e)
- if (e.isDefaultPrevented()) return
- $next.addClass(type)
- $next[0].offsetWidth // force reflow
- $active.addClass(direction)
- $next.addClass(direction)
- $active
- .one($.support.transition.end, function () {
- $next.removeClass([type, direction].join(' ')).addClass('active')
- $active.removeClass(['active', direction].join(' '))
- that.sliding = false
- setTimeout(function () { that.$element.trigger('slid') }, 0)
- })
- .emulateTransitionEnd(600)
- } else {
- this.$element.trigger(e)
- if (e.isDefaultPrevented()) return
- $active.removeClass('active')
- $next.addClass('active')
- this.sliding = false
- this.$element.trigger('slid')
- }
-
- isCycling && this.cycle()
-
- return this
- }
-
-
- // CAROUSEL PLUGIN DEFINITION
- // ==========================
-
- var old = $.fn.carousel
-
- $.fn.carousel = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.carousel')
- var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
- var action = typeof option == 'string' ? option : options.slide
-
- if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
- if (typeof option == 'number') data.to(option)
- else if (action) data[action]()
- else if (options.interval) data.pause().cycle()
- })
- }
-
- $.fn.carousel.Constructor = Carousel
-
-
- // CAROUSEL NO CONFLICT
- // ====================
-
- $.fn.carousel.noConflict = function () {
- $.fn.carousel = old
- return this
- }
-
-
- // CAROUSEL DATA-API
- // =================
-
- $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
- var $this = $(this), href
- var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
- var options = $.extend({}, $target.data(), $this.data())
- var slideIndex = $this.attr('data-slide-to')
- if (slideIndex) options.interval = false
-
- $target.carousel(options)
-
- if (slideIndex = $this.attr('data-slide-to')) {
- $target.data('bs.carousel').to(slideIndex)
- }
-
- e.preventDefault()
- })
-
- $(window).on('load', function () {
- $('[data-ride="carousel"]').each(function () {
- var $carousel = $(this)
- $carousel.carousel($carousel.data())
- })
- })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: collapse.js v3.0.1
- * http://getbootstrap.com/javascript/#collapse
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // COLLAPSE PUBLIC CLASS DEFINITION
- // ================================
-
- var Collapse = function (element, options) {
- this.$element = $(element)
- this.options = $.extend({}, Collapse.DEFAULTS, options)
- this.transitioning = null
-
- if (this.options.parent) this.$parent = $(this.options.parent)
- if (this.options.toggle) this.toggle()
- }
-
- Collapse.DEFAULTS = {
- toggle: true
- }
-
- Collapse.prototype.dimension = function () {
- var hasWidth = this.$element.hasClass('width')
- return hasWidth ? 'width' : 'height'
- }
-
- Collapse.prototype.show = function () {
- if (this.transitioning || this.$element.hasClass('in')) return
-
- var startEvent = $.Event('show.bs.collapse')
- this.$element.trigger(startEvent)
- if (startEvent.isDefaultPrevented()) return
-
- var actives = this.$parent && this.$parent.find('> .panel > .in')
-
- if (actives && actives.length) {
- var hasData = actives.data('bs.collapse')
- if (hasData && hasData.transitioning) return
- actives.collapse('hide')
- hasData || actives.data('bs.collapse', null)
- }
-
- var dimension = this.dimension()
-
- this.$element
- .removeClass('collapse')
- .addClass('collapsing')
- [dimension](0)
-
- this.transitioning = 1
-
- var complete = function () {
- this.$element
- .removeClass('collapsing')
- .addClass('in')
- [dimension]('auto')
- this.transitioning = 0
- this.$element.trigger('shown.bs.collapse')
- }
-
- if (!$.support.transition) return complete.call(this)
-
- var scrollSize = $.camelCase(['scroll', dimension].join('-'))
-
- this.$element
- .one($.support.transition.end, $.proxy(complete, this))
- .emulateTransitionEnd(350)
- [dimension](this.$element[0][scrollSize])
- }
-
- Collapse.prototype.hide = function () {
- if (this.transitioning || !this.$element.hasClass('in')) return
-
- var startEvent = $.Event('hide.bs.collapse')
- this.$element.trigger(startEvent)
- if (startEvent.isDefaultPrevented()) return
-
- var dimension = this.dimension()
-
- this.$element
- [dimension](this.$element[dimension]())
- [0].offsetHeight
-
- this.$element
- .addClass('collapsing')
- .removeClass('collapse')
- .removeClass('in')
-
- this.transitioning = 1
-
- var complete = function () {
- this.transitioning = 0
- this.$element
- .trigger('hidden.bs.collapse')
- .removeClass('collapsing')
- .addClass('collapse')
- }
-
- if (!$.support.transition) return complete.call(this)
-
- this.$element
- [dimension](0)
- .one($.support.transition.end, $.proxy(complete, this))
- .emulateTransitionEnd(350)
- }
-
- Collapse.prototype.toggle = function () {
- this[this.$element.hasClass('in') ? 'hide' : 'show']()
- }
-
-
- // COLLAPSE PLUGIN DEFINITION
- // ==========================
-
- var old = $.fn.collapse
-
- $.fn.collapse = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.collapse')
- var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
- if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.collapse.Constructor = Collapse
-
-
- // COLLAPSE NO CONFLICT
- // ====================
-
- $.fn.collapse.noConflict = function () {
- $.fn.collapse = old
- return this
- }
-
-
- // COLLAPSE DATA-API
- // =================
-
- $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {
- var $this = $(this), href
- var target = $this.attr('data-target')
- || e.preventDefault()
- || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
- var $target = $(target)
- var data = $target.data('bs.collapse')
- var option = data ? 'toggle' : $this.data()
- var parent = $this.attr('data-parent')
- var $parent = parent && $(parent)
-
- if (!data || !data.transitioning) {
- if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed')
- $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
- }
-
- $target.collapse(option)
- })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: dropdown.js v3.0.1
- * http://getbootstrap.com/javascript/#dropdowns
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // DROPDOWN CLASS DEFINITION
- // =========================
-
- var backdrop = '.dropdown-backdrop'
- var toggle = '[data-toggle=dropdown]'
- var Dropdown = function (element) {
- var $el = $(element).on('click.bs.dropdown', this.toggle)
- }
-
- Dropdown.prototype.toggle = function (e) {
- var $this = $(this)
-
- if ($this.is('.disabled, :disabled')) return
-
- var $parent = getParent($this)
- var isActive = $parent.hasClass('open')
- var evProps
- if (e) evProps = { originalEvent: e }
-
- clearMenus(e)
-
- if (!isActive) {
- if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
- // if mobile we we use a backdrop because click events don't delegate
- $('
').insertAfter($(this)).on('click', clearMenus)
- }
-
- $parent.trigger(e = $.Event('show.bs.dropdown', evProps))
-
- if (e.isDefaultPrevented()) return
-
- $parent
- .toggleClass('open')
- .trigger('shown.bs.dropdown', evProps)
-
- $this.focus()
- }
-
- return false
- }
-
- Dropdown.prototype.keydown = function (e) {
- if (!/(38|40|27)/.test(e.keyCode)) return
-
- var $this = $(this)
-
- e.preventDefault()
- e.stopPropagation()
-
- if ($this.is('.disabled, :disabled')) return
-
- var $parent = getParent($this)
- var isActive = $parent.hasClass('open')
-
- if (!isActive || (isActive && e.keyCode == 27)) {
- if (e.which == 27) $parent.find(toggle).focus()
- return $this.click()
- }
-
- var $items = $('[role=menu] li:not(.divider):visible a', $parent)
-
- if (!$items.length) return
-
- var index = $items.index($items.filter(':focus'))
-
- if (e.keyCode == 38 && index > 0) index-- // up
- if (e.keyCode == 40 && index < $items.length - 1) index++ // down
- if (!~index) index=0
-
- $items.eq(index).focus()
- }
-
- function clearMenus(ev) {
- var evProps
- if (ev) evProps = { originalEvent: ev }
- $(backdrop).remove()
- $(toggle).each(function (e) {
- var $parent = getParent($(this))
- if (!$parent.hasClass('open')) return
- $parent.trigger(e = $.Event('hide.bs.dropdown', evProps))
- if (e.isDefaultPrevented()) return
- $parent.removeClass('open').trigger('hidden.bs.dropdown', evProps)
- })
- }
-
- function getParent($this) {
- var selector = $this.attr('data-target')
-
- if (!selector) {
- selector = $this.attr('href')
- selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
- }
-
- var $parent = selector && $(selector)
-
- return $parent && $parent.length ? $parent : $this.parent()
- }
-
-
- // DROPDOWN PLUGIN DEFINITION
- // ==========================
-
- var old = $.fn.dropdown
-
- $.fn.dropdown = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('dropdown')
-
- if (!data) $this.data('dropdown', (data = new Dropdown(this)))
- if (typeof option == 'string') data[option].call($this)
- })
- }
-
- $.fn.dropdown.Constructor = Dropdown
-
-
- // DROPDOWN NO CONFLICT
- // ====================
-
- $.fn.dropdown.noConflict = function () {
- $.fn.dropdown = old
- return this
- }
-
-
- // APPLY TO STANDARD DROPDOWN ELEMENTS
- // ===================================
-
- $(document)
- .on('click.bs.dropdown.data-api', clearMenus)
- .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
- .on('click.bs.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
- .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: modal.js v3.0.1
- * http://getbootstrap.com/javascript/#modals
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // MODAL CLASS DEFINITION
- // ======================
-
- var Modal = function (element, options) {
- this.options = options
- this.$element = $(element)
- this.$backdrop =
- this.isShown = null
-
- if (this.options.remote) this.$element.load(this.options.remote)
- }
-
- Modal.DEFAULTS = {
- backdrop: true
- , keyboard: true
- , show: true
- }
-
- Modal.prototype.toggle = function (_relatedTarget) {
- return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)
- }
-
- Modal.prototype.show = function (_relatedTarget) {
- var that = this
- var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
-
- this.$element.trigger(e)
-
- if (this.isShown || e.isDefaultPrevented()) return
-
- this.isShown = true
-
- this.escape()
-
- this.$element.on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
-
- this.backdrop(function () {
- var transition = $.support.transition && that.$element.hasClass('fade')
-
- if (!that.$element.parent().length) {
- that.$element.appendTo(document.body) // don't move modals dom position
- }
-
- that.$element.show()
-
- if (transition) {
- that.$element[0].offsetWidth // force reflow
- }
-
- that.$element
- .addClass('in')
- .attr('aria-hidden', false)
-
- that.enforceFocus()
-
- var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
-
- transition ?
- that.$element.find('.modal-dialog') // wait for modal to slide in
- .one($.support.transition.end, function () {
- that.$element.focus().trigger(e)
- })
- .emulateTransitionEnd(300) :
- that.$element.focus().trigger(e)
- })
- }
-
- Modal.prototype.hide = function (e) {
- if (e) e.preventDefault()
-
- e = $.Event('hide.bs.modal')
-
- this.$element.trigger(e)
-
- if (!this.isShown || e.isDefaultPrevented()) return
-
- this.isShown = false
-
- this.escape()
-
- $(document).off('focusin.bs.modal')
-
- this.$element
- .removeClass('in')
- .attr('aria-hidden', true)
- .off('click.dismiss.modal')
-
- $.support.transition && this.$element.hasClass('fade') ?
- this.$element
- .one($.support.transition.end, $.proxy(this.hideModal, this))
- .emulateTransitionEnd(300) :
- this.hideModal()
- }
-
- Modal.prototype.enforceFocus = function () {
- $(document)
- .off('focusin.bs.modal') // guard against infinite focus loop
- .on('focusin.bs.modal', $.proxy(function (e) {
- if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
- this.$element.focus()
- }
- }, this))
- }
-
- Modal.prototype.escape = function () {
- if (this.isShown && this.options.keyboard) {
- this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
- e.which == 27 && this.hide()
- }, this))
- } else if (!this.isShown) {
- this.$element.off('keyup.dismiss.bs.modal')
- }
- }
-
- Modal.prototype.hideModal = function () {
- var that = this
- this.$element.hide()
- this.backdrop(function () {
- that.removeBackdrop()
- that.$element.trigger('hidden.bs.modal')
- })
- }
-
- Modal.prototype.removeBackdrop = function () {
- this.$backdrop && this.$backdrop.remove()
- this.$backdrop = null
- }
-
- Modal.prototype.backdrop = function (callback) {
- var that = this
- var animate = this.$element.hasClass('fade') ? 'fade' : ''
-
- if (this.isShown && this.options.backdrop) {
- var doAnimate = $.support.transition && animate
-
- this.$backdrop = $('
')
- .appendTo(document.body)
-
- this.$element.on('click.dismiss.modal', $.proxy(function (e) {
- if (e.target !== e.currentTarget) return
- this.options.backdrop == 'static'
- ? this.$element[0].focus.call(this.$element[0])
- : this.hide.call(this)
- }, this))
-
- if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
-
- this.$backdrop.addClass('in')
-
- if (!callback) return
-
- doAnimate ?
- this.$backdrop
- .one($.support.transition.end, callback)
- .emulateTransitionEnd(150) :
- callback()
-
- } else if (!this.isShown && this.$backdrop) {
- this.$backdrop.removeClass('in')
-
- $.support.transition && this.$element.hasClass('fade')?
- this.$backdrop
- .one($.support.transition.end, callback)
- .emulateTransitionEnd(150) :
- callback()
-
- } else if (callback) {
- callback()
- }
- }
-
-
- // MODAL PLUGIN DEFINITION
- // =======================
-
- var old = $.fn.modal
-
- $.fn.modal = function (option, _relatedTarget) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.modal')
- var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
- if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
- if (typeof option == 'string') data[option](_relatedTarget)
- else if (options.show) data.show(_relatedTarget)
- })
- }
-
- $.fn.modal.Constructor = Modal
-
-
- // MODAL NO CONFLICT
- // =================
-
- $.fn.modal.noConflict = function () {
- $.fn.modal = old
- return this
- }
-
-
- // MODAL DATA-API
- // ==============
-
- $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
- var $this = $(this)
- var href = $this.attr('href')
- var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
- var option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
-
- e.preventDefault()
-
- $target
- .modal(option, this)
- .one('hide', function () {
- $this.is(':visible') && $this.focus()
- })
- })
-
- $(document)
- .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })
- .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: tooltip.js v3.0.1
- * http://getbootstrap.com/javascript/#tooltip
- * Inspired by the original jQuery.tipsy by Jason Frame
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // TOOLTIP PUBLIC CLASS DEFINITION
- // ===============================
-
- var Tooltip = function (element, options) {
- this.type =
- this.options =
- this.enabled =
- this.timeout =
- this.hoverState =
- this.$element = null
-
- this.init('tooltip', element, options)
- }
-
- Tooltip.DEFAULTS = {
- animation: true
- , placement: 'top'
- , selector: false
- , template: ''
- , trigger: 'hover focus'
- , title: ''
- , delay: 0
- , html: false
- , container: false
- }
-
- Tooltip.prototype.init = function (type, element, options) {
- this.enabled = true
- this.type = type
- this.$element = $(element)
- this.options = this.getOptions(options)
-
- var triggers = this.options.trigger.split(' ')
-
- for (var i = triggers.length; i--;) {
- var trigger = triggers[i]
-
- if (trigger == 'click') {
- this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
- } else if (trigger != 'manual') {
- var eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
- var eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
-
- this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
- this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
- }
- }
-
- this.options.selector ?
- (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
- this.fixTitle()
- }
-
- Tooltip.prototype.getDefaults = function () {
- return Tooltip.DEFAULTS
- }
-
- Tooltip.prototype.getOptions = function (options) {
- options = $.extend({}, this.getDefaults(), this.$element.data(), options)
-
- if (options.delay && typeof options.delay == 'number') {
- options.delay = {
- show: options.delay
- , hide: options.delay
- }
- }
-
- return options
- }
-
- Tooltip.prototype.getDelegateOptions = function () {
- var options = {}
- var defaults = this.getDefaults()
-
- this._options && $.each(this._options, function (key, value) {
- if (defaults[key] != value) options[key] = value
- })
-
- return options
- }
-
- Tooltip.prototype.enter = function (obj) {
- var self = obj instanceof this.constructor ?
- obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
-
- clearTimeout(self.timeout)
-
- self.hoverState = 'in'
-
- if (!self.options.delay || !self.options.delay.show) return self.show()
-
- self.timeout = setTimeout(function () {
- if (self.hoverState == 'in') self.show()
- }, self.options.delay.show)
- }
-
- Tooltip.prototype.leave = function (obj) {
- var self = obj instanceof this.constructor ?
- obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
-
- clearTimeout(self.timeout)
-
- self.hoverState = 'out'
-
- if (!self.options.delay || !self.options.delay.hide) return self.hide()
-
- self.timeout = setTimeout(function () {
- if (self.hoverState == 'out') self.hide()
- }, self.options.delay.hide)
- }
-
- Tooltip.prototype.show = function () {
- var e = $.Event('show.bs.'+ this.type)
-
- if (this.hasContent() && this.enabled) {
- this.$element.trigger(e)
-
- if (e.isDefaultPrevented()) return
-
- var $tip = this.tip()
-
- this.setContent()
-
- if (this.options.animation) $tip.addClass('fade')
-
- var placement = typeof this.options.placement == 'function' ?
- this.options.placement.call(this, $tip[0], this.$element[0]) :
- this.options.placement
-
- var autoToken = /\s?auto?\s?/i
- var autoPlace = autoToken.test(placement)
- if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
-
- $tip
- .detach()
- .css({ top: 0, left: 0, display: 'block' })
- .addClass(placement)
-
- this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
-
- var pos = this.getPosition()
- var actualWidth = $tip[0].offsetWidth
- var actualHeight = $tip[0].offsetHeight
-
- if (autoPlace) {
- var $parent = this.$element.parent()
-
- var orgPlacement = placement
- var docScroll = document.documentElement.scrollTop || document.body.scrollTop
- var parentWidth = this.options.container == 'body' ? window.innerWidth : $parent.outerWidth()
- var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()
- var parentLeft = this.options.container == 'body' ? 0 : $parent.offset().left
-
- placement = placement == 'bottom' && pos.top + pos.height + actualHeight - docScroll > parentHeight ? 'top' :
- placement == 'top' && pos.top - docScroll - actualHeight < 0 ? 'bottom' :
- placement == 'right' && pos.right + actualWidth > parentWidth ? 'left' :
- placement == 'left' && pos.left - actualWidth < parentLeft ? 'right' :
- placement
-
- $tip
- .removeClass(orgPlacement)
- .addClass(placement)
- }
-
- var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
-
- this.applyPlacement(calculatedOffset, placement)
- this.$element.trigger('shown.bs.' + this.type)
- }
- }
-
- Tooltip.prototype.applyPlacement = function(offset, placement) {
- var replace
- var $tip = this.tip()
- var width = $tip[0].offsetWidth
- var height = $tip[0].offsetHeight
-
- // manually read margins because getBoundingClientRect includes difference
- var marginTop = parseInt($tip.css('margin-top'), 10)
- var marginLeft = parseInt($tip.css('margin-left'), 10)
-
- // we must check for NaN for ie 8/9
- if (isNaN(marginTop)) marginTop = 0
- if (isNaN(marginLeft)) marginLeft = 0
-
- offset.top = offset.top + marginTop
- offset.left = offset.left + marginLeft
-
- $tip
- .offset(offset)
- .addClass('in')
-
- // check to see if placing tip in new offset caused the tip to resize itself
- var actualWidth = $tip[0].offsetWidth
- var actualHeight = $tip[0].offsetHeight
-
- if (placement == 'top' && actualHeight != height) {
- replace = true
- offset.top = offset.top + height - actualHeight
- }
-
- if (/bottom|top/.test(placement)) {
- var delta = 0
-
- if (offset.left < 0) {
- delta = offset.left * -2
- offset.left = 0
-
- $tip.offset(offset)
-
- actualWidth = $tip[0].offsetWidth
- actualHeight = $tip[0].offsetHeight
- }
-
- this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
- } else {
- this.replaceArrow(actualHeight - height, actualHeight, 'top')
- }
-
- if (replace) $tip.offset(offset)
- }
-
- Tooltip.prototype.replaceArrow = function(delta, dimension, position) {
- this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
- }
-
- Tooltip.prototype.setContent = function () {
- var $tip = this.tip()
- var title = this.getTitle()
-
- $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
- $tip.removeClass('fade in top bottom left right')
- }
-
- Tooltip.prototype.hide = function () {
- var that = this
- var $tip = this.tip()
- var e = $.Event('hide.bs.' + this.type)
-
- function complete() {
- if (that.hoverState != 'in') $tip.detach()
- }
-
- this.$element.trigger(e)
-
- if (e.isDefaultPrevented()) return
-
- $tip.removeClass('in')
-
- $.support.transition && this.$tip.hasClass('fade') ?
- $tip
- .one($.support.transition.end, complete)
- .emulateTransitionEnd(150) :
- complete()
-
- this.$element.trigger('hidden.bs.' + this.type)
-
- return this
- }
-
- Tooltip.prototype.fixTitle = function () {
- var $e = this.$element
- if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
- $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
- }
- }
-
- Tooltip.prototype.hasContent = function () {
- return this.getTitle()
- }
-
- Tooltip.prototype.getPosition = function () {
- var el = this.$element[0]
- return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
- width: el.offsetWidth
- , height: el.offsetHeight
- }, this.$element.offset())
- }
-
- Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
- return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
- placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
- placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
- /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
- }
-
- Tooltip.prototype.getTitle = function () {
- var title
- var $e = this.$element
- var o = this.options
-
- title = $e.attr('data-original-title')
- || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
-
- return title
- }
-
- Tooltip.prototype.tip = function () {
- return this.$tip = this.$tip || $(this.options.template)
- }
-
- Tooltip.prototype.arrow = function () {
- return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')
- }
-
- Tooltip.prototype.validate = function () {
- if (!this.$element[0].parentNode) {
- this.hide()
- this.$element = null
- this.options = null
- }
- }
-
- Tooltip.prototype.enable = function () {
- this.enabled = true
- }
-
- Tooltip.prototype.disable = function () {
- this.enabled = false
- }
-
- Tooltip.prototype.toggleEnabled = function () {
- this.enabled = !this.enabled
- }
-
- Tooltip.prototype.toggle = function (e) {
- var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this
- self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
- }
-
- Tooltip.prototype.destroy = function () {
- this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
- }
-
-
- // TOOLTIP PLUGIN DEFINITION
- // =========================
-
- var old = $.fn.tooltip
-
- $.fn.tooltip = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.tooltip')
- var options = typeof option == 'object' && option
-
- if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.tooltip.Constructor = Tooltip
-
-
- // TOOLTIP NO CONFLICT
- // ===================
-
- $.fn.tooltip.noConflict = function () {
- $.fn.tooltip = old
- return this
- }
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: popover.js v3.0.1
- * http://getbootstrap.com/javascript/#popovers
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // POPOVER PUBLIC CLASS DEFINITION
- // ===============================
-
- var Popover = function (element, options) {
- this.init('popover', element, options)
- }
-
- if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
-
- Popover.DEFAULTS = $.extend({} , $.fn.tooltip.Constructor.DEFAULTS, {
- placement: 'right'
- , trigger: 'click'
- , content: ''
- , template: ''
- })
-
-
- // NOTE: POPOVER EXTENDS tooltip.js
- // ================================
-
- Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
-
- Popover.prototype.constructor = Popover
-
- Popover.prototype.getDefaults = function () {
- return Popover.DEFAULTS
- }
-
- Popover.prototype.setContent = function () {
- var $tip = this.tip()
- var title = this.getTitle()
- var content = this.getContent()
-
- $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
- $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
-
- $tip.removeClass('fade top bottom left right in')
-
- // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
- // this manually by checking the contents.
- if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
- }
-
- Popover.prototype.hasContent = function () {
- return this.getTitle() || this.getContent()
- }
-
- Popover.prototype.getContent = function () {
- var $e = this.$element
- var o = this.options
-
- return $e.attr('data-content')
- || (typeof o.content == 'function' ?
- o.content.call($e[0]) :
- o.content)
- }
-
- Popover.prototype.arrow = function () {
- return this.$arrow = this.$arrow || this.tip().find('.arrow')
- }
-
- Popover.prototype.tip = function () {
- if (!this.$tip) this.$tip = $(this.options.template)
- return this.$tip
- }
-
-
- // POPOVER PLUGIN DEFINITION
- // =========================
-
- var old = $.fn.popover
-
- $.fn.popover = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.popover')
- var options = typeof option == 'object' && option
-
- if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.popover.Constructor = Popover
-
-
- // POPOVER NO CONFLICT
- // ===================
-
- $.fn.popover.noConflict = function () {
- $.fn.popover = old
- return this
- }
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: scrollspy.js v3.0.1
- * http://getbootstrap.com/javascript/#scrollspy
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // SCROLLSPY CLASS DEFINITION
- // ==========================
-
- function ScrollSpy(element, options) {
- var href
- var process = $.proxy(this.process, this)
-
- this.$element = $(element).is('body') ? $(window) : $(element)
- this.$body = $('body')
- this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)
- this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
- this.selector = (this.options.target
- || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
- || '') + ' .nav li > a'
- this.offsets = $([])
- this.targets = $([])
- this.activeTarget = null
-
- this.refresh()
- this.process()
- }
-
- ScrollSpy.DEFAULTS = {
- offset: 10
- }
-
- ScrollSpy.prototype.refresh = function () {
- var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
-
- this.offsets = $([])
- this.targets = $([])
-
- var self = this
- var $targets = this.$body
- .find(this.selector)
- .map(function () {
- var $el = $(this)
- var href = $el.data('target') || $el.attr('href')
- var $href = /^#\w/.test(href) && $(href)
-
- return ($href
- && $href.length
- && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
- })
- .sort(function (a, b) { return a[0] - b[0] })
- .each(function () {
- self.offsets.push(this[0])
- self.targets.push(this[1])
- })
- }
-
- ScrollSpy.prototype.process = function () {
- var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
- var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
- var maxScroll = scrollHeight - this.$scrollElement.height()
- var offsets = this.offsets
- var targets = this.targets
- var activeTarget = this.activeTarget
- var i
-
- if (scrollTop >= maxScroll) {
- return activeTarget != (i = targets.last()[0]) && this.activate(i)
- }
-
- for (i = offsets.length; i--;) {
- activeTarget != targets[i]
- && scrollTop >= offsets[i]
- && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
- && this.activate( targets[i] )
- }
- }
-
- ScrollSpy.prototype.activate = function (target) {
- this.activeTarget = target
-
- $(this.selector)
- .parents('.active')
- .removeClass('active')
-
- var selector = this.selector
- + '[data-target="' + target + '"],'
- + this.selector + '[href="' + target + '"]'
-
- var active = $(selector)
- .parents('li')
- .addClass('active')
-
- if (active.parent('.dropdown-menu').length) {
- active = active
- .closest('li.dropdown')
- .addClass('active')
- }
-
- active.trigger('activate')
- }
-
-
- // SCROLLSPY PLUGIN DEFINITION
- // ===========================
-
- var old = $.fn.scrollspy
-
- $.fn.scrollspy = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.scrollspy')
- var options = typeof option == 'object' && option
-
- if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.scrollspy.Constructor = ScrollSpy
-
-
- // SCROLLSPY NO CONFLICT
- // =====================
-
- $.fn.scrollspy.noConflict = function () {
- $.fn.scrollspy = old
- return this
- }
-
-
- // SCROLLSPY DATA-API
- // ==================
-
- $(window).on('load', function () {
- $('[data-spy="scroll"]').each(function () {
- var $spy = $(this)
- $spy.scrollspy($spy.data())
- })
- })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: tab.js v3.0.1
- * http://getbootstrap.com/javascript/#tabs
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // TAB CLASS DEFINITION
- // ====================
-
- var Tab = function (element) {
- this.element = $(element)
- }
-
- Tab.prototype.show = function () {
- var $this = this.element
- var $ul = $this.closest('ul:not(.dropdown-menu)')
- var selector = $this.data('target')
-
- if (!selector) {
- selector = $this.attr('href')
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
- }
-
- if ($this.parent('li').hasClass('active')) return
-
- var previous = $ul.find('.active:last a')[0]
- var e = $.Event('show.bs.tab', {
- relatedTarget: previous
- })
-
- $this.trigger(e)
-
- if (e.isDefaultPrevented()) return
-
- var $target = $(selector)
-
- this.activate($this.parent('li'), $ul)
- this.activate($target, $target.parent(), function () {
- $this.trigger({
- type: 'shown.bs.tab'
- , relatedTarget: previous
- })
- })
- }
-
- Tab.prototype.activate = function (element, container, callback) {
- var $active = container.find('> .active')
- var transition = callback
- && $.support.transition
- && $active.hasClass('fade')
-
- function next() {
- $active
- .removeClass('active')
- .find('> .dropdown-menu > .active')
- .removeClass('active')
-
- element.addClass('active')
-
- if (transition) {
- element[0].offsetWidth // reflow for transition
- element.addClass('in')
- } else {
- element.removeClass('fade')
- }
-
- if (element.parent('.dropdown-menu')) {
- element.closest('li.dropdown').addClass('active')
- }
-
- callback && callback()
- }
-
- transition ?
- $active
- .one($.support.transition.end, next)
- .emulateTransitionEnd(150) :
- next()
-
- $active.removeClass('in')
- }
-
-
- // TAB PLUGIN DEFINITION
- // =====================
-
- var old = $.fn.tab
-
- $.fn.tab = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.tab')
-
- if (!data) $this.data('bs.tab', (data = new Tab(this)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.tab.Constructor = Tab
-
-
- // TAB NO CONFLICT
- // ===============
-
- $.fn.tab.noConflict = function () {
- $.fn.tab = old
- return this
- }
-
-
- // TAB DATA-API
- // ============
-
- $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
- e.preventDefault()
- $(this).tab('show')
- })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: affix.js v3.0.1
- * http://getbootstrap.com/javascript/#affix
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // AFFIX CLASS DEFINITION
- // ======================
-
- var Affix = function (element, options) {
- this.options = $.extend({}, Affix.DEFAULTS, options)
- this.$window = $(window)
- .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
- .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
-
- this.$element = $(element)
- this.affixed =
- this.unpin = null
-
- this.checkPosition()
- }
-
- Affix.RESET = 'affix affix-top affix-bottom'
-
- Affix.DEFAULTS = {
- offset: 0
- }
-
- Affix.prototype.checkPositionWithEventLoop = function () {
- setTimeout($.proxy(this.checkPosition, this), 1)
- }
-
- Affix.prototype.checkPosition = function () {
- if (!this.$element.is(':visible')) return
-
- var scrollHeight = $(document).height()
- var scrollTop = this.$window.scrollTop()
- var position = this.$element.offset()
- var offset = this.options.offset
- var offsetTop = offset.top
- var offsetBottom = offset.bottom
-
- if (typeof offset != 'object') offsetBottom = offsetTop = offset
- if (typeof offsetTop == 'function') offsetTop = offset.top()
- if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
-
- var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false :
- offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
- offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false
-
- if (this.affixed === affix) return
- if (this.unpin) this.$element.css('top', '')
-
- this.affixed = affix
- this.unpin = affix == 'bottom' ? position.top - scrollTop : null
-
- this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : ''))
-
- if (affix == 'bottom') {
- this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() })
- }
- }
-
-
- // AFFIX PLUGIN DEFINITION
- // =======================
-
- var old = $.fn.affix
-
- $.fn.affix = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.affix')
- var options = typeof option == 'object' && option
-
- if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.affix.Constructor = Affix
-
-
- // AFFIX NO CONFLICT
- // =================
-
- $.fn.affix.noConflict = function () {
- $.fn.affix = old
- return this
- }
-
-
- // AFFIX DATA-API
- // ==============
-
- $(window).on('load', function () {
- $('[data-spy="affix"]').each(function () {
- var $spy = $(this)
- var data = $spy.data()
-
- data.offset = data.offset || {}
-
- if (data.offsetBottom) data.offset.bottom = data.offsetBottom
- if (data.offsetTop) data.offset.top = data.offsetTop
-
- $spy.affix(data)
- })
- })
-
-}(window.jQuery);
diff --git a/addons/website/static/src/js/website.tour.js b/addons/website/static/src/js/website.tour.js
index 8b1284f0a07..f1d5ab79228 100644
--- a/addons/website/static/src/js/website.tour.js
+++ b/addons/website/static/src/js/website.tour.js
@@ -340,9 +340,9 @@ website.Tour = openerp.Class.extend({
},
endTour: function () {
if (parseInt(this.localStorage.getItem("tour-"+this.id+"-test"),10) >= this.steps.length-1) {
- console.log('{ "event": "success" }');
+ console.log('ok');
} else {
- console.log('{ "event": "canceled" }');
+ console.log('error');
}
this.reset();
},
diff --git a/addons/website/tests/__init__.py b/addons/website/tests/__init__.py
index e8c23ffd78d..b7eb1831806 100644
--- a/addons/website/tests/__init__.py
+++ b/addons/website/tests/__init__.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
import test_converter
-#import test_requests
-#import test_ui
+import test_requests
+import test_ui
import test_views
diff --git a/addons/website/tests/cases.py b/addons/website/tests/cases.py
new file mode 100644
index 00000000000..3e777293ff9
--- /dev/null
+++ b/addons/website/tests/cases.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+import unittest2
+
+class URLCase(unittest2.TestCase):
+ """
+ URLCase moved out of test_requests, otherwise discovery attempts to
+ instantiate and run it
+ """
+ def __init__(self, user, url, source, result):
+ super(URLCase, self).__init__()
+ self.user = user
+ self.url = url
+ self.source = source
+ self.result = result
+
+ @property
+ def username(self):
+ return self.user or "Anonymous Coward"
+
+ def __str__(self):
+ if self.source:
+ return "%s (from %s, as %s)" % (self.url, self.source, self.username)
+ return "%s (as %s)" % (self.url, self.username)
+
+ __repr__ = __str__
+
+ def shortDescription(self):
+ return ""
+
+ def runTest(self):
+ code = self.result.getcode()
+ self.assertIn(
+ code, xrange(200, 300),
+ "Fetching %s as %s returned an error response (%d)" % (
+ self.url, self.username, code))
diff --git a/addons/website/tests/test_requests.py b/addons/website/tests/test_requests.py
index 391eee57d0a..9fb29b63c75 100644
--- a/addons/website/tests/test_requests.py
+++ b/addons/website/tests/test_requests.py
@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
-import collections
import urlparse
import unittest2
import urllib2
@@ -9,41 +8,10 @@ import lxml.html
from openerp import tools
+import cases
+
__all__ = ['load_tests', 'CrawlSuite']
-class URLCase(unittest2.TestCase):
- """
- URLCase moved out of test_requests, otherwise discovery attempts to
- instantiate and run it
- """
- def __init__(self, user, url, source, result):
- super(URLCase, self).__init__()
- self.user = user
- self.url = url
- self.source = source
- self.result = result
-
- @property
- def username(self):
- return self.user or "Anonymous Coward"
-
- def __str__(self):
- if self.source:
- return "%s (from %s, as %s)" % (self.url, self.source, self.username)
- return "%s (as %s)" % (self.url, self.username)
-
- __repr__ = __str__
-
- def shortDescription(self):
- return ""
-
- def runTest(self):
- code = self.result.getcode()
- self.assertIn(
- code, xrange(200, 300),
- "Fetching %s as %s returned an error response (%d)" % (
- self.url, self.username, code))
-
class RedirectHandler(urllib2.HTTPRedirectHandler):
"""
HTTPRedirectHandler is predicated upon HTTPErrorProcessor being used and
@@ -96,12 +64,12 @@ class CrawlSuite(unittest2.TestSuite):
# blow up in multidb situations
self.opener.open('http://localhost:{port}/web/?db={db}'.format(
port=tools.config['xmlrpc_port'],
- db=werkzeug.url_quote_plus(tools.config['db_name']),
+ db=werkzeug.urls.url_quote_plus(tools.config['db_name']),
))
if user is not None:
url = 'http://localhost:{port}/login?{query}'.format(
port=tools.config['xmlrpc_port'],
- query=werkzeug.url_encode({
+ query=werkzeug.urls.url_encode({
'db': tools.config['db_name'],
'login': user,
'key': password,
@@ -149,7 +117,7 @@ class URL(object):
self.source = source
def to_case(self, user, result):
- return URLCase(user, self.url, self.source, result)
+ return cases.URLCase(user, self.url, self.source, result)
def load_tests(loader, base, _):
base.addTest(CrawlSuite())
diff --git a/addons/website/tests/test_ui.py b/addons/website/tests/test_ui.py
index 14b6aa4b7d6..44ab1e7992e 100644
--- a/addons/website/tests/test_ui.py
+++ b/addons/website/tests/test_ui.py
@@ -1,14 +1,24 @@
+import os
import openerp
-class TestUi(openerp.tests.HttpCase):
- def test_admin(self):
- self.phantom_js("/", "console.log('ok')", "window.openerp.website")
- self.phantom_js("/", "openerp.website.Tour.run_test('banner')", "openerp.website.Tour")
+inject = [
+ ("openerp.website.Tour", os.path.join(os.path.dirname(__file__), '../static/src/js/website.tour.js')),
+ ("openerp.website.Tour.LoginEdit", os.path.join(os.path.dirname(__file__), "../static/src/js/website.tour.test.admin.js")),
+]
- def test_public(self):
- inject = [
- "./../../../website/static/src/js/website.tour.test.js",
- "./../../../website/static/src/js/website.tour.test.admin.js",
- ]
+class TestUi(openerp.tests.HttpCase):
+ def test_01_pubic_homepage(self):
+ self.phantom_js("/", "console.log('ok')", "openerp.website.snippet");
+
+ def test_02_public_login_logout(self):
+ # Page injection works but i suspect multiple files doesnt
+ return
self.phantom_js("/", "openerp.website.Tour.run_test('login_edit')", "openerp.website.Tour", inject=inject);
+ def test_03_admin_homepage(self):
+ self.phantom_js("/", "console.log('ok')", "openerp.website.editor", login='admin');
+
+ def test_04_admin_tour_banner(self):
+ self.phantom_js("/", "openerp.website.Tour.run_test('banner')", "openerp.website.Tour", login='admin')
+
+# vim:et:
diff --git a/addons/website/views/ir_actions.xml b/addons/website/views/ir_actions.xml
index 0573c87af31..ac6005103c1 100644
--- a/addons/website/views/ir_actions.xml
+++ b/addons/website/views/ir_actions.xml
@@ -17,7 +17,7 @@
-
diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml
index 79145ef3cda..8beff820baf 100644
--- a/addons/website/views/website_templates.xml
+++ b/addons/website/views/website_templates.xml
@@ -7,7 +7,7 @@
-
+
@@ -69,7 +69,7 @@
-
+