parent
d80bbd12a1
commit
261dbb4083
@ -0,0 +1,3 @@
|
||||
*.js linguist-language=java
|
||||
*.css linguist-language=java
|
||||
*.html linguist-language=java
|
@ -0,0 +1,25 @@
|
||||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
|
||||
### STS ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
### NetBeans ###
|
||||
nbproject/private/
|
||||
build/
|
||||
nbbuild/
|
||||
dist/
|
||||
nbdist/
|
||||
.nb-gradle/
|
||||
/log/
|
@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
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.
|
@ -0,0 +1,90 @@
|
||||
#!/bin/sh
|
||||
# description: Auto-starts boot
|
||||
# $API_HOME/bin/boot.sh
|
||||
#启动命令: boot.sh start
|
||||
#重启命令: boot.sh restart
|
||||
#关闭命令: boot.sh stop
|
||||
#是否运行: boot.sh status
|
||||
|
||||
CURRENT_DIR=`dirname $0`
|
||||
API_HOME=`cd "$CURRENT_DIR/.." >/dev/null; pwd`
|
||||
# 应用名
|
||||
Tag="mall"
|
||||
cd $API_HOME
|
||||
# 要执行的jar包
|
||||
Jar="$API_HOME/mall.jar"
|
||||
RETVAL="0"
|
||||
|
||||
# See how we were called.
|
||||
start()
|
||||
{
|
||||
echo $$ > $API_HOME/api.pid
|
||||
nohup java \
|
||||
-XX:-UseGCOverheadLimit \
|
||||
-verbose:gc -Xloggc:jvm-gc.log \
|
||||
-Dappliction=$Tag \
|
||||
-jar $Jar --spring.config.location=$API_HOME/config > $API_HOME/log/api_stdout.log 2>&1 &
|
||||
echo "$Tag started!"
|
||||
# 这句是启动后查看控制台输出
|
||||
tail -f -n 0 $API_HOME/log/api_stdout.log
|
||||
}
|
||||
|
||||
|
||||
stop()
|
||||
{
|
||||
pid=$(ps -ef | grep -v 'grep' | egrep "$Jar"| awk '{printf $2 " "}')
|
||||
if [ "$pid" != "" ]; then
|
||||
echo -n "$Tag ( pid: $pid) is running"
|
||||
echo
|
||||
echo -n "Shutting down $Tag..."
|
||||
echo
|
||||
kill -9 "$pid" > /dev/null 2>&1
|
||||
fi
|
||||
status
|
||||
|
||||
}
|
||||
|
||||
status()
|
||||
{
|
||||
pid=$(ps -ef | grep -v 'grep' | egrep "$Jar"| awk '{printf $2 " "}')
|
||||
#echo "$pid"
|
||||
if [ "$pid" != "" ]; then
|
||||
echo "$Tag is running,pid is $pid"
|
||||
else
|
||||
echo "$Tag is stopped"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 {start|stop|restart|status}"
|
||||
RETVAL="2"
|
||||
}
|
||||
|
||||
# See how we were called.
|
||||
RETVAL="0"
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
restart)
|
||||
stop
|
||||
start
|
||||
;;
|
||||
reload)
|
||||
RETVAL="3"
|
||||
;;
|
||||
status)
|
||||
status
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
|
||||
exit $RETVAL
|
After Width: | Height: | Size: 165 KiB |
After Width: | Height: | Size: 767 KiB |
After Width: | Height: | Size: 299 KiB |
After Width: | Height: | Size: 292 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 284 KiB |
@ -0,0 +1,100 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>priv.jesse</groupId>
|
||||
<artifactId>mall</artifactId>
|
||||
<version>1.0</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>mall</name>
|
||||
<description>shopping mall project</description>
|
||||
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>1.5.8.RELEASE</version>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!--mysql-->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>8.0.29</version>
|
||||
|
||||
</dependency>
|
||||
<!--H2-->
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<!--spring data jpa 数据持久化组件-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
<!--druid连接池 mybatis-->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
<version>1.1.3</version>
|
||||
</dependency>
|
||||
<!--aop 切面-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
</dependency>
|
||||
<!--web -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<!--html模板引擎 类似jsp-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-lang</groupId>
|
||||
<artifactId>commons-lang</artifactId>
|
||||
<version>2.6</version>
|
||||
</dependency>
|
||||
<!--热加载代码方便调试用 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-devtools</artifactId>
|
||||
<scope>runtime</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<!--测试框架-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
<plugins>
|
||||
<!--打包插件-->
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
</project>
|
@ -0,0 +1,29 @@
|
||||
package priv.jesse.mall;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.web.servlet.ServletComponentScan;
|
||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
|
||||
/**
|
||||
* 程序启动入口
|
||||
*
|
||||
* @ServletComponentScan 设置启动时spring能够扫描到我们自己编写的servlet和filter, 用于Druid监控
|
||||
* @MapperScan("com.imlaidian.springbootdemo.dao") 扫描mybatis Mapper接口
|
||||
* @EnableScheduling 启用定时任务
|
||||
* @EnableTransactionManagement 开启事务
|
||||
*
|
||||
* @author hfb
|
||||
* @date 2017/9/18 11:13
|
||||
*/
|
||||
@ServletComponentScan
|
||||
@EnableConfigurationProperties
|
||||
@EnableTransactionManagement
|
||||
@SpringBootApplication
|
||||
public class MallApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(MallApplication.class, args);
|
||||
}
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package priv.jesse.mall.aspect;
|
||||
|
||||
import org.aspectj.lang.JoinPoint;
|
||||
import org.aspectj.lang.annotation.AfterReturning;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.aspectj.lang.annotation.Before;
|
||||
import org.aspectj.lang.annotation.Pointcut;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* WEB层日志切面,用来记录请求信息
|
||||
*/
|
||||
@Aspect
|
||||
@Order(5)
|
||||
@Component
|
||||
public class WebLogAspect {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(WebLogAspect.class);
|
||||
|
||||
ThreadLocal<Long> startTime = new ThreadLocal<>();
|
||||
|
||||
@Pointcut("execution(public * priv.jesse.mall.controller.*.*(..))")//切入点
|
||||
public void webLog() {
|
||||
}
|
||||
|
||||
@Before("webLog()")
|
||||
public void doBefore(JoinPoint joinPoint) throws Throwable {
|
||||
startTime.set(System.currentTimeMillis());
|
||||
|
||||
// 接收到请求,记录请求内容
|
||||
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
||||
HttpServletRequest request = attributes.getRequest();
|
||||
|
||||
// 记录下请求内容
|
||||
LOGGER.info("**************Start API Request**************");
|
||||
LOGGER.info("URL : " + request.getRequestURI().toString());
|
||||
LOGGER.info("HTTP_METHOD : " + request.getMethod());
|
||||
LOGGER.info("IP : " + request.getRemoteAddr());
|
||||
LOGGER.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
|
||||
LOGGER.info("ARGS : " + Arrays.toString(joinPoint.getArgs()));
|
||||
}
|
||||
|
||||
@AfterReturning(returning = "ret", pointcut = "webLog()")
|
||||
public void doAfterReturning(Object ret) throws Throwable {
|
||||
// 处理完请求,返回内容
|
||||
LOGGER.info("RESPONSE : " + ret);
|
||||
LOGGER.info("SPEND TIME : " + (System.currentTimeMillis() - startTime.get()));
|
||||
LOGGER.info("***************End API Request***************");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,8 @@
|
||||
package priv.jesse.mall.dao;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import priv.jesse.mall.entity.AdminUser;
|
||||
|
||||
public interface AdminUserDao extends JpaRepository<AdminUser, Integer> {
|
||||
AdminUser findByUsernameAndPassword(String username, String pwd);
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package priv.jesse.mall.dao;
|
||||
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import priv.jesse.mall.entity.Classification;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ClassificationDao extends JpaRepository<Classification, Integer> {
|
||||
List<Classification> findByType(int type);
|
||||
|
||||
Page<Classification> findByType(int type, Pageable pageable);
|
||||
|
||||
List<Classification> findByParentId(int cid);
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package priv.jesse.mall.dao;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import priv.jesse.mall.entity.Order;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.List;
|
||||
|
||||
public interface OrderDao extends JpaRepository<Order, Integer> {
|
||||
|
||||
/**
|
||||
* 更改订单状态
|
||||
* @param state
|
||||
* @param id
|
||||
*/
|
||||
@Modifying
|
||||
@Transactional
|
||||
@Query(value = "update `order` o set o.state=?1 where o.id=?2",nativeQuery = true)
|
||||
void updateState(int state,int id);
|
||||
|
||||
/**
|
||||
* 查找用户的订单
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
List<Order> findByUserId(int userId);
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package priv.jesse.mall.dao;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import priv.jesse.mall.entity.OrderItem;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface OrderItemDao extends JpaRepository<OrderItem, Integer> {
|
||||
/**
|
||||
* 根据订单Id查询
|
||||
* @param orderId
|
||||
* @return
|
||||
*/
|
||||
List<OrderItem> findByOrderId(int orderId);
|
||||
}
|
@ -0,0 +1,96 @@
|
||||
package priv.jesse.mall.entity;
|
||||
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 管理员用户
|
||||
*/
|
||||
@Entity
|
||||
public class AdminUser implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column
|
||||
private Integer id;
|
||||
@Column(nullable = false)
|
||||
private String username;
|
||||
@Column
|
||||
private String password;
|
||||
|
||||
public AdminUser(Integer id, String username, String password) {
|
||||
this.id = id;
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public AdminUser() {
|
||||
super();
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username == null ? null : username.trim();
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password == null ? null : password.trim();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object that) {
|
||||
if (this == that) {
|
||||
return true;
|
||||
}
|
||||
if (that == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != that.getClass()) {
|
||||
return false;
|
||||
}
|
||||
AdminUser other = (AdminUser) that;
|
||||
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
|
||||
&& (this.getUsername() == null ? other.getUsername() == null : this.getUsername().equals(other.getUsername()))
|
||||
&& (this.getPassword() == null ? other.getPassword() == null : this.getPassword().equals(other.getPassword()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
|
||||
result = prime * result + ((getUsername() == null) ? 0 : getUsername().hashCode());
|
||||
result = prime * result + ((getPassword() == null) ? 0 : getPassword().hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(getClass().getSimpleName());
|
||||
sb.append(" [");
|
||||
sb.append("Hash = ").append(hashCode());
|
||||
sb.append(", id=").append(id);
|
||||
sb.append(", username=").append(username);
|
||||
sb.append(", password=").append(password);
|
||||
sb.append(", serialVersionUID=").append(serialVersionUID);
|
||||
sb.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,122 @@
|
||||
package priv.jesse.mall.entity;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 分类
|
||||
*/
|
||||
@Entity
|
||||
public class Classification implements Serializable {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column
|
||||
private Integer id;
|
||||
/**
|
||||
* 上级分类Id
|
||||
*/
|
||||
@Column
|
||||
private Integer parentId;
|
||||
/**
|
||||
* 分类名称
|
||||
*/
|
||||
@Column
|
||||
private String cname;
|
||||
/**
|
||||
* 类型 1一级分类 2二级分类
|
||||
*/
|
||||
@Column
|
||||
private Integer type;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public Classification(Integer id, Integer parentId, String cname, Integer type) {
|
||||
this.id = id;
|
||||
this.parentId = parentId;
|
||||
this.cname = cname;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public Classification() {
|
||||
super();
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Integer getParentId() {
|
||||
return parentId;
|
||||
}
|
||||
|
||||
public void setParentId(Integer parentId) {
|
||||
this.parentId = parentId;
|
||||
}
|
||||
|
||||
public String getCname() {
|
||||
return cname;
|
||||
}
|
||||
|
||||
public void setCname(String cname) {
|
||||
this.cname = cname == null ? null : cname.trim();
|
||||
}
|
||||
|
||||
public Integer getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(Integer type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object that) {
|
||||
if (this == that) {
|
||||
return true;
|
||||
}
|
||||
if (that == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != that.getClass()) {
|
||||
return false;
|
||||
}
|
||||
Classification other = (Classification) that;
|
||||
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
|
||||
&& (this.getParentId() == null ? other.getParentId() == null : this.getParentId().equals(other.getParentId()))
|
||||
&& (this.getCname() == null ? other.getCname() == null : this.getCname().equals(other.getCname()))
|
||||
&& (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
|
||||
result = prime * result + ((getParentId() == null) ? 0 : getParentId().hashCode());
|
||||
result = prime * result + ((getCname() == null) ? 0 : getCname().hashCode());
|
||||
result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(getClass().getSimpleName());
|
||||
sb.append(" [");
|
||||
sb.append("Hash = ").append(hashCode());
|
||||
sb.append(", id=").append(id);
|
||||
sb.append(", parentId=").append(parentId);
|
||||
sb.append(", cname=").append(cname);
|
||||
sb.append(", type=").append(type);
|
||||
sb.append(", serialVersionUID=").append(serialVersionUID);
|
||||
sb.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,189 @@
|
||||
package priv.jesse.mall.entity;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 订单
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "`order`")
|
||||
public class Order implements Serializable {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column
|
||||
private Integer id;
|
||||
/**
|
||||
* 订单总价
|
||||
*/
|
||||
@Column
|
||||
private Double total;
|
||||
/**
|
||||
* 订单状态 1:未付款 2:等待发货 3:等待收货 4:订单完成
|
||||
*/
|
||||
@Column
|
||||
private Integer state;
|
||||
/**
|
||||
* 订单时间
|
||||
*/
|
||||
@Column
|
||||
private Date orderTime;
|
||||
/**
|
||||
* 收货人姓名
|
||||
*/
|
||||
@Column(name = "`name`")
|
||||
private String name;
|
||||
/**
|
||||
* 收货人联系电话
|
||||
*/
|
||||
@Column
|
||||
private String phone;
|
||||
/**
|
||||
* 收货地址
|
||||
*/
|
||||
@Column
|
||||
private String addr;
|
||||
/**
|
||||
* 用户Id
|
||||
*/
|
||||
@Column
|
||||
private Integer userId;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public Order(Integer id, Double total, Integer state, Date orderTime, String name, String phone, String addr, Integer userId) {
|
||||
this.id = id;
|
||||
this.total = total;
|
||||
this.state = state;
|
||||
this.orderTime = orderTime;
|
||||
this.name = name;
|
||||
this.phone = phone;
|
||||
this.addr = addr;
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public Order() {
|
||||
super();
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Double getTotal() {
|
||||
return total;
|
||||
}
|
||||
|
||||
public void setTotal(Double total) {
|
||||
this.total = total;
|
||||
}
|
||||
|
||||
public Integer getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(Integer state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public Date getOrderTime() {
|
||||
return orderTime;
|
||||
}
|
||||
|
||||
public void setOrderTime(Date orderTime) {
|
||||
this.orderTime = orderTime;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name == null ? null : name.trim();
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone == null ? null : phone.trim();
|
||||
}
|
||||
|
||||
public String getAddr() {
|
||||
return addr;
|
||||
}
|
||||
|
||||
public void setAddr(String addr) {
|
||||
this.addr = addr == null ? null : addr.trim();
|
||||
}
|
||||
|
||||
public Integer getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(Integer userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object that) {
|
||||
if (this == that) {
|
||||
return true;
|
||||
}
|
||||
if (that == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != that.getClass()) {
|
||||
return false;
|
||||
}
|
||||
Order other = (Order) that;
|
||||
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
|
||||
&& (this.getTotal() == null ? other.getTotal() == null : this.getTotal().equals(other.getTotal()))
|
||||
&& (this.getState() == null ? other.getState() == null : this.getState().equals(other.getState()))
|
||||
&& (this.getOrderTime() == null ? other.getOrderTime() == null : this.getOrderTime().equals(other.getOrderTime()))
|
||||
&& (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
|
||||
&& (this.getPhone() == null ? other.getPhone() == null : this.getPhone().equals(other.getPhone()))
|
||||
&& (this.getAddr() == null ? other.getAddr() == null : this.getAddr().equals(other.getAddr()))
|
||||
&& (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
|
||||
result = prime * result + ((getTotal() == null) ? 0 : getTotal().hashCode());
|
||||
result = prime * result + ((getState() == null) ? 0 : getState().hashCode());
|
||||
result = prime * result + ((getOrderTime() == null) ? 0 : getOrderTime().hashCode());
|
||||
result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
|
||||
result = prime * result + ((getPhone() == null) ? 0 : getPhone().hashCode());
|
||||
result = prime * result + ((getAddr() == null) ? 0 : getAddr().hashCode());
|
||||
result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(getClass().getSimpleName());
|
||||
sb.append(" [");
|
||||
sb.append("Hash = ").append(hashCode());
|
||||
sb.append(", id=").append(id);
|
||||
sb.append(", total=").append(total);
|
||||
sb.append(", state=").append(state);
|
||||
sb.append(", orderTime=").append(orderTime);
|
||||
sb.append(", name=").append(name);
|
||||
sb.append(", phone=").append(phone);
|
||||
sb.append(", addr=").append(addr);
|
||||
sb.append(", userId=").append(userId);
|
||||
sb.append(", serialVersionUID=").append(serialVersionUID);
|
||||
sb.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,147 @@
|
||||
package priv.jesse.mall.entity;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 订单项
|
||||
*/
|
||||
@Entity
|
||||
public class OrderItem implements Serializable {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column
|
||||
private Integer id;
|
||||
/**
|
||||
* 订单Id
|
||||
*/
|
||||
@Column
|
||||
private Integer orderId;
|
||||
/**
|
||||
* 商品Id
|
||||
*/
|
||||
@Column
|
||||
private Integer productId;
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
@Column
|
||||
private Integer count;
|
||||
/**
|
||||
* 总价
|
||||
*/
|
||||
@Column
|
||||
private Double subTotal;
|
||||
|
||||
@Transient
|
||||
private Product product;
|
||||
|
||||
public Product getProduct() {
|
||||
return product;
|
||||
}
|
||||
|
||||
public void setProduct(Product product) {
|
||||
this.product = product;
|
||||
}
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public OrderItem(Integer id, Integer orderId, Integer productId, Integer count, Double subTotal) {
|
||||
this.id = id;
|
||||
this.orderId = orderId;
|
||||
this.productId = productId;
|
||||
this.count = count;
|
||||
this.subTotal = subTotal;
|
||||
}
|
||||
|
||||
public OrderItem() {
|
||||
super();
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Integer getOrderId() {
|
||||
return orderId;
|
||||
}
|
||||
|
||||
public void setOrderId(Integer orderId) {
|
||||
this.orderId = orderId;
|
||||
}
|
||||
|
||||
public Integer getProductId() {
|
||||
return productId;
|
||||
}
|
||||
|
||||
public void setProductId(Integer productId) {
|
||||
this.productId = productId;
|
||||
}
|
||||
|
||||
public Integer getCount() {
|
||||
return count;
|
||||
}
|
||||
|
||||
public void setCount(Integer count) {
|
||||
this.count = count;
|
||||
}
|
||||
|
||||
public Double getSubTotal() {
|
||||
return subTotal;
|
||||
}
|
||||
|
||||
public void setSubTotal(Double subTotal) {
|
||||
this.subTotal = subTotal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object that) {
|
||||
if (this == that) {
|
||||
return true;
|
||||
}
|
||||
if (that == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != that.getClass()) {
|
||||
return false;
|
||||
}
|
||||
OrderItem other = (OrderItem) that;
|
||||
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
|
||||
&& (this.getOrderId() == null ? other.getOrderId() == null : this.getOrderId().equals(other.getOrderId()))
|
||||
&& (this.getProductId() == null ? other.getProductId() == null : this.getProductId().equals(other.getProductId()))
|
||||
&& (this.getCount() == null ? other.getCount() == null : this.getCount().equals(other.getCount()))
|
||||
&& (this.getSubTotal() == null ? other.getSubTotal() == null : this.getSubTotal().equals(other.getSubTotal()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
|
||||
result = prime * result + ((getOrderId() == null) ? 0 : getOrderId().hashCode());
|
||||
result = prime * result + ((getProductId() == null) ? 0 : getProductId().hashCode());
|
||||
result = prime * result + ((getCount() == null) ? 0 : getCount().hashCode());
|
||||
result = prime * result + ((getSubTotal() == null) ? 0 : getSubTotal().hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(getClass().getSimpleName());
|
||||
sb.append(" [");
|
||||
sb.append("Hash = ").append(hashCode());
|
||||
sb.append(", id=").append(id);
|
||||
sb.append(", orderId=").append(orderId);
|
||||
sb.append(", productId=").append(productId);
|
||||
sb.append(", count=").append(count);
|
||||
sb.append(", subTotal=").append(subTotal);
|
||||
sb.append(", serialVersionUID=").append(serialVersionUID);
|
||||
sb.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,215 @@
|
||||
package priv.jesse.mall.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
@Entity
|
||||
@JsonIgnoreProperties({ "handler","hibernateLazyInitializer" })
|
||||
public class Product implements Serializable {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column
|
||||
private Integer id;
|
||||
/**
|
||||
* 商品标题
|
||||
*/
|
||||
@Column
|
||||
private String title;
|
||||
/**
|
||||
* 市场价
|
||||
*/
|
||||
@Column
|
||||
private Double marketPrice;
|
||||
/**
|
||||
* 商城价
|
||||
*/
|
||||
@Column
|
||||
private Double shopPrice;
|
||||
/**
|
||||
* 主图
|
||||
*/
|
||||
@Column
|
||||
private String image;
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
@Column(name = "`desc`", columnDefinition = "text")
|
||||
private String desc;
|
||||
/**
|
||||
* 是否热门商品
|
||||
*/
|
||||
@Column
|
||||
private Integer isHot;
|
||||
/**
|
||||
* 二级分类Id
|
||||
*/
|
||||
@Column
|
||||
private Integer csid;
|
||||
/**
|
||||
* 商品创建日期
|
||||
*/
|
||||
@Column
|
||||
private Date pdate;
|
||||
|
||||
@Transient
|
||||
private Classification categorySec;
|
||||
|
||||
public Classification getCategorySec() {
|
||||
return categorySec;
|
||||
}
|
||||
|
||||
public void setCategorySec(Classification categorySec) {
|
||||
this.categorySec = categorySec;
|
||||
}
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public Product(Integer id, String title, Double marketPrice, Double shopPrice, String image, String desc, Integer isHot, Integer csid, Date pdate) {
|
||||
this.id = id;
|
||||
this.title = title;
|
||||
this.marketPrice = marketPrice;
|
||||
this.shopPrice = shopPrice;
|
||||
this.image = image;
|
||||
this.desc = desc;
|
||||
this.isHot = isHot;
|
||||
this.csid = csid;
|
||||
this.pdate = pdate;
|
||||
}
|
||||
|
||||
public Product() {
|
||||
super();
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title == null ? null : title.trim();
|
||||
}
|
||||
|
||||
public Double getMarketPrice() {
|
||||
return marketPrice;
|
||||
}
|
||||
|
||||
public void setMarketPrice(Double marketPrice) {
|
||||
this.marketPrice = marketPrice;
|
||||
}
|
||||
|
||||
public Double getShopPrice() {
|
||||
return shopPrice;
|
||||
}
|
||||
|
||||
public void setShopPrice(Double shopPrice) {
|
||||
this.shopPrice = shopPrice;
|
||||
}
|
||||
|
||||
public String getImage() {
|
||||
return image;
|
||||
}
|
||||
|
||||
public void setImage(String image) {
|
||||
this.image = image == null ? null : image.trim();
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
public void setDesc(String desc) {
|
||||
this.desc = desc == null ? null : desc.trim();
|
||||
}
|
||||
|
||||
public Integer getIsHot() {
|
||||
return isHot;
|
||||
}
|
||||
|
||||
public void setIsHot(Integer isHot) {
|
||||
this.isHot = isHot;
|
||||
}
|
||||
|
||||
public Integer getCsid() {
|
||||
return csid;
|
||||
}
|
||||
|
||||
public void setCsid(Integer csid) {
|
||||
this.csid = csid;
|
||||
}
|
||||
|
||||
public Date getPdate() {
|
||||
return pdate;
|
||||
}
|
||||
|
||||
public void setPdate(Date pdate) {
|
||||
this.pdate = pdate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object that) {
|
||||
if (this == that) {
|
||||
return true;
|
||||
}
|
||||
if (that == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != that.getClass()) {
|
||||
return false;
|
||||
}
|
||||
Product other = (Product) that;
|
||||
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
|
||||
&& (this.getTitle() == null ? other.getTitle() == null : this.getTitle().equals(other.getTitle()))
|
||||
&& (this.getMarketPrice() == null ? other.getMarketPrice() == null : this.getMarketPrice().equals(other.getMarketPrice()))
|
||||
&& (this.getShopPrice() == null ? other.getShopPrice() == null : this.getShopPrice().equals(other.getShopPrice()))
|
||||
&& (this.getImage() == null ? other.getImage() == null : this.getImage().equals(other.getImage()))
|
||||
&& (this.getDesc() == null ? other.getDesc() == null : this.getDesc().equals(other.getDesc()))
|
||||
&& (this.getIsHot() == null ? other.getIsHot() == null : this.getIsHot().equals(other.getIsHot()))
|
||||
&& (this.getCsid() == null ? other.getCsid() == null : this.getCsid().equals(other.getCsid()))
|
||||
&& (this.getPdate() == null ? other.getPdate() == null : this.getPdate().equals(other.getPdate()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
|
||||
result = prime * result + ((getTitle() == null) ? 0 : getTitle().hashCode());
|
||||
result = prime * result + ((getMarketPrice() == null) ? 0 : getMarketPrice().hashCode());
|
||||
result = prime * result + ((getShopPrice() == null) ? 0 : getShopPrice().hashCode());
|
||||
result = prime * result + ((getImage() == null) ? 0 : getImage().hashCode());
|
||||
result = prime * result + ((getDesc() == null) ? 0 : getDesc().hashCode());
|
||||
result = prime * result + ((getIsHot() == null) ? 0 : getIsHot().hashCode());
|
||||
result = prime * result + ((getCsid() == null) ? 0 : getCsid().hashCode());
|
||||
result = prime * result + ((getPdate() == null) ? 0 : getPdate().hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(getClass().getSimpleName());
|
||||
sb.append(" [");
|
||||
sb.append("Hash = ").append(hashCode());
|
||||
sb.append(", id=").append(id);
|
||||
sb.append(", title=").append(title);
|
||||
sb.append(", marketPrice=").append(marketPrice);
|
||||
sb.append(", shopPrice=").append(shopPrice);
|
||||
sb.append(", image=").append(image);
|
||||
sb.append(", desc=").append(desc);
|
||||
sb.append(", isHot=").append(isHot);
|
||||
sb.append(", csid=").append(csid);
|
||||
sb.append(", pdate=").append(pdate);
|
||||
sb.append(", serialVersionUID=").append(serialVersionUID);
|
||||
sb.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,171 @@
|
||||
package priv.jesse.mall.entity;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Entity
|
||||
public class User implements Serializable {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column
|
||||
private Integer id;
|
||||
/**
|
||||
* 用户名
|
||||
*/
|
||||
@Column
|
||||
private String username;
|
||||
/**
|
||||
* 密码
|
||||
*/
|
||||
@Column
|
||||
private String password;
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
@Column
|
||||
private String name;
|
||||
/**
|
||||
* 邮件
|
||||
*/
|
||||
@Column
|
||||
private String email;
|
||||
/**
|
||||
* 电话
|
||||
*/
|
||||
@Column
|
||||
private String phone;
|
||||
/**
|
||||
* 地址
|
||||
*/
|
||||
@Column
|
||||
private String addr;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public User(Integer id, String username, String password, String name, String email, String phone, String addr, String code, Integer state) {
|
||||
this.id = id;
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
this.name = name;
|
||||
this.email = email;
|
||||
this.phone = phone;
|
||||
this.addr = addr;
|
||||
}
|
||||
|
||||
public User() {
|
||||
super();
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username == null ? null : username.trim();
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password == null ? null : password.trim();
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name == null ? null : name.trim();
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email == null ? null : email.trim();
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone == null ? null : phone.trim();
|
||||
}
|
||||
|
||||
public String getAddr() {
|
||||
return addr;
|
||||
}
|
||||
|
||||
public void setAddr(String addr) {
|
||||
this.addr = addr == null ? null : addr.trim();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object that) {
|
||||
if (this == that) {
|
||||
return true;
|
||||
}
|
||||
if (that == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != that.getClass()) {
|
||||
return false;
|
||||
}
|
||||
User other = (User) that;
|
||||
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
|
||||
&& (this.getUsername() == null ? other.getUsername() == null : this.getUsername().equals(other.getUsername()))
|
||||
&& (this.getPassword() == null ? other.getPassword() == null : this.getPassword().equals(other.getPassword()))
|
||||
&& (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
|
||||
&& (this.getEmail() == null ? other.getEmail() == null : this.getEmail().equals(other.getEmail()))
|
||||
&& (this.getPhone() == null ? other.getPhone() == null : this.getPhone().equals(other.getPhone()))
|
||||
&& (this.getAddr() == null ? other.getAddr() == null : this.getAddr().equals(other.getAddr()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
|
||||
result = prime * result + ((getUsername() == null) ? 0 : getUsername().hashCode());
|
||||
result = prime * result + ((getPassword() == null) ? 0 : getPassword().hashCode());
|
||||
result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
|
||||
result = prime * result + ((getEmail() == null) ? 0 : getEmail().hashCode());
|
||||
result = prime * result + ((getPhone() == null) ? 0 : getPhone().hashCode());
|
||||
result = prime * result + ((getAddr() == null) ? 0 : getAddr().hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(getClass().getSimpleName());
|
||||
sb.append(" [");
|
||||
sb.append("Hash = ").append(hashCode());
|
||||
sb.append(", id=").append(id);
|
||||
sb.append(", username=").append(username);
|
||||
sb.append(", password=").append(password);
|
||||
sb.append(", name=").append(name);
|
||||
sb.append(", email=").append(email);
|
||||
sb.append(", phone=").append(phone);
|
||||
sb.append(", addr=").append(addr);
|
||||
sb.append(", serialVersionUID=").append(serialVersionUID);
|
||||
sb.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,96 @@
|
||||
package priv.jesse.mall.entity.pojo;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 接口返回数据模型
|
||||
*
|
||||
* @author hfb
|
||||
* @date 2017/9/18
|
||||
*/
|
||||
public class ResultBean<T> implements Serializable {
|
||||
private static final long serialVersionUID = -6248298306422072592L;
|
||||
/**
|
||||
* 表示接口调用成功
|
||||
*/
|
||||
public static final int SUCCESS = 0;
|
||||
/**
|
||||
* 表示接口调用失败
|
||||
*/
|
||||
public static final int FAIL = 1;
|
||||
/**
|
||||
* 表示没有权限调用该接口
|
||||
*/
|
||||
public static final int NO_PERMISSION = 2;
|
||||
|
||||
public static final String NO_LOGIN_MSG = "未登录";
|
||||
public static final String NO_PERMISSION_MSG = "没有权限";
|
||||
public static final String SUCC_MSG = "成功";
|
||||
public static final String FAIL_MSG = "失败";
|
||||
|
||||
private String message = SUCC_MSG;
|
||||
private int state = SUCCESS;
|
||||
/**
|
||||
* 返回的数据
|
||||
*/
|
||||
private T data;
|
||||
|
||||
public ResultBean() {
|
||||
super();
|
||||
}
|
||||
|
||||
public ResultBean(T data) {
|
||||
super();
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 包装异常信息
|
||||
*
|
||||
* @param e
|
||||
*/
|
||||
public ResultBean(Throwable e) {
|
||||
super();
|
||||
this.message = e.getMessage();
|
||||
this.state = FAIL;
|
||||
}
|
||||
|
||||
public ResultBean(String message) {
|
||||
super();
|
||||
this.message = message;
|
||||
this.state = FAIL;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public int getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(int state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public T getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(T data) {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ResultBean{" +
|
||||
"message='" + message + '\'' +
|
||||
", state=" + state +
|
||||
", data=" + data +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,131 @@
|
||||
package priv.jesse.mall.filter;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.servlet.Filter;
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.FilterConfig;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.annotation.WebFilter;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* 权限拦截器
|
||||
*
|
||||
* @author hfb
|
||||
* @date 2017/9/18
|
||||
*/
|
||||
@WebFilter
|
||||
public class AuthorizationFilter implements Filter {
|
||||
|
||||
public AuthorizationFilter() {
|
||||
}
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(AuthorizationFilter.class);
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
|
||||
HttpServletRequest request = (HttpServletRequest) req;
|
||||
HttpServletResponse response = (HttpServletResponse) res;
|
||||
// 支持跨域访问
|
||||
response.setHeader("Access-Control-Allow-Origin", "*");
|
||||
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
|
||||
response.setHeader("Access-Control-Max-Age", "3600");
|
||||
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept,X-Custom-Header");
|
||||
response.setHeader("X-Powered-By", "SpringBoot");
|
||||
if ("option".equalsIgnoreCase(request.getMethod())) {
|
||||
responseJSON(response, new HashMap<>());
|
||||
return;
|
||||
}
|
||||
//除了拦截login.html 其他html都拦截
|
||||
StringBuffer url = request.getRequestURL();
|
||||
//System.out.println(url);
|
||||
String path = url.toString();
|
||||
// 只拦截这些类型请求
|
||||
if (path.endsWith(".do") || path.endsWith(".html")) {
|
||||
// 登录,图片不拦截
|
||||
if (path.endsWith("toLogin.html")
|
||||
|| path.endsWith("toRegister.html")
|
||||
|| path.endsWith("register.do")
|
||||
|| path.endsWith("login.do")
|
||||
|| path.endsWith("logout.do")
|
||||
|| path.endsWith("error.html")
|
||||
|| path.endsWith("checkUsername.do")
|
||||
|| path.contains("/mall/admin/product/img/")
|
||||
|| path.endsWith("index.html")
|
||||
|| path.endsWith("classification/list.do")
|
||||
|| path.contains("product")
|
||||
|| path.contains("/mall/h2-console")) {
|
||||
chain.doFilter(request, response);
|
||||
} else {
|
||||
processAccessControl(request, response, chain);
|
||||
}
|
||||
|
||||
} else {
|
||||
//其他静态资源都不拦截
|
||||
chain.doFilter(request, response);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param request
|
||||
* @param response
|
||||
* @param chain
|
||||
* @throws IOException
|
||||
* @throws ServletException
|
||||
*/
|
||||
private void processAccessControl(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
|
||||
Object adminUser = request.getSession().getAttribute("login_user");
|
||||
Object user = request.getSession().getAttribute("user");
|
||||
String url = request.getRequestURL().toString();
|
||||
if (url.indexOf("admin") != -1){
|
||||
if (adminUser == null) {
|
||||
response.sendRedirect("/mall/admin/toLogin.html");
|
||||
}else {
|
||||
chain.doFilter(request, response);
|
||||
}
|
||||
}else {
|
||||
if (user == null) {
|
||||
response.sendRedirect("/mall/user/toLogin.html");
|
||||
}else {
|
||||
chain.doFilter(request, response);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回JOSN数据格式
|
||||
*
|
||||
* @param response
|
||||
* @param object
|
||||
* @throws IOException
|
||||
*/
|
||||
public static void responseJSON(HttpServletResponse response, Object object) throws IOException {
|
||||
response.setContentType("application/json;charset=utf-8");
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
if (object == null)
|
||||
return;
|
||||
String jsonStr = mapper.writeValueAsString(object);
|
||||
OutputStream out = response.getOutputStream();
|
||||
out.write(jsonStr.getBytes("UTF-8"));
|
||||
out.flush();
|
||||
}
|
||||
}
|
@ -0,0 +1,70 @@
|
||||
package priv.jesse.mall.service;
|
||||
|
||||
import org.springframework.data.domain.Example;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.HttpRequest;
|
||||
import priv.jesse.mall.entity.AdminUser;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
public interface AdminUserService {
|
||||
/**
|
||||
* 根据id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
AdminUser findById(int id);
|
||||
|
||||
/**
|
||||
* 分页查询所有
|
||||
*
|
||||
* @param pageable
|
||||
* @return
|
||||
*/
|
||||
Page<AdminUser> findAll(Pageable pageable);
|
||||
|
||||
/**
|
||||
* 按条件查询
|
||||
*
|
||||
* @param example
|
||||
* @return
|
||||
*/
|
||||
List<AdminUser> findAllExample(Example<AdminUser> example);
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param adminUser
|
||||
* @return
|
||||
*/
|
||||
void update(AdminUser adminUser);
|
||||
|
||||
/**
|
||||
* 创建
|
||||
*
|
||||
* @param adminUser
|
||||
* @return
|
||||
*/
|
||||
int create(AdminUser adminUser);
|
||||
|
||||
/**
|
||||
* 根据Id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
void delById(int id);
|
||||
|
||||
/**
|
||||
* 检查登录
|
||||
* @param request
|
||||
* @param username
|
||||
* @param pwd
|
||||
* @return
|
||||
*/
|
||||
AdminUser checkLogin(HttpServletRequest request,String username, String pwd);
|
||||
|
||||
}
|
@ -0,0 +1,73 @@
|
||||
package priv.jesse.mall.service;
|
||||
|
||||
import org.springframework.data.domain.Example;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import priv.jesse.mall.entity.Classification;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ClassificationService {
|
||||
/**
|
||||
* 根据id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
Classification findById(int id);
|
||||
|
||||
/**
|
||||
* 按分类查询所有
|
||||
*
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
List<Classification> findAll(int type);
|
||||
|
||||
/**
|
||||
* 按分类查询所有
|
||||
*
|
||||
* @param pageable
|
||||
* @return
|
||||
*/
|
||||
Page<Classification> findAll(int type,Pageable pageable);
|
||||
|
||||
/**
|
||||
* 按条件查询
|
||||
*
|
||||
* @param example
|
||||
* @return
|
||||
*/
|
||||
List<Classification> findAllExample(Example<Classification> example);
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param Classification
|
||||
* @return
|
||||
*/
|
||||
void update(Classification Classification);
|
||||
|
||||
/**
|
||||
* 创建
|
||||
*
|
||||
* @param Classification
|
||||
* @return
|
||||
*/
|
||||
int create(Classification Classification);
|
||||
|
||||
/**
|
||||
* 根据Id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
void delById(int id);
|
||||
|
||||
/**
|
||||
* 通过一级分类id查找它所有的二级分类
|
||||
* @param cid
|
||||
* @return
|
||||
*/
|
||||
List<Classification> findByParentId(int cid);
|
||||
}
|
@ -0,0 +1,117 @@
|
||||
package priv.jesse.mall.service;
|
||||
|
||||
import org.springframework.data.domain.Example;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import priv.jesse.mall.entity.Order;
|
||||
import priv.jesse.mall.entity.OrderItem;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
public interface OrderService {
|
||||
|
||||
/**
|
||||
* 订单状态 1:未付款 2:等待发货 3:等待收货 4:订单完成
|
||||
*/
|
||||
int STATE_NO_PAY = 1;
|
||||
int STATE_WAITE_SEND = 2;
|
||||
int STATE_WAITE_RECEIVE = 3;
|
||||
int STATE_COMPLETE = 4;
|
||||
|
||||
|
||||
/**
|
||||
* 根据id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
Order findById(int id);
|
||||
|
||||
/**
|
||||
* 分页查询所有
|
||||
*
|
||||
* @param pageable
|
||||
* @return
|
||||
*/
|
||||
Page<Order> findAll(Pageable pageable);
|
||||
|
||||
/**
|
||||
* 按条件查询
|
||||
*
|
||||
* @param example
|
||||
* @return
|
||||
*/
|
||||
List<Order> findAllExample(Example<Order> example);
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param order
|
||||
* @return
|
||||
*/
|
||||
void update(Order order);
|
||||
|
||||
/**
|
||||
* 创建
|
||||
*
|
||||
* @param order
|
||||
* @return
|
||||
*/
|
||||
int create(Order order);
|
||||
|
||||
/**
|
||||
* 根据Id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
void delById(int id);
|
||||
|
||||
/**
|
||||
* 查询订单的订单项
|
||||
*
|
||||
* @param orderId
|
||||
* @return
|
||||
*/
|
||||
List<OrderItem> findItems(int orderId);
|
||||
|
||||
/**
|
||||
* 更改订单状态
|
||||
*
|
||||
* @param id
|
||||
* @param status
|
||||
*/
|
||||
void updateStatus(int id, int status);
|
||||
|
||||
/**
|
||||
* 查找用户的订单列表
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
List<Order> findUserOrder(HttpServletRequest request);
|
||||
|
||||
/**
|
||||
* 支付
|
||||
* @param orderId
|
||||
*/
|
||||
void pay(int orderId);
|
||||
|
||||
/**
|
||||
* 提交订单
|
||||
* @param name
|
||||
* @param phone
|
||||
* @param addr
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
void submit(String name, String phone, String addr, HttpServletRequest request, HttpServletResponse response) throws Exception;
|
||||
|
||||
/**
|
||||
* 确认收货
|
||||
* @param orderId
|
||||
*/
|
||||
void receive(int orderId);
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
package priv.jesse.mall.service;
|
||||
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import priv.jesse.mall.entity.Product;
|
||||
import java.util.List;
|
||||
|
||||
public interface ProductService {
|
||||
/**
|
||||
* 根据id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
Product findById(int id);
|
||||
|
||||
/**
|
||||
* 分页查询所有
|
||||
*
|
||||
* @param pageable
|
||||
* @return
|
||||
*/
|
||||
Page<Product> findAll(Pageable pageable);
|
||||
|
||||
/**
|
||||
* 查找热门商品
|
||||
* @return
|
||||
*/
|
||||
List<Product> findHotProduct();
|
||||
|
||||
/**
|
||||
* 查找最新商品
|
||||
* @param pageable
|
||||
* @return
|
||||
*/
|
||||
List<Product> findNewProduct(Pageable pageable);
|
||||
|
||||
/**
|
||||
* 根据一级分类查找商品
|
||||
* @param cid
|
||||
* @param pageable
|
||||
* @return
|
||||
*/
|
||||
List<Product> findByCid(int cid,Pageable pageable);
|
||||
|
||||
/**
|
||||
* 根据二级分类查找商品
|
||||
* @param csid
|
||||
* @param pageable
|
||||
* @return
|
||||
*/
|
||||
List<Product> findByCsid(int csid,Pageable pageable);
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param product
|
||||
* @return
|
||||
*/
|
||||
void update(Product product);
|
||||
|
||||
/**
|
||||
* 创建
|
||||
*
|
||||
* @param product
|
||||
* @return
|
||||
*/
|
||||
int create(Product product);
|
||||
|
||||
/**
|
||||
* 根据Id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
void delById(int id);
|
||||
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package priv.jesse.mall.service;
|
||||
|
||||
import priv.jesse.mall.entity.OrderItem;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 购物车
|
||||
*/
|
||||
public interface ShopCartService {
|
||||
|
||||
String NAME_PREFIX = "shop_cart_";
|
||||
|
||||
/**
|
||||
* 加购物车
|
||||
* @param
|
||||
*/
|
||||
void addCart(int productId, HttpServletRequest request) throws Exception;
|
||||
|
||||
/**
|
||||
* 移除
|
||||
* @param productId
|
||||
* @param request
|
||||
*/
|
||||
void remove(int productId, HttpServletRequest request) throws Exception;
|
||||
|
||||
/**
|
||||
* 查看购物车
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
List<OrderItem> listCart(HttpServletRequest request) throws Exception;
|
||||
}
|
@ -0,0 +1,75 @@
|
||||
package priv.jesse.mall.service;
|
||||
|
||||
import org.springframework.data.domain.Example;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import priv.jesse.mall.entity.User;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface UserService {
|
||||
/**
|
||||
* 根据id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
User findById(int id);
|
||||
|
||||
/**
|
||||
* 分页查询所有
|
||||
*
|
||||
* @param pageable
|
||||
* @return
|
||||
*/
|
||||
Page<User> findAll(Pageable pageable);
|
||||
|
||||
/**
|
||||
* 按条件查询
|
||||
*
|
||||
* @param example
|
||||
* @return
|
||||
*/
|
||||
List<User> findAllExample(Example<User> example);
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
void update(User user);
|
||||
|
||||
/**
|
||||
* 创建
|
||||
*
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
int create(User user);
|
||||
|
||||
/**
|
||||
* 根据Id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
void delById(int id);
|
||||
|
||||
/**
|
||||
* 根据用户名查询
|
||||
* @param username
|
||||
* @return
|
||||
*/
|
||||
List<User> findByUsername(String username);
|
||||
|
||||
/**
|
||||
* 检查登录
|
||||
* @param username
|
||||
* @param password
|
||||
* @return
|
||||
*/
|
||||
User checkLogin(String username,String password);
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package priv.jesse.mall.service.exception;
|
||||
|
||||
public class LoginException extends RuntimeException {
|
||||
public LoginException() {
|
||||
}
|
||||
|
||||
public LoginException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public LoginException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public LoginException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public LoginException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package priv.jesse.mall.service.impl;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Example;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import priv.jesse.mall.dao.AdminUserDao;
|
||||
import priv.jesse.mall.entity.AdminUser;
|
||||
import priv.jesse.mall.service.AdminUserService;
|
||||
import priv.jesse.mall.service.exception.LoginException;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class AdminUserServiceImpl implements AdminUserService {
|
||||
@Autowired
|
||||
private AdminUserDao adminUserDao;
|
||||
|
||||
@Override
|
||||
public AdminUser findById(int id) {
|
||||
return adminUserDao.getOne(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<AdminUser> findAll(Pageable pageable) {
|
||||
return adminUserDao.findAll(pageable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AdminUser> findAllExample(Example<AdminUser> example) {
|
||||
return adminUserDao.findAll(example);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AdminUser adminUser) {
|
||||
adminUserDao.save(adminUser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int create(AdminUser adminUser) {
|
||||
AdminUser adminUser1 = adminUserDao.save(adminUser);
|
||||
return adminUser.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delById(int id) {
|
||||
adminUserDao.delete(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AdminUser checkLogin(HttpServletRequest request, String username, String pwd) {
|
||||
AdminUser adminUser = adminUserDao.findByUsernameAndPassword(username, pwd);
|
||||
if (adminUser != null) {
|
||||
request.getSession().setAttribute("login_user", adminUser);
|
||||
} else {
|
||||
throw new LoginException("用户名或密码错误");
|
||||
}
|
||||
return adminUser;
|
||||
}
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
package priv.jesse.mall.service.impl;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Example;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import priv.jesse.mall.dao.ClassificationDao;
|
||||
import priv.jesse.mall.entity.Classification;
|
||||
import priv.jesse.mall.service.ClassificationService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class ClassificationServiceImpl implements ClassificationService {
|
||||
@Autowired
|
||||
private ClassificationDao classificationDao;
|
||||
|
||||
@Override
|
||||
public Classification findById(int id) {
|
||||
return classificationDao.getOne(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Classification> findAll(int type) {
|
||||
return classificationDao.findByType(type);
|
||||
}
|
||||
|
||||
/**
|
||||
* 按分类查询所有
|
||||
*
|
||||
* @param pageable
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Page<Classification> findAll(int type, Pageable pageable) {
|
||||
return classificationDao.findByType(type, pageable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Classification> findAllExample(Example<Classification> example) {
|
||||
return classificationDao.findAll(example);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Classification classification) {
|
||||
classificationDao.save(classification);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int create(Classification classification) {
|
||||
Classification classification1 = classificationDao.save(classification);
|
||||
return classification.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delById(int id) {
|
||||
classificationDao.delete(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过一级分类id查找它所有的二级分类
|
||||
*
|
||||
* @param cid
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Classification> findByParentId(int cid) {
|
||||
return classificationDao.findByParentId(cid);
|
||||
}
|
||||
}
|
@ -0,0 +1,102 @@
|
||||
package priv.jesse.mall.service.impl;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import priv.jesse.mall.dao.ClassificationDao;
|
||||
import priv.jesse.mall.dao.ProductDao;
|
||||
import priv.jesse.mall.entity.Classification;
|
||||
import priv.jesse.mall.entity.Product;
|
||||
import priv.jesse.mall.service.ProductService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class ProductServiceImpl implements ProductService {
|
||||
@Autowired
|
||||
private ProductDao productDao;
|
||||
@Autowired
|
||||
private ClassificationDao classificationDao;
|
||||
|
||||
@Override
|
||||
public Product findById(int id) {
|
||||
return productDao.getOne(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Product> findAll(Pageable pageable) {
|
||||
return productDao.findAll(pageable);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查找热门商品
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Product> findHotProduct() {
|
||||
return productDao.findByIsHot(1, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查找最新商品
|
||||
*
|
||||
* @param pageable
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Product> findNewProduct(Pageable pageable) {
|
||||
// 查找两周内上架的商品
|
||||
// Calendar calendar = Calendar.getInstance();
|
||||
// calendar.add(Calendar.DAY_OF_MONTH, -14);
|
||||
return productDao.findNew(pageable);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据一级分类查找商品
|
||||
*
|
||||
* @param cid
|
||||
* @param pageable
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Product> findByCid(int cid, Pageable pageable) {
|
||||
//查找出所有二级分类
|
||||
List<Classification> sec = classificationDao.findByParentId(cid);
|
||||
List<Integer> secIds = new ArrayList<>();
|
||||
for (Classification classification : sec) {
|
||||
secIds.add(classification.getId());
|
||||
}
|
||||
return productDao.findByCsidIn(secIds,pageable);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据二级分类查找商品
|
||||
*
|
||||
* @param csid
|
||||
* @param pageable
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Product> findByCsid(int csid, Pageable pageable) {
|
||||
return productDao.findByCsid(csid,pageable);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void update(Product product) {
|
||||
productDao.save(product);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int create(Product product) {
|
||||
return productDao.save(product).getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delById(int id) {
|
||||
productDao.delete(id);
|
||||
}
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
package priv.jesse.mall.service.impl;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Example;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import priv.jesse.mall.dao.UserDao;
|
||||
import priv.jesse.mall.entity.User;
|
||||
import priv.jesse.mall.service.UserService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class UserServiceImpl implements UserService {
|
||||
@Autowired
|
||||
private UserDao userDao;
|
||||
|
||||
@Override
|
||||
public User findById(int id) {
|
||||
return userDao.getOne(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<User> findAll(Pageable pageable) {
|
||||
return userDao.findAll(pageable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<User> findAllExample(Example<User> example) {
|
||||
return userDao.findAll(example);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(User user) {
|
||||
userDao.save(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int create(User user) {
|
||||
return userDao.save(user).getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delById(int id) {
|
||||
userDao.delete(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户名查询
|
||||
*
|
||||
* @param username
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<User> findByUsername(String username) {
|
||||
return userDao.findByUsername(username);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查登录
|
||||
*
|
||||
* @param username
|
||||
* @param password
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public User checkLogin(String username, String password) {
|
||||
return userDao.findByUsernameAndPassword(username, password);
|
||||
}
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
package priv.jesse.mall.utils;
|
||||
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.security.MessageDigest;
|
||||
|
||||
public class FileUtil {
|
||||
|
||||
/**
|
||||
* 保存上传的文件
|
||||
*
|
||||
* @param file
|
||||
* @return 文件下载的url
|
||||
* @throws Exception
|
||||
*/
|
||||
public static String saveFile(MultipartFile file) throws Exception {
|
||||
if (file == null || file.isEmpty())
|
||||
return "";
|
||||
File target = new File("file");
|
||||
if (!target.isDirectory()) {
|
||||
target.mkdirs();
|
||||
}
|
||||
String originalFilename = file.getOriginalFilename();
|
||||
MessageDigest md = MessageDigest.getInstance("MD5");
|
||||
md.update(file.getBytes());
|
||||
String fileName = (Helper.bytesToHex(md.digest(),0,md.digest().length-1)) + "." + getPostfix(originalFilename);
|
||||
File file1 = new File(target.getPath() + "/" + fileName);
|
||||
Files.write(Paths.get(file1.toURI()), file.getBytes(), StandardOpenOption.CREATE_NEW);
|
||||
return "/mall/admin/product/img/" + fileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得文件的后缀名
|
||||
*
|
||||
* @param fileName
|
||||
* @return
|
||||
*/
|
||||
public static String getPostfix(String fileName) {
|
||||
if (fileName == null || "".equals(fileName.trim())) {
|
||||
return "";
|
||||
}
|
||||
if (fileName.contains(".")) {
|
||||
return fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package priv.jesse.mall.utils;
|
||||
|
||||
/**
|
||||
* @author hfb
|
||||
* @date 2017/9/29
|
||||
*/
|
||||
public class Helper {
|
||||
private static String key = "wow!@#$%";
|
||||
|
||||
public static boolean isStringInArray(String str, String[] array){
|
||||
for (String val:array){
|
||||
if(str.equals(val)){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static String encode(String str){
|
||||
String enStr = "";
|
||||
try {
|
||||
enStr = DesUtil.encrypt(str, key);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return enStr;
|
||||
}
|
||||
|
||||
public static String decode(String str) {
|
||||
String deStr = "";
|
||||
try {
|
||||
deStr = DesUtil.decrypt(str, key);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return deStr;
|
||||
}
|
||||
|
||||
public static String bytesToHex(byte bytes[], int start, int end) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = start; i < start + end; i++) {
|
||||
sb.append(byteToHex(bytes[i]));
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 16进制字符集
|
||||
*/
|
||||
private static final char HEX_DIGITS[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
|
||||
|
||||
/**
|
||||
* 将单个字节码转换成16进制字符串 * @param bt 目标字节 * @return 转换结果
|
||||
*/
|
||||
public static String byteToHex(byte bt) {
|
||||
return HEX_DIGITS[(bt & 0xf0) >> 4] + "" + HEX_DIGITS[bt & 0xf];
|
||||
}
|
||||
}
|
@ -0,0 +1,133 @@
|
||||
package priv.jesse.mall.web.admin;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import priv.jesse.mall.entity.Classification;
|
||||
import priv.jesse.mall.entity.pojo.ResultBean;
|
||||
import priv.jesse.mall.service.ClassificationService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/admin/classification")
|
||||
public class AdminClassificationController {
|
||||
@Autowired
|
||||
private ClassificationService classificationService;
|
||||
|
||||
/**
|
||||
* 返回列表页面
|
||||
*
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/toList.html")
|
||||
public String toList(int type) {
|
||||
if (type == 1) {// 一级分类页面
|
||||
return "admin/category/list";
|
||||
} else if (type == 2) {// 二级分类页面
|
||||
return "admin/categorysec/list";
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开添加分类页面
|
||||
*
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/toAdd.html")
|
||||
public String toAdd(int type) {
|
||||
if (type == 1) {// 一级分类页面
|
||||
return "admin/category/add";
|
||||
} else if (type == 2) {// 二级分类页面
|
||||
return "admin/categorysec/add";
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开编辑页面
|
||||
*
|
||||
* @param id
|
||||
* @param type
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/toEdit.html")
|
||||
public String toEdit(int id, int type, Map<String, Object> map) {
|
||||
Classification classification = classificationService.findById(id);
|
||||
map.put("cate", classification);
|
||||
if (type == 1) {// 一级分类页面
|
||||
return "admin/category/edit";
|
||||
} else if (type == 2) {// 二级分类页面
|
||||
Classification classification1 = classificationService.findById(classification.getParentId());
|
||||
map.put("cate", classification1);
|
||||
map.put("catese",classification);
|
||||
return "admin/categorysec/edit";
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping(method = RequestMethod.POST, value = "/add.do")
|
||||
public ResultBean<Boolean> add(String cname, int parentId, int type) {
|
||||
Classification classification = new Classification();
|
||||
classification.setCname(cname);
|
||||
classification.setParentId(parentId);
|
||||
classification.setType(type);
|
||||
classificationService.create(classification);
|
||||
return new ResultBean<>(true);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping(method = RequestMethod.POST, value = "/update.do")
|
||||
public ResultBean<Boolean> update(int id, String cname, int parentId, int type) {
|
||||
Classification classification = classificationService.findById(id);
|
||||
classification.setCname(cname);
|
||||
classification.setParentId(parentId);
|
||||
classification.setType(type);
|
||||
classificationService.update(classification);
|
||||
return new ResultBean<>(true);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping("/del.do")
|
||||
public ResultBean<Boolean> del(int id) {
|
||||
classificationService.delById(id);
|
||||
return new ResultBean<>(true);
|
||||
}
|
||||
|
||||
@RequestMapping("/list.do")
|
||||
@ResponseBody
|
||||
public ResultBean<List<Classification>> findAll(int type,
|
||||
int pageindex, @RequestParam(value = "pageSize", defaultValue = "15") int pageSize) {
|
||||
List<Classification> list = new ArrayList<>();
|
||||
if (pageindex == -1)
|
||||
list = classificationService.findAll(type);
|
||||
else {
|
||||
Pageable pageable = new PageRequest(pageindex, pageSize, null);
|
||||
list = classificationService.findAll(type, pageable).getContent();
|
||||
}
|
||||
return new ResultBean<>(list);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping("/getTotal.do")
|
||||
public ResultBean<Integer> getTotal(int type) {
|
||||
Pageable pageable = new PageRequest(1, 15, null);
|
||||
int count = (int) classificationService.findAll(type, pageable).getTotalElements();
|
||||
return new ResultBean<>(count);
|
||||
}
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
package priv.jesse.mall.web.admin;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import priv.jesse.mall.entity.AdminUser;
|
||||
import priv.jesse.mall.entity.pojo.ResultBean;
|
||||
import priv.jesse.mall.service.AdminUserService;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/admin")
|
||||
public class AdminController {
|
||||
@Autowired
|
||||
private AdminUserService adminUserService;
|
||||
|
||||
/**
|
||||
* 访问首页
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/toIndex.html")
|
||||
public String toIndex() {
|
||||
return "admin/index";
|
||||
}
|
||||
|
||||
/**
|
||||
* 访问登录页面
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/toLogin.html")
|
||||
public String toLogin() {
|
||||
return "admin/login";
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录请求
|
||||
*
|
||||
* @param username
|
||||
* @param password
|
||||
*/
|
||||
//@ResponseBody
|
||||
@RequestMapping(method = RequestMethod.POST, value = "/login.do")
|
||||
public void login(String username, String password, HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
AdminUser adminUser = adminUserService.checkLogin(request, username, password);
|
||||
response.sendRedirect("/mall/admin/toIndex.html");
|
||||
}
|
||||
|
||||
/**
|
||||
* 退出登录
|
||||
* @param request
|
||||
* @param response
|
||||
* @throws IOException
|
||||
*/
|
||||
@RequestMapping("/logout.do")
|
||||
public void logout(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
request.getSession().removeAttribute("login_user");
|
||||
response.sendRedirect("toLogin.html");
|
||||
}
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
package priv.jesse.mall.web.admin;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import priv.jesse.mall.entity.Order;
|
||||
import priv.jesse.mall.entity.OrderItem;
|
||||
import priv.jesse.mall.entity.pojo.ResultBean;
|
||||
import priv.jesse.mall.service.OrderService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/admin/order")
|
||||
public class AdminOrderController {
|
||||
@Autowired
|
||||
private OrderService orderService;
|
||||
|
||||
/**
|
||||
* 打开订单列表页面
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/toList.html")
|
||||
public String toList() {
|
||||
return "admin/order/list";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有订单的总数
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/getTotal.do")
|
||||
public ResultBean<Integer> getTotal() {
|
||||
Pageable pageable = new PageRequest(1, 15, null);
|
||||
int total = (int) orderService.findAll(pageable).getTotalElements();
|
||||
return new ResultBean<>(total);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有订单
|
||||
* @param pageindex
|
||||
* @param pageSize
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/list.do")
|
||||
public ResultBean<List<Order>> listData(int pageindex,
|
||||
@RequestParam(value = "pageSize", defaultValue = "15") int pageSize) {
|
||||
Pageable pageable = new PageRequest(pageindex, pageSize, null);
|
||||
List<Order> list = orderService.findAll(pageable).getContent();
|
||||
return new ResultBean<>(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单项
|
||||
* @param orderId
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/getDetail.do")
|
||||
public ResultBean<List<OrderItem>> getDetail(int orderId) {
|
||||
List<OrderItem> list = orderService.findItems(orderId);
|
||||
return new ResultBean<>(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发货
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/send.do")
|
||||
public ResultBean<Boolean> send(int id) {
|
||||
orderService.updateStatus(id,3);
|
||||
return new ResultBean<>(true);
|
||||
}
|
||||
}
|
@ -0,0 +1,158 @@
|
||||
package priv.jesse.mall.web.admin;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import priv.jesse.mall.entity.Classification;
|
||||
import priv.jesse.mall.entity.Product;
|
||||
import priv.jesse.mall.entity.pojo.ResultBean;
|
||||
import priv.jesse.mall.service.ClassificationService;
|
||||
import priv.jesse.mall.service.ProductService;
|
||||
import priv.jesse.mall.utils.FileUtil;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/admin/product")
|
||||
public class AdminProductController {
|
||||
@Autowired
|
||||
private ProductService productService;
|
||||
@Autowired
|
||||
private ClassificationService classificationService;
|
||||
|
||||
@RequestMapping("/toList.html")
|
||||
public String toList() {
|
||||
return "admin/product/list";
|
||||
}
|
||||
|
||||
@RequestMapping("/toAdd.html")
|
||||
public String toAdd() {
|
||||
return "admin/product/add";
|
||||
}
|
||||
|
||||
@RequestMapping("/toEdit.html")
|
||||
public String toEdit(int id, Map<String, Object> map) {
|
||||
Product product = productService.findById(id);
|
||||
Classification classification = classificationService.findById(product.getCsid());
|
||||
product.setCategorySec(classification);
|
||||
map.put("product", product);
|
||||
return "admin/product/edit";
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping("/list.do")
|
||||
public ResultBean<List<Product>> listProduct(int pageindex,
|
||||
@RequestParam(value = "pageSize", defaultValue = "15") int pageSize) {
|
||||
Pageable pageable = new PageRequest(pageindex, pageSize, null);
|
||||
List<Product> list = productService.findAll(pageable).getContent();
|
||||
return new ResultBean<>(list);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping("/getTotal")
|
||||
public ResultBean<Integer> getTotal() {
|
||||
Pageable pageable = new PageRequest(1, 15, null);
|
||||
int total = (int) productService.findAll(pageable).getTotalElements();
|
||||
return new ResultBean<>(total);
|
||||
}
|
||||
|
||||
@RequestMapping("/del.do")
|
||||
@ResponseBody
|
||||
public ResultBean<Boolean> del(int id) {
|
||||
productService.delById(id);
|
||||
return new ResultBean<>(true);
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.POST, value = "/add.do")
|
||||
public void add(MultipartFile image,
|
||||
String title,
|
||||
Double marketPrice,
|
||||
Double shopPrice,
|
||||
int isHot,
|
||||
String desc,
|
||||
int csid,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response) throws Exception {
|
||||
Product product = new Product();
|
||||
product.setTitle(title);
|
||||
product.setMarketPrice(marketPrice);
|
||||
product.setShopPrice(shopPrice);
|
||||
product.setDesc(desc);
|
||||
product.setIsHot(isHot);
|
||||
product.setCsid(csid);
|
||||
product.setPdate(new Date());
|
||||
String imgUrl = FileUtil.saveFile(image);
|
||||
product.setImage(imgUrl);
|
||||
int id = productService.create(product);
|
||||
if (id <= 0) {
|
||||
request.setAttribute("message", "添加失败!");
|
||||
request.getRequestDispatcher("toAdd.html").forward(request, response);
|
||||
} else {
|
||||
request.getRequestDispatcher("toEdit.html?id=" + id).forward(request, response);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping(method = RequestMethod.POST, value = "/update.do")
|
||||
public void update(int id,
|
||||
String title,
|
||||
Double marketPrice,
|
||||
Double shopPrice,
|
||||
String desc,
|
||||
int csid,
|
||||
int isHot,
|
||||
MultipartFile image,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response) throws Exception {
|
||||
Product product = productService.findById(id);
|
||||
product.setTitle(title);
|
||||
product.setMarketPrice(marketPrice);
|
||||
product.setShopPrice(shopPrice);
|
||||
product.setDesc(desc);
|
||||
product.setIsHot(isHot);
|
||||
product.setCsid(csid);
|
||||
product.setPdate(new Date());
|
||||
String imgUrl = FileUtil.saveFile(image);
|
||||
if (StringUtils.isNotBlank(imgUrl)) {
|
||||
product.setImage(imgUrl);
|
||||
}
|
||||
boolean flag = false;
|
||||
try {
|
||||
productService.update(product);
|
||||
flag = true;
|
||||
} catch (Exception e) {
|
||||
throw new Exception(e);
|
||||
}
|
||||
if (!flag) {
|
||||
request.setAttribute("message", "更新失败!");
|
||||
}
|
||||
response.sendRedirect("toList.html");
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.GET, value = "/img/{filename:.+}")
|
||||
public void getImage(@PathVariable(name = "filename", required = true) String filename,
|
||||
HttpServletResponse res) throws IOException {
|
||||
File file = new File("file/" + filename);
|
||||
if (file != null && file.exists()) {
|
||||
res.setHeader("content-type", "application/octet-stream");
|
||||
res.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
|
||||
res.setContentLengthLong(file.length());
|
||||
Files.copy(Paths.get(file.toURI()), res.getOutputStream());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,91 @@
|
||||
package priv.jesse.mall.web.admin;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import priv.jesse.mall.entity.User;
|
||||
import priv.jesse.mall.entity.pojo.ResultBean;
|
||||
import priv.jesse.mall.service.UserService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/admin/user")
|
||||
public class AdminUserController {
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
/**
|
||||
* 打开用户列表页面
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/toList.html")
|
||||
public String toList() {
|
||||
return "admin/user/list";
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开编辑页面
|
||||
* @param id
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/toEdit.html")
|
||||
public String toEdit(int id, Map<String, Object> map) {
|
||||
User user = userService.findById(id);
|
||||
map.put("user", user);
|
||||
return "admin/user/edit";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有用户列表
|
||||
*
|
||||
* @param pageindex
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/list.do")
|
||||
public ResultBean<List<User>> findAllUser(int pageindex,
|
||||
@RequestParam(value = "pageSize", defaultValue = "15") int pageSize) {
|
||||
Pageable pageable = new PageRequest(pageindex, pageSize, null);
|
||||
List<User> users = userService.findAll(pageable).getContent();
|
||||
return new ResultBean<>(users);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping("/getTotal.do")
|
||||
public ResultBean<Integer> geTotal() {
|
||||
Pageable pageable = new PageRequest(1, 15, null);
|
||||
int total = (int) userService.findAll(pageable).getTotalElements();
|
||||
return new ResultBean<>(total);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping("/del.do")
|
||||
public ResultBean<Boolean> del(int id) {
|
||||
userService.delById(id);
|
||||
return new ResultBean<>(true);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@RequestMapping(method = RequestMethod.POST, value = "/update.do")
|
||||
public ResultBean<Boolean> update(int id,String username,
|
||||
String password,String name,
|
||||
String phone,String email,
|
||||
String addr) {
|
||||
// 更新前先查询
|
||||
User user = userService.findById(id);
|
||||
user.setId(id);
|
||||
user.setName(name);
|
||||
user.setUsername(username);
|
||||
user.setPassword(password);
|
||||
user.setAddr(addr);
|
||||
user.setEmail(email);
|
||||
user.setPhone(phone);
|
||||
userService.update(user);
|
||||
return new ResultBean<>(true);
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package priv.jesse.mall.web.user;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/classification")
|
||||
public class ClassificationController {
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package priv.jesse.mall.web.user;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
@Controller
|
||||
public class IndexController {
|
||||
/**
|
||||
* 打开首页
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/index.html")
|
||||
public String toIndex() {
|
||||
return "mall/index";
|
||||
}
|
||||
|
||||
/**
|
||||
* 访问根目录转发到首页
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/")
|
||||
public String index(){
|
||||
return "forward:/index.html";
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,104 @@
|
||||
package priv.jesse.mall.web.user;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import priv.jesse.mall.entity.Order;
|
||||
import priv.jesse.mall.entity.OrderItem;
|
||||
import priv.jesse.mall.entity.pojo.ResultBean;
|
||||
import priv.jesse.mall.service.OrderService;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/order")
|
||||
public class OrderController {
|
||||
@Autowired
|
||||
private OrderService orderService;
|
||||
|
||||
/**
|
||||
* 打开订单列表页面
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/toList.html")
|
||||
public String toOrderList() {
|
||||
return "mall/order/list";
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户订单列表
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/list.do")
|
||||
@ResponseBody
|
||||
public ResultBean<List<Order>> listData(HttpServletRequest request) {
|
||||
List<Order> orders = orderService.findUserOrder(request);
|
||||
return new ResultBean<>(orders);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订单详情
|
||||
*
|
||||
* @param orderId
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/getDetail.do")
|
||||
@ResponseBody
|
||||
public ResultBean<List<OrderItem>> getDetail(int orderId) {
|
||||
List<OrderItem> orderItems = orderService.findItems(orderId);
|
||||
return new ResultBean<>(orderItems);
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交订单
|
||||
*
|
||||
* @param name
|
||||
* @param phone
|
||||
* @param addr
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
@RequestMapping("/submit.do")
|
||||
public void submit(String name,
|
||||
String phone,
|
||||
String addr,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response) throws Exception {
|
||||
orderService.submit(name, phone, addr, request, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付方法
|
||||
*
|
||||
* @param orderId
|
||||
*/
|
||||
@RequestMapping("pay.do")
|
||||
@ResponseBody
|
||||
public ResultBean<Boolean> pay(int orderId, HttpServletResponse response) throws IOException {
|
||||
orderService.pay(orderId);
|
||||
return new ResultBean<>(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认收货
|
||||
* @param orderId
|
||||
* @param response
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
@RequestMapping("receive.do")
|
||||
@ResponseBody
|
||||
public ResultBean<Boolean> receive(int orderId, HttpServletResponse response) throws IOException {
|
||||
orderService.receive(orderId);
|
||||
return new ResultBean<>(true);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,186 @@
|
||||
package priv.jesse.mall.web.user;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import priv.jesse.mall.entity.Classification;
|
||||
import priv.jesse.mall.entity.OrderItem;
|
||||
import priv.jesse.mall.entity.Product;
|
||||
import priv.jesse.mall.entity.pojo.ResultBean;
|
||||
import priv.jesse.mall.service.ClassificationService;
|
||||
import priv.jesse.mall.service.ProductService;
|
||||
import priv.jesse.mall.service.ShopCartService;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/product")
|
||||
public class ProductController {
|
||||
@Autowired
|
||||
private ProductService productService;
|
||||
@Autowired
|
||||
private ClassificationService classificationService;
|
||||
@Autowired
|
||||
private ShopCartService shopCartService;
|
||||
|
||||
/**
|
||||
* 获取商品信息
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/get.do")
|
||||
public ResultBean<Product> getProduct(int id) {
|
||||
Product product = productService.findById(id);
|
||||
return new ResultBean<>(product);
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开商品详情页面
|
||||
*
|
||||
* @param id
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/get.html")
|
||||
public String toProductPage(int id, Map<String, Object> map) {
|
||||
Product product = productService.findById(id);
|
||||
map.put("product", product);
|
||||
return "mall/product/info";
|
||||
}
|
||||
|
||||
/**
|
||||
* 查找热门商品
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/hot.do")
|
||||
public ResultBean<List<Product>> getHotProduct() {
|
||||
List<Product> products = productService.findHotProduct();
|
||||
return new ResultBean<>(products);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查找最新商品
|
||||
*
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/new.do")
|
||||
public ResultBean<List<Product>> getNewProduct(int pageNo, int pageSize) {
|
||||
Pageable pageable = new PageRequest(pageNo, pageSize);
|
||||
List<Product> products = productService.findNewProduct(pageable);
|
||||
return new ResultBean<>(products);
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开分类查看商品页面
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/category.html")
|
||||
public String toCatePage(int cid, Map<String, Object> map) {
|
||||
Classification classification = classificationService.findById(cid);
|
||||
map.put("category", classification);
|
||||
return "mall/product/category";
|
||||
}
|
||||
|
||||
@RequestMapping("/toCart.html")
|
||||
public String toCart(){
|
||||
return "mall/product/cart";
|
||||
}
|
||||
|
||||
/**
|
||||
* 按一级分类查找商品
|
||||
*
|
||||
* @param cid
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/category.do")
|
||||
public ResultBean<List<Product>> getCategoryProduct(int cid, int pageNo, int pageSize) {
|
||||
Pageable pageable = new PageRequest(pageNo, pageSize);
|
||||
List<Product> products = productService.findByCid(cid, pageable);
|
||||
return new ResultBean<>(products);
|
||||
}
|
||||
|
||||
/**
|
||||
* 按二级分类查找商品
|
||||
*
|
||||
* @param csId
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/categorySec.do")
|
||||
public ResultBean<List<Product>> getCategorySecProduct(int csId, int pageNo, int pageSize) {
|
||||
Pageable pageable = new PageRequest(pageNo, pageSize);
|
||||
List<Product> products = productService.findByCsid(csId, pageable);
|
||||
return new ResultBean<>(products);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据一级分类查询它所有的二级分类
|
||||
* @param cid
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/getCategorySec.do")
|
||||
public ResultBean<List<Classification>> getCategorySec(int cid){
|
||||
List<Classification> list = classificationService.findByParentId(cid);
|
||||
return new ResultBean<>(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 加购物车
|
||||
*
|
||||
* @param productId
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/addCart.do")
|
||||
public ResultBean<Boolean> addToCart(int productId, HttpServletRequest request) throws Exception {
|
||||
shopCartService.addCart(productId, request);
|
||||
return new ResultBean<>(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除购物车
|
||||
*
|
||||
* @param productId
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/delCart.do")
|
||||
public ResultBean<Boolean> delToCart(int productId, HttpServletRequest request) throws Exception {
|
||||
shopCartService.remove(productId, request);
|
||||
return new ResultBean<>(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看购物车商品
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/listCart.do")
|
||||
public ResultBean<List<OrderItem>> listCart(HttpServletRequest request) throws Exception {
|
||||
List<OrderItem> orderItems = shopCartService.listCart(request);
|
||||
return new ResultBean<>(orderItems);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,123 @@
|
||||
package priv.jesse.mall.web.user;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import priv.jesse.mall.entity.User;
|
||||
import priv.jesse.mall.entity.pojo.ResultBean;
|
||||
import priv.jesse.mall.service.UserService;
|
||||
import priv.jesse.mall.service.exception.LoginException;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/user")
|
||||
public class UserController {
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
/**
|
||||
* 打开注册页面
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/toRegister.html")
|
||||
public String toRegister() {
|
||||
return "mall/user/register";
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开登录页面
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/toLogin.html")
|
||||
public String toLogin() {
|
||||
return "mall/user/login";
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录
|
||||
*
|
||||
* @param username
|
||||
* @param password
|
||||
*/
|
||||
@RequestMapping("/login.do")
|
||||
public void login(String username,
|
||||
String password,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response) throws IOException {
|
||||
User user = userService.checkLogin(username, password);
|
||||
if (user != null) {
|
||||
//登录成功 重定向到首页
|
||||
request.getSession().setAttribute("user", user);
|
||||
response.sendRedirect("/mall/index.html");
|
||||
} else {
|
||||
throw new LoginException("登录失败! 用户名或者密码错误");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册
|
||||
*/
|
||||
@RequestMapping("/register.do")
|
||||
public void register(String username,
|
||||
String password,
|
||||
String name,
|
||||
String phone,
|
||||
String email,
|
||||
String addr,
|
||||
HttpServletResponse response) throws IOException {
|
||||
User user = new User();
|
||||
user.setUsername(username);
|
||||
user.setPhone(phone);
|
||||
user.setPassword(password);
|
||||
user.setName(name);
|
||||
user.setEmail(email);
|
||||
user.setAddr(addr);
|
||||
userService.create(user);
|
||||
// 注册完成后重定向到登录页面
|
||||
response.sendRedirect("/mall/user/toLogin.html");
|
||||
}
|
||||
|
||||
/**
|
||||
* 登出
|
||||
*/
|
||||
@RequestMapping("/logout.do")
|
||||
public void logout(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
request.getSession().removeAttribute("user");
|
||||
response.sendRedirect("/mall/index.html");
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证用户名是否唯一
|
||||
* @param username
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/checkUsername.do")
|
||||
public ResultBean<Boolean> checkUsername(String username){
|
||||
List<User> users = userService.findByUsername(username);
|
||||
if (users==null||users.isEmpty()){
|
||||
return new ResultBean<>(true);
|
||||
}
|
||||
return new ResultBean<>(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* 如发生错误 转发到这页面
|
||||
*
|
||||
* @param response
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/error.html")
|
||||
public String error(HttpServletResponse response, HttpServletRequest request) {
|
||||
return "error";
|
||||
}
|
||||
}
|
@ -0,0 +1,89 @@
|
||||
# \u8BBF\u95EE\u8DEF\u5F84\uFF0C\u7AEF\u53E3\u914D\u7F6E
|
||||
server.context-path=/mall
|
||||
server.port=8081
|
||||
|
||||
# \u6587\u4EF6\u4E0A\u4F20\u914D\u7F6E
|
||||
spring.http.multipart.enabled=true
|
||||
spring.http.multipart.max-file-size=100MB
|
||||
spring.http.multipart.max-request-size=100MB
|
||||
|
||||
|
||||
logging.level.priv.jesse.mall=DEBUG
|
||||
|
||||
# \u914D\u7F6E\u8F6Cjson\u7684\u65F6\u95F4\u683C\u5F0F
|
||||
spring.jackson.time-zone=GMT+8
|
||||
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
|
||||
|
||||
# jdbc\u8FDE\u63A5\u914D\u7F6E
|
||||
# mysql
|
||||
spring.datasource.url=jdbc:mysql://localhost:3306/mall?useSSL=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
|
||||
spring.datasource.username=root
|
||||
spring.datasource.password=123456
|
||||
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
||||
|
||||
|
||||
|
||||
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
|
||||
|
||||
#thymeleaf \u6A21\u677F\u5F15\u64CE\u8BBE\u7F6E
|
||||
spring.thymeleaf.mode=HTML5
|
||||
spring.thymeleaf.encoding=UTF-8
|
||||
spring.thymeleaf.content-type=text/html
|
||||
##\u5F00\u53D1\u65F6\u5173\u95ED\u7F13\u5B58,\u4E0D\u7136\u6CA1\u6CD5\u770B\u5230\u5B9E\u65F6\u9875\u9762
|
||||
spring.thymeleaf.cache=false
|
||||
|
||||
##################### jpa hibernate \u914D\u7F6E #########################
|
||||
spring.jpa.show-sql=false
|
||||
spring.jpa.database=mysql
|
||||
spring.jpa.properties.hibernate.format_sql=false
|
||||
spring.jpa.generate-ddl=true
|
||||
# \u6700\u5E38\u7528\u7684\u5C5E\u6027\uFF0C\u7B2C\u4E00\u6B21\u52A0\u8F7Dhibernate\u65F6\u6839\u636Emodel\u7C7B\u4F1A\u81EA\u52A8\u5EFA\u7ACB\u8D77\u8868\u7684\u7ED3\u6784\uFF08\u524D\u63D0\u662F\u5148\u5EFA\u7ACB\u597D\u6570\u636E\u5E93\uFF09\uFF0C
|
||||
# \u4EE5\u540E\u52A0\u8F7Dhibernate\u65F6\u6839\u636Emodel\u7C7B\u81EA\u52A8\u66F4\u65B0\u8868\u7ED3\u6784\uFF0C\u5373\u4F7F\u8868\u7ED3\u6784\u6539\u53D8\u4E86\u4F46\u8868\u4E2D\u7684\u884C\u4ECD\u7136\u5B58\u5728\u4E0D\u4F1A\u5220\u9664\u4EE5\u524D\u7684\u884C\u3002
|
||||
# \u8981\u6CE8\u610F\u7684\u662F\u5F53\u90E8\u7F72\u5230\u670D\u52A1\u5668\u540E\uFF0C\u8868\u7ED3\u6784\u662F\u4E0D\u4F1A\u88AB\u9A6C\u4E0A\u5EFA\u7ACB\u8D77\u6765\u7684\uFF0C\u662F\u8981\u7B49\u5E94\u7528\u7B2C\u4E00\u6B21\u8FD0\u884C\u8D77\u6765\u540E\u624D\u4F1A\u3002
|
||||
spring.jpa.hibernate.ddl-auto=update
|
||||
##################################################################
|
||||
|
||||
|
||||
|
||||
##################druid\u6570\u636E\u5E93\u8FDE\u63A5\u6C60\u914D\u7F6E############################
|
||||
#\u914D\u7F6E\u521D\u59CB\u5316\u5927\u5C0F\uFF0C\u6700\u5C0F\uFF0C\u6700\u5927
|
||||
spring.datasource.druid.initial-size=1
|
||||
spring.datasource.druid.max-active=20
|
||||
spring.datasource.druid.min-idle=1
|
||||
#\u914D\u7F6E\u83B7\u53D6\u8FDE\u63A5\u7B49\u5F85\u8D85\u65F6\u7684\u65F6\u95F4
|
||||
spring.datasource.druid.max-wait=60000
|
||||
#\u914D\u7F6E\u95F4\u9694\u591A\u4E45\u624D\u8FDB\u884C\u4E00\u6B21\u68C0\u6D4B\uFF0C\u68C0\u6D4B\u9700\u8981\u5173\u95ED\u7684\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
|
||||
spring.datasource.druid.time-between-eviction-runs-millis=60000
|
||||
#\u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5C0F\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
|
||||
spring.datasource.druid.min-evictable-idle-time-millis=300000
|
||||
spring.datasource.druid.validation-query=SELECT 'x'
|
||||
spring.datasource.druid.test-on-borrow=false
|
||||
spring.datasource.druid.test-on-return=false
|
||||
spring.datasource.druid.test-while-idle=true
|
||||
#\u6253\u5F00PSCache\uFF0C\u5E76\u4E14\u6307\u5B9A\u6BCF\u4E2A\u8FDE\u63A5\u4E0APSCache\u7684\u5927\u5C0F
|
||||
#\u5982\u679C\u7528Oracle\uFF0C\u5219\u628ApoolPreparedStatements\u914D\u7F6E\u4E3Atrue\uFF0Cmysql\u53EF\u4EE5\u914D\u7F6E\u4E3Afalse\u3002\u5206\u5E93\u5206\u8868\u8F83\u591A\u7684\u6570\u636E\u5E93\uFF0C\u5EFA\u8BAE\u914D\u7F6E\u4E3Afalse\u3002
|
||||
spring.datasource.druid.pool-prepared-statements=false
|
||||
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
|
||||
#druid\u76D1\u63A7\u914D\u7F6E
|
||||
spring.datasource.druid.filters=stat,slf4j
|
||||
# WebStatFilter\u914D\u7F6E\uFF0C\u8BF4\u660E\u8BF7\u53C2\u8003Druid Wiki\uFF0C\u914D\u7F6E_\u914D\u7F6EWebStatFilter
|
||||
spring.datasource.druid.web-stat-filter.enabled=true
|
||||
spring.datasource.druid.filter.stat.log-slow-sql=true
|
||||
spring.datasource.druid.filter.stat.slow-sql-millis=2000
|
||||
# StatViewServlet\u914D\u7F6E\uFF0C\u8BF4\u660E\u8BF7\u53C2\u8003Druid Wiki\uFF0C\u914D\u7F6E_StatViewServlet\u914D\u7F6E
|
||||
spring.datasource.druid.stat-view-servlet.enabled=true
|
||||
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
|
||||
spring.datasource.druid.stat-view-servlet.reset-enable=true
|
||||
spring.datasource.druid.stat-view-servlet.login-username=druid
|
||||
spring.datasource.druid.stat-view-servlet.login-password=123456
|
||||
# Spring\u76D1\u63A7\u914D\u7F6E\uFF0C\u8BF4\u660E\u8BF7\u53C2\u8003Druid Github Wiki\uFF0C\u914D\u7F6E_Druid\u548CSpring\u5173\u8054\u76D1\u63A7\u914D\u7F6E
|
||||
spring.datasource.druid.aop-patterns=priv.jesse.mall.service.impl.*
|
||||
# druid\u65E5\u5FD7\u8F93\u51FA
|
||||
spring.datasource.druid.filter.slf4j.enabled=true
|
||||
spring.datasource.druid.filter.slf4j.result-set-log-enabled=false
|
||||
spring.datasource.druid.filter.slf4j.statement-create-after-log-enabled=false
|
||||
spring.datasource.druid.filter.slf4j.statement-close-after-log-enabled=false
|
||||
spring.datasource.druid.filter.slf4j.result-set-open-after-log-enabled=false
|
||||
spring.datasource.druid.filter.slf4j.result-set-close-after-log-enabled=false
|
||||
##################druid\u8FDE\u63A5\u6C60\u914D\u7F6E\u7ED3\u675F############################
|
||||
|
@ -0,0 +1,178 @@
|
||||
|
||||
div.dataTables_length label {
|
||||
float: left;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div.dataTables_length select {
|
||||
width: 75px;
|
||||
}
|
||||
|
||||
div.dataTables_filter label {
|
||||
float: right;
|
||||
}
|
||||
|
||||
div.dataTables_info {
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
div.dataTables_paginate {
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
table.table {
|
||||
clear: both;
|
||||
margin-bottom: 6px !important;
|
||||
max-width: none !important;
|
||||
}
|
||||
|
||||
table.table thead .sorting,
|
||||
table.table thead .sorting_asc,
|
||||
table.table thead .sorting_desc,
|
||||
table.table thead .sorting_asc_disabled,
|
||||
table.table thead .sorting_desc_disabled {
|
||||
cursor: pointer;
|
||||
*cursor: hand;
|
||||
}
|
||||
|
||||
table.table thead .sorting { background: url('../image/sort_both.png') no-repeat center right; }
|
||||
table.table thead .sorting_asc { background: url('../image/sort_asc.png') no-repeat center right; }
|
||||
table.table thead .sorting_desc { background: url('../image/sort_desc.png') no-repeat center right; }
|
||||
|
||||
table.table thead .sorting_asc_disabled { background: url('../image/sort_asc_disabled.png') no-repeat center right; }
|
||||
table.table thead .sorting_desc_disabled { background: url('../image/sort_desc_disabled.png') no-repeat center right; }
|
||||
|
||||
table.dataTable th:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/* Scrolling */
|
||||
div.dataTables_scrollHead table {
|
||||
margin-bottom: 0 !important;
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table thead tr:last-child th:first-child,
|
||||
div.dataTables_scrollHead table thead tr:last-child td:first-child {
|
||||
border-bottom-left-radius: 0 !important;
|
||||
border-bottom-right-radius: 0 !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody table {
|
||||
border-top: none;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody tbody tr:first-child th,
|
||||
div.dataTables_scrollBody tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollFoot table {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* TableTools styles
|
||||
*/
|
||||
.table tbody tr.active td,
|
||||
.table tbody tr.active th {
|
||||
background-color: #08C;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.table tbody tr.active:hover td,
|
||||
.table tbody tr.active:hover th {
|
||||
background-color: #0075b0 !important;
|
||||
}
|
||||
|
||||
.table-striped tbody tr.active:nth-child(odd) td,
|
||||
.table-striped tbody tr.active:nth-child(odd) th {
|
||||
background-color: #017ebc;
|
||||
}
|
||||
|
||||
table.DTTT_selectable tbody tr {
|
||||
cursor: pointer;
|
||||
*cursor: hand;
|
||||
}
|
||||
|
||||
div.DTTT .btn {
|
||||
color: #333 !important;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
div.DTTT .btn:hover {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
|
||||
ul.DTTT_dropdown.dropdown-menu a {
|
||||
color: #333 !important; /* needed only when demo_page.css is included */
|
||||
}
|
||||
|
||||
ul.DTTT_dropdown.dropdown-menu li:hover a {
|
||||
background-color: #0088cc;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
/* TableTools information display */
|
||||
div.DTTT_print_info.modal {
|
||||
height: 150px;
|
||||
margin-top: -75px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.DTTT_print_info h6 {
|
||||
font-weight: normal;
|
||||
font-size: 28px;
|
||||
line-height: 28px;
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
div.DTTT_print_info p {
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* FixedColumns styles
|
||||
*/
|
||||
div.DTFC_LeftHeadWrapper table,
|
||||
div.DTFC_LeftFootWrapper table,
|
||||
table.DTFC_Cloned tr.even {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
div.DTFC_LeftHeadWrapper table {
|
||||
margin-bottom: 0 !important;
|
||||
border-top-right-radius: 0 !important;
|
||||
border-bottom-left-radius: 0 !important;
|
||||
border-bottom-right-radius: 0 !important;
|
||||
}
|
||||
|
||||
div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,
|
||||
div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child {
|
||||
border-bottom-left-radius: 0 !important;
|
||||
border-bottom-right-radius: 0 !important;
|
||||
}
|
||||
|
||||
div.DTFC_LeftBodyWrapper table {
|
||||
border-top: none;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
div.DTFC_LeftBodyWrapper tbody tr:first-child th,
|
||||
div.DTFC_LeftBodyWrapper tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div.DTFC_LeftFootWrapper table {
|
||||
border-top: none;
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
/***
|
||||
Anout Us Page
|
||||
***/
|
||||
|
||||
.meet-our-team h3 {
|
||||
margin-bottom: 0;
|
||||
padding: 0 10px 10px;
|
||||
background: #fcfcfc;
|
||||
}
|
||||
|
||||
.meet-our-team small {
|
||||
display:block;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
.meet-our-team .team-info {
|
||||
padding: 10px;
|
||||
overflow: hidden;
|
||||
background: #fafafa;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,163 @@
|
||||
/***
|
||||
Blog Page
|
||||
***/
|
||||
|
||||
/*--Block Article--*/
|
||||
.blog-page {
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.blog-page h1 {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.blog-page h2 a {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.blog-page h2 a:hover {
|
||||
color: #0d638f;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.blog-page hr {
|
||||
margin-top: 30px !important;
|
||||
}
|
||||
|
||||
.blog-page .article-block {
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.blog-page .news-img img {
|
||||
margin-top: 9px;
|
||||
}
|
||||
|
||||
.blog-page .blog-tag-data ul {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.blog-page .blog-tag-data li {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.blog-page .blog-tag-data li i {
|
||||
color: #78cff8;
|
||||
}
|
||||
|
||||
.blog-page .blog-tag-data li a {
|
||||
padding: 0;
|
||||
color: #555;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.blog-page .blog-tag-data {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.blog-page .blog-tag-data ul.blog-tags a {
|
||||
background: #eee;
|
||||
padding: 1px 4px;
|
||||
margin: 0 4px 4px 0;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.blog-page .blog-tag-data ul.blog-tags a:hover {
|
||||
background: #ddd;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.blog-page .blog-tag-data .blog-tag-data-inner {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.blog-page .blog-tag-data img {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.blog-page .blog-article {
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.blog-page .blog-article h2 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/*--Block Sidebar--*/
|
||||
.blog-sidebar h2 {
|
||||
font-size: 38.5px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
/*Twitter block*/
|
||||
.blog-twitter-block {
|
||||
padding: 5px;
|
||||
position: relative;
|
||||
margin-bottom: 10px;
|
||||
border-right: solid 2px #ddd;
|
||||
}
|
||||
|
||||
.blog-twitter-block:hover {
|
||||
background: #fafafa;
|
||||
border-color: #35aa47;
|
||||
}
|
||||
|
||||
.blog-twitter-block a {
|
||||
color: #4d90fe;
|
||||
}
|
||||
|
||||
.blog-twitter-block p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.blog-twitter-block span {
|
||||
color: #555;
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.blog-twitter-block i.blog-twiiter-icon {
|
||||
color: #eee;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
font-size: 30px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
/***
|
||||
Blog & News Item Page
|
||||
***/
|
||||
/*--Media Object--*/
|
||||
.blog-page .media img {
|
||||
height: 54px;
|
||||
position: relative;
|
||||
top: 3px;
|
||||
width: 54px;
|
||||
}
|
||||
|
||||
.blog-page h4.media-heading {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.blog-page h4.media-heading span {
|
||||
color: #777777;
|
||||
font-size: 12px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 3px;
|
||||
}
|
||||
|
||||
.blog-page h4.media-heading span a {
|
||||
color: #78cff8;
|
||||
}
|
||||
|
||||
/*Post Comment*/
|
||||
.blog-page .post-comment .color-red {
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
/*For Responsive*/
|
||||
@media (max-width: 768px) {
|
||||
.blog-page .blog-tag-data .blog-tag-data-inner {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
@ -0,0 +1,287 @@
|
||||
/***
|
||||
Blue theme
|
||||
***/
|
||||
/***
|
||||
Reset and overrides
|
||||
***/
|
||||
body {
|
||||
background-color: #1570a6 !important;
|
||||
}
|
||||
/***
|
||||
Page header
|
||||
***/
|
||||
.header .navbar-inner {
|
||||
filter: none !important;
|
||||
background-image: none !important;
|
||||
background-color: #0f4e74 !important;
|
||||
}
|
||||
.header .btn-navbar {
|
||||
background-color: #0f4e74 !important;
|
||||
}
|
||||
.header .nav .dropdown-toggle:hover,
|
||||
.header .nav .dropdown.open .dropdown-toggle {
|
||||
background-color: #146a9d !important;
|
||||
}
|
||||
.header .nav li.dropdown .dropdown-toggle i {
|
||||
color: #68bbec !important;
|
||||
}
|
||||
/***
|
||||
Page sidebar
|
||||
***/
|
||||
.page-sidebar {
|
||||
background-color: #1570a6;
|
||||
}
|
||||
ul.page-sidebar-menu > li > a {
|
||||
border-top: 1px solid #1c95dc !important;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li:last-child > a {
|
||||
border-bottom: 1px solid transparent !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li a i {
|
||||
color: #7fc5ef;
|
||||
}
|
||||
ul.page-sidebar-menu > li.open > a,
|
||||
ul.page-sidebar-menu > li > a:hover,
|
||||
ul.page-sidebar-menu > li:hover > a {
|
||||
background: #12618f;
|
||||
}
|
||||
ul.page-sidebar-menu > li.active > a {
|
||||
background: #cc1d1d !important;
|
||||
border-top-color: transparent !important;
|
||||
color: #ffffff;
|
||||
}
|
||||
ul.page-sidebar-menu > li.active > a i {
|
||||
color: #ffffff;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li:first-child > a {
|
||||
border-top: 0px !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li.active > a,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li > a:hover {
|
||||
color: #ffffff !important;
|
||||
background: #1b8fd3 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li > a:hover {
|
||||
background: #1b8fd3 !important;
|
||||
}
|
||||
/* 3rd level sub menu */
|
||||
ul.page-sidebar-menu > li > ul.sub-menu li > ul.sub-menu > li.active > a,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu li > ul.sub-menu > li > a:hover,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu li.open > a {
|
||||
color: #ffffff !important;
|
||||
background: #1b8fd3 !important;
|
||||
}
|
||||
/* font color for all sub menu links*/
|
||||
ul.page-sidebar-menu li > ul.sub-menu > li > a {
|
||||
color: #c3e4f7;
|
||||
}
|
||||
/* menu arrows */
|
||||
ul.page-sidebar-menu > li > a .arrow:before,
|
||||
ul.page-sidebar-menu > li > a .arrow.open:before {
|
||||
color: #51b1e9 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu a .arrow:before,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu a .arrow.open:before {
|
||||
color: #3ba6e6 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > a > .arrow.open:before {
|
||||
color: #68bbec !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li.active > a .arrow:before,
|
||||
ul.page-sidebar-menu > li.active > a .arrow.open:before {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
/* sidebar search */
|
||||
.page-sidebar .sidebar-search input {
|
||||
background-color: #0f5179 !important;
|
||||
color: #51b1e9;
|
||||
}
|
||||
.page-sidebar .sidebar-search input::-webkit-input-placeholder {
|
||||
color: #51b1e9 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input:-moz-placeholder {
|
||||
color: #51b1e9 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input:-ms-input-placeholder {
|
||||
color: #51b1e9 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input {
|
||||
background-color: #1570a6 !important;
|
||||
color: #bfbfbf !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search .input-box {
|
||||
border-bottom: 1px solid #51b1e9 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search .submit {
|
||||
background-image: url(../../img/search-icon-blue.png);
|
||||
}
|
||||
/***
|
||||
Sidebar toggler
|
||||
***/
|
||||
.sidebar-toggler {
|
||||
background-image: url(../../img/sidebar-toggler-blue.jpg);
|
||||
background-color: #0f5179;
|
||||
}
|
||||
/* search box bg color on expanded */
|
||||
.page-sidebar-closed .page-sidebar .sidebar-search.open {
|
||||
background-color: #1570a6 !important;
|
||||
}
|
||||
.page-sidebar-closed .page-sidebar .sidebar-search.open .remove {
|
||||
background-image: url("../../img/sidebar-search-close-blue.png");
|
||||
}
|
||||
/* sub menu bg color on hover menu item */
|
||||
.page-sidebar-closed ul.page-sidebar-menu > li:hover .sub-menu {
|
||||
background-color: #1570a6;
|
||||
}
|
||||
/***
|
||||
Horizontal Menu(new in v1.2)
|
||||
***/
|
||||
/*search*/
|
||||
.header .hor-menu .hor-menu-search-form-toggler.hide {
|
||||
background: #000000 url(../../img/hor-menu-search-close.png) no-repeat center;
|
||||
}
|
||||
.header .hor-menu .search-form {
|
||||
background: #000000;
|
||||
}
|
||||
.header .hor-menu .search-form .btn {
|
||||
color: #f0f8fd;
|
||||
background: #04141e url(../../img/search-icon.png) no-repeat center;
|
||||
}
|
||||
.header .hor-menu .search-form form input {
|
||||
color: #f0f8fd;
|
||||
}
|
||||
.header .hor-menu .search-form form input::-webkit-input-placeholder {
|
||||
/* WebKit browsers */
|
||||
|
||||
color: #f0f8fd;
|
||||
}
|
||||
.header .hor-menu .search-form form input:-moz-placeholder {
|
||||
/* Mozilla Firefox 4 to 18 */
|
||||
|
||||
color: #f0f8fd;
|
||||
}
|
||||
.header .hor-menu .search-form form input::-moz-placeholder {
|
||||
/* Mozilla Firefox 19+ */
|
||||
|
||||
color: #f0f8fd;
|
||||
}
|
||||
.header .hor-menu .search-form form input:-ms-input-placeholder {
|
||||
/* Internet Explorer 10+ */
|
||||
|
||||
color: #f0f8fd;
|
||||
}
|
||||
/***
|
||||
Footer
|
||||
***/
|
||||
.footer .footer-inner {
|
||||
color: #68bbec;
|
||||
}
|
||||
.footer .footer-tools .go-top {
|
||||
background-color: #1985c6;
|
||||
}
|
||||
.footer .footer-tools .go-top:hover {
|
||||
opacity: 0.7;
|
||||
filter: alpha(opacity=70);
|
||||
}
|
||||
.footer .footer-tools .go-top i {
|
||||
color: #68bbec;
|
||||
}
|
||||
/***
|
||||
Footer Layouts (new in v1.3)
|
||||
***/
|
||||
/* begin:fixed footer */
|
||||
.page-footer-fixed .footer {
|
||||
background-color: #0f5179;
|
||||
}
|
||||
.page-footer-fixed .footer .footer-inner {
|
||||
color: #68bbec;
|
||||
}
|
||||
.page-footer-fixed .footer .footer-tools .go-top {
|
||||
background-color: #1985c6;
|
||||
}
|
||||
.page-footer-fixed .footer .footer-tools .go-top i {
|
||||
color: #68bbec;
|
||||
}
|
||||
/* end:fixed footer */
|
||||
/***
|
||||
Gritter Notifications
|
||||
***/
|
||||
.gritter-top {
|
||||
background: url(../../plugins/gritter/images/gritter-blue.png) no-repeat left -30px !important;
|
||||
}
|
||||
.gritter-bottom {
|
||||
background: url(../../plugins/gritter/images/gritter-blue.png) no-repeat left bottom !important;
|
||||
}
|
||||
.gritter-item {
|
||||
display: block;
|
||||
background: url(../../plugins/gritter/images/gritter-blue.png) no-repeat left -40px !important;
|
||||
}
|
||||
.gritter-close {
|
||||
background: url(../../plugins/gritter/images/gritter-blue.png) no-repeat left top !important;
|
||||
}
|
||||
.gritter-title {
|
||||
text-shadow: none !important;
|
||||
/* Not supported by IE :( */
|
||||
|
||||
}
|
||||
/* for the light (white) version of the gritter notice */
|
||||
.gritter-light .gritter-item,
|
||||
.gritter-light .gritter-bottom,
|
||||
.gritter-light .gritter-top,
|
||||
.gritter-light .gritter-close {
|
||||
background-image: url(../../plugins/gritter/images/gritter-light.png) !important;
|
||||
}
|
||||
.gritter-item-wrapper a {
|
||||
color: #18a5ed;
|
||||
}
|
||||
.gritter-item-wrapper a:hover {
|
||||
color: #0b6694;
|
||||
}
|
||||
/* begin: boxed page */
|
||||
@media (min-width: 980px) {
|
||||
.page-boxed {
|
||||
background-color: #125e8b !important;
|
||||
}
|
||||
.page-boxed .page-container {
|
||||
background-color: #1570a6;
|
||||
border-left: 1px solid #1c98e1;
|
||||
border-bottom: 1px solid #1c98e1;
|
||||
}
|
||||
.page-boxed.page-sidebar-fixed .page-container {
|
||||
border-left: 0;
|
||||
border-bottom: 0;
|
||||
}
|
||||
.page-boxed.page-sidebar-fixed .page-sidebar {
|
||||
border-left: 1px solid #1c98e1;
|
||||
}
|
||||
.page-boxed.page-sidebar-fixed.page-footer-fixed .footer {
|
||||
background-color: #125e8b !important;
|
||||
}
|
||||
}
|
||||
/* end: boxed page */
|
||||
/***
|
||||
Landscape phone to portrait tablet
|
||||
***/
|
||||
@media (max-width: 979px) {
|
||||
/***
|
||||
page sidebar
|
||||
***/
|
||||
.page-sidebar {
|
||||
background-color: #105882 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > a {
|
||||
border-top: 1px solid #187fbd !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li:last-child > a {
|
||||
border-bottom: 0 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input {
|
||||
background-color: #105882 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li.open > a,
|
||||
ul.page-sidebar-menu > li > a:hover,
|
||||
ul.page-sidebar-menu > li:hover > a {
|
||||
background: #0e4b70;
|
||||
}
|
||||
}
|
@ -0,0 +1,116 @@
|
||||
.btn-file {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.btn-file > input {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
margin: 0;
|
||||
font-size: 23px;
|
||||
cursor: pointer;
|
||||
opacity: 0;
|
||||
filter: alpha(opacity=0);
|
||||
transform: translate(-300px, 0) scale(4);
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
.fileupload {
|
||||
margin-bottom: 9px;
|
||||
}
|
||||
|
||||
.fileupload .uneditable-input {
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
vertical-align: middle;
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
.fileupload .thumbnail {
|
||||
display: inline-block;
|
||||
margin-bottom: 5px;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.fileupload .thumbnail > img {
|
||||
display: inline-block;
|
||||
max-height: 100%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.fileupload .btn {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.fileupload-exists .fileupload-new,
|
||||
.fileupload-new .fileupload-exists {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.fileupload-inline .fileupload-controls {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.fileupload-new .input-append .btn-file {
|
||||
-webkit-border-radius: 0 3px 3px 0;
|
||||
-moz-border-radius: 0 3px 3px 0;
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
|
||||
.thumbnail-borderless .thumbnail {
|
||||
padding: 0;
|
||||
border: none;
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
border-radius: 0;
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.fileupload-new.thumbnail-borderless .thumbnail {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.control-group.warning .fileupload .uneditable-input {
|
||||
color: #a47e3c;
|
||||
border-color: #a47e3c;
|
||||
}
|
||||
|
||||
.control-group.warning .fileupload .fileupload-preview {
|
||||
color: #a47e3c;
|
||||
}
|
||||
|
||||
.control-group.warning .fileupload .thumbnail {
|
||||
border-color: #a47e3c;
|
||||
}
|
||||
|
||||
.control-group.error .fileupload .uneditable-input {
|
||||
color: #b94a48;
|
||||
border-color: #b94a48;
|
||||
}
|
||||
|
||||
.control-group.error .fileupload .fileupload-preview {
|
||||
color: #b94a48;
|
||||
}
|
||||
|
||||
.control-group.error .fileupload .thumbnail {
|
||||
border-color: #b94a48;
|
||||
}
|
||||
|
||||
.control-group.success .fileupload .uneditable-input {
|
||||
color: #468847;
|
||||
border-color: #468847;
|
||||
}
|
||||
|
||||
.control-group.success .fileupload .fileupload-preview {
|
||||
color: #468847;
|
||||
}
|
||||
|
||||
.control-group.success .fileupload .thumbnail {
|
||||
border-color: #468847;
|
||||
}
|
@ -0,0 +1,214 @@
|
||||
/*!
|
||||
* Bootstrap Modal
|
||||
*
|
||||
* Copyright Jordan Schroter
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*/
|
||||
|
||||
.modal-open {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
/* add a scroll bar to stop page from jerking around */
|
||||
.modal-open.page-overflow .page-container,
|
||||
.modal-open.page-overflow .page-container .navbar-fixed-top,
|
||||
.modal-open.page-overflow .page-container .navbar-fixed-bottom,
|
||||
.modal-open.page-overflow .modal-scrollable {
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
@media (max-width: 979px) {
|
||||
.modal-open.page-overflow .page-container .navbar-fixed-top,
|
||||
.modal-open.page-overflow .page-container .navbar-fixed-bottom {
|
||||
overflow-y: visible;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.modal-scrollable {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.modal {
|
||||
outline: none;
|
||||
position: absolute;
|
||||
margin-top: 0;
|
||||
top: 50%;
|
||||
overflow: visible; /* allow content to popup out (i.e tooltips) */
|
||||
}
|
||||
|
||||
.modal.fade {
|
||||
top: -100%;
|
||||
-webkit-transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out;
|
||||
-moz-transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out;
|
||||
-o-transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out;
|
||||
transition: opacity 0.3s linear, top 0.3s ease-out, bottom 0.3s ease-out, margin-top 0.3s ease-out;
|
||||
}
|
||||
|
||||
.modal.fade.in {
|
||||
top: 50%;
|
||||
}
|
||||
|
||||
.modal-body {
|
||||
max-height: none;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.modal.modal-absolute {
|
||||
position: absolute;
|
||||
z-index: 950;
|
||||
}
|
||||
|
||||
.modal .loading-mask {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: #fff;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.modal-backdrop.modal-absolute{
|
||||
position: absolute;
|
||||
z-index: 940;
|
||||
}
|
||||
|
||||
.modal-backdrop,
|
||||
.modal-backdrop.fade.in{
|
||||
opacity: 0.7;
|
||||
filter: alpha(opacity=70);
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.modal.container {
|
||||
width: 940px;
|
||||
margin-left: -470px;
|
||||
}
|
||||
|
||||
/* Modal Overflow */
|
||||
|
||||
.modal-overflow.modal {
|
||||
top: 1%;
|
||||
}
|
||||
|
||||
.modal-overflow.modal.fade {
|
||||
top: -100%;
|
||||
}
|
||||
|
||||
.modal-overflow.modal.fade.in {
|
||||
top: 1%;
|
||||
}
|
||||
|
||||
.modal-overflow .modal-body {
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
/* Responsive */
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.modal.container {
|
||||
width: 1170px;
|
||||
margin-left: -585px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 979px) {
|
||||
.modal,
|
||||
.modal.container,
|
||||
.modal.modal-overflow {
|
||||
top: 1%;
|
||||
right: 1%;
|
||||
left: 1%;
|
||||
bottom: auto;
|
||||
width: auto !important;
|
||||
height: auto !important;
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.modal.fade.in,
|
||||
.modal.container.fade.in,
|
||||
.modal.modal-overflow.fade.in {
|
||||
top: 1%;
|
||||
bottom: auto;
|
||||
}
|
||||
|
||||
.modal-body,
|
||||
.modal-overflow .modal-body {
|
||||
position: static;
|
||||
margin: 0;
|
||||
height: auto !important;
|
||||
max-height: none !important;
|
||||
overflow: visible !important;
|
||||
}
|
||||
|
||||
.modal-footer,
|
||||
.modal-overflow .modal-footer {
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
|
||||
.loading-spinner {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin: -12px 0 0 -12px;
|
||||
}
|
||||
|
||||
/*
|
||||
Animate.css - http://daneden.me/animate
|
||||
Licensed under the ☺ license (http://licence.visualidiot.com/)
|
||||
|
||||
Copyright (c) 2012 Dan Eden*/
|
||||
|
||||
.animated {
|
||||
-webkit-animation-duration: 1s;
|
||||
-moz-animation-duration: 1s;
|
||||
-o-animation-duration: 1s;
|
||||
animation-duration: 1s;
|
||||
-webkit-animation-fill-mode: both;
|
||||
-moz-animation-fill-mode: both;
|
||||
-o-animation-fill-mode: both;
|
||||
animation-fill-mode: both;
|
||||
}
|
||||
|
||||
@-webkit-keyframes shake {
|
||||
0%, 100% {-webkit-transform: translateX(0);}
|
||||
10%, 30%, 50%, 70%, 90% {-webkit-transform: translateX(-10px);}
|
||||
20%, 40%, 60%, 80% {-webkit-transform: translateX(10px);}
|
||||
}
|
||||
|
||||
@-moz-keyframes shake {
|
||||
0%, 100% {-moz-transform: translateX(0);}
|
||||
10%, 30%, 50%, 70%, 90% {-moz-transform: translateX(-10px);}
|
||||
20%, 40%, 60%, 80% {-moz-transform: translateX(10px);}
|
||||
}
|
||||
|
||||
@-o-keyframes shake {
|
||||
0%, 100% {-o-transform: translateX(0);}
|
||||
10%, 30%, 50%, 70%, 90% {-o-transform: translateX(-10px);}
|
||||
20%, 40%, 60%, 80% {-o-transform: translateX(10px);}
|
||||
}
|
||||
|
||||
@keyframes shake {
|
||||
0%, 100% {transform: translateX(0);}
|
||||
10%, 30%, 50%, 70%, 90% {transform: translateX(-10px);}
|
||||
20%, 40%, 60%, 80% {transform: translateX(10px);}
|
||||
}
|
||||
|
||||
.shake {
|
||||
-webkit-animation-name: shake;
|
||||
-moz-animation-name: shake;
|
||||
-o-animation-name: shake;
|
||||
animation-name: shake;
|
||||
}
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,94 @@
|
||||
.tags {
|
||||
display: inline-block;
|
||||
padding: 4px 6px;
|
||||
margin-bottom: 10px;
|
||||
color: #555555;
|
||||
vertical-align: middle;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #cccccc;
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||
-moz-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 linear .2s, box-shadow linear .2s;
|
||||
-moz-transition: border linear .2s, box-shadow linear .2s;
|
||||
-o-transition: border linear .2s, box-shadow linear .2s;
|
||||
transition: border linear .2s, box-shadow linear .2s;
|
||||
width: 206px;
|
||||
}
|
||||
.tags-hover {
|
||||
border-color: rgba(82, 168, 236, 0.8);
|
||||
outline: 0;
|
||||
outline: thin dotted \9;
|
||||
/* IE6-9 */
|
||||
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
|
||||
-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
|
||||
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
|
||||
}
|
||||
.tags[class*="span"] {
|
||||
float: none;
|
||||
margin-left: 0;
|
||||
}
|
||||
.tags input[type="text"],
|
||||
.tags input[type="text"]:focus {
|
||||
border: none;
|
||||
display: inline;
|
||||
outline: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 11.844px;
|
||||
line-height: 14px;
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
width: 100%;
|
||||
}
|
||||
.tag {
|
||||
display: inline-block;
|
||||
padding: 2px 4px;
|
||||
font-size: 11.844px;
|
||||
font-weight: bold;
|
||||
line-height: 14px;
|
||||
color: #ffffff;
|
||||
vertical-align: baseline;
|
||||
white-space: nowrap;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
background-color: #999999;
|
||||
padding-left: 9px;
|
||||
padding-right: 9px;
|
||||
-webkit-border-radius: 9px;
|
||||
-moz-border-radius: 9px;
|
||||
border-radius: 9px;
|
||||
margin-bottom: 5px;
|
||||
margin-right: 5px;
|
||||
-webkit-transition: all 0.2s;
|
||||
-moz-transition: all 0.2s;
|
||||
-o-transition: all 0.2s;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
.tag:empty {
|
||||
display: none;
|
||||
}
|
||||
.tag-important {
|
||||
background-color: #953b39;
|
||||
}
|
||||
.tag-warning {
|
||||
background-color: #c67605;
|
||||
}
|
||||
.tag-success {
|
||||
background-color: #356635;
|
||||
}
|
||||
.tag-info {
|
||||
background-color: #2d6987;
|
||||
}
|
||||
.tag-inverse {
|
||||
background-color: #1a1a1a;
|
||||
}
|
||||
.tag .close {
|
||||
font-size: 14px;
|
||||
line-height: 14px;
|
||||
margin-left: 7px;
|
||||
}
|
@ -0,0 +1,155 @@
|
||||
/* line 11, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button {
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-ms-border-radius: 5px;
|
||||
-o-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
border: 1px solid;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
position: relative;
|
||||
text-align: left;
|
||||
overflow: hidden;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
/* line 29, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button.deactivate {
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
|
||||
opacity: 0.5;
|
||||
cursor: default !important;
|
||||
}
|
||||
/* line 32, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button.deactivate label, .toggle-button.deactivate span {
|
||||
cursor: default !important;
|
||||
}
|
||||
/* line 36, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button > div {
|
||||
display: inline-block;
|
||||
width: 150px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
}
|
||||
/* line 41, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button > div.disabled {
|
||||
left: -50%;
|
||||
}
|
||||
/* line 45, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button input[type=checkbox] {
|
||||
display: none;
|
||||
}
|
||||
/* line 53, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button span, .toggle-button label {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
float: left;
|
||||
display: inline-block;
|
||||
}
|
||||
/* line 60, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button label {
|
||||
background: #fefefe;
|
||||
margin-left: -4px;
|
||||
margin-right: -4px;
|
||||
border: 1px solid #E6E6E6;
|
||||
margin-top: -1px;
|
||||
z-index: 100;
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fefefe), color-stop(100%, #e6e6e6));
|
||||
background-image: -webkit-linear-gradient(top, #fefefe, #e6e6e6);
|
||||
background-image: -moz-linear-gradient(top, #fefefe, #e6e6e6);
|
||||
background-image: -o-linear-gradient(top, #fefefe, #e6e6e6);
|
||||
background-image: linear-gradient(top, #fefefe, #e6e6e6);
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-ms-border-radius: 4px;
|
||||
-o-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
/* line 72, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button span {
|
||||
color: #fefefe;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
z-index: 1;
|
||||
}
|
||||
/* line 78, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button span.labelLeft {
|
||||
-moz-border-radius-topleft: 4px;
|
||||
-webkit-border-top-left-radius: 4px;
|
||||
border-top-left-radius: 4px;
|
||||
-moz-border-radius-bottomleft: 4px;
|
||||
-webkit-border-bottom-left-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
padding-left: 3px;
|
||||
}
|
||||
/* line 83, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button span.labelRight {
|
||||
-moz-border-radius-topright: 4px;
|
||||
-webkit-border-top-right-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
-moz-border-radius-bottomright: 4px;
|
||||
-webkit-border-bottom-right-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
color: black;
|
||||
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #fefefe), color-stop(100%, #e6e6e6));
|
||||
background-image: -webkit-linear-gradient(bottom, #fefefe, #e6e6e6);
|
||||
background-image: -moz-linear-gradient(bottom, #fefefe, #e6e6e6);
|
||||
background-image: -o-linear-gradient(bottom, #fefefe, #e6e6e6);
|
||||
background-image: linear-gradient(bottom, #fefefe, #e6e6e6);
|
||||
padding-right: 3px;
|
||||
}
|
||||
/* line 91, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button span.primary, .toggle-button span.labelLeft {
|
||||
color: #fefefe;
|
||||
background: #0088cc;
|
||||
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #0088cc), color-stop(100%, #0055cc));
|
||||
background-image: -webkit-linear-gradient(bottom, #0088cc, #0055cc);
|
||||
background-image: -moz-linear-gradient(bottom, #0088cc, #0055cc);
|
||||
background-image: -o-linear-gradient(bottom, #0088cc, #0055cc);
|
||||
background-image: linear-gradient(bottom, #0088cc, #0055cc);
|
||||
}
|
||||
/* line 96, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button span.info {
|
||||
color: #fefefe;
|
||||
background: #5bc0de;
|
||||
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #5bc0de), color-stop(100%, #2f96b4));
|
||||
background-image: -webkit-linear-gradient(bottom, #5bc0de, #2f96b4);
|
||||
background-image: -moz-linear-gradient(bottom, #5bc0de, #2f96b4);
|
||||
background-image: -o-linear-gradient(bottom, #5bc0de, #2f96b4);
|
||||
background-image: linear-gradient(bottom, #5bc0de, #2f96b4);
|
||||
}
|
||||
/* line 102, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button span.success {
|
||||
color: #fefefe;
|
||||
background: #62c462;
|
||||
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #62c462), color-stop(100%, #51a351));
|
||||
background-image: -webkit-linear-gradient(bottom, #62c462, #51a351);
|
||||
background-image: -moz-linear-gradient(bottom, #62c462, #51a351);
|
||||
background-image: -o-linear-gradient(bottom, #62c462, #51a351);
|
||||
background-image: linear-gradient(bottom, #62c462, #51a351);
|
||||
}
|
||||
/* line 108, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button span.warning {
|
||||
color: #fefefe;
|
||||
background: #dbb450;
|
||||
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dbb450), color-stop(100%, #f89406));
|
||||
background-image: -webkit-linear-gradient(bottom, #dbb450, #f89406);
|
||||
background-image: -moz-linear-gradient(bottom, #dbb450, #f89406);
|
||||
background-image: -o-linear-gradient(bottom, #dbb450, #f89406);
|
||||
background-image: linear-gradient(bottom, #dbb450, #f89406);
|
||||
}
|
||||
/* line 114, ../sass/bootstrap-toggle-buttons.scss */
|
||||
.toggle-button span.danger {
|
||||
color: #fefefe;
|
||||
background: #ee5f5b;
|
||||
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ee5f5b), color-stop(100%, #bd362f));
|
||||
background-image: -webkit-linear-gradient(bottom, #ee5f5b, #bd362f);
|
||||
background-image: -moz-linear-gradient(bottom, #ee5f5b, #bd362f);
|
||||
background-image: -o-linear-gradient(bottom, #ee5f5b, #bd362f);
|
||||
background-image: linear-gradient(bottom, #ee5f5b, #bd362f);
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
/*!
|
||||
* Bootstrap Tree v0.3
|
||||
*
|
||||
* Copyright 2012 Cutters Crossing
|
||||
* Bootstrap is Copyright 2012 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 @cutterbl.
|
||||
*/
|
||||
|
||||
.tree,
|
||||
.branch {
|
||||
list-style: none outside none;
|
||||
}
|
||||
.branch {
|
||||
postion: relative;
|
||||
height: 0;
|
||||
margin: 0 0 0 15px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.branch.in {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
a:link,
|
||||
a:visited,
|
||||
a:hover,
|
||||
a:active {
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
}
|
||||
/* Work in progress */
|
||||
a.tree-toggle-icon-only {
|
||||
height: 16px;
|
||||
width: 20px;
|
||||
line-height: 16px;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
background: url("../image/bstree-halflings.png") no-repeat;
|
||||
background-position: 0 -22px;
|
||||
}
|
||||
|
||||
a.tree-toggle {
|
||||
height: 16px;
|
||||
padding-left: 20px;
|
||||
line-height: 16px;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
background: url("../image/bstree-halflings.png") no-repeat;
|
||||
background-position: 0 -22px;
|
||||
}
|
||||
a.tree-toggle.closed, a.tree-toggle-icon-only.closed {
|
||||
background-position: 0 1px;
|
||||
}
|
@ -0,0 +1,102 @@
|
||||
ul.wysihtml5-toolbar {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: block;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar::after {
|
||||
clear: both;
|
||||
display: table;
|
||||
content: "";
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar > li {
|
||||
float: left;
|
||||
display: list-item;
|
||||
list-style: none;
|
||||
margin: 0 5px 10px 0;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar a[data-wysihtml5-command=bold] {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar a[data-wysihtml5-command=italic] {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar a[data-wysihtml5-command=underline] {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar a.btn.wysihtml5-command-active {
|
||||
background-image: none;
|
||||
-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
-moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
background-color: #E6E6E6;
|
||||
background-color: #D9D9D9;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
ul.wysihtml5-commands-disabled .dropdown-menu {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar div.wysihtml5-colors {
|
||||
display:block;
|
||||
width: 50px;
|
||||
height: 20px;
|
||||
margin-top: 2px;
|
||||
margin-left: 5px;
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar a.wysihtml5-colors-title {
|
||||
padding-left: 70px;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="black"] {
|
||||
background: black !important;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="silver"] {
|
||||
background: silver !important;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="gray"] {
|
||||
background: gray !important;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="maroon"] {
|
||||
background: maroon !important;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="red"] {
|
||||
background: red !important;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="purple"] {
|
||||
background: purple !important;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="green"] {
|
||||
background: green !important;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="olive"] {
|
||||
background: olive !important;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="navy"] {
|
||||
background: navy !important;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="blue"] {
|
||||
background: blue !important;
|
||||
}
|
||||
|
||||
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="orange"] {
|
||||
background: orange !important;
|
||||
}
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,287 @@
|
||||
/***
|
||||
Brown theme
|
||||
***/
|
||||
/***
|
||||
Reset and overrides
|
||||
***/
|
||||
body {
|
||||
background-color: #623f18 !important;
|
||||
}
|
||||
/***
|
||||
Page header
|
||||
***/
|
||||
.header .navbar-inner {
|
||||
filter: none !important;
|
||||
background-image: none !important;
|
||||
background-color: #35220d !important;
|
||||
}
|
||||
.header .btn-navbar {
|
||||
background-color: #35220d !important;
|
||||
}
|
||||
.header .nav .dropdown-toggle:hover,
|
||||
.header .nav .dropdown.open .dropdown-toggle {
|
||||
background-color: #5a3a16 !important;
|
||||
}
|
||||
.header .nav li.dropdown .dropdown-toggle i {
|
||||
color: #d18d42 !important;
|
||||
}
|
||||
/***
|
||||
Page sidebar
|
||||
***/
|
||||
.page-sidebar {
|
||||
background-color: #623f18;
|
||||
}
|
||||
ul.page-sidebar-menu > li > a {
|
||||
border-top: 1px solid #935f24 !important;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li:last-child > a {
|
||||
border-bottom: 1px solid transparent !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li a i {
|
||||
color: #9a6d3a;
|
||||
}
|
||||
ul.page-sidebar-menu > li.open > a,
|
||||
ul.page-sidebar-menu > li > a:hover,
|
||||
ul.page-sidebar-menu > li:hover > a {
|
||||
background: #4e3112;
|
||||
}
|
||||
ul.page-sidebar-menu > li.active > a {
|
||||
background: #4e3112 !important;
|
||||
border-top-color: transparent !important;
|
||||
color: #ffffff;
|
||||
}
|
||||
ul.page-sidebar-menu > li.active > a i {
|
||||
color: #ffffff;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li:first-child > a {
|
||||
border-top: 0px !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li.active > a,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li > a:hover {
|
||||
color: #ffffff !important;
|
||||
background: #8b5922 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li > a:hover {
|
||||
background: #8b5922 !important;
|
||||
}
|
||||
/* 3rd level sub menu */
|
||||
ul.page-sidebar-menu > li > ul.sub-menu li > ul.sub-menu > li.active > a,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu li > ul.sub-menu > li > a:hover,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu li.open > a {
|
||||
color: #ffffff !important;
|
||||
background: #8b5922 !important;
|
||||
}
|
||||
/* font color for all sub menu links*/
|
||||
ul.page-sidebar-menu li > ul.sub-menu > li > a {
|
||||
color: #e5bf94;
|
||||
}
|
||||
/* menu arrows */
|
||||
ul.page-sidebar-menu > li > a .arrow:before,
|
||||
ul.page-sidebar-menu > li > a .arrow.open:before {
|
||||
color: #c88131 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu a .arrow:before,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu a .arrow.open:before {
|
||||
color: #b4742c !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > a > .arrow.open:before {
|
||||
color: #d18d42 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li.active > a .arrow:before,
|
||||
ul.page-sidebar-menu > li.active > a .arrow.open:before {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
/* sidebar search */
|
||||
.page-sidebar .sidebar-search input {
|
||||
background-color: #39250e !important;
|
||||
color: #b18d65;
|
||||
}
|
||||
.page-sidebar .sidebar-search input::-webkit-input-placeholder {
|
||||
color: #b18d65 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input:-moz-placeholder {
|
||||
color: #b18d65 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input:-ms-input-placeholder {
|
||||
color: #b18d65 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input {
|
||||
background-color: #623f18 !important;
|
||||
color: #b18d65 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search .input-box {
|
||||
border-bottom: 1px solid #845f36 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search .submit {
|
||||
background-image: url(../../img/search-icon-brown.png);
|
||||
}
|
||||
/***
|
||||
Sidebar toggler
|
||||
***/
|
||||
.sidebar-toggler {
|
||||
background-image: url(../../img/sidebar-toggler-brown.jpg);
|
||||
background-color: #39250e;
|
||||
}
|
||||
/* search box bg color on expanded */
|
||||
.page-sidebar-closed .page-sidebar .sidebar-search.open {
|
||||
background-color: #623f18 !important;
|
||||
}
|
||||
.page-sidebar-closed .page-sidebar .sidebar-search.open .remove {
|
||||
background-image: url("../../img/sidebar-search-close-brown.png");
|
||||
}
|
||||
/* sub menu bg color on hover menu item */
|
||||
.page-sidebar-closed ul.page-sidebar-menu > li:hover .sub-menu {
|
||||
background-color: #623f18;
|
||||
}
|
||||
/***
|
||||
Horizontal Menu(new in v1.2)
|
||||
***/
|
||||
/*search*/
|
||||
.header .hor-menu .hor-menu-search-form-toggler.hide {
|
||||
background: #000000 url(../../img/hor-menu-search-close.png) no-repeat center;
|
||||
}
|
||||
.header .hor-menu .search-form {
|
||||
background: #000000;
|
||||
}
|
||||
.header .hor-menu .search-form .btn {
|
||||
color: #efd7bd;
|
||||
background: #000000 url(../../img/search-icon.png) no-repeat center;
|
||||
}
|
||||
.header .hor-menu .search-form form input {
|
||||
color: #efd7bd;
|
||||
}
|
||||
.header .hor-menu .search-form form input::-webkit-input-placeholder {
|
||||
/* WebKit browsers */
|
||||
|
||||
color: #efd7bd;
|
||||
}
|
||||
.header .hor-menu .search-form form input:-moz-placeholder {
|
||||
/* Mozilla Firefox 4 to 18 */
|
||||
|
||||
color: #efd7bd;
|
||||
}
|
||||
.header .hor-menu .search-form form input::-moz-placeholder {
|
||||
/* Mozilla Firefox 19+ */
|
||||
|
||||
color: #efd7bd;
|
||||
}
|
||||
.header .hor-menu .search-form form input:-ms-input-placeholder {
|
||||
/* Internet Explorer 10+ */
|
||||
|
||||
color: #efd7bd;
|
||||
}
|
||||
/***
|
||||
Footer
|
||||
***/
|
||||
.footer .footer-inner {
|
||||
color: #999999;
|
||||
}
|
||||
.footer .footer-tools .go-top {
|
||||
background-color: #7f511f;
|
||||
}
|
||||
.footer .footer-tools .go-top:hover {
|
||||
opacity: 0.7;
|
||||
filter: alpha(opacity=70);
|
||||
}
|
||||
.footer .footer-tools .go-top i {
|
||||
color: #d18d42;
|
||||
}
|
||||
/***
|
||||
Footer Layouts (new in v1.3)
|
||||
***/
|
||||
/* begin:fixed footer */
|
||||
.page-footer-fixed .footer {
|
||||
background-color: #39250e;
|
||||
}
|
||||
.page-footer-fixed .footer .footer-inner {
|
||||
color: #999999;
|
||||
}
|
||||
.page-footer-fixed .footer .footer-tools .go-top {
|
||||
background-color: #7f511f;
|
||||
}
|
||||
.page-footer-fixed .footer .footer-tools .go-top i {
|
||||
color: #d18d42;
|
||||
}
|
||||
/* end:fixed footer */
|
||||
/***
|
||||
Gritter Notifications
|
||||
***/
|
||||
.gritter-top {
|
||||
background: url(../../plugins/gritter/images/gritter-brown.png) no-repeat left -30px !important;
|
||||
}
|
||||
.gritter-bottom {
|
||||
background: url(../../plugins/gritter/images/gritter-brown.png) no-repeat left bottom !important;
|
||||
}
|
||||
.gritter-item {
|
||||
display: block;
|
||||
background: url(../../plugins/gritter/images/gritter-brown.png) no-repeat left -40px !important;
|
||||
}
|
||||
.gritter-close {
|
||||
background: url(../../plugins/gritter/images/gritter-brown.png) no-repeat left top !important;
|
||||
}
|
||||
.gritter-title {
|
||||
text-shadow: none !important;
|
||||
/* Not supported by IE :( */
|
||||
|
||||
}
|
||||
/* for the light (white) version of the gritter notice */
|
||||
.gritter-light .gritter-item,
|
||||
.gritter-light .gritter-bottom,
|
||||
.gritter-light .gritter-top,
|
||||
.gritter-light .gritter-close {
|
||||
background-image: url(../../plugins/gritter/images/gritter-light.png) !important;
|
||||
}
|
||||
.gritter-item-wrapper a {
|
||||
color: #b18d65;
|
||||
}
|
||||
.gritter-item-wrapper a:hover {
|
||||
color: #755a3b;
|
||||
}
|
||||
/* begin: boxed page */
|
||||
@media (min-width: 980px) {
|
||||
.page-boxed {
|
||||
background-color: #492f12 !important;
|
||||
}
|
||||
.page-boxed .page-container {
|
||||
background-color: #623f18;
|
||||
border-left: 1px solid #976125;
|
||||
border-bottom: 1px solid #976125;
|
||||
}
|
||||
.page-boxed.page-sidebar-fixed .page-container {
|
||||
border-left: 0;
|
||||
border-bottom: 0;
|
||||
}
|
||||
.page-boxed.page-sidebar-fixed .page-sidebar {
|
||||
border-left: 1px solid #976125;
|
||||
}
|
||||
.page-boxed.page-sidebar-fixed.page-footer-fixed .footer {
|
||||
background-color: #492f12 !important;
|
||||
}
|
||||
}
|
||||
/* end: boxed page */
|
||||
/***
|
||||
Landscape phone to portrait tablet
|
||||
***/
|
||||
@media (max-width: 979px) {
|
||||
/***
|
||||
page sidebar
|
||||
***/
|
||||
.page-sidebar {
|
||||
background-color: #412a10 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > a {
|
||||
border-top: 1px solid #764c1d !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li:last-child > a {
|
||||
border-bottom: 0 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input {
|
||||
background-color: #412a10 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li.open > a,
|
||||
ul.page-sidebar-menu > li > a:hover,
|
||||
ul.page-sidebar-menu > li:hover > a {
|
||||
background: #311f0c;
|
||||
}
|
||||
}
|
@ -0,0 +1,429 @@
|
||||
/*
|
||||
*
|
||||
* Chosen for Bootstrap and Less
|
||||
*
|
||||
* Converted by @whitetruffle (http://www.twitter.com/whitetruffle)
|
||||
* from @joeylomanto's SASS fork (http://chosen-sass-bootstrap.herokuapp.com/)
|
||||
* Havest: @harvest
|
||||
*
|
||||
*/
|
||||
/*!
|
||||
* Bootstrap v2.1.1
|
||||
*
|
||||
* Copyright 2012 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 @twitter by @mdo and @fat.
|
||||
*/
|
||||
|
||||
.chzn-container {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
}
|
||||
.chzn-container .chzn-drop {
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
|
||||
-moz-box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
|
||||
box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
|
||||
background: #fff;
|
||||
border: 1px solid #CCC;
|
||||
position: absolute;
|
||||
top: 29px;
|
||||
left: 0;
|
||||
z-index: 1010;
|
||||
margin: 4px 0 0;
|
||||
}
|
||||
|
||||
.chzn-container-single .chzn-single {
|
||||
margin-top: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0, 0, 0, 0.1);
|
||||
-moz-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0, 0, 0, 0.1);
|
||||
box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0, 0, 0, 0.1);
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding-box;
|
||||
background-clip: padding-box;
|
||||
background-color: #f6f6f6;
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(50%, #f6f6f6), to(#f4f4f4));
|
||||
background-image: -webkit-linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);
|
||||
background-image: -moz-linear-gradient(top, #ffffff, #f6f6f6 50%, #f4f4f4);
|
||||
background-image: -o-linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);
|
||||
background-image: linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);
|
||||
background-repeat: no-repeat;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff4f4f4', GradientType=0);
|
||||
-moz-background-clip: padding;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #CCC;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
position: relative;
|
||||
height: 28px;
|
||||
line-height: 29px;
|
||||
padding: 0 0 0 8px;
|
||||
color: #555555;
|
||||
text-decoration: none;
|
||||
}
|
||||
.chzn-container-single .chzn-single span {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
margin-right: 26px;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.chzn-container-single .chzn-single abbr {
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 26px;
|
||||
top: 8px;
|
||||
width: 12px;
|
||||
height: 13px;
|
||||
font-size: 1px;
|
||||
background: url("../image/chosen-sprite.png") right top no-repeat;
|
||||
}
|
||||
.chzn-container-single .chzn-single abbr:hover {
|
||||
background-position: right -11px;
|
||||
}
|
||||
.chzn-container-single .chzn-single div {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
display: block;
|
||||
height: 100%;
|
||||
width: 18px;
|
||||
}
|
||||
.chzn-container-single .chzn-single div b {
|
||||
background: url("../image/chosen-sprite.png") no-repeat 0 2px;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.chzn-container-single .chzn-search {
|
||||
padding: 3px 4px;
|
||||
position: relative;
|
||||
margin: 0;
|
||||
white-space: nowrap;
|
||||
z-index: 1010;
|
||||
}
|
||||
.chzn-container-single .chzn-search input {
|
||||
margin: 1px 0;
|
||||
padding: 4px 20px 4px 5px;
|
||||
outline: 0;
|
||||
}
|
||||
.chzn-container-single .chzn-default {
|
||||
color: #999;
|
||||
}
|
||||
.chzn-container-single .chzn-drop {
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding-box;
|
||||
background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
}
|
||||
.chzn-container-single.chzn-disabled .chzn-single abbr:hover {
|
||||
background-position: right top;
|
||||
}
|
||||
.chzn-container-single-nosearch .chzn-search input {
|
||||
position: absolute;
|
||||
left: -9000px;
|
||||
}
|
||||
.chzn-container-multi .chzn-choices {
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||
-moz-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 linear 0.2s;
|
||||
-moz-transition: border linear 0.2s;
|
||||
-o-transition: border linear 0.2s;
|
||||
transition: border linear 0.2s;
|
||||
-webkit-transition: box-shadow linear 0.2s;
|
||||
-moz-transition: box-shadow linear 0.2s;
|
||||
-o-transition: box-shadow linear 0.2s;
|
||||
transition: box-shadow linear 0.2s;
|
||||
background-color: #ffffff !important;
|
||||
border: 1px solid #cccccc;
|
||||
cursor: text;
|
||||
overflow: hidden;
|
||||
height: auto !important;
|
||||
height: 1%;
|
||||
position: relative;
|
||||
display: block;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
color: #555555;
|
||||
}
|
||||
.chzn-container-multi .chzn-choices li {
|
||||
float: left;
|
||||
list-style: none;
|
||||
}
|
||||
.chzn-container-multi .chzn-choices .search-field {
|
||||
white-space: nowrap;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.chzn-container-multi .chzn-choices .search-field input {
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
color: #555555;
|
||||
background: transparent !important;
|
||||
border: 0 !important;
|
||||
font-family: sans-serif;
|
||||
font-size: 100%;
|
||||
height: 15px;
|
||||
padding: 5px;
|
||||
margin: 1px 0 2px;
|
||||
outline: 0;
|
||||
}
|
||||
.chzn-container-multi .chzn-choices .search-field .default {
|
||||
color: #999;
|
||||
}
|
||||
.chzn-container-multi .chzn-choices .search-choice {
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
|
||||
-moz-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
|
||||
box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
|
||||
background-color: #f6f6f6;
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(50%, #f6f6f6), to(#f4f4f4));
|
||||
background-image: -webkit-linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);
|
||||
background-image: -moz-linear-gradient(top, #ffffff, #f6f6f6 50%, #f4f4f4);
|
||||
background-image: -o-linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);
|
||||
background-image: linear-gradient(#ffffff, #f6f6f6 50%, #f4f4f4);
|
||||
background-repeat: no-repeat;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff4f4f4', GradientType=0);
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding-box;
|
||||
background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
color: #555555;
|
||||
border: 1px solid #999999;
|
||||
line-height: 13px;
|
||||
padding: 3px 20px 3px 5px;
|
||||
margin: 3px 0 3px 5px;
|
||||
position: relative;
|
||||
cursor: default;
|
||||
}
|
||||
.chzn-container-multi .chzn-choices .search-choice .search-choice-close {
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 3px;
|
||||
top: 4px;
|
||||
width: 12px;
|
||||
height: 13px;
|
||||
font-size: 1px;
|
||||
background: url("../image/chosen-sprite.png") right top no-repeat;
|
||||
}
|
||||
.chzn-container-multi .chzn-choices .search-choice .search-choice-close:hover {
|
||||
background-position: right -11px;
|
||||
}
|
||||
.chzn-container-multi .chzn-choices .search-choice.search-choice-disabled {
|
||||
background-color: #eeeeee;
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), color-stop(50%, #f0f0f0), to(#e8e8e8));
|
||||
background-image: -webkit-linear-gradient(#f4f4f4, #f0f0f0 50%, #e8e8e8);
|
||||
background-image: -moz-linear-gradient(top, #f4f4f4, #f0f0f0 50%, #e8e8e8);
|
||||
background-image: -o-linear-gradient(#f4f4f4, #f0f0f0 50%, #e8e8e8);
|
||||
background-image: linear-gradient(#f4f4f4, #f0f0f0 50%, #e8e8e8);
|
||||
background-repeat: no-repeat;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff4f4f4', endColorstr='#ffe8e8e8', GradientType=0);
|
||||
color: #666;
|
||||
border: 1px solid #cccccc;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.chzn-container-multi .chzn-choices .search-choice-focus {
|
||||
background: #d4d4d4;
|
||||
}
|
||||
.chzn-container-multi .chzn-choices .search-choice-focus .search-choice-close {
|
||||
background-position: right -11px;
|
||||
}
|
||||
.chzn-container .chzn-results {
|
||||
margin: 0 4px 4px 0;
|
||||
max-height: 240px;
|
||||
padding: 0 0 0 4px;
|
||||
position: relative;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
.chzn-container .chzn-results li {
|
||||
display: none;
|
||||
line-height: 15px;
|
||||
padding: 5px 6px;
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
}
|
||||
.chzn-container .chzn-results li em {
|
||||
background: #feffde;
|
||||
font-style: normal;
|
||||
}
|
||||
.chzn-container .chzn-results .no-results {
|
||||
background: #f4f4f4;
|
||||
display: list-item;
|
||||
}
|
||||
.chzn-container .chzn-results .group-result {
|
||||
cursor: default;
|
||||
color: #999;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chzn-container .chzn-results .group-option {
|
||||
padding-left: 15px;
|
||||
}
|
||||
.chzn-container .chzn-results .active-result {
|
||||
cursor: pointer;
|
||||
display: list-item;
|
||||
}
|
||||
.chzn-container .chzn-results .highlighted {
|
||||
background-color: #326dcc;
|
||||
background-image: -moz-linear-gradient(top, #3875d7, #2a62bc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3875d7), to(#2a62bc));
|
||||
background-image: -webkit-linear-gradient(top, #3875d7, #2a62bc);
|
||||
background-image: -o-linear-gradient(top, #3875d7, #2a62bc);
|
||||
background-image: linear-gradient(to bottom, #3875d7, #2a62bc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3875d7', endColorstr='#ff2a62bc', GradientType=0);
|
||||
color: #fff;
|
||||
}
|
||||
.chzn-container .chzn-results .highlighted em {
|
||||
background: transparent;
|
||||
}
|
||||
.chzn-container .chzn-results-scroll {
|
||||
background: white;
|
||||
margin: 0 4px;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: 321px;
|
||||
/* This should by dynamic with js */
|
||||
|
||||
z-index: 1;
|
||||
}
|
||||
.chzn-container .chzn-results-scroll span {
|
||||
display: inline-block;
|
||||
height: 17px;
|
||||
text-indent: -5000px;
|
||||
width: 9px;
|
||||
}
|
||||
.chzn-container .chzn-results-scroll-down {
|
||||
bottom: 0;
|
||||
}
|
||||
.chzn-container .chzn-results-scroll-down span {
|
||||
background: url("../image/chosen-sprite.png") no-repeat -4px -3px;
|
||||
}
|
||||
.chzn-container .chzn-results-scroll-up span {
|
||||
background: url("../image/chosen-sprite.png") no-repeat -22px -3px;
|
||||
}
|
||||
.chzn-container-multi .chzn-results {
|
||||
margin: 4px;
|
||||
padding: 0;
|
||||
}
|
||||
.chzn-container-multi .chzn-drop .result-selected {
|
||||
display: none;
|
||||
}
|
||||
.chzn-container-active .chzn-single {
|
||||
border: 1px solid #CCC;
|
||||
}
|
||||
.chzn-container-active .chzn-single .chzn-drop {
|
||||
margin-top: -29px;
|
||||
}
|
||||
.chzn-container-active .chzn-single-with-drop {
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
border-color: #CCC;
|
||||
}
|
||||
.chzn-container-active .chzn-single-with-drop div {
|
||||
background: transparent;
|
||||
border-left: none;
|
||||
}
|
||||
.chzn-container-active .chzn-single-with-drop div b {
|
||||
background-position: -18px 1px;
|
||||
}
|
||||
.chzn-container-active .chzn-choices {
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
|
||||
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
|
||||
border: 1px solid rgba(82, 168, 236, 0.8);
|
||||
outline: 0;
|
||||
outline: thin dotted \9;
|
||||
/* IE6-9 */
|
||||
|
||||
}
|
||||
.chzn-container-active .chzn-choices .search-field input {
|
||||
color: #111 !important;
|
||||
}
|
||||
.chzn-disabled {
|
||||
opacity: 0.005;
|
||||
filter: alpha(opacity=0.5);
|
||||
cursor: default;
|
||||
}
|
||||
.chzn-disabled .chzn-single {
|
||||
cursor: default;
|
||||
}
|
||||
.chzn-disabled .search-choice-close {
|
||||
cursor: default;
|
||||
}
|
||||
.chzn-rtl {
|
||||
text-align: right;
|
||||
}
|
||||
.chzn-rtl .chzn-single {
|
||||
padding: 0 8px 0 0;
|
||||
overflow: visible;
|
||||
}
|
||||
.chzn-rtl .chzn-single span {
|
||||
margin-left: 26px;
|
||||
margin-right: 0;
|
||||
direction: rtl;
|
||||
}
|
||||
.chzn-rtl .chzn-single div {
|
||||
left: 3px;
|
||||
right: auto;
|
||||
}
|
||||
.chzn-rtl .chzn-single abbr {
|
||||
left: 26px;
|
||||
right: auto;
|
||||
}
|
||||
.chzn-rtl .chzn-choices li {
|
||||
float: right;
|
||||
}
|
||||
.chzn-rtl .chzn-choices .search-field input {
|
||||
direction: rtl;
|
||||
}
|
||||
.chzn-rtl .chzn-choices .search-choice {
|
||||
padding: 3px 5px 3px 19px;
|
||||
margin: 3px 5px 3px 0;
|
||||
}
|
||||
.chzn-rtl .chzn-choices .search-choice .search-choice-close {
|
||||
left: 4px;
|
||||
right: auto;
|
||||
background-position: right top;
|
||||
}
|
||||
.chzn-rtl .chzn-results .group-option {
|
||||
padding-left: 0;
|
||||
padding-right: 15px;
|
||||
}
|
||||
.chzn-rtl .chzn-search input {
|
||||
padding: 4px 5px 4px 20px;
|
||||
direction: rtl;
|
||||
}
|
||||
.chzn-rtl.chzn-container-single .chzn-results {
|
||||
margin: 0 0 4px 4px;
|
||||
padding: 0 4px 0 0;
|
||||
}
|
||||
.chzn-rtl.chzn-container-active .chzn-single-with-drop div {
|
||||
border-right: none;
|
||||
}
|
@ -0,0 +1,229 @@
|
||||
.clearfix {
|
||||
*zoom: 1;
|
||||
}
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
display: table;
|
||||
content: "";
|
||||
line-height: 0;
|
||||
}
|
||||
.clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
.hide-text {
|
||||
font: 0/0 a;
|
||||
color: transparent;
|
||||
text-shadow: none;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
}
|
||||
.input-block-level {
|
||||
display: block;
|
||||
width: 100%;
|
||||
min-height: 30px;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.clockface {
|
||||
width: 160px;
|
||||
padding: 3px;
|
||||
text-align: center;
|
||||
/*
|
||||
.l3 .center span {
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
.ie7-inline-block();
|
||||
padding: 0 2px;
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
input {
|
||||
width: 20px;
|
||||
margin: 0;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
padding: 0 3px;
|
||||
vertical-align: top;
|
||||
font-size: 0.85em;
|
||||
.border-radius(3px);
|
||||
|
||||
&.am {margin-right: 8px;}
|
||||
|
||||
&.active,
|
||||
&.active:hover {
|
||||
.buttonBackground(@btnSuccessBackground, spin(@btnSuccessBackground, 20));
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
.clockface > div {
|
||||
clear: both;
|
||||
overflow: auto;
|
||||
}
|
||||
.clockface .outer,
|
||||
.clockface .inner {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
line-height: 22px;
|
||||
cursor: default;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.clockface .outer.active,
|
||||
.clockface .inner.active,
|
||||
.clockface .outer.active:hover,
|
||||
.clockface .inner.active:hover {
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.clockface .outer:hover,
|
||||
.clockface .inner:hover {
|
||||
background-color: #dcdcdc;
|
||||
}
|
||||
.clockface .outer {
|
||||
color: gray;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
.clockface .outer.active,
|
||||
.clockface .outer.active:hover {
|
||||
color: #ffffff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
background-color: #5bb75b;
|
||||
background-image: -moz-linear-gradient(top, #62c462, #51a351);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
|
||||
background-image: -webkit-linear-gradient(top, #62c462, #51a351);
|
||||
background-image: -o-linear-gradient(top, #62c462, #51a351);
|
||||
background-image: linear-gradient(to bottom, #62c462, #51a351);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
|
||||
border-color: #51a351 #51a351 #387038;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
*background-color: #51a351;
|
||||
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
||||
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
}
|
||||
.clockface .outer.active:hover,
|
||||
.clockface .outer.active:hover:hover,
|
||||
.clockface .outer.active:active,
|
||||
.clockface .outer.active:hover:active,
|
||||
.clockface .outer.active.active,
|
||||
.clockface .outer.active:hover.active,
|
||||
.clockface .outer.active.disabled,
|
||||
.clockface .outer.active:hover.disabled,
|
||||
.clockface .outer.active[disabled],
|
||||
.clockface .outer.active:hover[disabled] {
|
||||
color: #ffffff;
|
||||
background-color: #51a351;
|
||||
*background-color: #499249;
|
||||
}
|
||||
.clockface .outer.active:active,
|
||||
.clockface .outer.active:hover:active,
|
||||
.clockface .outer.active.active,
|
||||
.clockface .outer.active:hover.active {
|
||||
background-color: #408140 \9;
|
||||
}
|
||||
.clockface .inner.active,
|
||||
.clockface .inner.active:hover {
|
||||
color: #ffffff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(to bottom, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
*background-color: #0044cc;
|
||||
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
|
||||
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
}
|
||||
.clockface .inner.active:hover,
|
||||
.clockface .inner.active:hover:hover,
|
||||
.clockface .inner.active:active,
|
||||
.clockface .inner.active:hover:active,
|
||||
.clockface .inner.active.active,
|
||||
.clockface .inner.active:hover.active,
|
||||
.clockface .inner.active.disabled,
|
||||
.clockface .inner.active:hover.disabled,
|
||||
.clockface .inner.active[disabled],
|
||||
.clockface .inner.active:hover[disabled] {
|
||||
color: #ffffff;
|
||||
background-color: #0044cc;
|
||||
*background-color: #003bb3;
|
||||
}
|
||||
.clockface .inner.active:active,
|
||||
.clockface .inner.active:hover:active,
|
||||
.clockface .inner.active.active,
|
||||
.clockface .inner.active:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.clockface .l1 .cell,
|
||||
.clockface .l5 .cell {
|
||||
width: 22px;
|
||||
display: inline-block;
|
||||
*display: inline;
|
||||
/* IE7 inline-block hack */
|
||||
|
||||
*zoom: 1;
|
||||
}
|
||||
.clockface .l1 .outer {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
.clockface .l5 .outer {
|
||||
margin-top: 3px;
|
||||
}
|
||||
.clockface .l2 .outer,
|
||||
.clockface .l3 .outer,
|
||||
.clockface .l4 .outer,
|
||||
.clockface .l2 .inner,
|
||||
.clockface .l3 .inner,
|
||||
.clockface .l4 .inner {
|
||||
display: inline-block;
|
||||
*display: inline;
|
||||
/* IE7 inline-block hack */
|
||||
|
||||
*zoom: 1;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.clockface .l2 .left,
|
||||
.clockface .l3 .left,
|
||||
.clockface .l4 .left {
|
||||
float: left;
|
||||
}
|
||||
.clockface .l2 .left .outer,
|
||||
.clockface .l3 .left .outer,
|
||||
.clockface .l4 .left .outer {
|
||||
margin-right: 3px;
|
||||
}
|
||||
.clockface .l2 .right,
|
||||
.clockface .l3 .right,
|
||||
.clockface .l4 .right {
|
||||
float: right;
|
||||
}
|
||||
.clockface .l2 .right .outer,
|
||||
.clockface .l3 .right .outer,
|
||||
.clockface .l4 .right .outer {
|
||||
margin-left: 3px;
|
||||
}
|
||||
.clockface .ampm {
|
||||
font-size: 0.8em;
|
||||
text-decoration: none;
|
||||
border-bottom: dashed 1px;
|
||||
}
|
||||
.clockface .ampm:focus {
|
||||
outline: 0;
|
||||
outline: thin dotted \9;
|
||||
/* IE6-9 */
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
/*
|
||||
Colorpicker for Bootstrap
|
||||
Copyright 2012 Stefan Petre
|
||||
Licensed under the Apache License v2.0
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
.colorpicker-saturation { width: 100px; height: 100px; background-image: url(../image/saturation.png); cursor: crosshair; float: left; } .colorpicker-saturation i { display: block; height: 5px; width: 5px; border: 1px solid #000; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; position: absolute; top: 0; left: 0; margin: -4px 0 0 -4px; } .colorpicker-saturation i b { display: block; height: 5px; width: 5px; border: 1px solid #fff; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .colorpicker-hue, .colorpicker-alpha { width: 15px; height: 100px; float: left; cursor: row-resize; margin-left: 4px; margin-bottom: 4px; } .colorpicker-hue i, .colorpicker-alpha i { display: block; height: 1px; background: #000; border-top: 1px solid #fff; position: absolute; top: 0; left: 0; width: 100%; margin-top: -1px; } .colorpicker-hue { background-image: url(../image/hue.png); } .colorpicker-alpha { background-image: url(../image/alpha.png); display: none; } .colorpicker { *zoom: 1; top: 0; left: 0; padding: 4px; min-width: 120px; margin-top: 1px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .colorpicker:before, .colorpicker:after { display: table; content: ""; } .colorpicker:after { clear: both; } .colorpicker:before { content: ''; display: inline-block; border-left: 7px solid transparent; border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-bottom-color: rgba(0, 0, 0, 0.2); position: absolute; top: -7px; left: 6px; } .colorpicker:after { content: ''; display: inline-block; border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid #ffffff; position: absolute; top: -6px; left: 7px; } .colorpicker div { position: relative; } .colorpicker.alpha { min-width: 140px; } .colorpicker.alpha .colorpicker-alpha { display: block; } .colorpicker-color { height: 10px; margin-top: 5px; clear: both; background-image: url(../image/alpha.png); background-position: 0 100%; } .colorpicker-color div { height: 10px; } .input-append.color .add-on i, .input-prepend.color .add-on i { display: block; cursor: pointer; width: 16px; height: 16px; }
|
@ -0,0 +1,114 @@
|
||||
/***
|
||||
Coming Soon Page
|
||||
***/
|
||||
body {
|
||||
background-color: #ddd;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.coming-soon-header {
|
||||
padding: 20px;
|
||||
margin-top: 80px;
|
||||
}
|
||||
|
||||
.coming-soon-content {
|
||||
padding: 20px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.coming-soon-countdown {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.coming-soon-content h1,
|
||||
.coming-soon-content p {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.coming-soon-content h1 {
|
||||
font-size: 42px;
|
||||
line-height: 50px;
|
||||
margin-bottom: 15px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.coming-soon-content p {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
|
||||
.coming-soon-content input {
|
||||
background: #fff !important;
|
||||
}
|
||||
|
||||
.coming-soon-footer {
|
||||
text-align: left !important;
|
||||
font-size: 12px;
|
||||
color: #333;
|
||||
padding: 20px 20px 20px 20px;
|
||||
}
|
||||
|
||||
/*Countdown*/
|
||||
#defaultCountdown {
|
||||
width: 100%;
|
||||
margin: 10px 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#defaultCountdown span.countdown_row {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#defaultCountdown span.countdown_row span {
|
||||
font-size: 16px;
|
||||
font-weight: 300;
|
||||
line-height: 20px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
#defaultCountdown span.countdown_row > span {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#defaultCountdown span.countdown_section {
|
||||
color: #fff;
|
||||
padding: 7px 15px !important;
|
||||
margin-bottom: 2px;
|
||||
font-weight: 300;
|
||||
background: url(../image/bg-white.png) repeat;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#defaultCountdown span.countdown_amount {
|
||||
display: inline-block;
|
||||
font-size: 38px !important;
|
||||
padding: 15px !important;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
/*Responsive*/
|
||||
@media (max-width: 1024px) {
|
||||
#defaultCountdown span.countdown_amount {
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
|
||||
.coming-soon-header,
|
||||
.coming-soon-countdown,
|
||||
.coming-soon-content,
|
||||
.coming-soon-footer {
|
||||
margin-top: 0px;
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 320px) {
|
||||
|
||||
.coming-soon-content .btn-subscribe span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,449 @@
|
||||
/*!
|
||||
* Datepicker for Bootstrap
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*/
|
||||
.datepicker {
|
||||
padding: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
/*.dow {
|
||||
border-top: 1px solid #ddd !important;
|
||||
}*/
|
||||
|
||||
}
|
||||
.datepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
.datepicker.datepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.datepicker.datepicker-rtl table tr td span {
|
||||
float: right;
|
||||
}
|
||||
.datepicker-dropdown {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
.datepicker-dropdown:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
top: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
.datepicker-dropdown:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #ffffff;
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
.datepicker > div {
|
||||
display: none;
|
||||
}
|
||||
.datepicker.days div.datepicker-days {
|
||||
display: block;
|
||||
}
|
||||
.datepicker.months div.datepicker-months {
|
||||
display: block;
|
||||
}
|
||||
.datepicker.years div.datepicker-years {
|
||||
display: block;
|
||||
}
|
||||
.datepicker table {
|
||||
margin: 0;
|
||||
}
|
||||
.datepicker td,
|
||||
.datepicker th {
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
}
|
||||
.table-striped .datepicker table tr td,
|
||||
.table-striped .datepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
.datepicker table tr td.day:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker table tr td.old,
|
||||
.datepicker table tr td.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datepicker table tr td.disabled,
|
||||
.datepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td.today,
|
||||
.datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today.disabled:hover {
|
||||
background-color: #fde19a;
|
||||
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
|
||||
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
|
||||
border-color: #fdf59a #fdf59a #fbed50;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #000;
|
||||
}
|
||||
.datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today:hover:hover,
|
||||
.datepicker table tr td.today.disabled:hover,
|
||||
.datepicker table tr td.today.disabled:hover:hover,
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today:hover:active,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.active,
|
||||
.datepicker table tr td.today:hover.active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.active,
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today:hover.disabled,
|
||||
.datepicker table tr td.today.disabled.disabled,
|
||||
.datepicker table tr td.today.disabled:hover.disabled,
|
||||
.datepicker table tr td.today[disabled],
|
||||
.datepicker table tr td.today:hover[disabled],
|
||||
.datepicker table tr td.today.disabled[disabled],
|
||||
.datepicker table tr td.today.disabled:hover[disabled] {
|
||||
background-color: #fdf59a;
|
||||
}
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today:hover:active,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.active,
|
||||
.datepicker table tr td.today:hover.active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.active {
|
||||
background-color: #fbf069 \9;
|
||||
}
|
||||
.datepicker table tr td.today:hover:hover {
|
||||
color: #000;
|
||||
}
|
||||
.datepicker table tr td.today.active:hover {
|
||||
color: #fff;
|
||||
}
|
||||
.datepicker table tr td.range,
|
||||
.datepicker table tr td.range:hover,
|
||||
.datepicker table tr td.range.disabled,
|
||||
.datepicker table tr td.range.disabled:hover {
|
||||
background: #eeeeee;
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range.today,
|
||||
.datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today.disabled:hover {
|
||||
background-color: #f3d17a;
|
||||
background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
|
||||
background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);
|
||||
border-color: #f3e97a #f3e97a #edde34;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today:hover:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover:hover,
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today:hover:active,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.active,
|
||||
.datepicker table tr td.range.today:hover.active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.active,
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today:hover.disabled,
|
||||
.datepicker table tr td.range.today.disabled.disabled,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled,
|
||||
.datepicker table tr td.range.today[disabled],
|
||||
.datepicker table tr td.range.today:hover[disabled],
|
||||
.datepicker table tr td.range.today.disabled[disabled],
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled] {
|
||||
background-color: #f3e97a;
|
||||
}
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today:hover:active,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.active,
|
||||
.datepicker table tr td.range.today:hover.active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.active {
|
||||
background-color: #efe24b \9;
|
||||
}
|
||||
.datepicker table tr td.selected,
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected.disabled,
|
||||
.datepicker table tr td.selected.disabled:hover {
|
||||
background-color: #9e9e9e;
|
||||
background-image: -moz-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: -ms-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));
|
||||
background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: -o-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: linear-gradient(top, #b3b3b3, #808080);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);
|
||||
border-color: #808080 #808080 #595959;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected:hover:hover,
|
||||
.datepicker table tr td.selected.disabled:hover,
|
||||
.datepicker table tr td.selected.disabled:hover:hover,
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected:hover:active,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected:hover.active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.active,
|
||||
.datepicker table tr td.selected.disabled,
|
||||
.datepicker table tr td.selected:hover.disabled,
|
||||
.datepicker table tr td.selected.disabled.disabled,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled,
|
||||
.datepicker table tr td.selected[disabled],
|
||||
.datepicker table tr td.selected:hover[disabled],
|
||||
.datepicker table tr td.selected.disabled[disabled],
|
||||
.datepicker table tr td.selected.disabled:hover[disabled] {
|
||||
background-color: #808080;
|
||||
}
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected:hover:active,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected:hover.active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.active {
|
||||
background-color: #666666 \9;
|
||||
}
|
||||
.datepicker table tr td.active,
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active.disabled,
|
||||
.datepicker table tr td.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active:hover:hover,
|
||||
.datepicker table tr td.active.disabled:hover,
|
||||
.datepicker table tr td.active.disabled:hover:hover,
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active:hover:active,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active:hover.active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.active,
|
||||
.datepicker table tr td.active.disabled,
|
||||
.datepicker table tr td.active:hover.disabled,
|
||||
.datepicker table tr td.active.disabled.disabled,
|
||||
.datepicker table tr td.active.disabled:hover.disabled,
|
||||
.datepicker table tr td.active[disabled],
|
||||
.datepicker table tr td.active:hover[disabled],
|
||||
.datepicker table tr td.active.disabled[disabled],
|
||||
.datepicker table tr td.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active:hover:active,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active:hover.active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datepicker table tr td span {
|
||||
display: block;
|
||||
width: 23%;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
cursor: pointer;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.datepicker table tr td span:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker table tr td span.disabled,
|
||||
.datepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td span.active,
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active:hover:hover,
|
||||
.datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover:hover,
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active,
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active:hover.disabled,
|
||||
.datepicker table tr td span.active.disabled.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled,
|
||||
.datepicker table tr td span.active[disabled],
|
||||
.datepicker table tr td span.active:hover[disabled],
|
||||
.datepicker table tr td span.active.disabled[disabled],
|
||||
.datepicker table tr td span.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datepicker table tr td span.old,
|
||||
.datepicker table tr td span.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datepicker th.datepicker-switch {
|
||||
width: 145px;
|
||||
}
|
||||
.datepicker thead tr:first-child th,
|
||||
.datepicker tfoot tr th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker thead tr:first-child th:hover,
|
||||
.datepicker tfoot tr th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker .cw {
|
||||
font-size: 10px;
|
||||
width: 12px;
|
||||
padding: 0 2px 0 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.datepicker thead tr:first-child th.cw {
|
||||
cursor: default;
|
||||
background-color: transparent;
|
||||
}
|
||||
.input-append.date .add-on i,
|
||||
.input-prepend.date .add-on i {
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.input-daterange input {
|
||||
text-align: center;
|
||||
}
|
||||
.input-daterange input:first-child {
|
||||
-webkit-border-radius: 3px 0 0 3px;
|
||||
-moz-border-radius: 3px 0 0 3px;
|
||||
border-radius: 3px 0 0 3px;
|
||||
}
|
||||
.input-daterange input:last-child {
|
||||
-webkit-border-radius: 0 3px 3px 0;
|
||||
-moz-border-radius: 0 3px 3px 0;
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
.input-daterange .add-on {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
min-width: 16px;
|
||||
height: 18px;
|
||||
padding: 4px 5px;
|
||||
font-weight: normal;
|
||||
line-height: 18px;
|
||||
text-align: center;
|
||||
text-shadow: 0 1px 0 #ffffff;
|
||||
vertical-align: middle;
|
||||
background-color: #eeeeee;
|
||||
border: 1px solid #ccc;
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
}
|
@ -0,0 +1,188 @@
|
||||
.daterangepicker.dropdown-menu {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar {
|
||||
float: left;
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar {
|
||||
float: right;
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges {
|
||||
width: 160px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges .range_inputs>div {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges .range_inputs>div:nth-child(2) {
|
||||
padding-left: 11px;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar {
|
||||
display: none;
|
||||
max-width: 230px;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar th, .daterangepicker .calendar td {
|
||||
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges label {
|
||||
color: #333;
|
||||
font-size: 11px;
|
||||
margin-bottom: 2px;
|
||||
text-transform: uppercase;
|
||||
text-shadow: 1px 1px 0 #fff;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges input {
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges ul {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges li {
|
||||
font-size: 13px;
|
||||
background: #f5f5f5;
|
||||
border: 1px solid #f5f5f5;
|
||||
color: #08c;
|
||||
padding: 3px 12px;
|
||||
margin-bottom: 8px;
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover {
|
||||
background: #08c;
|
||||
border: 1px solid #08c;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar {
|
||||
border: 1px solid #ddd;
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.daterangepicker {
|
||||
position: absolute;
|
||||
background: #fff;
|
||||
top: 100px;
|
||||
left: 20px;
|
||||
padding: 4px;
|
||||
margin-top: 1px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.daterangepicker.opensleft:before {
|
||||
position: absolute;
|
||||
top: -7px;
|
||||
right: 9px;
|
||||
display: inline-block;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-left: 7px solid transparent;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
content: '';
|
||||
}
|
||||
|
||||
.daterangepicker.opensleft:after {
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
right: 10px;
|
||||
display: inline-block;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #fff;
|
||||
border-left: 6px solid transparent;
|
||||
content: '';
|
||||
}
|
||||
|
||||
.daterangepicker.opensright:before {
|
||||
position: absolute;
|
||||
top: -7px;
|
||||
left: 9px;
|
||||
display: inline-block;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-left: 7px solid transparent;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
content: '';
|
||||
}
|
||||
|
||||
.daterangepicker.opensright:after {
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
left: 10px;
|
||||
display: inline-block;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #fff;
|
||||
border-left: 6px solid transparent;
|
||||
content: '';
|
||||
}
|
||||
|
||||
.daterangepicker table {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.daterangepicker td, .daterangepicker th {
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.daterangepicker td.off {
|
||||
color: #999;
|
||||
}
|
||||
.daterangepicker td.disabled {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
|
||||
background: #eee;
|
||||
}
|
||||
|
||||
.daterangepicker td.active, .daterangepicker td.active:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
|
||||
.daterangepicker td.week, .daterangepicker th.week {
|
||||
font-size: 80%;
|
||||
color: #ccc;
|
||||
}
|
@ -0,0 +1,366 @@
|
||||
/*!
|
||||
* Datetimepicker for Bootstrap
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*/
|
||||
.datetimepicker {
|
||||
padding: 4px;
|
||||
margin-top: 1px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
/*.dow {
|
||||
border-top: 1px solid #ddd !important;
|
||||
}*/
|
||||
|
||||
}
|
||||
.datetimepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
.datetimepicker.datetimepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.datetimepicker.datetimepicker-rtl table tr td span {
|
||||
float: right;
|
||||
}
|
||||
.datetimepicker-dropdown, .datetimepicker-dropdown-left {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
[class*=" datetimepicker-dropdown"]:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
}
|
||||
[class*=" datetimepicker-dropdown"]:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #ffffff;
|
||||
position: absolute;
|
||||
}
|
||||
[class*=" datetimepicker-dropdown-top"]:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-top: 7px solid #ccc;
|
||||
border-top-color: rgba(0, 0, 0, 0.2);
|
||||
border-bottom: 0;
|
||||
}
|
||||
[class*=" datetimepicker-dropdown-top"]:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid #ffffff;
|
||||
border-bottom: 0;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-right:before {
|
||||
top: -7px;
|
||||
right: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-right:after {
|
||||
top: -6px;
|
||||
right: 7px;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-left:before {
|
||||
top: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-left:after {
|
||||
top: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-right:before {
|
||||
bottom: -7px;
|
||||
right: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-right:after {
|
||||
bottom: -6px;
|
||||
right: 7px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-left:before {
|
||||
bottom: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-left:after {
|
||||
bottom: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
.datetimepicker > div {
|
||||
display: none;
|
||||
}
|
||||
.datetimepicker.minutes div.datetimepicker-minutes {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.hours div.datetimepicker-hours {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.days div.datetimepicker-days {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.months div.datetimepicker-months {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.years div.datetimepicker-years {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker table {
|
||||
margin: 0;
|
||||
}
|
||||
.datetimepicker td,
|
||||
.datetimepicker th {
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
}
|
||||
.table-striped .datetimepicker table tr td,
|
||||
.table-striped .datetimepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
.datetimepicker table tr td.minute:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker table tr td.hour:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker table tr td.day:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker table tr td.old,
|
||||
.datetimepicker table tr td.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datetimepicker table tr td.disabled,
|
||||
.datetimepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datetimepicker table tr td.today,
|
||||
.datetimepicker table tr td.today:hover,
|
||||
.datetimepicker table tr td.today.disabled,
|
||||
.datetimepicker table tr td.today.disabled:hover {
|
||||
background-color: #fde19a;
|
||||
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
|
||||
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
|
||||
border-color: #fdf59a #fdf59a #fbed50;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
.datetimepicker table tr td.today:hover,
|
||||
.datetimepicker table tr td.today:hover:hover,
|
||||
.datetimepicker table tr td.today.disabled:hover,
|
||||
.datetimepicker table tr td.today.disabled:hover:hover,
|
||||
.datetimepicker table tr td.today:active,
|
||||
.datetimepicker table tr td.today:hover:active,
|
||||
.datetimepicker table tr td.today.disabled:active,
|
||||
.datetimepicker table tr td.today.disabled:hover:active,
|
||||
.datetimepicker table tr td.today.active,
|
||||
.datetimepicker table tr td.today:hover.active,
|
||||
.datetimepicker table tr td.today.disabled.active,
|
||||
.datetimepicker table tr td.today.disabled:hover.active,
|
||||
.datetimepicker table tr td.today.disabled,
|
||||
.datetimepicker table tr td.today:hover.disabled,
|
||||
.datetimepicker table tr td.today.disabled.disabled,
|
||||
.datetimepicker table tr td.today.disabled:hover.disabled,
|
||||
.datetimepicker table tr td.today[disabled],
|
||||
.datetimepicker table tr td.today:hover[disabled],
|
||||
.datetimepicker table tr td.today.disabled[disabled],
|
||||
.datetimepicker table tr td.today.disabled:hover[disabled] {
|
||||
background-color: #fdf59a;
|
||||
}
|
||||
.datetimepicker table tr td.today:active,
|
||||
.datetimepicker table tr td.today:hover:active,
|
||||
.datetimepicker table tr td.today.disabled:active,
|
||||
.datetimepicker table tr td.today.disabled:hover:active,
|
||||
.datetimepicker table tr td.today.active,
|
||||
.datetimepicker table tr td.today:hover.active,
|
||||
.datetimepicker table tr td.today.disabled.active,
|
||||
.datetimepicker table tr td.today.disabled:hover.active {
|
||||
background-color: #fbf069 \9;
|
||||
}
|
||||
.datetimepicker table tr td.active,
|
||||
.datetimepicker table tr td.active:hover,
|
||||
.datetimepicker table tr td.active.disabled,
|
||||
.datetimepicker table tr td.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datetimepicker table tr td.active:hover,
|
||||
.datetimepicker table tr td.active:hover:hover,
|
||||
.datetimepicker table tr td.active.disabled:hover,
|
||||
.datetimepicker table tr td.active.disabled:hover:hover,
|
||||
.datetimepicker table tr td.active:active,
|
||||
.datetimepicker table tr td.active:hover:active,
|
||||
.datetimepicker table tr td.active.disabled:active,
|
||||
.datetimepicker table tr td.active.disabled:hover:active,
|
||||
.datetimepicker table tr td.active.active,
|
||||
.datetimepicker table tr td.active:hover.active,
|
||||
.datetimepicker table tr td.active.disabled.active,
|
||||
.datetimepicker table tr td.active.disabled:hover.active,
|
||||
.datetimepicker table tr td.active.disabled,
|
||||
.datetimepicker table tr td.active:hover.disabled,
|
||||
.datetimepicker table tr td.active.disabled.disabled,
|
||||
.datetimepicker table tr td.active.disabled:hover.disabled,
|
||||
.datetimepicker table tr td.active[disabled],
|
||||
.datetimepicker table tr td.active:hover[disabled],
|
||||
.datetimepicker table tr td.active.disabled[disabled],
|
||||
.datetimepicker table tr td.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datetimepicker table tr td.active:active,
|
||||
.datetimepicker table tr td.active:hover:active,
|
||||
.datetimepicker table tr td.active.disabled:active,
|
||||
.datetimepicker table tr td.active.disabled:hover:active,
|
||||
.datetimepicker table tr td.active.active,
|
||||
.datetimepicker table tr td.active:hover.active,
|
||||
.datetimepicker table tr td.active.disabled.active,
|
||||
.datetimepicker table tr td.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datetimepicker table tr td span {
|
||||
display: block;
|
||||
width: 23%;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
cursor: pointer;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours span {
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours table tr td span.hour_am,
|
||||
.datetimepicker .datetimepicker-hours table tr td span.hour_pm {
|
||||
width: 14.6%;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours fieldset legend,
|
||||
.datetimepicker .datetimepicker-minutes fieldset legend {
|
||||
margin-bottom: inherit;
|
||||
line-height: 30px;
|
||||
}
|
||||
.datetimepicker .datetimepicker-minutes span {
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
}
|
||||
.datetimepicker table tr td span:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datetimepicker table tr td span.disabled,
|
||||
.datetimepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datetimepicker table tr td span.active,
|
||||
.datetimepicker table tr td span.active:hover,
|
||||
.datetimepicker table tr td span.active.disabled,
|
||||
.datetimepicker table tr td span.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datetimepicker table tr td span.active:hover,
|
||||
.datetimepicker table tr td span.active:hover:hover,
|
||||
.datetimepicker table tr td span.active.disabled:hover,
|
||||
.datetimepicker table tr td span.active.disabled:hover:hover,
|
||||
.datetimepicker table tr td span.active:active,
|
||||
.datetimepicker table tr td span.active:hover:active,
|
||||
.datetimepicker table tr td span.active.disabled:active,
|
||||
.datetimepicker table tr td span.active.disabled:hover:active,
|
||||
.datetimepicker table tr td span.active.active,
|
||||
.datetimepicker table tr td span.active:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled.active,
|
||||
.datetimepicker table tr td span.active.disabled:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled,
|
||||
.datetimepicker table tr td span.active:hover.disabled,
|
||||
.datetimepicker table tr td span.active.disabled.disabled,
|
||||
.datetimepicker table tr td span.active.disabled:hover.disabled,
|
||||
.datetimepicker table tr td span.active[disabled],
|
||||
.datetimepicker table tr td span.active:hover[disabled],
|
||||
.datetimepicker table tr td span.active.disabled[disabled],
|
||||
.datetimepicker table tr td span.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datetimepicker table tr td span.active:active,
|
||||
.datetimepicker table tr td span.active:hover:active,
|
||||
.datetimepicker table tr td span.active.disabled:active,
|
||||
.datetimepicker table tr td span.active.disabled:hover:active,
|
||||
.datetimepicker table tr td span.active.active,
|
||||
.datetimepicker table tr td span.active:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled.active,
|
||||
.datetimepicker table tr td span.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datetimepicker table tr td span.old {
|
||||
color: #999999;
|
||||
}
|
||||
.datetimepicker th.switch {
|
||||
width: 145px;
|
||||
}
|
||||
.datetimepicker thead tr:first-child th,
|
||||
.datetimepicker tfoot tr:first-child th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker thead tr:first-child th:hover,
|
||||
.datetimepicker tfoot tr:first-child th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.input-append.date .add-on i,
|
||||
.input-prepend.date .add-on i {
|
||||
cursor: pointer;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
@ -0,0 +1,289 @@
|
||||
/***
|
||||
Default theme
|
||||
***/
|
||||
/***
|
||||
Reset and overrides
|
||||
***/
|
||||
body {
|
||||
/*
|
||||
background-color: #3d3d3d !important;
|
||||
*/
|
||||
}
|
||||
/***
|
||||
Page header
|
||||
***/
|
||||
.header .navbar-inner {
|
||||
filter: none !important;
|
||||
background-image: none !important;
|
||||
background-color: #212121 !important;
|
||||
}
|
||||
.header .btn-navbar {
|
||||
background-color: #212121 !important;
|
||||
}
|
||||
.header .nav .dropdown-toggle:hover,
|
||||
.header .nav .dropdown.open .dropdown-toggle {
|
||||
background-color: #383838 !important;
|
||||
}
|
||||
.header .nav li.dropdown .dropdown-toggle i {
|
||||
color: #8a8a8a !important;
|
||||
}
|
||||
/***
|
||||
Page sidebar
|
||||
***/
|
||||
.page-sidebar {
|
||||
background-color: #3d3d3d;
|
||||
}
|
||||
ul.page-sidebar-menu > li > a {
|
||||
border-top: 1px solid #5c5c5c !important;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li:last-child > a {
|
||||
border-bottom: 1px solid transparent !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li a i {
|
||||
color: #969696;
|
||||
}
|
||||
ul.page-sidebar-menu > li.open > a,
|
||||
ul.page-sidebar-menu > li > a:hover,
|
||||
ul.page-sidebar-menu > li:hover > a {
|
||||
background: #303030;
|
||||
}
|
||||
ul.page-sidebar-menu > li.active > a {
|
||||
background: #e02222 !important;
|
||||
border-top-color: transparent !important;
|
||||
color: #ffffff;
|
||||
}
|
||||
ul.page-sidebar-menu > li.active > a i {
|
||||
color: #ffffff;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li:first-child > a {
|
||||
border-top: 0px !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li.active > a,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li > a:hover {
|
||||
color: #ffffff !important;
|
||||
background: #575757 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li > a:hover {
|
||||
background: #575757 !important;
|
||||
}
|
||||
/* 3rd level sub menu */
|
||||
ul.page-sidebar-menu > li > ul.sub-menu li > ul.sub-menu > li.active > a,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu li > ul.sub-menu > li > a:hover,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu li.open > a {
|
||||
color: #ffffff !important;
|
||||
background: #575757 !important;
|
||||
}
|
||||
/* font color for all sub menu links*/
|
||||
ul.page-sidebar-menu li > ul.sub-menu > li > a {
|
||||
color: #bdbdbd;
|
||||
}
|
||||
/* menu arrows */
|
||||
ul.page-sidebar-menu > li > a .arrow:before,
|
||||
ul.page-sidebar-menu > li > a .arrow.open:before {
|
||||
color: #7d7d7d !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu a .arrow:before,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu a .arrow.open:before {
|
||||
color: #707070 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > a > .arrow.open:before {
|
||||
color: #8a8a8a !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li.active > a .arrow:before,
|
||||
ul.page-sidebar-menu > li.active > a .arrow.open:before {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
/* sidebar search */
|
||||
.page-sidebar .sidebar-search input {
|
||||
background-color: #242424 !important;
|
||||
color: #7d7d7d;
|
||||
}
|
||||
.page-sidebar .sidebar-search input::-webkit-input-placeholder {
|
||||
color: #7d7d7d !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input:-moz-placeholder {
|
||||
color: #7d7d7d !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input:-ms-input-placeholder {
|
||||
color: #7d7d7d !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input {
|
||||
background-color: #3d3d3d !important;
|
||||
color: #bfbfbf !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search .input-box {
|
||||
border-bottom: 1px solid #7d7d7d !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search .submit {
|
||||
background-image: url(../image/search-icon.png);
|
||||
}
|
||||
/***
|
||||
Sidebar toggler
|
||||
***/
|
||||
.sidebar-toggler {
|
||||
background-image: url(../image/sidebar-toggler.jpg);
|
||||
background-color: #242424;
|
||||
}
|
||||
/* search box bg color on expanded */
|
||||
.page-sidebar-closed .page-sidebar .sidebar-search.open {
|
||||
background-color: #3d3d3d !important;
|
||||
}
|
||||
.page-sidebar-closed .page-sidebar .sidebar-search.open .remove {
|
||||
background-image: url("../image/sidebar-search-close.png");
|
||||
}
|
||||
/* sub menu bg color on hover menu item */
|
||||
.page-sidebar-closed ul.page-sidebar-menu > li:hover .sub-menu {
|
||||
background-color: #3d3d3d;
|
||||
}
|
||||
/***
|
||||
Horizontal Menu(new in v1.2)
|
||||
***/
|
||||
/*search*/
|
||||
.header .hor-menu .hor-menu-search-form-toggler.hide {
|
||||
background: #000000 url(../image/hor-menu-search-close.png) no-repeat center;
|
||||
}
|
||||
.header .hor-menu .search-form {
|
||||
background: #000000;
|
||||
}
|
||||
.header .hor-menu .search-form .btn {
|
||||
color: #d6d6d6;
|
||||
background: #000000 url(../image/search-icon.png) no-repeat center;
|
||||
}
|
||||
.header .hor-menu .search-form form input {
|
||||
color: #d6d6d6;
|
||||
}
|
||||
.header .hor-menu .search-form form input::-webkit-input-placeholder {
|
||||
/* WebKit browsers */
|
||||
|
||||
color: #d6d6d6;
|
||||
}
|
||||
.header .hor-menu .search-form form input:-moz-placeholder {
|
||||
/* Mozilla Firefox 4 to 18 */
|
||||
|
||||
color: #d6d6d6;
|
||||
}
|
||||
.header .hor-menu .search-form form input::-moz-placeholder {
|
||||
/* Mozilla Firefox 19+ */
|
||||
|
||||
color: #d6d6d6;
|
||||
}
|
||||
.header .hor-menu .search-form form input:-ms-input-placeholder {
|
||||
/* Internet Explorer 10+ */
|
||||
|
||||
color: #d6d6d6;
|
||||
}
|
||||
/***
|
||||
Footer
|
||||
***/
|
||||
.footer .footer-inner {
|
||||
color: #999999;
|
||||
}
|
||||
.footer .footer-tools .go-top {
|
||||
background-color: #4f4f4f;
|
||||
}
|
||||
.footer .footer-tools .go-top:hover {
|
||||
opacity: 0.7;
|
||||
filter: alpha(opacity=70);
|
||||
}
|
||||
.footer .footer-tools .go-top i {
|
||||
color: #8a8a8a;
|
||||
}
|
||||
/***
|
||||
Footer Layouts (new in v1.3)
|
||||
***/
|
||||
/* begin:fixed footer */
|
||||
.page-footer-fixed .footer {
|
||||
background-color: #242424;
|
||||
}
|
||||
.page-footer-fixed .footer .footer-inner {
|
||||
color: #999999;
|
||||
}
|
||||
.page-footer-fixed .footer .footer-tools .go-top {
|
||||
background-color: #4f4f4f;
|
||||
}
|
||||
.page-footer-fixed .footer .footer-tools .go-top i {
|
||||
color: #8a8a8a;
|
||||
}
|
||||
/* end:fixed footer */
|
||||
/***
|
||||
Gritter Notifications
|
||||
***/
|
||||
.gritter-top {
|
||||
background: url(../image/gritter.png) no-repeat left -30px !important;
|
||||
}
|
||||
.gritter-bottom {
|
||||
background: url(../image/gritter.png) no-repeat left bottom !important;
|
||||
}
|
||||
.gritter-item {
|
||||
display: block;
|
||||
background: url(../image/gritter.png) no-repeat left -40px !important;
|
||||
}
|
||||
.gritter-close {
|
||||
background: url(../image/gritter.png) no-repeat left top !important;
|
||||
}
|
||||
.gritter-title {
|
||||
text-shadow: none !important;
|
||||
/* Not supported by IE :( */
|
||||
|
||||
}
|
||||
/* for the light (white) version of the gritter notice */
|
||||
.gritter-light .gritter-item,
|
||||
.gritter-light .gritter-bottom,
|
||||
.gritter-light .gritter-top,
|
||||
.gritter-light .gritter-close {
|
||||
background-image: url(../image/gritter-light.png) !important;
|
||||
}
|
||||
.gritter-item-wrapper a {
|
||||
color: #18a5ed;
|
||||
}
|
||||
.gritter-item-wrapper a:hover {
|
||||
color: #0b6694;
|
||||
}
|
||||
/* begin: boxed page */
|
||||
@media (min-width: 980px) {
|
||||
.page-boxed {
|
||||
background-color: #2e2e2e !important;
|
||||
}
|
||||
.page-boxed .page-container {
|
||||
background-color: #3d3d3d;
|
||||
border-left: 1px solid #5e5e5e;
|
||||
border-bottom: 1px solid #5e5e5e;
|
||||
}
|
||||
.page-boxed.page-sidebar-fixed .page-container {
|
||||
border-left: 0;
|
||||
border-bottom: 0;
|
||||
}
|
||||
.page-boxed.page-sidebar-fixed .page-sidebar {
|
||||
border-left: 1px solid #5e5e5e;
|
||||
}
|
||||
.page-boxed.page-sidebar-fixed.page-footer-fixed .footer {
|
||||
background-color: #2e2e2e !important;
|
||||
}
|
||||
}
|
||||
/* end: boxed page */
|
||||
/***
|
||||
Landscape phone to portrait tablet
|
||||
***/
|
||||
@media (max-width: 979px) {
|
||||
/***
|
||||
page sidebar
|
||||
***/
|
||||
.page-sidebar {
|
||||
background-color: #292929 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > a {
|
||||
border-top: 1px solid #4a4a4a !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li:last-child > a {
|
||||
border-bottom: 0 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input {
|
||||
background-color: #292929 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li.open > a,
|
||||
ul.page-sidebar-menu > li > a:hover,
|
||||
ul.page-sidebar-menu > li:hover > a {
|
||||
background: #1e1e1e;
|
||||
}
|
||||
}
|
@ -0,0 +1,388 @@
|
||||
/* The MIT License */
|
||||
.dropzone,
|
||||
.dropzone *,
|
||||
.dropzone-previews,
|
||||
.dropzone-previews * {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.dropzone {
|
||||
position: relative;
|
||||
border: 1px solid rgba(0,0,0,0.08);
|
||||
background: rgba(0,0,0,0.02);
|
||||
padding: 1em;
|
||||
}
|
||||
.dropzone.dz-clickable {
|
||||
cursor: pointer;
|
||||
}
|
||||
.dropzone.dz-clickable .dz-message,
|
||||
.dropzone.dz-clickable .dz-message span {
|
||||
cursor: pointer;
|
||||
}
|
||||
.dropzone.dz-clickable * {
|
||||
cursor: default;
|
||||
}
|
||||
.dropzone .dz-message {
|
||||
opacity: 1;
|
||||
-ms-filter: none;
|
||||
filter: none;
|
||||
}
|
||||
.dropzone.dz-drag-hover {
|
||||
border-color: rgba(0,0,0,0.15);
|
||||
background: rgba(0,0,0,0.04);
|
||||
}
|
||||
.dropzone.dz-started .dz-message {
|
||||
display: none;
|
||||
}
|
||||
.dropzone .dz-preview,
|
||||
.dropzone-previews .dz-preview {
|
||||
background: rgba(255,255,255,0.8);
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
margin: 17px;
|
||||
vertical-align: top;
|
||||
border: 1px solid #acacac;
|
||||
padding: 6px 6px 6px 6px;
|
||||
}
|
||||
.dropzone .dz-preview.dz-file-preview [data-dz-thumbnail],
|
||||
.dropzone-previews .dz-preview.dz-file-preview [data-dz-thumbnail] {
|
||||
display: none;
|
||||
}
|
||||
.dropzone .dz-preview .dz-details,
|
||||
.dropzone-previews .dz-preview .dz-details {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
position: relative;
|
||||
background: #ebebeb;
|
||||
padding: 5px;
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
.dropzone .dz-preview .dz-details .dz-filename,
|
||||
.dropzone-previews .dz-preview .dz-details .dz-filename {
|
||||
overflow: hidden;
|
||||
height: 100%;
|
||||
}
|
||||
.dropzone .dz-preview .dz-details img,
|
||||
.dropzone-previews .dz-preview .dz-details img {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.dropzone .dz-preview .dz-details .dz-size,
|
||||
.dropzone-previews .dz-preview .dz-details .dz-size {
|
||||
position: absolute;
|
||||
bottom: -28px;
|
||||
left: 3px;
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
}
|
||||
.dropzone .dz-preview.dz-error .dz-error-mark,
|
||||
.dropzone-previews .dz-preview.dz-error .dz-error-mark {
|
||||
display: block;
|
||||
}
|
||||
.dropzone .dz-preview.dz-success .dz-success-mark,
|
||||
.dropzone-previews .dz-preview.dz-success .dz-success-mark {
|
||||
display: block;
|
||||
}
|
||||
.dropzone .dz-preview:hover .dz-details img,
|
||||
.dropzone-previews .dz-preview:hover .dz-details img {
|
||||
display: none;
|
||||
}
|
||||
.dropzone .dz-preview .dz-success-mark,
|
||||
.dropzone-previews .dz-preview .dz-success-mark,
|
||||
.dropzone .dz-preview .dz-error-mark,
|
||||
.dropzone-previews .dz-preview .dz-error-mark {
|
||||
display: none;
|
||||
position: absolute;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
font-size: 30px;
|
||||
text-align: center;
|
||||
right: -10px;
|
||||
top: -10px;
|
||||
}
|
||||
.dropzone .dz-preview .dz-success-mark,
|
||||
.dropzone-previews .dz-preview .dz-success-mark {
|
||||
color: #8cc657;
|
||||
}
|
||||
.dropzone .dz-preview .dz-error-mark,
|
||||
.dropzone-previews .dz-preview .dz-error-mark {
|
||||
color: #ee162d;
|
||||
}
|
||||
.dropzone .dz-preview .dz-progress,
|
||||
.dropzone-previews .dz-preview .dz-progress {
|
||||
position: absolute;
|
||||
top: 100px;
|
||||
left: 6px;
|
||||
right: 6px;
|
||||
height: 6px;
|
||||
background: #d7d7d7;
|
||||
display: none;
|
||||
}
|
||||
.dropzone .dz-preview .dz-progress .dz-upload,
|
||||
.dropzone-previews .dz-preview .dz-progress .dz-upload {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 0%;
|
||||
background-color: #8cc657;
|
||||
}
|
||||
.dropzone .dz-preview.dz-processing .dz-progress,
|
||||
.dropzone-previews .dz-preview.dz-processing .dz-progress {
|
||||
display: block;
|
||||
}
|
||||
.dropzone .dz-preview .dz-error-message,
|
||||
.dropzone-previews .dz-preview .dz-error-message {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: -5px;
|
||||
left: -20px;
|
||||
background: rgba(245,245,245,0.8);
|
||||
padding: 8px 10px;
|
||||
color: #800;
|
||||
min-width: 140px;
|
||||
max-width: 500px;
|
||||
z-index: 500;
|
||||
}
|
||||
.dropzone .dz-preview:hover.dz-error .dz-error-message,
|
||||
.dropzone-previews .dz-preview:hover.dz-error .dz-error-message {
|
||||
display: block;
|
||||
}
|
||||
.dropzone {
|
||||
border: 1px solid rgba(0,0,0,0.03);
|
||||
min-height: 360px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
background: rgba(0,0,0,0.03);
|
||||
padding: 23px;
|
||||
}
|
||||
.dropzone .dz-default.dz-message {
|
||||
opacity: 1;
|
||||
-ms-filter: none;
|
||||
filter: none;
|
||||
-webkit-transition: opacity 0.3s ease-in-out;
|
||||
-moz-transition: opacity 0.3s ease-in-out;
|
||||
-o-transition: opacity 0.3s ease-in-out;
|
||||
-ms-transition: opacity 0.3s ease-in-out;
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
background-image: url("../image/spritemap.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 0;
|
||||
position: absolute;
|
||||
width: 428px;
|
||||
height: 123px;
|
||||
margin-left: -214px;
|
||||
margin-top: -61.5px;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
}
|
||||
@media all and (-webkit-min-device-pixel-ratio: 1.5) {
|
||||
.dropzone .dz-default.dz-message {
|
||||
background-image: url("../image/spritemap@2x.png");
|
||||
-webkit-background-size: 428px 406px;
|
||||
-moz-background-size: 428px 406px;
|
||||
background-size: 428px 406px;
|
||||
}
|
||||
}
|
||||
.dropzone .dz-default.dz-message span {
|
||||
display: none;
|
||||
}
|
||||
.dropzone.dz-square .dz-default.dz-message {
|
||||
background-position: 0 -123px;
|
||||
width: 268px;
|
||||
margin-left: -134px;
|
||||
height: 174px;
|
||||
margin-top: -87px;
|
||||
}
|
||||
.dropzone.dz-drag-hover .dz-message {
|
||||
opacity: 0.15;
|
||||
filter: alpha(opacity=15);
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=15)";
|
||||
}
|
||||
.dropzone.dz-started .dz-message {
|
||||
display: block;
|
||||
opacity: 0;
|
||||
filter: alpha(opacity=0);
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
||||
}
|
||||
.dropzone .dz-preview,
|
||||
.dropzone-previews .dz-preview {
|
||||
-webkit-box-shadow: 1px 1px 4px rgba(0,0,0,0.16);
|
||||
box-shadow: 1px 1px 4px rgba(0,0,0,0.16);
|
||||
font-size: 14px;
|
||||
}
|
||||
.dropzone .dz-preview.dz-image-preview:hover .dz-details img,
|
||||
.dropzone-previews .dz-preview.dz-image-preview:hover .dz-details img {
|
||||
display: block;
|
||||
opacity: 0.1;
|
||||
filter: alpha(opacity=10);
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";
|
||||
}
|
||||
.dropzone .dz-preview.dz-success .dz-success-mark,
|
||||
.dropzone-previews .dz-preview.dz-success .dz-success-mark {
|
||||
opacity: 1;
|
||||
-ms-filter: none;
|
||||
filter: none;
|
||||
}
|
||||
.dropzone .dz-preview.dz-error .dz-error-mark,
|
||||
.dropzone-previews .dz-preview.dz-error .dz-error-mark {
|
||||
opacity: 1;
|
||||
-ms-filter: none;
|
||||
filter: none;
|
||||
}
|
||||
.dropzone .dz-preview.dz-error .dz-progress .dz-upload,
|
||||
.dropzone-previews .dz-preview.dz-error .dz-progress .dz-upload {
|
||||
background: #ee1e2d;
|
||||
}
|
||||
.dropzone .dz-preview .dz-error-mark,
|
||||
.dropzone-previews .dz-preview .dz-error-mark,
|
||||
.dropzone .dz-preview .dz-success-mark,
|
||||
.dropzone-previews .dz-preview .dz-success-mark {
|
||||
display: block;
|
||||
opacity: 0;
|
||||
filter: alpha(opacity=0);
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
||||
-webkit-transition: opacity 0.4s ease-in-out;
|
||||
-moz-transition: opacity 0.4s ease-in-out;
|
||||
-o-transition: opacity 0.4s ease-in-out;
|
||||
-ms-transition: opacity 0.4s ease-in-out;
|
||||
transition: opacity 0.4s ease-in-out;
|
||||
background-image: url("../image/spritemap.png");
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
@media all and (-webkit-min-device-pixel-ratio: 1.5) {
|
||||
.dropzone .dz-preview .dz-error-mark,
|
||||
.dropzone-previews .dz-preview .dz-error-mark,
|
||||
.dropzone .dz-preview .dz-success-mark,
|
||||
.dropzone-previews .dz-preview .dz-success-mark {
|
||||
background-image: url("../image/spritemap@2x.png");
|
||||
-webkit-background-size: 428px 406px;
|
||||
-moz-background-size: 428px 406px;
|
||||
background-size: 428px 406px;
|
||||
}
|
||||
}
|
||||
.dropzone .dz-preview .dz-error-mark span,
|
||||
.dropzone-previews .dz-preview .dz-error-mark span,
|
||||
.dropzone .dz-preview .dz-success-mark span,
|
||||
.dropzone-previews .dz-preview .dz-success-mark span {
|
||||
display: none;
|
||||
}
|
||||
.dropzone .dz-preview .dz-error-mark,
|
||||
.dropzone-previews .dz-preview .dz-error-mark {
|
||||
background-position: -268px -123px;
|
||||
}
|
||||
.dropzone .dz-preview .dz-success-mark,
|
||||
.dropzone-previews .dz-preview .dz-success-mark {
|
||||
background-position: -268px -163px;
|
||||
}
|
||||
.dropzone .dz-preview .dz-progress .dz-upload,
|
||||
.dropzone-previews .dz-preview .dz-progress .dz-upload {
|
||||
-webkit-animation: loading 0.4s linear infinite;
|
||||
-moz-animation: loading 0.4s linear infinite;
|
||||
-o-animation: loading 0.4s linear infinite;
|
||||
-ms-animation: loading 0.4s linear infinite;
|
||||
animation: loading 0.4s linear infinite;
|
||||
-webkit-transition: width 0.3s ease-in-out;
|
||||
-moz-transition: width 0.3s ease-in-out;
|
||||
-o-transition: width 0.3s ease-in-out;
|
||||
-ms-transition: width 0.3s ease-in-out;
|
||||
transition: width 0.3s ease-in-out;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 0%;
|
||||
height: 100%;
|
||||
background-image: url("../image/spritemap.png");
|
||||
background-repeat: repeat-x;
|
||||
background-position: 0px -400px;
|
||||
}
|
||||
@media all and (-webkit-min-device-pixel-ratio: 1.5) {
|
||||
.dropzone .dz-preview .dz-progress .dz-upload,
|
||||
.dropzone-previews .dz-preview .dz-progress .dz-upload {
|
||||
background-image: url("../image/spritemap@2x.png");
|
||||
-webkit-background-size: 428px 406px;
|
||||
-moz-background-size: 428px 406px;
|
||||
background-size: 428px 406px;
|
||||
}
|
||||
}
|
||||
.dropzone .dz-preview.dz-success .dz-progress,
|
||||
.dropzone-previews .dz-preview.dz-success .dz-progress {
|
||||
display: block;
|
||||
opacity: 0;
|
||||
filter: alpha(opacity=0);
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
||||
-webkit-transition: opacity 0.4s ease-in-out;
|
||||
-moz-transition: opacity 0.4s ease-in-out;
|
||||
-o-transition: opacity 0.4s ease-in-out;
|
||||
-ms-transition: opacity 0.4s ease-in-out;
|
||||
transition: opacity 0.4s ease-in-out;
|
||||
}
|
||||
.dropzone .dz-preview .dz-error-message,
|
||||
.dropzone-previews .dz-preview .dz-error-message {
|
||||
display: block;
|
||||
opacity: 0;
|
||||
filter: alpha(opacity=0);
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
||||
-webkit-transition: opacity 0.3s ease-in-out;
|
||||
-moz-transition: opacity 0.3s ease-in-out;
|
||||
-o-transition: opacity 0.3s ease-in-out;
|
||||
-ms-transition: opacity 0.3s ease-in-out;
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
}
|
||||
.dropzone .dz-preview:hover.dz-error .dz-error-message,
|
||||
.dropzone-previews .dz-preview:hover.dz-error .dz-error-message {
|
||||
opacity: 1;
|
||||
-ms-filter: none;
|
||||
filter: none;
|
||||
}
|
||||
@-moz-keyframes loading {
|
||||
0% {
|
||||
background-position: 0 -400px;
|
||||
}
|
||||
|
||||
100% {
|
||||
background-position: -7px -400px;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes loading {
|
||||
0% {
|
||||
background-position: 0 -400px;
|
||||
}
|
||||
|
||||
100% {
|
||||
background-position: -7px -400px;
|
||||
}
|
||||
}
|
||||
@-o-keyframes loading {
|
||||
0% {
|
||||
background-position: 0 -400px;
|
||||
}
|
||||
|
||||
100% {
|
||||
background-position: -7px -400px;
|
||||
}
|
||||
}
|
||||
@-ms-keyframes loading {
|
||||
0% {
|
||||
background-position: 0 -400px;
|
||||
}
|
||||
|
||||
100% {
|
||||
background-position: -7px -400px;
|
||||
}
|
||||
}
|
||||
@keyframes loading {
|
||||
0% {
|
||||
background-position: 0 -400px;
|
||||
}
|
||||
|
||||
100% {
|
||||
background-position: -7px -400px;
|
||||
}
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
/***
|
||||
Email Template Page
|
||||
***/
|
||||
.mail-template ul {
|
||||
padding:0px;
|
||||
margin: 0px;
|
||||
list-style:none;
|
||||
}
|
||||
|
||||
.mail-template li {
|
||||
margin:0 5px;
|
||||
cursor:pointer;
|
||||
list-style:none;
|
||||
border:solid 2px #fff;
|
||||
}
|
||||
|
||||
.mail-template li:hover {
|
||||
border:solid 2px #aaa;
|
||||
}
|
||||
|
||||
.mail-template li a{
|
||||
display:block;
|
||||
padding:25px;
|
||||
}
|
||||
|
||||
.mail-template li a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.mail-template li.color-black {
|
||||
background:#1f1f1f;
|
||||
}
|
||||
|
||||
.mail-template li.color-darkblue {
|
||||
background:#1570a6;
|
||||
}
|
||||
|
||||
.mail-template li.color-lightblue {
|
||||
background:#4aabf9;
|
||||
}
|
||||
|
||||
.mail-template li.color-red {
|
||||
background:#eb4d41;
|
||||
}
|
||||
|
||||
.mail-template li.color-green {
|
||||
background:#28b779;
|
||||
}
|
@ -0,0 +1,141 @@
|
||||
/***
|
||||
Error Pages
|
||||
***/
|
||||
|
||||
/* 404 page option #1 */
|
||||
|
||||
.page-404 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.page-404 .number {
|
||||
display: inline-block;
|
||||
letter-spacing: -10px;
|
||||
margin-top: 0px;
|
||||
line-height: 128px;
|
||||
font-size: 158px;
|
||||
font-weight: 300;
|
||||
color: #7bbbd6;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.page-404 .details {
|
||||
margin-left: 40px;
|
||||
display: inline-block;
|
||||
padding-top: 0px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* 500 page option #1 */
|
||||
.page-500 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.page-500 .number {
|
||||
display: inline-block;
|
||||
letter-spacing: -10px;
|
||||
line-height: 128px;
|
||||
font-size: 158px;
|
||||
font-weight: 300;
|
||||
color: #ec8c8c;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.page-500 .details {
|
||||
margin-left: 40px;
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* 404 page option #2*/
|
||||
.page-404-full-page {
|
||||
padding: 20px;
|
||||
background-color: #fafafa !important;
|
||||
}
|
||||
|
||||
.page-404-full-page .details input {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.page-404-full-page .page-404 {
|
||||
margin-top: 100px;
|
||||
}
|
||||
|
||||
/* 500 page option #2*/
|
||||
.page-500-full-page {
|
||||
padding: 20px;
|
||||
background-color: #fafafa !important;
|
||||
}
|
||||
|
||||
.page-500-full-page .details input {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.page-500-full-page .page-500 {
|
||||
margin-top: 100px;
|
||||
}
|
||||
|
||||
/* 404 page option #3*/
|
||||
|
||||
.page-404-3 {
|
||||
background: #000 !important ;
|
||||
}
|
||||
|
||||
.page-404-3 .page-inner img {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: -1;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.page-404-3 .error-404 {
|
||||
color: #fff;
|
||||
text-align: left;
|
||||
padding: 70px 20px 0;
|
||||
}
|
||||
|
||||
.page-404-3 h1 {
|
||||
color: #fff;
|
||||
font-size: 130px;
|
||||
line-height: 160px;
|
||||
}
|
||||
|
||||
.page-404-3 h2 {
|
||||
color: #fff;
|
||||
font-size: 30px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.page-404-3 p {
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
|
||||
@media (max-width: 480px) {
|
||||
|
||||
.page-404 .number,
|
||||
.page-500 .number,
|
||||
.page-404 .details,
|
||||
.page-500 .details {
|
||||
text-align: center;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.page-404-full-page .page-404 {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.page-404-3 .error-404 {
|
||||
text-align: left;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.page-404-3 .page-inner img {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: -1;
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -0,0 +1,579 @@
|
||||
/*!
|
||||
* FullCalendar v1.6.1 Stylesheet
|
||||
* Docs & License: http://arshaw.com/fullcalendar/
|
||||
* (c) 2013 Adam Shaw
|
||||
*/
|
||||
|
||||
|
||||
.fc {
|
||||
direction: ltr;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.fc table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
html .fc,
|
||||
.fc table {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.fc td,
|
||||
.fc th {
|
||||
padding: 0;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Header
|
||||
------------------------------------------------------------------------*/
|
||||
|
||||
.fc-header td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.fc-header-left {
|
||||
width: 25%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.fc-header-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fc-header-right {
|
||||
width: 25%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.fc-header-title {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.fc-header-title h2 {
|
||||
margin-top: 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.fc .fc-header-space {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.fc-header .fc-button {
|
||||
margin-bottom: 1em;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* buttons edges butting together */
|
||||
|
||||
.fc-header .fc-button {
|
||||
margin-right: -1px;
|
||||
}
|
||||
|
||||
.fc-header .fc-corner-right, /* non-theme */
|
||||
.fc-header .ui-corner-right { /* theme */
|
||||
margin-right: 0; /* back to normal */
|
||||
}
|
||||
|
||||
/* button layering (for border precedence) */
|
||||
|
||||
.fc-header .fc-state-hover,
|
||||
.fc-header .ui-state-hover {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.fc-header .fc-state-down {
|
||||
z-index: 3;
|
||||
}
|
||||
|
||||
.fc-header .fc-state-active,
|
||||
.fc-header .ui-state-active {
|
||||
z-index: 4;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Content
|
||||
------------------------------------------------------------------------*/
|
||||
|
||||
.fc-content {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.fc-view {
|
||||
width: 100%; /* needed for view switching (when view is absolute) */
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Cell Styles
|
||||
------------------------------------------------------------------------*/
|
||||
|
||||
.fc-widget-header, /* <th>, usually */
|
||||
.fc-widget-content { /* <td>, usually */
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.fc-state-highlight { /* <td> today cell */ /* TODO: add .fc-today to <th> */
|
||||
background: #fcf8e3;
|
||||
}
|
||||
|
||||
.fc-cell-overlay { /* semi-transparent rectangle while dragging */
|
||||
background: #bce8f1;
|
||||
opacity: .3;
|
||||
filter: alpha(opacity=30); /* for IE */
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Buttons
|
||||
------------------------------------------------------------------------*/
|
||||
|
||||
.fc-button {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
padding: 0 .6em;
|
||||
overflow: hidden;
|
||||
height: 1.9em;
|
||||
line-height: 1.9em;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.fc-state-default { /* non-theme */
|
||||
border: 1px solid;
|
||||
}
|
||||
|
||||
.fc-state-default.fc-corner-left { /* non-theme */
|
||||
border-top-left-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
}
|
||||
|
||||
.fc-state-default.fc-corner-right { /* non-theme */
|
||||
border-top-right-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
}
|
||||
|
||||
/*
|
||||
Our default prev/next buttons use HTML entities like ‹ › « »
|
||||
and we'll try to make them look good cross-browser.
|
||||
*/
|
||||
|
||||
.fc-text-arrow {
|
||||
margin: 0 .1em;
|
||||
font-size: 2em;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
vertical-align: baseline; /* for IE7 */
|
||||
}
|
||||
|
||||
.fc-button-prev .fc-text-arrow,
|
||||
.fc-button-next .fc-text-arrow { /* for ‹ › */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* icon (for jquery ui) */
|
||||
|
||||
.fc-button .fc-icon-wrap {
|
||||
position: relative;
|
||||
float: left;
|
||||
top: 50%;
|
||||
}
|
||||
|
||||
.fc-button .ui-icon {
|
||||
position: relative;
|
||||
float: left;
|
||||
margin-top: -50%;
|
||||
*margin-top: 0;
|
||||
*top: -50%;
|
||||
}
|
||||
|
||||
/*
|
||||
button states
|
||||
borrowed from twitter bootstrap (http://twitter.github.com/bootstrap/)
|
||||
*/
|
||||
|
||||
.fc-state-default {
|
||||
background-color: #f5f5f5;
|
||||
background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
|
||||
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #e6e6e6 #e6e6e6 #bfbfbf;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
color: #333;
|
||||
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.fc-state-hover,
|
||||
.fc-state-down,
|
||||
.fc-state-active,
|
||||
.fc-state-disabled {
|
||||
color: #333333;
|
||||
background-color: #e6e6e6;
|
||||
}
|
||||
|
||||
.fc-state-hover {
|
||||
color: #333333;
|
||||
text-decoration: none;
|
||||
background-position: 0 -15px;
|
||||
-webkit-transition: background-position 0.1s linear;
|
||||
-moz-transition: background-position 0.1s linear;
|
||||
-o-transition: background-position 0.1s linear;
|
||||
transition: background-position 0.1s linear;
|
||||
}
|
||||
|
||||
.fc-state-down,
|
||||
.fc-state-active {
|
||||
background-color: #cccccc;
|
||||
background-image: none;
|
||||
outline: 0;
|
||||
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.fc-state-disabled {
|
||||
cursor: default;
|
||||
background-image: none;
|
||||
opacity: 0.65;
|
||||
filter: alpha(opacity=65);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Global Event Styles
|
||||
------------------------------------------------------------------------*/
|
||||
|
||||
.fc-event {
|
||||
border: 1px solid #3a87ad; /* default BORDER color */
|
||||
background-color: #3a87ad; /* default BACKGROUND color */
|
||||
color: #fff; /* default TEXT color */
|
||||
font-size: .85em;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
a.fc-event {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a.fc-event,
|
||||
.fc-event-draggable {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.fc-rtl .fc-event {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.fc-event-inner {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.fc-event-time,
|
||||
.fc-event-title {
|
||||
padding: 0 1px;
|
||||
}
|
||||
|
||||
.fc .ui-resizable-handle {
|
||||
display: block;
|
||||
position: absolute;
|
||||
z-index: 99999;
|
||||
overflow: hidden; /* hacky spaces (IE6/7) */
|
||||
font-size: 300%; /* */
|
||||
line-height: 50%; /* */
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Horizontal Events
|
||||
------------------------------------------------------------------------*/
|
||||
|
||||
.fc-event-hori {
|
||||
border-width: 1px 0;
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
|
||||
.fc-ltr .fc-event-hori.fc-event-start,
|
||||
.fc-rtl .fc-event-hori.fc-event-end {
|
||||
border-left-width: 1px;
|
||||
border-top-left-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
|
||||
.fc-ltr .fc-event-hori.fc-event-end,
|
||||
.fc-rtl .fc-event-hori.fc-event-start {
|
||||
border-right-width: 1px;
|
||||
border-top-right-radius: 3px;
|
||||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
|
||||
/* resizable */
|
||||
|
||||
.fc-event-hori .ui-resizable-e {
|
||||
top: 0 !important; /* importants override pre jquery ui 1.7 styles */
|
||||
right: -3px !important;
|
||||
width: 7px !important;
|
||||
height: 100% !important;
|
||||
cursor: e-resize;
|
||||
}
|
||||
|
||||
.fc-event-hori .ui-resizable-w {
|
||||
top: 0 !important;
|
||||
left: -3px !important;
|
||||
width: 7px !important;
|
||||
height: 100% !important;
|
||||
cursor: w-resize;
|
||||
}
|
||||
|
||||
.fc-event-hori .ui-resizable-handle {
|
||||
_padding-bottom: 14px; /* IE6 had 0 height */
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Reusable Separate-border Table
|
||||
------------------------------------------------------------*/
|
||||
|
||||
table.fc-border-separate {
|
||||
border-collapse: separate;
|
||||
}
|
||||
|
||||
.fc-border-separate th,
|
||||
.fc-border-separate td {
|
||||
border-width: 1px 0 0 1px;
|
||||
}
|
||||
|
||||
.fc-border-separate th.fc-last,
|
||||
.fc-border-separate td.fc-last {
|
||||
border-right-width: 1px;
|
||||
}
|
||||
|
||||
.fc-border-separate tr.fc-last th,
|
||||
.fc-border-separate tr.fc-last td {
|
||||
border-bottom-width: 1px;
|
||||
}
|
||||
|
||||
.fc-border-separate tbody tr.fc-first td,
|
||||
.fc-border-separate tbody tr.fc-first th {
|
||||
border-top-width: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Month View, Basic Week View, Basic Day View
|
||||
------------------------------------------------------------------------*/
|
||||
|
||||
.fc-grid th {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fc .fc-week-number {
|
||||
width: 22px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fc .fc-week-number div {
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
.fc-grid .fc-day-number {
|
||||
float: right;
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
.fc-grid .fc-other-month .fc-day-number {
|
||||
opacity: 0.3;
|
||||
filter: alpha(opacity=30); /* for IE */
|
||||
/* opacity with small font can sometimes look too faded
|
||||
might want to set the 'color' property instead
|
||||
making day-numbers bold also fixes the problem */
|
||||
}
|
||||
|
||||
.fc-grid .fc-day-content {
|
||||
clear: both;
|
||||
padding: 2px 2px 1px; /* distance between events and day edges */
|
||||
}
|
||||
|
||||
/* event styles */
|
||||
|
||||
.fc-grid .fc-event-time {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* right-to-left */
|
||||
|
||||
.fc-rtl .fc-grid .fc-day-number {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fc-rtl .fc-grid .fc-event-time {
|
||||
float: right;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Agenda Week View, Agenda Day View
|
||||
------------------------------------------------------------------------*/
|
||||
|
||||
.fc-agenda table {
|
||||
border-collapse: separate;
|
||||
}
|
||||
|
||||
.fc-agenda-days th {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fc-agenda .fc-agenda-axis {
|
||||
width: 50px;
|
||||
padding: 0 4px;
|
||||
vertical-align: middle;
|
||||
text-align: right;
|
||||
white-space: nowrap;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.fc-agenda .fc-week-number {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.fc-agenda .fc-day-content {
|
||||
padding: 2px 2px 1px;
|
||||
}
|
||||
|
||||
/* make axis border take precedence */
|
||||
|
||||
.fc-agenda-days .fc-agenda-axis {
|
||||
border-right-width: 1px;
|
||||
}
|
||||
|
||||
.fc-agenda-days .fc-col0 {
|
||||
border-left-width: 0;
|
||||
}
|
||||
|
||||
/* all-day area */
|
||||
|
||||
.fc-agenda-allday th {
|
||||
border-width: 0 1px;
|
||||
}
|
||||
|
||||
.fc-agenda-allday .fc-day-content {
|
||||
min-height: 34px; /* TODO: doesnt work well in quirksmode */
|
||||
_height: 34px;
|
||||
}
|
||||
|
||||
/* divider (between all-day and slots) */
|
||||
|
||||
.fc-agenda-divider-inner {
|
||||
height: 2px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.fc-widget-header .fc-agenda-divider-inner {
|
||||
background: #eee;
|
||||
}
|
||||
|
||||
/* slot rows */
|
||||
|
||||
.fc-agenda-slots th {
|
||||
border-width: 1px 1px 0;
|
||||
}
|
||||
|
||||
.fc-agenda-slots td {
|
||||
border-width: 1px 0 0;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.fc-agenda-slots td div {
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.fc-agenda-slots tr.fc-slot0 th,
|
||||
.fc-agenda-slots tr.fc-slot0 td {
|
||||
border-top-width: 0;
|
||||
}
|
||||
|
||||
.fc-agenda-slots tr.fc-minor th,
|
||||
.fc-agenda-slots tr.fc-minor td {
|
||||
border-top-style: dotted;
|
||||
}
|
||||
|
||||
.fc-agenda-slots tr.fc-minor th.ui-widget-header {
|
||||
*border-top-style: solid; /* doesn't work with background in IE6/7 */
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Vertical Events
|
||||
------------------------------------------------------------------------*/
|
||||
|
||||
.fc-event-vert {
|
||||
border-width: 0 1px;
|
||||
}
|
||||
|
||||
.fc-event-vert.fc-event-start {
|
||||
border-top-width: 1px;
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
|
||||
.fc-event-vert.fc-event-end {
|
||||
border-bottom-width: 1px;
|
||||
border-bottom-left-radius: 3px;
|
||||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
|
||||
.fc-event-vert .fc-event-time {
|
||||
white-space: nowrap;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.fc-event-vert .fc-event-inner {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.fc-event-vert .fc-event-bg { /* makes the event lighter w/ a semi-transparent overlay */
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #fff;
|
||||
opacity: .25;
|
||||
filter: alpha(opacity=25);
|
||||
}
|
||||
|
||||
.fc .ui-draggable-dragging .fc-event-bg, /* TODO: something nicer like .fc-opacity */
|
||||
.fc-select-helper .fc-event-bg {
|
||||
display: none\9; /* for IE6/7/8. nested opacity filters while dragging don't work */
|
||||
}
|
||||
|
||||
/* resizable */
|
||||
|
||||
.fc-event-vert .ui-resizable-s {
|
||||
bottom: 0 !important; /* importants override pre jquery ui 1.7 styles */
|
||||
width: 100% !important;
|
||||
height: 8px !important;
|
||||
overflow: hidden !important;
|
||||
line-height: 8px !important;
|
||||
font-size: 11px !important;
|
||||
font-family: monospace;
|
||||
text-align: center;
|
||||
cursor: s-resize;
|
||||
}
|
||||
|
||||
.fc-agenda .ui-resizable-resizing { /* TODO: better selector */
|
||||
_overflow: hidden;
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,287 @@
|
||||
/***
|
||||
Grey theme
|
||||
***/
|
||||
/***
|
||||
Reset and overrides
|
||||
***/
|
||||
body {
|
||||
background-color: #666666 !important;
|
||||
}
|
||||
/***
|
||||
Page header
|
||||
***/
|
||||
.header .navbar-inner {
|
||||
filter: none !important;
|
||||
background-image: none !important;
|
||||
background-color: #4a4a4a !important;
|
||||
}
|
||||
.header .btn-navbar {
|
||||
background-color: #4a4a4a !important;
|
||||
}
|
||||
.header .nav .dropdown-toggle:hover,
|
||||
.header .nav .dropdown.open .dropdown-toggle {
|
||||
background-color: #616161 !important;
|
||||
}
|
||||
.header .nav li.dropdown .dropdown-toggle i {
|
||||
color: #b3b3b3 !important;
|
||||
}
|
||||
/***
|
||||
Page sidebar
|
||||
***/
|
||||
.page-sidebar {
|
||||
background-color: #666666;
|
||||
}
|
||||
ul.page-sidebar-menu > li > a {
|
||||
border-top: 1px solid #858585 !important;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li:last-child > a {
|
||||
border-bottom: 1px solid transparent !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li a i {
|
||||
color: #bfbfbf;
|
||||
}
|
||||
ul.page-sidebar-menu > li.open > a,
|
||||
ul.page-sidebar-menu > li > a:hover,
|
||||
ul.page-sidebar-menu > li:hover > a {
|
||||
background: #595959;
|
||||
}
|
||||
ul.page-sidebar-menu > li.active > a {
|
||||
background: #e02222 !important;
|
||||
border-top-color: transparent !important;
|
||||
color: #ffffff;
|
||||
}
|
||||
ul.page-sidebar-menu > li.active > a i {
|
||||
color: #ffffff;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li:first-child > a {
|
||||
border-top: 0px !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li.active > a,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li > a:hover {
|
||||
color: #ffffff !important;
|
||||
background: #808080 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu > li > a:hover {
|
||||
background: #808080 !important;
|
||||
}
|
||||
/* 3rd level sub menu */
|
||||
ul.page-sidebar-menu > li > ul.sub-menu li > ul.sub-menu > li.active > a,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu li > ul.sub-menu > li > a:hover,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu li.open > a {
|
||||
color: #ffffff !important;
|
||||
background: #808080 !important;
|
||||
}
|
||||
/* font color for all sub menu links*/
|
||||
ul.page-sidebar-menu li > ul.sub-menu > li > a {
|
||||
color: #e6e6e6;
|
||||
}
|
||||
/* menu arrows */
|
||||
ul.page-sidebar-menu > li > a .arrow:before,
|
||||
ul.page-sidebar-menu > li > a .arrow.open:before {
|
||||
color: #a6a6a6 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > ul.sub-menu a .arrow:before,
|
||||
ul.page-sidebar-menu > li > ul.sub-menu a .arrow.open:before {
|
||||
color: #999999 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > a > .arrow.open:before {
|
||||
color: #b3b3b3 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li.active > a .arrow:before,
|
||||
ul.page-sidebar-menu > li.active > a .arrow.open:before {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
/* sidebar search */
|
||||
.page-sidebar .sidebar-search input {
|
||||
background-color: #4d4d4d !important;
|
||||
color: #a6a6a6;
|
||||
}
|
||||
.page-sidebar .sidebar-search input::-webkit-input-placeholder {
|
||||
color: #a6a6a6 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input:-moz-placeholder {
|
||||
color: #a6a6a6 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input:-ms-input-placeholder {
|
||||
color: #a6a6a6 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input {
|
||||
background-color: #666666 !important;
|
||||
color: #bfbfbf !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search .input-box {
|
||||
border-bottom: 1px solid #a6a6a6 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search .submit {
|
||||
background-image: url(../../img/search-icon.png);
|
||||
}
|
||||
/***
|
||||
Sidebar toggler
|
||||
***/
|
||||
.sidebar-toggler {
|
||||
background-image: url(../../img/sidebar-toggler.jpg);
|
||||
background-color: #4d4d4d;
|
||||
}
|
||||
/* search box bg color on expanded */
|
||||
.page-sidebar-closed .page-sidebar .sidebar-search.open {
|
||||
background-color: #666666 !important;
|
||||
}
|
||||
.page-sidebar-closed .page-sidebar .sidebar-search.open .remove {
|
||||
background-image: url("../../img/sidebar-search-close.png");
|
||||
}
|
||||
/* sub menu bg color on hover menu item */
|
||||
.page-sidebar-closed ul.page-sidebar-menu > li:hover .sub-menu {
|
||||
background-color: #666666;
|
||||
}
|
||||
/***
|
||||
Horizontal Menu(new in v1.2)
|
||||
***/
|
||||
/*search*/
|
||||
.header .hor-menu .hor-menu-search-form-toggler.hide {
|
||||
background: #000000 url(../../img/hor-menu-search-close.png) no-repeat center;
|
||||
}
|
||||
.header .hor-menu .search-form {
|
||||
background: #000000;
|
||||
}
|
||||
.header .hor-menu .search-form .btn {
|
||||
color: #ffffff;
|
||||
background: #1a1a1a url(../../img/search-icon.png) no-repeat center;
|
||||
}
|
||||
.header .hor-menu .search-form form input {
|
||||
color: #ffffff;
|
||||
}
|
||||
.header .hor-menu .search-form form input::-webkit-input-placeholder {
|
||||
/* WebKit browsers */
|
||||
|
||||
color: #ffffff;
|
||||
}
|
||||
.header .hor-menu .search-form form input:-moz-placeholder {
|
||||
/* Mozilla Firefox 4 to 18 */
|
||||
|
||||
color: #ffffff;
|
||||
}
|
||||
.header .hor-menu .search-form form input::-moz-placeholder {
|
||||
/* Mozilla Firefox 19+ */
|
||||
|
||||
color: #ffffff;
|
||||
}
|
||||
.header .hor-menu .search-form form input:-ms-input-placeholder {
|
||||
/* Internet Explorer 10+ */
|
||||
|
||||
color: #ffffff;
|
||||
}
|
||||
/***
|
||||
Footer
|
||||
***/
|
||||
.footer .footer-inner {
|
||||
color: #b3b3b3;
|
||||
}
|
||||
.footer .footer-tools .go-top {
|
||||
background-color: #787878;
|
||||
}
|
||||
.footer .footer-tools .go-top:hover {
|
||||
opacity: 0.7;
|
||||
filter: alpha(opacity=70);
|
||||
}
|
||||
.footer .footer-tools .go-top i {
|
||||
color: #b3b3b3;
|
||||
}
|
||||
/***
|
||||
Footer Layouts (new in v1.3)
|
||||
***/
|
||||
/* begin:fixed footer */
|
||||
.page-footer-fixed .footer {
|
||||
background-color: #4d4d4d;
|
||||
}
|
||||
.page-footer-fixed .footer .footer-inner {
|
||||
color: #b3b3b3;
|
||||
}
|
||||
.page-footer-fixed .footer .footer-tools .go-top {
|
||||
background-color: #787878;
|
||||
}
|
||||
.page-footer-fixed .footer .footer-tools .go-top i {
|
||||
color: #b3b3b3;
|
||||
}
|
||||
/* end:fixed footer */
|
||||
/***
|
||||
Gritter Notifications
|
||||
***/
|
||||
.gritter-top {
|
||||
background: url(../../plugins/gritter/images/gritter.png) no-repeat left -30px !important;
|
||||
}
|
||||
.gritter-bottom {
|
||||
background: url(../../plugins/gritter/images/gritter.png) no-repeat left bottom !important;
|
||||
}
|
||||
.gritter-item {
|
||||
display: block;
|
||||
background: url(../../plugins/gritter/images/gritter.png) no-repeat left -40px !important;
|
||||
}
|
||||
.gritter-close {
|
||||
background: url(../../plugins/gritter/images/gritter.png) no-repeat left top !important;
|
||||
}
|
||||
.gritter-title {
|
||||
text-shadow: none !important;
|
||||
/* Not supported by IE :( */
|
||||
|
||||
}
|
||||
/* for the light (white) version of the gritter notice */
|
||||
.gritter-light .gritter-item,
|
||||
.gritter-light .gritter-bottom,
|
||||
.gritter-light .gritter-top,
|
||||
.gritter-light .gritter-close {
|
||||
background-image: url(../../plugins/gritter/images/gritter-light.png) !important;
|
||||
}
|
||||
.gritter-item-wrapper a {
|
||||
color: #18a5ed;
|
||||
}
|
||||
.gritter-item-wrapper a:hover {
|
||||
color: #0b6694;
|
||||
}
|
||||
/* begin: boxed page */
|
||||
@media (min-width: 980px) {
|
||||
.page-boxed {
|
||||
background-color: #575757 !important;
|
||||
}
|
||||
.page-boxed .page-container {
|
||||
background-color: #666666;
|
||||
border-left: 1px solid #878787;
|
||||
border-bottom: 1px solid #878787;
|
||||
}
|
||||
.page-boxed.page-sidebar-fixed .page-container {
|
||||
border-left: 0;
|
||||
border-bottom: 0;
|
||||
}
|
||||
.page-boxed.page-sidebar-fixed .page-sidebar {
|
||||
border-left: 1px solid #878787;
|
||||
}
|
||||
.page-boxed.page-sidebar-fixed.page-footer-fixed .footer {
|
||||
background-color: #575757 !important;
|
||||
}
|
||||
}
|
||||
/* end: boxed page */
|
||||
/***
|
||||
Landscape phone to portrait tablet
|
||||
***/
|
||||
@media (max-width: 979px) {
|
||||
/***
|
||||
page sidebar
|
||||
***/
|
||||
.page-sidebar {
|
||||
background-color: #525252 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li > a {
|
||||
border-top: 1px solid #737373 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li:last-child > a {
|
||||
border-bottom: 0 !important;
|
||||
}
|
||||
.page-sidebar .sidebar-search input {
|
||||
background-color: #525252 !important;
|
||||
}
|
||||
ul.page-sidebar-menu > li.open > a,
|
||||
ul.page-sidebar-menu > li > a:hover,
|
||||
ul.page-sidebar-menu > li:hover > a {
|
||||
background: #474747;
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,521 @@
|
||||
/***
|
||||
Inbox Page
|
||||
***/
|
||||
.inbox {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.inbox .inbox {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.inbox .tab-content {
|
||||
overflow: inherit;
|
||||
}
|
||||
|
||||
.inbox .inbox-loading {
|
||||
display: none;
|
||||
font-size: 22px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
/*Imbox Menu*/
|
||||
.inbox .inbox-nav {
|
||||
list-style: none;
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
|
||||
.inbox .inbox-nav li {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.inbox .inbox-nav li a {
|
||||
color: #4d82a3;
|
||||
display: block;
|
||||
font-size: 15px;
|
||||
border-left: none;
|
||||
text-align: left !important;
|
||||
padding: 8px 14px;
|
||||
margin-bottom: 1px;
|
||||
background: #f4f9fd;
|
||||
}
|
||||
|
||||
.inbox .inbox-nav li.active a,
|
||||
.inbox .inbox-nav li.active:hover a {
|
||||
color: #fff;
|
||||
border-left: none;
|
||||
background: #169ef4 !important;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.inbox .inbox-nav li.active b {
|
||||
top: 0;
|
||||
right: -4px;
|
||||
width: 8px;
|
||||
height: 35px;
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
background: url(../image/inbox-nav-arrow-blue.png) no-repeat;
|
||||
}
|
||||
|
||||
.inbox .inbox-nav li:hover a {
|
||||
color: #4d82a3;
|
||||
background: #eef4f7 !important;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.inbox .inbox-nav li.compose-btn a {
|
||||
color: #fff;
|
||||
text-shadow: none;
|
||||
text-align: center;
|
||||
margin-bottom: 18px;
|
||||
background: #35aa47;
|
||||
}
|
||||
|
||||
.inbox .inbox-nav li.compose-btn i,
|
||||
.inbox .inbox-nav li.compose-btn:hover i {
|
||||
top: 1px;
|
||||
color: #fff;
|
||||
font-size: 15px;
|
||||
position: relative;
|
||||
background: none !important;
|
||||
}
|
||||
|
||||
.inbox .inbox-nav li.compose-btn a:hover {
|
||||
background-color: #1d943b !important;
|
||||
}
|
||||
|
||||
/*Inbox Content*/
|
||||
.inbox .inbox-header {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.inbox .inbox-header h1 {
|
||||
margin: 0;
|
||||
color: #666;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.inbox tr {
|
||||
color: #777;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.inbox tr label {
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.inbox tr.unread td{
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.inbox td i.icon-paper-clip {
|
||||
top: 2px;
|
||||
color: #d8e0e5;
|
||||
font-size: 17px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.inbox tr i.icon-star,
|
||||
.inbox tr i.icon-trash {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.inbox tr i.icon-star {
|
||||
color: #eceef0;
|
||||
}
|
||||
|
||||
.inbox tr i.icon-star:hover {
|
||||
color: #fd7b12;
|
||||
}
|
||||
|
||||
.inbox tr i.inbox-started {
|
||||
color: #fd7b12;
|
||||
}
|
||||
|
||||
.inbox .table th,
|
||||
.inbox .table td {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.inbox .table th {
|
||||
background: #eef4f7;
|
||||
border-bottom: solid 5px #fff;
|
||||
}
|
||||
|
||||
.inbox th.text-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.inbox th label.inbox-select-all {
|
||||
color: #828f97;
|
||||
font-size: 13px;
|
||||
padding: 1px 4px 0;
|
||||
}
|
||||
|
||||
.inbox ul.inbox-nav {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.inbox ul.inbox-nav li {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.inbox ul.inbox-nav li span {
|
||||
color: #828f97;
|
||||
font-size: 12px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.inbox ul.inbox-nav i {
|
||||
color: #fff;
|
||||
padding: 1px 0;
|
||||
font-size: 15px;
|
||||
cursor: pointer;
|
||||
background: #d0dde4 !important;
|
||||
}
|
||||
|
||||
.inbox ul.inbox-nav i:hover {
|
||||
background: #169ef4 !important;
|
||||
}
|
||||
|
||||
.inbox td.text-right {
|
||||
width: 100px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.inbox td.inbox-small-cells {
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
.inbox .table-hover tbody tr:hover>td,
|
||||
.inbox .table-hover tbody tr:hover>th,
|
||||
.inbox .table-striped tbody>tr:nth-child(odd)>td,
|
||||
.inbox .table-striped tbody>tr:nth-child(odd)>th {
|
||||
background: #f8fbfd;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.inbox .table-hover tbody tr:hover>td,
|
||||
.inbox .table-hover tbody tr:hover>th {
|
||||
background: #eef4f7;
|
||||
}
|
||||
|
||||
/*Inbox Drafts*/
|
||||
.inbox .inbox-drafts {
|
||||
padding: 8px 0;
|
||||
text-align: center;
|
||||
border-top: solid 1px #eee;
|
||||
border-bottom: solid 1px #eee;
|
||||
}
|
||||
|
||||
/*Inbox View*/
|
||||
.inbox-view-header {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.inbox-view-header h1 {
|
||||
color: #666;
|
||||
font-size: 22px;
|
||||
line-height: 24px;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.inbox-view-header h1 a {
|
||||
top: -2px;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
font-size: 13px;
|
||||
padding: 2px 7px;
|
||||
line-height: 16px;
|
||||
position: relative;
|
||||
background: #b0bcc4;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.inbox-view-header h1 a:hover {
|
||||
background: #aab5bc;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.inbox-view-header i.icon-print {
|
||||
color: #94a4ab;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
display: inline-block;
|
||||
padding: 6px 8px !important;
|
||||
background: #edf1f4 !important;
|
||||
}
|
||||
|
||||
.inbox-view-header i.icon-print:hover {
|
||||
background: #e7ebef !important;
|
||||
}
|
||||
|
||||
.inbox-view-info {
|
||||
color: #666;
|
||||
padding: 5px 0;
|
||||
margin-bottom: 10px;
|
||||
border-top: solid 1px #eee;
|
||||
border-bottom: solid 1px #eee;
|
||||
}
|
||||
|
||||
.inbox-view-info strong {
|
||||
color: #666;
|
||||
margin: 0 10px 0 5px;
|
||||
}
|
||||
|
||||
.inbox-view-info .inbox-info-btn {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.inbox-view-info .inbox-info-btn ul {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.inbox-view-info button {
|
||||
top: 2px;
|
||||
color: #94a4ab;
|
||||
font-size: 13px;
|
||||
margin-left: 4px;
|
||||
padding: 3px 10px;
|
||||
position: relative;
|
||||
background: #edf1f4;
|
||||
}
|
||||
|
||||
.inbox-view-info button:hover {
|
||||
color: #94a4ab;
|
||||
background: #e7ebef;
|
||||
}
|
||||
|
||||
.inbox-view {
|
||||
color: #666;
|
||||
padding: 15px 0 0;
|
||||
}
|
||||
|
||||
.inbox-view a {
|
||||
color: #169ce9;
|
||||
}
|
||||
|
||||
.inbox-attached {
|
||||
line-height: 16px;
|
||||
}
|
||||
|
||||
.inbox-attached a {
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
.inbox-attached img {
|
||||
height: auto;
|
||||
max-width: 250px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.inbox-attached span {
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
.inbox-attached strong {
|
||||
color: #555;
|
||||
display: block;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.inbox-attached .margin-bottom-25 {
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.inbox-attached .margin-bottom-15 {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
|
||||
/*Inbox Compose*/
|
||||
.inbox-compose {
|
||||
margin-top: 1px;
|
||||
border: solid 1px #eee;
|
||||
}
|
||||
|
||||
.inbox-compose-btn {
|
||||
padding: 8px 4px;
|
||||
background: #f0f6fa;
|
||||
}
|
||||
|
||||
.inbox-compose-attachment {
|
||||
padding: 8px 8px;
|
||||
}
|
||||
|
||||
.inbox-compose-attachment .btn {
|
||||
padding: 4px 10px;
|
||||
}
|
||||
|
||||
.inbox-compose-btn button {
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
margin-left: 4px;
|
||||
padding: 4px 10px;
|
||||
background: #c0cfdd;
|
||||
}
|
||||
|
||||
.inbox-compose-btn button:hover {
|
||||
color: #fff;
|
||||
background: #4d90fe;
|
||||
}
|
||||
|
||||
.inbox-compose-btn button i {
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
.inbox-compose .inbox-control-group {
|
||||
margin-bottom: 0;
|
||||
position: relative;
|
||||
border-bottom: solid 1px #eee;
|
||||
}
|
||||
|
||||
.inbox-compose .controls {
|
||||
margin-left: 85px;
|
||||
}
|
||||
|
||||
.inbox-compose .inbox-control-group > label {
|
||||
width: 80px;
|
||||
float: left;
|
||||
color: #979797;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.inbox-compose .controls > input {
|
||||
border: none !important;
|
||||
}
|
||||
.inbox-compose .controls-to {
|
||||
padding-right: 55px;
|
||||
}
|
||||
|
||||
.inbox-compose .controls-cc {
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
.inbox-compose .controls-bcc {
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
.inbox-compose .tag {
|
||||
font-size: 12px;
|
||||
font-weight: 300 !important;
|
||||
margin-top: 6px;
|
||||
margin-left: 5px;
|
||||
color: #333;
|
||||
text-shadow: none !important;
|
||||
background-color: #eee;
|
||||
display: inline-block !important;
|
||||
padding: 3px !important;
|
||||
}
|
||||
|
||||
.inbox-compose .tag .close {
|
||||
margin-top: -2px;
|
||||
display: inline-block !important;
|
||||
float: none !important;
|
||||
|
||||
}
|
||||
|
||||
.inbox-compose .tags {
|
||||
border: none !important;
|
||||
font-size: 13px;
|
||||
padding: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-right: 50px;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
.inbox-compose .tags-hover {
|
||||
border: 1px solid #ddd;
|
||||
border: none !important;
|
||||
box-shadow: none !important;
|
||||
background: none !important;
|
||||
}
|
||||
|
||||
.inbox-compose .tags input[type="text"],
|
||||
.inbox-compose .tags input[type="text"]:focus {
|
||||
display: inline-block !important;
|
||||
border: none !important;
|
||||
font-size: 14px !important;
|
||||
vertical-align: top;
|
||||
outline: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: auto;
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.inbox-compose .inbox-control-group a.close {
|
||||
top: 13px;
|
||||
right: 10px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.inbox-compose .mail-to .inbox-cc-bcc {
|
||||
display: inline-block;
|
||||
top: 7px;
|
||||
right: 10px;
|
||||
color: #979797;
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.inbox-compose .mail-to .inbox-bcc {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.inbox-compose .mail-to inbox-cc:hover,
|
||||
.inbox-compose .mail-to inbox-bcc:hover {
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.inbox-compose .wysihtml5 {
|
||||
padding: 0px !important;
|
||||
margin: 0px !important;
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
.inbox-compose .wysihtml5-sandbox {
|
||||
padding: 0px !important;
|
||||
margin: 0px !important;
|
||||
display: block !important;
|
||||
border: 0 !important;
|
||||
margin-top: 5px;
|
||||
width: 100% !important;
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
border-color: #eee;
|
||||
}
|
||||
|
||||
.inbox-compose .wysihtml5-toolbar {
|
||||
border: 0;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
.inbox-compose .wysihtml5-toolbar > li {
|
||||
height: 34px;
|
||||
margin-right: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.inbox-compose .wysihtml5-toolbar > li > a,
|
||||
.inbox-compose .wysihtml5-toolbar > li > div > a {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.inbox-compose .wysihtml5-toolbar .dropdown.open .dropdown-toggle,
|
||||
ul.wysihtml5-toolbar a.btn.wysihtml5-command-active {
|
||||
background: #eee !important;
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
|
||||
.inbox-compose .inbox-control-group > label {
|
||||
margin-top: 7px;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
/***
|
||||
Invoice page
|
||||
***/
|
||||
.invoice table {
|
||||
margin:30px 0 30px;
|
||||
}
|
||||
|
||||
.invoice .invoice-logo {
|
||||
margin-bottom:20px;
|
||||
}
|
||||
|
||||
.invoice .invoice-logo p {
|
||||
padding:5px 0;
|
||||
font-size:26px;
|
||||
line-height:28px;
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
.invoice .invoice-logo p span {
|
||||
display:block;
|
||||
font-size:14px;
|
||||
}
|
||||
|
||||
.invoice .invoice-logo-space {
|
||||
margin-bottom:15px;
|
||||
}
|
||||
|
||||
.invoice .invoice-payment strong {
|
||||
margin-right:5px;
|
||||
}
|
||||
|
||||
.invoice .invoice-block {
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
.invoice .invoice-block .amounts {
|
||||
margin-top: 20px;
|
||||
font-size: 14px;
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
.easyPieChart {
|
||||
position: relative;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.easyPieChart canvas {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
@ -0,0 +1,249 @@
|
||||
/*! fancyBox v2.1.3 fancyapps.com | fancyapps.com/fancybox/#license */
|
||||
.fancybox-wrap,
|
||||
.fancybox-skin,
|
||||
.fancybox-outer,
|
||||
.fancybox-inner,
|
||||
.fancybox-image,
|
||||
.fancybox-wrap iframe,
|
||||
.fancybox-wrap object,
|
||||
.fancybox-nav,
|
||||
.fancybox-nav span,
|
||||
.fancybox-tmp
|
||||
{
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
outline: none;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.fancybox-wrap {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 8020;
|
||||
}
|
||||
|
||||
.fancybox-skin {
|
||||
position: relative;
|
||||
background: #f9f9f9;
|
||||
color: #444;
|
||||
text-shadow: none;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.fancybox-opened {
|
||||
z-index: 8030;
|
||||
}
|
||||
|
||||
.fancybox-opened .fancybox-skin {
|
||||
-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
|
||||
-moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
|
||||
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
.fancybox-outer, .fancybox-inner {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.fancybox-inner {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.fancybox-type-iframe .fancybox-inner {
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.fancybox-error {
|
||||
color: #444;
|
||||
font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
|
||||
margin: 0;
|
||||
padding: 15px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.fancybox-image, .fancybox-iframe {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.fancybox-image {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
|
||||
background-image: url('../image/fancybox_sprite.png');
|
||||
}
|
||||
|
||||
#fancybox-loading {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-top: -22px;
|
||||
margin-left: -22px;
|
||||
background-position: 0 -108px;
|
||||
opacity: 0.8;
|
||||
cursor: pointer;
|
||||
z-index: 8060;
|
||||
}
|
||||
|
||||
#fancybox-loading div {
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
background: url('../image/fancybox_loading.gif') center center no-repeat;
|
||||
}
|
||||
|
||||
.fancybox-close {
|
||||
position: absolute;
|
||||
top: -18px;
|
||||
right: -18px;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
cursor: pointer;
|
||||
z-index: 8040;
|
||||
}
|
||||
|
||||
.fancybox-nav {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 40%;
|
||||
height: 100%;
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
background: transparent url('../image/blank.gif'); /* helps IE */
|
||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||
z-index: 8040;
|
||||
}
|
||||
|
||||
.fancybox-prev {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.fancybox-next {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.fancybox-nav span {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
width: 36px;
|
||||
height: 34px;
|
||||
margin-top: -18px;
|
||||
cursor: pointer;
|
||||
z-index: 8040;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.fancybox-prev span {
|
||||
left: 10px;
|
||||
background-position: 0 -36px;
|
||||
}
|
||||
|
||||
.fancybox-next span {
|
||||
right: 10px;
|
||||
background-position: 0 -72px;
|
||||
}
|
||||
|
||||
.fancybox-nav:hover span {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.fancybox-tmp {
|
||||
position: absolute;
|
||||
top: -99999px;
|
||||
left: -99999px;
|
||||
visibility: hidden;
|
||||
max-width: 99999px;
|
||||
max-height: 99999px;
|
||||
overflow: visible !important;
|
||||
}
|
||||
|
||||
/* Overlay helper */
|
||||
|
||||
.fancybox-lock {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.fancybox-overlay {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
overflow: hidden;
|
||||
display: none;
|
||||
z-index: 8010;
|
||||
background: url('../image/fancybox_overlay.png');
|
||||
}
|
||||
|
||||
.fancybox-overlay-fixed {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.fancybox-lock .fancybox-overlay {
|
||||
overflow: auto;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
/* Title helper */
|
||||
|
||||
.fancybox-title {
|
||||
visibility: hidden;
|
||||
font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
|
||||
position: relative;
|
||||
text-shadow: none;
|
||||
z-index: 8050;
|
||||
}
|
||||
|
||||
.fancybox-opened .fancybox-title {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.fancybox-title-float-wrap {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 50%;
|
||||
margin-bottom: -35px;
|
||||
z-index: 8050;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fancybox-title-float-wrap .child {
|
||||
display: inline-block;
|
||||
margin-right: -100%;
|
||||
padding: 2px 20px;
|
||||
background: transparent; /* Fallback for web browsers that doesn't support RGBa */
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
-webkit-border-radius: 15px;
|
||||
-moz-border-radius: 15px;
|
||||
border-radius: 15px;
|
||||
text-shadow: 0 1px 2px #222;
|
||||
color: #FFF;
|
||||
font-weight: bold;
|
||||
line-height: 24px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.fancybox-title-outside-wrap {
|
||||
position: relative;
|
||||
margin-top: 10px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.fancybox-title-inside-wrap {
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.fancybox-title-over-wrap {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
color: #fff;
|
||||
padding: 10px;
|
||||
background: #000;
|
||||
background: rgba(0, 0, 0, .8);
|
||||
}
|
@ -0,0 +1,84 @@
|
||||
@charset "UTF-8";
|
||||
/*
|
||||
* jQuery File Upload UI Plugin CSS 6.10
|
||||
* https://github.com/blueimp/jQuery-File-Upload
|
||||
*
|
||||
* Copyright 2010, Sebastian Tschan
|
||||
* https://blueimp.net
|
||||
*
|
||||
* Licensed under the MIT license:
|
||||
* http://www.opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
.fileinput-button {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
float: left;
|
||||
margin-right: 4px;
|
||||
}
|
||||
.fileinput-button input {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
margin: 0;
|
||||
opacity: 0;
|
||||
filter: alpha(opacity=0);
|
||||
transform: translate(-300px, 0) scale(4);
|
||||
font-size: 23px;
|
||||
direction: ltr;
|
||||
cursor: pointer;
|
||||
}
|
||||
.fileupload-buttonbar .btn,
|
||||
.fileupload-buttonbar .toggle {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.files .progress {
|
||||
width: 200px;
|
||||
}
|
||||
.progress-animated .bar {
|
||||
background: url(../image/progressbar.gif) !important;
|
||||
filter: none;
|
||||
}
|
||||
.fileupload-loading {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
width: 128px;
|
||||
height: 128px;
|
||||
background: url(../image/loading.gif) center no-repeat;
|
||||
display: none;
|
||||
}
|
||||
.fileupload-processing .fileupload-loading {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Fix for IE 6: */
|
||||
* html .fileinput-button {
|
||||
line-height: 24px;
|
||||
margin: 1px -3px 0 0;
|
||||
}
|
||||
|
||||
/* Fix for IE 7: */
|
||||
* + html .fileinput-button {
|
||||
padding: 2px 15px;
|
||||
margin: 1px 0 0 0;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.files .btn span {
|
||||
display: none;
|
||||
}
|
||||
.files .preview * {
|
||||
width: 40px;
|
||||
}
|
||||
.files .name * {
|
||||
width: 80px;
|
||||
display: inline-block;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.files .progress {
|
||||
width: 20px;
|
||||
}
|
||||
.files .delete {
|
||||
width: 60px;
|
||||
}
|
||||
}
|
@ -0,0 +1,101 @@
|
||||
/* the norm */
|
||||
#gritter-notice-wrapper {
|
||||
position:fixed;
|
||||
top:20px;
|
||||
right:20px;
|
||||
width:301px;
|
||||
z-index:9999;
|
||||
}
|
||||
#gritter-notice-wrapper.top-left {
|
||||
left: 20px;
|
||||
right: auto;
|
||||
}
|
||||
#gritter-notice-wrapper.bottom-right {
|
||||
top: auto;
|
||||
left: auto;
|
||||
bottom: 20px;
|
||||
right: 20px;
|
||||
}
|
||||
#gritter-notice-wrapper.bottom-left {
|
||||
top: auto;
|
||||
right: auto;
|
||||
bottom: 20px;
|
||||
left: 20px;
|
||||
}
|
||||
.gritter-item-wrapper {
|
||||
position:relative;
|
||||
margin:0 0 10px 0;
|
||||
background:url('../image/ie-spacer.gif'); /* ie7/8 fix */
|
||||
}
|
||||
.gritter-top {
|
||||
background:url(../image/gritter.png) no-repeat left -30px;
|
||||
height:10px;
|
||||
}
|
||||
.hover .gritter-top {
|
||||
background-position:right -30px;
|
||||
}
|
||||
.gritter-bottom {
|
||||
background:url(../image/gritter.png) no-repeat left bottom;
|
||||
height:8px;
|
||||
margin:0;
|
||||
}
|
||||
.hover .gritter-bottom {
|
||||
background-position: bottom right;
|
||||
}
|
||||
.gritter-item {
|
||||
display:block;
|
||||
background:url(../image/gritter.png) no-repeat left -40px;
|
||||
color:#eee;
|
||||
padding:2px 11px 8px 11px;
|
||||
font-size: 11px;
|
||||
font-family:verdana;
|
||||
}
|
||||
.hover .gritter-item {
|
||||
background-position:right -40px;
|
||||
}
|
||||
.gritter-item p {
|
||||
padding:0;
|
||||
margin:0;
|
||||
word-wrap:break-word;
|
||||
}
|
||||
.gritter-close {
|
||||
display:none;
|
||||
position:absolute;
|
||||
top:5px;
|
||||
left:3px;
|
||||
background:url(../image/gritter.png) no-repeat left top;
|
||||
cursor:pointer;
|
||||
width:30px;
|
||||
height:30px;
|
||||
}
|
||||
.gritter-title {
|
||||
font-size:14px;
|
||||
font-weight:bold;
|
||||
padding:0 0 7px 0;
|
||||
display:block;
|
||||
text-shadow:1px 1px 0 #000; /* Not supported by IE :( */
|
||||
}
|
||||
.gritter-image {
|
||||
width:48px;
|
||||
height:48px;
|
||||
float:left;
|
||||
}
|
||||
.gritter-with-image,
|
||||
.gritter-without-image {
|
||||
padding:0;
|
||||
}
|
||||
.gritter-with-image {
|
||||
width:220px;
|
||||
float:right;
|
||||
}
|
||||
/* for the light (white) version of the gritter notice */
|
||||
.gritter-light .gritter-item,
|
||||
.gritter-light .gritter-bottom,
|
||||
.gritter-light .gritter-top,
|
||||
.gritter-light .gritter-close {
|
||||
background-image: url(../image/gritter-light.png);
|
||||
color: #222;
|
||||
}
|
||||
.gritter-light .gritter-title {
|
||||
text-shadow: none;
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
/**
|
||||
* Nestable
|
||||
*/
|
||||
.dd-list { display: block; position: relative; margin: 0; padding: 0; list-style: none; }
|
||||
.dd-list .dd-list { padding-left: 30px; }
|
||||
.dd-collapsed .dd-list { display: none; }
|
||||
|
||||
.dd-item,
|
||||
.dd-empty,
|
||||
.dd-placeholder { display: block; position: relative; margin: 0; padding: 0; min-height: 20px; font-size: 13px; line-height: 20px; }
|
||||
|
||||
.dd-handle { display: block; height: 30px; margin: 5px 0; cursor: move; padding: 5px 10px; color: #333; text-decoration: none; font-weight: 400; border: 1px solid #ccc;
|
||||
background: #fafafa;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box; -moz-box-sizing: border-box;
|
||||
}
|
||||
.dd-handle:hover { color: #2ea8e5; background: #fff; }
|
||||
|
||||
.dd-item > button { display: block; position: relative; cursor: pointer; float: left; width: 25px; height: 20px; margin: 7px 0; padding: 0; text-indent: 100%; white-space: nowrap; overflow: hidden; border: 0; background: transparent; font-size: 10px; line-height: 1; text-align: center; font-weight: bold; }
|
||||
.dd-item > button:before { content: '\f067'; display: block; position: absolute; width: 100%; text-align: center; text-indent: 0; font-family: 'FontAwesome' }
|
||||
.dd-item > button[data-action="collapse"]:before { content: '\f068'; }
|
||||
|
||||
.dd-placeholder,
|
||||
.dd-empty {
|
||||
margin: 5px 0; padding: 0; min-height: 30px; background: #f2fbff; border: 1px dashed #b6bcbf;
|
||||
box-sizing: border-box; -moz-box-sizing: border-box; }
|
||||
.dd-empty { border: 1px dashed #bbb; min-height: 100px; background-color: #e5e5e5;
|
||||
background-size: 60px 60px;
|
||||
background-position: 0 0, 30px 30px;
|
||||
}
|
||||
|
||||
.dd-dragel { position: absolute; pointer-events: none; z-index: 9999; }
|
||||
.dd-dragel > .dd-item .dd-handle { margin-top: 0; }
|
||||
.dd-dragel .dd-handle {
|
||||
-webkit-box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
|
||||
box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
|
||||
}
|
||||
|
||||
.dd-hover > .dd-handle { background: #2ea8e5 !important; }
|
||||
|
||||
/**
|
||||
* Nestable Draggable Handles
|
||||
*/
|
||||
|
||||
.dd3-content { display: block; height: 30px; margin: 5px 0; padding: 5px 10px 5px 40px; color: #333; text-decoration: none; font-weight: 400; border: 1px solid #ccc;
|
||||
background: #fafafa;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box; -moz-box-sizing: border-box;
|
||||
}
|
||||
.dd3-content:hover { color: #2ea8e5; background: #fff; }
|
||||
|
||||
.dd-dragel > .dd3-item > .dd3-content { margin: 0; }
|
||||
|
||||
.dd3-item > button { margin-left: 30px; }
|
||||
|
||||
.dd3-handle { position: absolute; margin: 0; left: 0; top: 0; cursor:move; width: 30px; text-indent: 100%; white-space: nowrap; overflow: hidden;
|
||||
border: 1px solid #aaa;
|
||||
background: #ddd;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
.dd3-handle:before { content: '≡'; display: block; position: absolute; left: 0; top: 3px; width: 100%; text-align: center; text-indent: 0; color: #fff; font-size: 20px; font-weight: normal; }
|
||||
.dd3-handle:hover { background: #ddd; }
|
@ -0,0 +1,7 @@
|
||||
div.tagsinput { border:1px solid #CCC; background: #FFF; padding:5px; width:300px; height:100px; overflow-y: auto;}
|
||||
div.tagsinput span.tag { border: 1px solid #a5d24a; -moz-border-radius:2px; -webkit-border-radius:2px; display: block; float: left; padding: 5px; text-decoration:none; background: #cde69c; color: #638421; margin-right: 5px; margin-bottom:5px;font-family: helvetica; font-size:13px;}
|
||||
div.tagsinput span.tag a { font-weight: bold; color: #82ad2b; text-decoration:none; font-size: 11px; }
|
||||
div.tagsinput input { width:80px; margin:0px; font-family: helvetica; font-size: 13px; border:1px solid transparent; padding:5px; background: transparent; color: #000; outline:0px; margin-right:5px; margin-bottom:5px; }
|
||||
div.tagsinput div { display:block; float: left; }
|
||||
.tags_clear { clear: both; width: 100%; height: 0px; }
|
||||
.not_valid {background: #FBD8DB !important; color: #90111A !important;}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue