初始化,增加Notes示例
diff --git a/.envtools/_init.bat b/.envtools/_init.bat
new file mode 100644
index 0000000..42e94fb
--- /dev/null
+++ b/.envtools/_init.bat
@@ -0,0 +1,28 @@
+if not '%1' == 'eclipse' (
+ if not '%1' == 'myeclipse' goto error
+)
+
+set ENTRYDIR=%~dp0
+cd ..
+echo --- Cleaning ---
+call mvn -T3 eclipse:clean eclipse:myeclipse-clean clean
+echo --- Generating Project Message ---
+call mvn -T3 eclipse:%1
+echo --- Installing platform-parent ---
+call mvn -T3 -N install -Dmaven.test.skip=true
+echo --- Installing Module ---
+cd module
+call mvn -T3 install -Dmaven.test.skip=true
+cd ..
+echo --- Installing Web ---
+cd web
+call mvn -T3 install -Dmaven.test.skip=true
+cd ..
+
+cd %ENTRYDIR%
+goto end
+
+:error
+echo but, you should not execute me directly!
+
+:end
diff --git a/.envtools/_init.sh b/.envtools/_init.sh
new file mode 100644
index 0000000..afc899d
--- /dev/null
+++ b/.envtools/_init.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+if [[ $# != 1 || ($1 != 'eclipse' && $1 != 'myeclipse') ]]; then
+ echo but, you should not execute me directly!
+ exit;
+fi
+
+ENTRYDIR=$PWD
+cd ..
+
+echo --- Cleaning ---
+mvn -T3 eclipse:clean eclipse:myeclipse-clean clean | grep ERROR
+echo --- Generating Project Message ---
+mvn -T3 eclipse:$1 | grep ERROR
+
+echo --- Installing platform-parent ---
+mvn -T3 -N install -Dmaven.test.skip=true | grep ERROR
+
+echo --- Installing Module ---
+cd module
+mvn -T3 install -Dmaven.test.skip=true | grep ERROR
+cd ..
+
+echo --- Installing Web ---
+cd web
+mvn -T3 install -Dmaven.test.skip=true | grep ERROR
+cd ..
+
+cd $ENTRYDIR
diff --git a/.envtools/deploy.sh b/.envtools/deploy.sh
new file mode 100644
index 0000000..c499a96
--- /dev/null
+++ b/.envtools/deploy.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+echo Start to Deploy!
+
+ENTRYDIR=$PWD
+cd ..
+echo --- Deploying ---
+mvn -T3 clean deploy -Dmaven.test.skip=true | grep ERROR
+cd $ENTRYDIR
+
+echo Deploy Complete!
diff --git a/.envtools/initForEclipse.bat b/.envtools/initForEclipse.bat
new file mode 100644
index 0000000..6801ead
--- /dev/null
+++ b/.envtools/initForEclipse.bat
@@ -0,0 +1,5 @@
+@echo off
+echo Start to Init For Eclipse!
+call _init.bat eclipse
+echo Init For Eclipse Complete!
+@echo on
\ No newline at end of file
diff --git a/.envtools/initForEclipse.sh b/.envtools/initForEclipse.sh
new file mode 100644
index 0000000..6188037
--- /dev/null
+++ b/.envtools/initForEclipse.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+echo Start to Init For Eclipse!
+./_init.sh eclipse
+echo Init For Eclipse Complete!
diff --git a/.envtools/initForMyEclipse.bat b/.envtools/initForMyEclipse.bat
new file mode 100644
index 0000000..45f4c75
--- /dev/null
+++ b/.envtools/initForMyEclipse.bat
@@ -0,0 +1,5 @@
+@echo off
+echo Start to Init For MyEclipse!
+call _init.bat myeclipse
+echo Init For MyEclipse Complete!
+@echo on
\ No newline at end of file
diff --git a/.envtools/initForMyEclipse.sh b/.envtools/initForMyEclipse.sh
new file mode 100644
index 0000000..cc3ecf1
--- /dev/null
+++ b/.envtools/initForMyEclipse.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+echo Start to Init For MyEclipse!
+./_init.sh myeclipse
+echo Init For MyEclipse Complete!
diff --git a/.envtools/release.sh b/.envtools/release.sh
new file mode 100644
index 0000000..5b8f0d9
--- /dev/null
+++ b/.envtools/release.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+echo Start to Release!
+
+ENTRYDIR=$PWD
+cd ..
+echo --- Preparing ---
+mvn release:clean release:prepare -DpreparationGoals=clean | grep ERROR
+echo --- Releasing ---
+mvn release:perform -Dgoals="deploy -Dmaven.test.skip=true" | grep ERROR
+echo --- Cleaning ---
+mvn release:clean | grep ERROR
+cd $ENTRYDIR
+
+echo Release Complete!
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..bee007e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+*/**/.settings
+*/**/target
+*/**/.classpath
+*/**/.project
+*/**/work
+
+*/**/.tomcatplugin
+*/**/.#webclasspath
+
+/deploy/**
+/tomcat/**
+/bundles/tomcat/apache-tomcat-8.0.17/**
+/bundles/tomcat/apache-tomcat-8.0.17/apache-tomcat-8.0.17.tar
+!/tomcat/TOMCAT
\ No newline at end of file
diff --git a/README.MD b/README.MD
new file mode 100644
index 0000000..9a80950
--- /dev/null
+++ b/README.MD
@@ -0,0 +1 @@
+#BIZ Framework
\ No newline at end of file
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..905f58b
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="monitor" basedir="." default="deploy" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
+ <property environment="env"/>
+
+ <!-- properies -->
+ <property name="project.name" value="uniportal-biz" />
+
+ <property name="tomcat.name" value="apache-tomcat-8.0.17" />
+
+ <property name="deploy.dir" value="deploy" />
+ <property name="dist.dir" value="dist" />
+
+ <target name="deploy" description="deploy the biz">
+ <artifact:pom id="pom" file="pom.xml"/>
+ <echo>${pom.version}</echo>
+
+ <delete dir="${basedir}/${deploy.dir}" />
+ <mkdir dir="${basedir}/${deploy.dir}" />
+
+ <!-- <unzip src="${basedir}/tomcat/${tomcat.name}.tar.gz" dest="${basedir}/${deploy.dir}/${project.name}-v${pom.version}/tomcat/" /> -->
+ <gunzip src="${basedir}/bundles/tomcat/${tomcat.name}.tar.gz" />
+ <untar src="${basedir}/bundles/tomcat/${tomcat.name}.tar" dest="${basedir}/${deploy.dir}/${project.name}-v${pom.version}/tomcat/" />
+
+ <copy todir="${basedir}/${deploy.dir}/${project.name}-v${pom.version}/tomcat/${tomcat.name}/lib"
+ file="${basedir}/bundles/tomcat/${tomcat.name}/lib/druid-1.0.13.jar">
+ </copy>
+ <copy todir="${basedir}/${deploy.dir}/${project.name}-v${pom.version}/tomcat/${tomcat.name}/conf"
+ file="${basedir}/bundles/tomcat/${tomcat.name}/conf/server.xml">
+ </copy>
+ <copy todir="${basedir}/${deploy.dir}/${project.name}-v${pom.version}/tomcat/${tomcat.name}/conf"
+ file="${basedir}/bundles/tomcat/${tomcat.name}/conf/context.xml">
+ </copy>
+
+ <artifact:mvn pom="${basedir}/pom.xml" mavenHome="${env.M2_HOME}" fork="true">
+ <arg value="clean"/>
+ <arg value="package"/>
+ <arg value="-Dmaven.test.skip=true"/>
+ </artifact:mvn>
+
+ <unzip src="${basedir}/web/platform-web-api/target/biz-api.war"
+ dest="${basedir}/${deploy.dir}/${project.name}-v${pom.version}/tomcat/${tomcat.name}/webapps/biz-api">
+ </unzip>
+
+ <unzip src="${basedir}/web/platform-web-admin/target/biz-admin.war"
+ dest="${basedir}/${deploy.dir}/${project.name}-v${pom.version}/tomcat/${tomcat.name}/webapps/biz-admin">
+ </unzip>
+
+ </target>
+
+ <target name="dist" description="dist the biz">
+ <artifact:pom id="pom" file="pom.xml" />
+ <echo>${pom.version}</echo>
+
+ <antcall target="deploy" />
+
+ <delete dir="${basedir}/${dist.dir}" />
+ <mkdir dir="${basedir}/${dist.dir}" />
+
+ <tar destfile="${basedir}/${dist.dir}/${project.name}-v${pom.version}.tar" basedir="${basedir}/${deploy.dir}"/>
+ <gzip destfile="${basedir}/${dist.dir}/${project.name}-v${pom.version}.tar.gz" src="${basedir}/${dist.dir}/${project.name}-v${pom.version}.tar"/>
+
+ <delete file="${basedir}/${dist.dir}/${project.name}-v${pom.version}.tar" />
+
+ <zip destfile="${basedir}/${dist.dir}/${project.name}-v${pom.version}.zip" basedir="${basedir}/${deploy.dir}" />
+
+ <copy todir="${basedir}/${dist.dir}/">
+ <fileset dir="${basedir}/doc/"></fileset>
+ <fileset dir="${basedir}/env/"></fileset>
+ </copy>
+
+ <copy todir="${basedir}/${dist.dir}/sql/">
+ <fileset dir="${basedir}/sql/"></fileset>
+ </copy>
+
+ </target>
+
+</project>
diff --git a/bundles/tomcat/DevloaderTomcat8.jar b/bundles/tomcat/DevloaderTomcat8.jar
new file mode 100644
index 0000000..5996ee0
--- /dev/null
+++ b/bundles/tomcat/DevloaderTomcat8.jar
Binary files differ
diff --git a/bundles/tomcat/apache-tomcat-8.0.17.tar.gz b/bundles/tomcat/apache-tomcat-8.0.17.tar.gz
new file mode 100644
index 0000000..673bdfa
--- /dev/null
+++ b/bundles/tomcat/apache-tomcat-8.0.17.tar.gz
Binary files differ
diff --git a/bundles/tomcat/com.sysdeo.eclipse.tomcat_3.3.1.jar b/bundles/tomcat/com.sysdeo.eclipse.tomcat_3.3.1.jar
new file mode 100644
index 0000000..4ec963c
--- /dev/null
+++ b/bundles/tomcat/com.sysdeo.eclipse.tomcat_3.3.1.jar
Binary files differ
diff --git a/doc/DOC b/doc/DOC
new file mode 100644
index 0000000..c2da4f6
--- /dev/null
+++ b/doc/DOC
@@ -0,0 +1 @@
+DOC
diff --git a/env/server-jre-8u77-linux-x64.tar.gz b/env/server-jre-8u77-linux-x64.tar.gz
new file mode 100644
index 0000000..516e615
--- /dev/null
+++ b/env/server-jre-8u77-linux-x64.tar.gz
Binary files differ
diff --git a/module/platform-biz-sample-module-notes/pom.xml b/module/platform-biz-sample-module-notes/pom.xml
new file mode 100644
index 0000000..8ff883f
--- /dev/null
+++ b/module/platform-biz-sample-module-notes/pom.xml
@@ -0,0 +1,62 @@
+<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>
+
+ <parent>
+ <groupId>com.supwisdom.platform.biz.sample</groupId>
+ <artifactId>platform-biz-sample-module</artifactId>
+ <version>3.0.0</version>
+ </parent>
+
+ <groupId>com.supwisdom.platform.biz.sample</groupId>
+ <artifactId>platform-biz-sample-module-notes</artifactId>
+ <packaging>jar</packaging>
+ <version>3.0.0</version>
+ <name>PlatformService Module Notes</name>
+ <url>http://maven.apache.org</url>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-core-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-core-framework</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-domain</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-interface</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-security</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-log</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-resources</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-security-ext</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-workflow</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-third</artifactId>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/module/platform-biz-sample-module-notes/src/main/java/com/supwisdom/platform/biz/sample/module/notes/controller/SampleNotesController.java b/module/platform-biz-sample-module-notes/src/main/java/com/supwisdom/platform/biz/sample/module/notes/controller/SampleNotesController.java
new file mode 100644
index 0000000..fa57f1e
--- /dev/null
+++ b/module/platform-biz-sample-module-notes/src/main/java/com/supwisdom/platform/biz/sample/module/notes/controller/SampleNotesController.java
@@ -0,0 +1,45 @@
+package com.supwisdom.platform.biz.sample.module.notes.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.supwisdom.platform.biz.core.common.other.MediaTypes;
+import com.supwisdom.platform.biz.core.framework.controller.ABaseRestController;
+import com.supwisdom.platform.biz.core.framework.domain.BaseResult.Status;
+import com.supwisdom.platform.biz.core.framework.domain.RestResult;
+import com.supwisdom.platform.biz.core.framework.domain.RestResult.OperatorType;
+import com.supwisdom.platform.biz.core.framework.exception.RestException;
+import com.supwisdom.platform.biz.core.framework.manager.IBaseManager;
+import com.supwisdom.platform.biz.sample.module.notes.domain.SampleNotes;
+import com.supwisdom.platform.biz.sample.module.notes.manager.ISampleNotesManager;
+
+@RestController
+@RequestMapping("/rest/notes")
+public class SampleNotesController extends ABaseRestController<SampleNotes> {
+
+ @Autowired
+ private ISampleNotesManager sampleNotesManager;
+
+ @Override
+ protected IBaseManager<SampleNotes> getBaseManager() {
+ return sampleNotesManager;
+ }
+
+ @RequestMapping(method = RequestMethod.POST, consumes = MediaTypes.JSON_UTF_8, produces = MediaTypes.JSON_UTF_8, params = "method=deleteAll")
+ @ResponseBody
+ public RestResult deleteAll() {
+ RestResult result = new RestResult(Status.OK, "删除成功!");
+ try {
+ getBaseManager().deleteAll();
+ result.addData(OperatorType.DELETE, "Success!");
+ } catch (Exception e) {
+ throw new RestException(HttpStatus.BAD_REQUEST, "删除对象出错");
+ }
+ return result;
+ }
+
+}
diff --git a/module/platform-biz-sample-module-notes/src/main/java/com/supwisdom/platform/biz/sample/module/notes/domain/SampleNotes.java b/module/platform-biz-sample-module-notes/src/main/java/com/supwisdom/platform/biz/sample/module/notes/domain/SampleNotes.java
new file mode 100644
index 0000000..55faefa
--- /dev/null
+++ b/module/platform-biz-sample-module-notes/src/main/java/com/supwisdom/platform/biz/sample/module/notes/domain/SampleNotes.java
@@ -0,0 +1,77 @@
+package com.supwisdom.platform.biz.sample.module.notes.domain;
+
+import com.supwisdom.platform.biz.core.framework.domain.ABean;
+
+public class SampleNotes extends ABean {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 348592606668570276L;
+
+ private String createUser;
+
+
+ private String createTime;
+
+
+ private String bgColor;
+
+
+ private String title;
+
+
+ private String pos;
+
+
+ private String text;
+
+ public String getCreateUser() {
+ return createUser;
+ }
+
+ public void setCreateUser(String createUser) {
+ this.createUser = createUser == null ? null : createUser.trim();
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime == null ? null : createTime.trim();
+ }
+
+ public String getBgColor() {
+ return bgColor;
+ }
+
+ public void setBgColor(String bgColor) {
+ this.bgColor = bgColor == null ? null : bgColor.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public String getPos() {
+ return pos;
+ }
+
+ public void setPos(String pos) {
+ this.pos = pos == null ? null : pos.trim();
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text == null ? null : text.trim();
+ }
+
+}
\ No newline at end of file
diff --git a/module/platform-biz-sample-module-notes/src/main/java/com/supwisdom/platform/biz/sample/module/notes/manager/ISampleNotesManager.java b/module/platform-biz-sample-module-notes/src/main/java/com/supwisdom/platform/biz/sample/module/notes/manager/ISampleNotesManager.java
new file mode 100644
index 0000000..f0d3b76
--- /dev/null
+++ b/module/platform-biz-sample-module-notes/src/main/java/com/supwisdom/platform/biz/sample/module/notes/manager/ISampleNotesManager.java
@@ -0,0 +1,8 @@
+package com.supwisdom.platform.biz.sample.module.notes.manager;
+
+import com.supwisdom.platform.biz.core.framework.manager.IBaseManager;
+import com.supwisdom.platform.biz.sample.module.notes.domain.SampleNotes;
+
+public interface ISampleNotesManager extends IBaseManager<SampleNotes> {
+
+}
diff --git a/module/platform-biz-sample-module-notes/src/main/java/com/supwisdom/platform/biz/sample/module/notes/manager/impl/SampleNotesManager.java b/module/platform-biz-sample-module-notes/src/main/java/com/supwisdom/platform/biz/sample/module/notes/manager/impl/SampleNotesManager.java
new file mode 100644
index 0000000..61f762f
--- /dev/null
+++ b/module/platform-biz-sample-module-notes/src/main/java/com/supwisdom/platform/biz/sample/module/notes/manager/impl/SampleNotesManager.java
@@ -0,0 +1,43 @@
+package com.supwisdom.platform.biz.sample.module.notes.manager.impl;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Assert;
+
+import com.supwisdom.platform.biz.core.common.util.DateUtils;
+import com.supwisdom.platform.biz.core.framework.exception.ManagerException;
+import com.supwisdom.platform.biz.core.framework.manager.ABaseManager;
+import com.supwisdom.platform.biz.module.security.util.UserUtil;
+import com.supwisdom.platform.biz.sample.module.notes.domain.SampleNotes;
+import com.supwisdom.platform.biz.sample.module.notes.manager.ISampleNotesManager;
+
+@Service
+public class SampleNotesManager extends ABaseManager<SampleNotes> implements ISampleNotesManager {
+
+ @Transactional
+ @Override
+ public void insert(SampleNotes entity) {
+
+ entity.setCreateTime(DateUtils.getDateString(DateUtils.datetimeFormat));
+ entity.setCreateUser(UserUtil.getCurrentUserId());
+
+ super.insert(entity);
+ }
+
+ @Transactional
+ @Override
+ public int updateById(SampleNotes entity) {
+ Assert.notNull(entity);
+ Assert.notNull(entity.getId());
+
+ SampleNotes originNote = selectById(entity.getId());
+
+ if(originNote == null) {
+ throw new ManagerException("未找到对应实体");
+ }
+
+ originNote.setText(entity.getText());
+ return super.updateById(originNote);
+ }
+
+}
diff --git a/module/platform-biz-sample-module-notes/src/main/resources/com/supwisdom/platform/biz/sample/module/notes/domain/SampleNotesBaseMapper.xml b/module/platform-biz-sample-module-notes/src/main/resources/com/supwisdom/platform/biz/sample/module/notes/domain/SampleNotesBaseMapper.xml
new file mode 100644
index 0000000..13bcbbf
--- /dev/null
+++ b/module/platform-biz-sample-module-notes/src/main/resources/com/supwisdom/platform/biz/sample/module/notes/domain/SampleNotesBaseMapper.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.supwisdom.platform.biz.sample.module.notes.domain.SampleNotes" >
+ <resultMap id="BaseResultMap" type="com.supwisdom.platform.biz.sample.module.notes.domain.SampleNotes" >
+ <id column="ID" property="id" jdbcType="VARCHAR" />
+ <result column="CREATE_USER" property="createUser" jdbcType="VARCHAR" />
+ <result column="CREATE_TIME" property="createTime" jdbcType="VARCHAR" />
+ <result column="BG_COLOR" property="bgColor" jdbcType="VARCHAR" />
+ <result column="TITLE" property="title" jdbcType="VARCHAR" />
+ <result column="POS" property="pos" jdbcType="VARCHAR" />
+ </resultMap>
+ <resultMap id="ResultMapWithBLOBs" type="com.supwisdom.platform.biz.sample.module.notes.domain.SampleNotes" extends="BaseResultMap" >
+ <result column="TEXT" property="text" jdbcType="CLOB" />
+ </resultMap>
+ <sql id="Base_Column_List" >
+ ID, CREATE_USER, CREATE_TIME, BG_COLOR, TITLE, POS
+ </sql>
+ <sql id="Blob_Column_List" >
+ TEXT
+ </sql>
+
+ <delete id="deleteByExample">
+ delete from SAMPLE_NOTES
+ </delete>
+
+ <select id="selectByExample" resultMap="ResultMapWithBLOBs" parameterType="com.supwisdom.platform.biz.core.common.framework.DataTablePage">
+ select
+ <include refid="Base_Column_List" />
+ ,
+ <include refid="Blob_Column_List" />
+ from SAMPLE_NOTES
+ order by CREATE_TIME desc
+ </select>
+
+ <select id="selectByPrimaryKey" resultMap="ResultMapWithBLOBs" parameterType="java.lang.String" >
+ select
+ <include refid="Base_Column_List" />
+ ,
+ <include refid="Blob_Column_List" />
+ from SAMPLE_NOTES
+ where ID = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
+ delete from SAMPLE_NOTES
+ where ID = #{id,jdbcType=VARCHAR}
+ </delete>
+ <insert id="insert" parameterType="com.supwisdom.platform.biz.sample.module.notes.domain.SampleNotes" >
+ insert into SAMPLE_NOTES (ID, CREATE_USER, CREATE_TIME,
+ BG_COLOR, TITLE, POS,
+ TEXT)
+ values (#{id,jdbcType=VARCHAR}, #{createUser,jdbcType=VARCHAR}, #{createTime,jdbcType=VARCHAR},
+ #{bgColor,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, #{pos,jdbcType=VARCHAR},
+ #{text,jdbcType=CLOB})
+ </insert>
+ <insert id="insertSelective" parameterType="com.supwisdom.platform.biz.sample.module.notes.domain.SampleNotes" >
+ insert into SAMPLE_NOTES
+ <trim prefix="(" suffix=")" suffixOverrides="," >
+ <if test="id != null" >
+ ID,
+ </if>
+ <if test="createUser != null" >
+ CREATE_USER,
+ </if>
+ <if test="createTime != null" >
+ CREATE_TIME,
+ </if>
+ <if test="bgColor != null" >
+ BG_COLOR,
+ </if>
+ <if test="title != null" >
+ TITLE,
+ </if>
+ <if test="pos != null" >
+ POS,
+ </if>
+ <if test="text != null" >
+ TEXT,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides="," >
+ <if test="id != null" >
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="createUser != null" >
+ #{createUser,jdbcType=VARCHAR},
+ </if>
+ <if test="createTime != null" >
+ #{createTime,jdbcType=VARCHAR},
+ </if>
+ <if test="bgColor != null" >
+ #{bgColor,jdbcType=VARCHAR},
+ </if>
+ <if test="title != null" >
+ #{title,jdbcType=VARCHAR},
+ </if>
+ <if test="pos != null" >
+ #{pos,jdbcType=VARCHAR},
+ </if>
+ <if test="text != null" >
+ #{text,jdbcType=CLOB},
+ </if>
+ </trim>
+ </insert>
+ <update id="updateByPrimaryKeySelective" parameterType="com.supwisdom.platform.biz.sample.module.notes.domain.SampleNotes" >
+ update SAMPLE_NOTES
+ <set >
+ <if test="createUser != null" >
+ CREATE_USER = #{createUser,jdbcType=VARCHAR},
+ </if>
+ <if test="createTime != null" >
+ CREATE_TIME = #{createTime,jdbcType=VARCHAR},
+ </if>
+ <if test="bgColor != null" >
+ BG_COLOR = #{bgColor,jdbcType=VARCHAR},
+ </if>
+ <if test="title != null" >
+ TITLE = #{title,jdbcType=VARCHAR},
+ </if>
+ <if test="pos != null" >
+ POS = #{pos,jdbcType=VARCHAR},
+ </if>
+ <if test="text != null" >
+ TEXT = #{text,jdbcType=CLOB},
+ </if>
+ </set>
+ where ID = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.supwisdom.platform.biz.sample.module.notes.domain.SampleNotes" >
+ update SAMPLE_NOTES
+ set CREATE_USER = #{createUser,jdbcType=VARCHAR},
+ CREATE_TIME = #{createTime,jdbcType=VARCHAR},
+ BG_COLOR = #{bgColor,jdbcType=VARCHAR},
+ TITLE = #{title,jdbcType=VARCHAR},
+ POS = #{pos,jdbcType=VARCHAR},
+ TEXT = #{text,jdbcType=CLOB}
+ where ID = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
\ No newline at end of file
diff --git a/module/pom.xml b/module/pom.xml
new file mode 100644
index 0000000..ea7f77e
--- /dev/null
+++ b/module/pom.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.supwisdom.platform.biz.sample</groupId>
+ <artifactId>platform-biz-sample</artifactId>
+ <version>3.0.0</version>
+ </parent>
+
+ <groupId>com.supwisdom.platform.biz.sample</groupId>
+ <artifactId>platform-biz-sample-module</artifactId>
+ <packaging>pom</packaging>
+ <name>Platform Biz Sample Module Parent</name>
+ <url>http://maven.apache.org/</url>
+
+ <modules>
+ <module>platform-biz-sample-module-notes</module>
+ </modules>
+
+ <dependencies>
+ <!-- 业务无关API -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-core-common</artifactId>
+ </dependency>
+ <!-- 系统框架 -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-core-framework</artifactId>
+ </dependency>
+ <!-- 测试-->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ </dependency>
+ </dependencies>
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src/main/java</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <directory>src/test/resources</directory>
+ </testResource>
+ <testResource>
+ <directory>src/test/webapp</directory>
+ </testResource>
+ <testResource>
+ <directory>src/test/java</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </testResource>
+ </testResources>
+ </build>
+</project>
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..ca4b87f
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,668 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>com.supwisdom.platform.biz.sample</groupId>
+ <artifactId>platform-biz-sample</artifactId>
+ <packaging>pom</packaging>
+ <version>3.0.0</version>
+ <name>Platform Biz Sample</name>
+ <url>http://maven.apache.org</url>
+
+ <properties>
+ <springframework-version>4.1.2.RELEASE</springframework-version>
+ <springsecurity-version>3.2.5.RELEASE</springsecurity-version>
+ <springsecurityoauth2-version>2.0.10.RELEASE</springsecurityoauth2-version>
+ <springdataredis-version>1.7.1.RELEASE</springdataredis-version>
+ <jedis-version>2.8.1</jedis-version>
+ <slf4j-version>1.7.6</slf4j-version>
+ <log4j-version>1.2.17</log4j-version>
+ <mybatis-version>3.2.8</mybatis-version>
+ <mybatis-spring-version>1.2.2</mybatis-spring-version>
+ <mybatis-ehcache-version>1.0.0</mybatis-ehcache-version>
+ <ehcache-version>2.6.8</ehcache-version>
+ <json-version>2.3.2</json-version>
+ <aspectj-version>1.7.4</aspectj-version>
+ <snaker-version>2.5.1</snaker-version>
+
+ <repoAddress>http://app.supwisdom.com:81/artifactory</repoAddress>
+
+ <downloadSources>true</downloadSources>
+ <downloadJavadocs>true</downloadJavadocs>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <modules>
+ <module>module</module>
+ <module>web</module>
+ </modules>
+
+ <repositories>
+ <repository>
+ <id>artifactory</id>
+ <name>Artifactory Repository</name>
+ <url>${repoAddress}/repo</url>
+ </repository>
+ </repositories>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>artifactory</id>
+ <name>Artifactory Repository</name>
+ <url>${repoAddress}/repo</url>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <dependencyManagement>
+ <dependencies>
+ <!-- Modules Start -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-core</artifactId>
+ <type>pom</type>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- 业务无关API -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-core-common</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- 系统框架 -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-core-framework</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- 模块包 -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module</artifactId>
+ <type>pom</type>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- 实体模块 -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-domain</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- 抽象模块 -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-interface</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- 公共模块 -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-log</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- 资源模块 -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-resources</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- 安全模块 -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-security</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-security-ext</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- 第三方模块 -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-third</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- 工作流模块 -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-workflow</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.supwisdom.platform.biz.sample</groupId>
+ <artifactId>platform-biz-sample-module</artifactId>
+ <type>pom</type>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz.sample</groupId>
+ <artifactId>platform-biz-sample-module-notes</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- Modules End -->
+
+ <!-- Other Start -->
+ <!-- 单元测试环境 -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.11</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <version>1.7.0</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <version>${springframework-version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- spring 相关 -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ <version>${springframework-version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-webmvc</artifactId>
+ <version>${springframework-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context-support</artifactId>
+ <version>${springframework-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ <version>${springframework-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ <version>${springframework-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aop</artifactId>
+ <version>${springframework-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.data</groupId>
+ <artifactId>spring-data-commons</artifactId>
+ <version>1.7.0.RELEASE</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-web</artifactId>
+ <version>${springsecurity-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-taglibs</artifactId>
+ <version>${springsecurity-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-config</artifactId>
+ <version>${springsecurity-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.security</groupId>
+ <artifactId>spring-security-cas</artifactId>
+ <version>${springsecurity-version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.security.oauth</groupId>
+ <artifactId>spring-security-oauth2</artifactId>
+ <version>${springsecurityoauth2-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.data</groupId>
+ <artifactId>spring-data-redis</artifactId>
+ <version>${springdataredis-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>redis.clients</groupId>
+ <artifactId>jedis</artifactId>
+ <version>${jedis-version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.quartz-scheduler</groupId>
+ <artifactId>quartz</artifactId>
+ <version>2.2.1</version>
+ </dependency>
+ <!-- Aspectj -->
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>${aspectj-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjweaver</artifactId>
+ <version>${aspectj-version}</version>
+ </dependency>
+
+ <!-- Logging -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl-over-slf4j</artifactId>
+ <version>${slf4j-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>${slf4j-version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!-- Database -->
+ <dependency>
+ <groupId>com.oracle</groupId>
+ <artifactId>ojdbc6</artifactId>
+ <version>11.2.0.1.0</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>5.1.38</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>net.sf.ehcache</groupId>
+ <artifactId>ehcache-core</artifactId>
+ <version>${ehcache-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mybatis</groupId>
+ <artifactId>mybatis</artifactId>
+ <version>${mybatis-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mybatis</groupId>
+ <artifactId>mybatis-spring</artifactId>
+ <version>${mybatis-spring-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mybatis</groupId>
+ <artifactId>mybatis-ehcache</artifactId>
+ <version>${mybatis-ehcache-version}</version>
+ </dependency>
+
+ <!-- Spring自动处理JSON -->
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ <version>${json-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ <version>${json-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>${json-version}</version>
+ </dependency>
+
+ <!-- Joda Time -->
+ <dependency>
+ <groupId>joda-time</groupId>
+ <artifactId>joda-time</artifactId>
+ <version>2.3</version>
+ </dependency>
+ <dependency>
+ <groupId>joda-time</groupId>
+ <artifactId>joda-time-jsptags</artifactId>
+ <version>1.1.1</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!-- 数据源配置 -->
+ <dependency>
+ <groupId>commons-dbcp</groupId>
+ <artifactId>commons-dbcp</artifactId>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-pool</groupId>
+ <artifactId>commons-pool</artifactId>
+ <version>1.6</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>1.9</version>
+ </dependency>
+
+ <!-- Commons -->
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.4</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <version>1.9.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ <version>3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-fileupload</groupId>
+ <artifactId>commons-fileupload</artifactId>
+ <version>1.3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-dbutils</groupId>
+ <artifactId>commons-dbutils</artifactId>
+ <version>1.6</version>
+ </dependency>
+
+ <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib-nodep</artifactId>
+ <version>3.1</version>
+ </dependency>
+
+ <!-- Snaker工作流 -->
+ <dependency>
+ <groupId>com.github.snakerflow</groupId>
+ <artifactId>snaker-core</artifactId>
+ <version>${snaker-version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.github.snakerflow</groupId>
+ <artifactId>snaker-spring</artifactId>
+ <version>${snaker-version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.github.snakerflow</groupId>
+ <artifactId>snaker-mybatis</artifactId>
+ <version>${snaker-version}</version>
+ </dependency>
+
+
+ <!-- myself -->
+ <dependency>
+ <groupId>net.sf.json-lib</groupId>
+ <artifactId>json-lib</artifactId>
+ <version>2.2.3</version>
+ <classifier>jdk15</classifier>
+ </dependency>
+ <dependency>
+ <groupId>jstl</groupId>
+ <artifactId>jstl</artifactId>
+ <version>1.2</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>3.1.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ <version>1.4.01</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi</artifactId>
+ <version>3.10.1</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sourceforge.jexcelapi</groupId>
+ <artifactId>jxl</artifactId>
+ <version>2.6.12</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sf.jxls</groupId>
+ <artifactId>jxls-core</artifactId>
+ <version>1.0.3</version>
+ </dependency>
+
+ <dependency>
+ <groupId>freemarker</groupId>
+ <artifactId>freemarker</artifactId>
+ <version>2.3.6</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils-core</artifactId>
+ <version>1.8.3</version>
+ </dependency>
+ <dependency>
+ <groupId>javaee</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>5</version>
+ <scope>provided</scope>
+ </dependency>
+ <!-- Other End -->
+
+ <dependency>
+ <groupId>com.supwisdom.platform.uniportal</groupId>
+ <artifactId>jigsaw-portal-mq-api</artifactId>
+ <version>1.0.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.supwisdom.platform.jdbc</groupId>
+ <artifactId>ojdbc6</artifactId>
+ </exclusion>
+ </exclusions>
+
+ </dependency>
+
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <!-- UnitTest Start -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <!-- UnitTest End -->
+ </dependencies>
+
+ <profiles>
+ <profile>
+ <id>advanced-test</id>
+ <activation>
+ <file>
+ <exists>testng.xml</exists>
+ </file>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.12</version>
+ <configuration>
+ <suiteXmlFiles>
+ <skipTests>true</skipTests>
+ </suiteXmlFiles>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src/main/java</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <directory>src/test/resources</directory>
+ </testResource>
+ <testResource>
+ <directory>src/test/java</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-release-plugin</artifactId>
+ <version>2.3</version>
+ <configuration>
+ <autoVersionSubmodules>true</autoVersionSubmodules>
+ <tagNameFormat>@{project.version}</tagNameFormat>
+ <!-- <tagBase>${scmTags}</tagBase> -->
+ <checkModificationExcludes>
+ <checkModificationExclude>**/.project</checkModificationExclude>
+ <checkModificationExclude>**/.classpath</checkModificationExclude>
+ <checkModificationExclude>**/.mymetadata</checkModificationExclude>
+ <checkModificationExclude>**/.settings/**</checkModificationExclude>
+ </checkModificationExcludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.12</version>
+ <configuration>
+ <systemPropertyVariables>
+ <org.uncommons.reportng.escape-output>false</org.uncommons.reportng.escape-output>
+ <org.uncommons.reportng.velocity-log>false</org.uncommons.reportng.velocity-log>
+ </systemPropertyVariables>
+ <workingDirectory>target/</workingDirectory>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.3.2</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <encoding>UTF-8</encoding>
+ <compilerArguments>
+ <verbose/>
+ <!--<bootclasspath>${java.home}/lib/rt.jar</bootclasspath>-->
+ </compilerArguments>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <version>2.9</version>
+ <configuration>
+ <downloadSources>true</downloadSources>
+ <downloadJavadocs>true</downloadJavadocs>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-project-info-reports-plugin</artifactId>
+ <version>2.1.2</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ <version>2.1.2</version>
+ <executions>
+ <execution>
+ <id>attach-sources</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <version>2.4</version>
+ <configuration>
+ <!-- <skip>true</skip> -->
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>2.7</version>
+ <executions>
+ <execution>
+ <id>attach-javadocs</id>
+ <phase>site</phase>
+ <goals>
+ <goal>aggregate</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <failOnError>false</failOnError>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <organization>
+ <name>supwisdom</name>
+ <url>http://www.supwisdom.com</url>
+ </organization>
+</project>
diff --git a/sql/01 Create_TableSpace.sql b/sql/01 Create_TableSpace.sql
new file mode 100644
index 0000000..39e0edb
--- /dev/null
+++ b/sql/01 Create_TableSpace.sql
@@ -0,0 +1,4 @@
+-- 普通方式
+create tablespace TS_UNIPORTAL datafile '/home/loie/db/oracle/oradata/dev/TS_UNIPORTAL.DBF' size 1024m autoextend on next 1024m maxsize unlimited;
+-- 集群方式
+create tablespace TS_UNIPORTAL datafile '+DATA/xddcdb/datafile/TS_UNIPORTAL.DBF' size 1024m autoextend on next 1024m maxsize unlimited;
diff --git a/sql/02 Create_User.sql b/sql/02 Create_User.sql
new file mode 100644
index 0000000..96983c7
--- /dev/null
+++ b/sql/02 Create_User.sql
@@ -0,0 +1,29 @@
+
+create user IDC_U_BIZ_SAMPLE identified by kingstar
+default tablespace TS_UNIPORTAL
+temporary tablespace TEMP
+profile DEFAULT;
+
+grant dba to IDC_U_BIZ_SAMPLE;
+grant connect to IDC_U_BIZ_SAMPLE;
+grant select any table to IDC_U_BIZ_SAMPLE;
+
+
+
+grant select on IDC_U_UNIAUTH.UIDS_DM_ACCOUNTTYPE to IDC_U_BIZ_SAMPLE;
+
+grant select on IDC_U_UNIAUTH.UIDS_TB_ORGANIZE to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_ACCOUNT to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_USER to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_USERGROUP to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_ROLE to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_APPLICATION to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_FUNCTION to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_RIGHT to IDC_U_BIZ_SAMPLE;
+
+grant select on IDC_U_UNIAUTH.UIDS_REF_USERGROUPACCOUNT to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_REF_ACCOUNTROLE to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_REF_USERGROUPROLE to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_REF_APPLICATIONROLE to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_REF_FUNCTIONROLE to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_REF_RIGHTROLE to IDC_U_BIZ_SAMPLE;
diff --git a/sql/02 Grant.sql b/sql/02 Grant.sql
new file mode 100644
index 0000000..c9afb53
--- /dev/null
+++ b/sql/02 Grant.sql
@@ -0,0 +1,17 @@
+grant select on IDC_U_UNIAUTH.UIDS_DM_ACCOUNTTYPE to IDC_U_BIZ_SAMPLE;
+
+grant select on IDC_U_UNIAUTH.UIDS_TB_ORGANIZE to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_ACCOUNT to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_USER to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_USERGROUP to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_ROLE to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_APPLICATION to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_FUNCTION to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_TB_RIGHT to IDC_U_BIZ_SAMPLE;
+
+grant select on IDC_U_UNIAUTH.UIDS_REF_USERGROUPACCOUNT to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_REF_ACCOUNTROLE to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_REF_USERGROUPROLE to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_REF_APPLICATIONROLE to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_REF_FUNCTIONROLE to IDC_U_BIZ_SAMPLE;
+grant select on IDC_U_UNIAUTH.UIDS_REF_RIGHTROLE to IDC_U_BIZ_SAMPLE;
diff --git a/sql/03 Create_Table.sql b/sql/03 Create_Table.sql
new file mode 100644
index 0000000..85c84f5
--- /dev/null
+++ b/sql/03 Create_Table.sql
@@ -0,0 +1,387 @@
+
+/*
+CREATE TABLE IDC_U_BIZ_SAMPLE.BIZ_API_TEST
+(
+ ID VARCHAR2(100) NOT NULL ENABLE,
+ NAME VARCHAR2(100),
+ DESCRIPTION VARCHAR2(1000),
+ METHOD VARCHAR2(10),
+ SCHEME VARCHAR2(10),
+ URI VARCHAR2(200),
+ HEADERS VARCHAR2(500),
+ BODY VARCHAR2(500),
+ TYPE VARCHAR2(10),
+ PARENTID VARCHAR2(100),
+ PRIMARY KEY (ID)
+);
+
+COMMENT ON COLUMN IDC_U_BIZ_SAMPLE.BIZ_API_TEST.ID IS '主键ID';
+
+COMMENT ON COLUMN IDC_U_BIZ_SAMPLE.BIZ_API_TEST.NAME IS '命名';
+
+COMMENT ON COLUMN IDC_U_BIZ_SAMPLE.BIZ_API_TEST.DESCRIPTION IS '描述';
+
+COMMENT ON COLUMN IDC_U_BIZ_SAMPLE.BIZ_API_TEST.METHOD IS '请求方法';
+
+COMMENT ON COLUMN IDC_U_BIZ_SAMPLE.BIZ_API_TEST.SCHEME IS 'HTTP/HTTPS';
+
+COMMENT ON COLUMN IDC_U_BIZ_SAMPLE.BIZ_API_TEST.URI IS '请求路径';
+
+COMMENT ON COLUMN IDC_U_BIZ_SAMPLE.BIZ_API_TEST.HEADERS IS '请求头';
+
+COMMENT ON COLUMN IDC_U_BIZ_SAMPLE.BIZ_API_TEST.BODY IS '请求参数';
+
+COMMENT ON COLUMN IDC_U_BIZ_SAMPLE.BIZ_API_TEST.TYPE IS '节点类型';
+
+COMMENT ON COLUMN IDC_U_BIZ_SAMPLE.BIZ_API_TEST.PARENTID IS '父节点ID';
+
+
+
+--创建数据权限表
+create table IDC_U_BIZ_SAMPLE.SECURITY_DATAAUTHORIZATION
+(
+ id VARCHAR2(100) not null,
+ role_id VARCHAR2(100),
+ model_key VARCHAR2(100),
+ kind_id VARCHAR2(100),
+ kindauthorization_id VARCHAR2(100),
+ dataauthorization_name VARCHAR2(200),
+ dataauthorization_desc VARCHAR2(1024),
+ constraint PRIMARYSECURITY_DATAAUTHORIZAT primary key (ID)
+);
+comment on table IDC_U_BIZ_SAMPLE.SECURITY_DATAAUTHORIZATION
+ is 'SECURITY_DATAAUTHORIZATION';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_DATAAUTHORIZATION.id
+ is 'ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_DATAAUTHORIZATION.role_id
+ is '角色ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_DATAAUTHORIZATION.model_key
+ is 'SECURITY_MODELKEY表中的ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_DATAAUTHORIZATION.kind_id
+ is 'SECURITY_KIND表中ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_DATAAUTHORIZATION.kindauthorization_id
+ is 'SECURITY_KINDAUTHORIZATION表中ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_DATAAUTHORIZATION.dataauthorization_name
+ is '权限名称';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_DATAAUTHORIZATION.dataauthorization_desc
+ is '权限描述';
+
+--创建功能表
+create table IDC_U_BIZ_SAMPLE.SECURITY_FUNCTION
+(
+ id VARCHAR2(100) not null,
+ funname VARCHAR2(200),
+ funurl VARCHAR2(512),
+ funparent VARCHAR2(100),
+ order_num NUMBER,
+ is_show NUMBER,
+ is_leaf NUMBER,
+ enable NUMBER,
+ addtime DATE,
+ lastupdatetime DATE,
+ constraint PRIMARYSECURITY_FUNCTION primary key (ID)
+);
+comment on table IDC_U_BIZ_SAMPLE.SECURITY_FUNCTION
+ is 'SECURITY_FUNCTION';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_FUNCTION.id
+ is 'ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_FUNCTION.funname
+ is '菜单名称';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_FUNCTION.funurl
+ is '菜单URL';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_FUNCTION.funparent
+ is '父菜单ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_FUNCTION.order_num
+ is '排序';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_FUNCTION.is_show
+ is '是否显示(1:是,0:否)';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_FUNCTION.is_leaf
+ is '是否叶子';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_FUNCTION.enable
+ is '是否启用';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_FUNCTION.addtime
+ is '添加时间';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_FUNCTION.lastupdatetime
+ is '最后修改时间';
+
+--创建数据权限因子表
+create table IDC_U_BIZ_SAMPLE.SECURITY_KIND
+(
+ id VARCHAR2(100) not null,
+ kind_name VARCHAR2(200),
+ kind_desc VARCHAR2(1024),
+ addtime DATE,
+ lastupdatetime DATE,
+ constraint PRIMARYSECURITY_KIND primary key (ID)
+);
+comment on table IDC_U_BIZ_SAMPLE.SECURITY_KIND
+ is 'SECURITY_KIND';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_KIND.id
+ is 'ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_KIND.kind_name
+ is '类型名称';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_KIND.kind_desc
+ is '备注';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_KIND.addtime
+ is '添加时间';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_KIND.lastupdatetime
+ is '最后修改时间';
+
+--创建因子数据权限表
+create table IDC_U_BIZ_SAMPLE.SECURITY_KINDAUTHORIZATION
+(
+ id VARCHAR2(100) not null,
+ authorization_name VARCHAR2(200),
+ kind_id VARCHAR2(100),
+ authorization_sql VARCHAR2(2048),
+ authorization_desc VARCHAR2(2048),
+ constraint PRIMARYSECURITY_KINDAUTHORIZAT primary key (ID)
+);
+comment on table IDC_U_BIZ_SAMPLE.SECURITY_KINDAUTHORIZATION
+ is 'SECURITY_KINDAUTHORIZATION';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_KINDAUTHORIZATION.id
+ is 'ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_KINDAUTHORIZATION.authorization_name
+ is '数据权限名称';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_KINDAUTHORIZATION.kind_id
+ is '行级权限类型';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_KINDAUTHORIZATION.authorization_sql
+ is 'SQL';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_KINDAUTHORIZATION.authorization_desc
+ is '备注';
+
+--创建模块数据权限KEY表
+create table IDC_U_BIZ_SAMPLE.SECURITY_MODELKEY
+(
+ id VARCHAR2(100) not null,
+ modelkey_name VARCHAR2(200),
+ modelkey_desc VARCHAR2(1024),
+ addtime DATE,
+ lastupdatetime DATE,
+ constraint PRIMARYSECURITY_MODELKEY primary key (ID)
+);
+comment on table IDC_U_BIZ_SAMPLE.SECURITY_MODELKEY
+ is 'SECURITY_MODELKEY';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_MODELKEY.id
+ is 'ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_MODELKEY.modelkey_name
+ is '名称';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_MODELKEY.modelkey_desc
+ is '备注';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_MODELKEY.addtime
+ is '添加时间';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_MODELKEY.lastupdatetime
+ is '最后修改时间';
+
+--创建不需要认证的权限表
+create table IDC_U_BIZ_SAMPLE.SECURITY_NOAUTHORIZATION
+(
+ id VARCHAR2(100) not null,
+ role_id VARCHAR2(100),
+ resource_id VARCHAR2(100),
+ constraint PRIMARYSECURITY_NOAUTHORIZATIO primary key (ID)
+);
+comment on table IDC_U_BIZ_SAMPLE.SECURITY_NOAUTHORIZATION
+ is 'SECURITY_NOAUTHORIZATION';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_NOAUTHORIZATION.id
+ is 'ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_NOAUTHORIZATION.role_id
+ is '角色ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_NOAUTHORIZATION.resource_id
+ is '资源ID';
+
+--创建系统资源表
+create table IDC_U_BIZ_SAMPLE.SECURITY_RESOURCE
+(
+ id VARCHAR2(100) not null,
+ function_id VARCHAR2(100),
+ resource_name VARCHAR2(200),
+ resource_desc VARCHAR2(1024),
+ resource_url VARCHAR2(400),
+ enable NUMBER,
+ addtime DATE,
+ lastupdatetime DATE,
+ constraint PRIMARYSECURITY_RESOURCE primary key (ID)
+);
+comment on table IDC_U_BIZ_SAMPLE.SECURITY_RESOURCE
+ is 'SECURITY_RESOURCE';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_RESOURCE.id
+ is 'ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_RESOURCE.function_id
+ is '菜单ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_RESOURCE.resource_name
+ is '资源名称';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_RESOURCE.resource_desc
+ is '资源说明';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_RESOURCE.resource_url
+ is '资源URL';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_RESOURCE.enable
+ is '是否启用';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_RESOURCE.addtime
+ is '添加时间';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_RESOURCE.lastupdatetime
+ is '最后修改时间';
+
+--创建系统角色表
+create table IDC_U_BIZ_SAMPLE.SECURITY_ROLE
+(
+ id VARCHAR2(100) not null,
+ rolename VARCHAR2(100),
+ roledesc VARCHAR2(1024),
+ enabled NUMBER,
+ addtime DATE,
+ lastupdatetime DATE,
+ create_id VARCHAR2(100),
+ constraint PRIMARYSECURITY_ROLE primary key (ID)
+);
+comment on table IDC_U_BIZ_SAMPLE.SECURITY_ROLE
+ is 'SECURITY_USERGROUP';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_ROLE.id
+ is 'ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_ROLE.rolename
+ is '名称';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_ROLE.roledesc
+ is '备注';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_ROLE.enabled
+ is '是否启用';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_ROLE.addtime
+ is '添加时间';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_ROLE.lastupdatetime
+ is '最后修时间';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_ROLE.create_id
+ is '创建人ID';
+
+--创建角色和功能的关系表
+create table IDC_U_BIZ_SAMPLE.SECURITY_ROLE_FUNCTION
+(
+ id VARCHAR2(100) not null,
+ role_id VARCHAR2(100),
+ function_id VARCHAR2(100),
+ addtime DATE,
+ lastupdatetime DATE,
+ constraint PRIMARYSECURITY_ROLE_FUNCTION primary key (ID)
+);
+comment on table IDC_U_BIZ_SAMPLE.SECURITY_ROLE_FUNCTION
+ is 'SECURITY_FUNGROUP_FUNCTION';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_ROLE_FUNCTION.role_id
+ is '角色ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_ROLE_FUNCTION.function_id
+ is '功能ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_ROLE_FUNCTION.addtime
+ is '添加时间';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_ROLE_FUNCTION.lastupdatetime
+ is '最后修改时间';
+
+--创建系统用户表
+create table IDC_U_BIZ_SAMPLE.SECURITY_USER
+(
+ id VARCHAR2(100) not null,
+ username VARCHAR2(100),
+ password VARCHAR2(100),
+ name VARCHAR2(100),
+ addtime DATE,
+ lastupdatetime DATE,
+ enabled NUMBER,
+ account_locked NUMBER,
+ associated_accont VARCHAR2(100),
+ use_time VARCHAR2(30),
+ last_login_time VARCHAR2(30),
+ constraint PRIMARYSECURITY_USER primary key (ID)
+);
+comment on table IDC_U_BIZ_SAMPLE.SECURITY_USER
+ is 'SECURITY_USER';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER.id
+ is 'ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER.username
+ is '登陆名';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER.password
+ is '密码';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER.name
+ is '用户名';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER.addtime
+ is '添加时间';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER.lastupdatetime
+ is '最后更新时间';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER.enabled
+ is '是否可用';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER.account_locked
+ is '用户是否锁定(1:是,0:否)';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER.associated_accont
+ is '关联账号(通过这个标识跟其他业务表相关账号信息关联,比如学生表中学号、教职工表中工号),默认跟登陆账号设置相同';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER.use_time
+ is '启用日期';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER.last_login_time
+ is '最近一次登录时间';
+
+--创建用户角色表
+create table IDC_U_BIZ_SAMPLE.SECURITY_USER_ROLE
+(
+ id VARCHAR2(100) not null,
+ user_id VARCHAR2(100),
+ role_id VARCHAR2(100),
+ addtime DATE,
+ lastupdatetime DATE,
+ constraint PRIMARYSECURITY_USER_ROLE primary key (ID)
+);
+comment on table IDC_U_BIZ_SAMPLE.SECURITY_USER_ROLE
+ is 'SECURITY_USER_USERGROUP';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER_ROLE.id
+ is 'ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER_ROLE.user_id
+ is '用户ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER_ROLE.role_id
+ is '角色ID';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER_ROLE.addtime
+ is '添加时间';
+comment on column IDC_U_BIZ_SAMPLE.SECURITY_USER_ROLE.lastupdatetime
+ is '最后修改时间';
+*/
+--创建系统日志表
+create table IDC_U_BIZ_SAMPLE.SYSTEM_LOG
+(
+ id VARCHAR2(100) not null,
+ description VARCHAR2(1000),
+ time VARCHAR2(30),
+ type VARCHAR2(20),
+ user_id VARCHAR2(100),
+ ip VARCHAR2(15),
+ module_name VARCHAR2(100),
+ user_name VARCHAR2(100),
+ constraint PK_SYSTEM_LOG primary key (ID)
+);
+comment on table IDC_U_BIZ_SAMPLE.SYSTEM_LOG
+ is '记录系统的操作日志';
+comment on column IDC_U_BIZ_SAMPLE.SYSTEM_LOG.id
+ is '主键ID';
+comment on column IDC_U_BIZ_SAMPLE.SYSTEM_LOG.description
+ is '日志描述';
+comment on column IDC_U_BIZ_SAMPLE.SYSTEM_LOG.time
+ is '操作时间';
+comment on column IDC_U_BIZ_SAMPLE.SYSTEM_LOG.type
+ is '操作类型';
+comment on column IDC_U_BIZ_SAMPLE.SYSTEM_LOG.user_id
+ is '操作人ID';
+comment on column IDC_U_BIZ_SAMPLE.SYSTEM_LOG.ip
+ is 'IP地址';
+comment on column IDC_U_BIZ_SAMPLE.SYSTEM_LOG.module_name
+ is '所属模块';
+comment on column IDC_U_BIZ_SAMPLE.SYSTEM_LOG.user_name
+ is '创建人姓名';
+
+--创建CPU记录情况表
+create table IDC_U_BIZ_SAMPLE.SYSTEM_CPU_INFO
+(
+ id VARCHAR2(100) not null,
+ time VARCHAR2(50) not null,
+ percent NUMBER(*,20),
+ constraint SYSTEM_CPU_INFO_PK primary key (ID)
+);
+
+--创建内存记录情况
+create table IDC_U_BIZ_SAMPLE.SYSTEM_MEM_INFO
+(
+ id VARCHAR2(100) not null,
+ time VARCHAR2(50) not null,
+ percent NUMBER(*,20),
+ constraint SYSTEM_MEM_INFO_PK primary key (ID)
+);
diff --git a/sql/03 Create_Table_sample_notes.sql b/sql/03 Create_Table_sample_notes.sql
new file mode 100644
index 0000000..4961202
--- /dev/null
+++ b/sql/03 Create_Table_sample_notes.sql
@@ -0,0 +1,29 @@
+-- 创建便笺示例表
+create table IDC_U_BIZ_SAMPLE.SAMPLE_NOTES
+(
+ id VARCHAR2(50) not null,
+ create_user VARCHAR2(50),
+ create_time VARCHAR2(25),
+ text CLOB,
+ bg_color VARCHAR2(20),
+ title VARCHAR2(100),
+ pos VARCHAR2(100),
+ constraint PRIMARYSAMPLE_NOTES primary key (ID)
+);
+comment on table IDC_U_BIZ_SAMPLE.SAMPLE_NOTES
+ is '便笺示例表';
+comment on column IDC_U_BIZ_SAMPLE.SAMPLE_NOTES.id
+ is 'ID';
+comment on column IDC_U_BIZ_SAMPLE.SAMPLE_NOTES.create_user
+ is '创建用户';
+comment on column IDC_U_BIZ_SAMPLE.SAMPLE_NOTES.create_time
+ is '创建时间';
+comment on column IDC_U_BIZ_SAMPLE.SAMPLE_NOTES.text
+ is '便笺内容';
+comment on column IDC_U_BIZ_SAMPLE.SAMPLE_NOTES.bg_color
+ is '背景颜色';
+comment on column IDC_U_BIZ_SAMPLE.SAMPLE_NOTES.title
+ is '标题';
+comment on column IDC_U_BIZ_SAMPLE.SAMPLE_NOTES.pos
+ is '显示位置';
+
\ No newline at end of file
diff --git a/sql/03 Create_Table_third.sql b/sql/03 Create_Table_third.sql
new file mode 100644
index 0000000..30ec484
--- /dev/null
+++ b/sql/03 Create_Table_third.sql
@@ -0,0 +1,43 @@
+create table IDC_U_BIZ_SAMPLE.THIRD_MQ_REMINDER (
+ id VARCHAR2(32) primary key not null,
+ refno VARCHAR2(50),
+ ref_entity_id VARCHAR2(50),
+ api_push_result NUMBER,
+ api_read_result NUMBER,
+ create_time VARCHAR2(25),
+ read_time VARCHAR2(25),
+ read_user VARCHAR2(50)
+);
+
+comment on table IDC_U_BIZ_SAMPLE.THIRD_MQ_REMINDER is '门户消息提醒表';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_REMINDER.id is 'ID';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_REMINDER.refno is '消息唯一ID';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_REMINDER.ref_entity_id is '关联内容ID';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_REMINDER.api_push_result is '消息推送结果';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_REMINDER.api_read_result is '消息标记已读结果';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_REMINDER.create_time is '创建时间';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_REMINDER.read_time is '标记已读时间';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_REMINDER.read_user is '标记已读用户';
+
+
+
+create table IDC_U_BIZ_SAMPLE.THIRD_MQ_TODO (
+ id VARCHAR2(32) primary key not null,
+ refno VARCHAR2(50),
+ ref_entity_id VARCHAR2(50),
+ api_push_result NUMBER,
+ api_read_result NUMBER,
+ create_time VARCHAR2(25),
+ complete_time VARCHAR2(25),
+ complete_user VARCHAR2(50)
+);
+
+comment on table IDC_U_BIZ_SAMPLE.THIRD_MQ_TODO is '门户消息待办表';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_TODO.id is 'ID';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_TODO.refno is '消息唯一ID';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_TODO.ref_entity_id is '关联实体ID';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_TODO.api_push_result is '待办推送结果';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_TODO.api_read_result is '待办标记完成结果';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_TODO.create_time is '创建时间';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_TODO.complete_time is '完成时间';
+comment on column IDC_U_BIZ_SAMPLE.THIRD_MQ_TODO.complete_user is '完成用户';
\ No newline at end of file
diff --git a/sql/03 Create_Table_workflow.sql b/sql/03 Create_Table_workflow.sql
new file mode 100644
index 0000000..77ba6a0
--- /dev/null
+++ b/sql/03 Create_Table_workflow.sql
@@ -0,0 +1,234 @@
+create table IDC_U_BIZ_SAMPLE.wf_process (
+ id varchar2(32) primary key not null,
+ name varchar2(100),
+ display_Name varchar2(200),
+ type varchar2(100),
+ instance_Url varchar2(200),
+ state number(1),
+ content blob,
+ version number(2),
+ create_Time varchar2(50),
+ creator varchar2(50)
+);
+comment on table IDC_U_BIZ_SAMPLE.wf_process is '流程定义表';
+comment on column IDC_U_BIZ_SAMPLE.wf_process.id is '主键ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_process.name is '流程名称';
+comment on column IDC_U_BIZ_SAMPLE.wf_process.display_Name is '流程显示名称';
+comment on column IDC_U_BIZ_SAMPLE.wf_process.type is '流程类型';
+comment on column IDC_U_BIZ_SAMPLE.wf_process.instance_Url is '实例url';
+comment on column IDC_U_BIZ_SAMPLE.wf_process.state is '流程是否可用';
+comment on column IDC_U_BIZ_SAMPLE.wf_process.content is '流程模型定义';
+comment on column IDC_U_BIZ_SAMPLE.wf_process.version is '版本';
+comment on column IDC_U_BIZ_SAMPLE.wf_process.create_Time is '创建时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_process.creator is '创建人';
+
+create table IDC_U_BIZ_SAMPLE.wf_order (
+ id varchar2(32) not null primary key,
+ process_Id varchar2(32) not null,
+ creator varchar2(50),
+ create_Time varchar2(50) not null,
+ expire_Time varchar2(50),
+ last_Update_Time varchar2(50),
+ last_Updator varchar2(50),
+ priority number(1),
+ parent_Id varchar2(32),
+ parent_Node_Name varchar2(100),
+ order_No varchar2(50),
+ variable varchar2(2000),
+ version number(3)
+);
+comment on table IDC_U_BIZ_SAMPLE.wf_order is '流程实例表';
+comment on column IDC_U_BIZ_SAMPLE.wf_order.id is '主键ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_order.parent_Id is '父流程ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_order.process_Id is '流程定义ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_order.creator is '发起人';
+comment on column IDC_U_BIZ_SAMPLE.wf_order.create_Time is '发起时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_order.expire_Time is '期望完成时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_order.last_Update_Time is '上次更新时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_order.last_Updator is '上次更新人';
+comment on column IDC_U_BIZ_SAMPLE.wf_order.priority is '优先级';
+comment on column IDC_U_BIZ_SAMPLE.wf_order.parent_Node_Name is '父流程依赖的节点名称';
+comment on column IDC_U_BIZ_SAMPLE.wf_order.order_No is '流程实例编号';
+comment on column IDC_U_BIZ_SAMPLE.wf_order.variable is '流程实例附属变量';
+comment on column IDC_U_BIZ_SAMPLE.wf_order.version is '版本';
+
+create table IDC_U_BIZ_SAMPLE.wf_task (
+ id varchar2(32) not null primary key,
+ order_Id varchar2(32) not null,
+ task_Name varchar2(100) not null,
+ display_Name varchar2(200) not null,
+ task_Type number(1) not null,
+ perform_Type number(1),
+ operator varchar2(50),
+ create_Time varchar2(50) not null,
+ finish_Time varchar2(50),
+ expire_Time varchar2(50),
+ action_Url varchar2(200),
+ parent_Task_Id varchar2(32),
+ variable varchar2(2000),
+ version number(1)
+);
+comment on table IDC_U_BIZ_SAMPLE.wf_task is '任务表';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.id is '主键ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.order_Id is '流程实例ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.task_Name is '任务名称';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.display_Name is '任务显示名称';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.task_Type is '任务类型';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.perform_Type is '参与类型';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.operator is '任务处理人';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.create_Time is '任务创建时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.expire_Time is '任务期望完成时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.finish_Time is '任务完成时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.action_Url is '任务处理的url';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.parent_Task_Id is '父任务ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.variable is '附属变量json存储';
+comment on column IDC_U_BIZ_SAMPLE.wf_task.version is '版本';
+
+create table IDC_U_BIZ_SAMPLE.wf_task_actor (
+ task_Id varchar2(32) not null,
+ actor_Id varchar2(50) not null
+);
+comment on table IDC_U_BIZ_SAMPLE.wf_task_actor is '任务参与者表';
+comment on column IDC_U_BIZ_SAMPLE.wf_task_actor.task_Id is '任务ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_task_actor.actor_Id is '参与者ID';
+
+create table IDC_U_BIZ_SAMPLE.wf_hist_order (
+ id varchar2(32) not null primary key,
+ process_Id varchar2(32) not null,
+ order_State number(1) not null,
+ creator varchar2(50),
+ create_Time varchar2(50) not null,
+ end_Time varchar2(50),
+ expire_Time varchar2(50),
+ priority number(1),
+ parent_Id varchar2(32),
+ order_No varchar2(50),
+ variable varchar2(2000)
+);
+comment on table IDC_U_BIZ_SAMPLE.wf_hist_order is '历史流程实例表';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_order.id is '主键ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_order.parent_Id is '父流程ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_order.process_Id is '流程定义ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_order.order_State is '状态';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_order.priority is '优先级';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_order.creator is '发起人';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_order.create_Time is '发起时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_order.expire_Time is '期望完成时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_order.end_Time is '完成时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_order.order_No is '流程实例编号';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_order.variable is '流程实例附属变量';
+
+create table IDC_U_BIZ_SAMPLE.wf_hist_task (
+ id varchar2(32) not null primary key,
+ order_Id varchar2(32) not null,
+ task_Name varchar2(100) not null,
+ display_Name varchar2(200) not null,
+ task_Type number(1) not null,
+ perform_Type number(1),
+ task_State number(1) not null,
+ operator varchar2(50),
+ create_Time varchar2(50) not null,
+ finish_Time varchar2(50),
+ expire_Time varchar2(50),
+ action_Url varchar2(200),
+ parent_Task_Id varchar2(32),
+ variable varchar2(2000)
+);
+comment on table IDC_U_BIZ_SAMPLE.wf_hist_task is '历史任务表';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.id is '主键ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.order_Id is '流程实例ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.task_Name is '任务名称';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.display_Name is '任务显示名称';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.task_Type is '任务类型';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.perform_Type is '参与类型';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.task_State is '任务状态';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.operator is '任务处理人';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.create_Time is '任务创建时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.expire_Time is '任务期望完成时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.finish_Time is '任务完成时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.action_Url is '任务处理的url';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.parent_Task_Id is '父任务ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task.variable is '附属变量json存储';
+
+create table IDC_U_BIZ_SAMPLE.wf_hist_task_actor (
+ task_Id varchar2(32) not null,
+ actor_Id varchar2(50) not null
+);
+comment on table IDC_U_BIZ_SAMPLE.wf_hist_task_actor is '历史任务参与者表';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task_actor.task_Id is '任务ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_hist_task_actor.actor_Id is '参与者ID';
+
+create table IDC_U_BIZ_SAMPLE.wf_surrogate (
+ id varchar2(32) not null primary key,
+ process_Name varchar2(100),
+ operator varchar2(50),
+ surrogate varchar2(50),
+ odate varchar2(64),
+ sdate varchar2(64),
+ edate varchar2(64),
+ state number(1)
+);
+comment on table IDC_U_BIZ_SAMPLE.wf_surrogate is '委托代理表';
+comment on column IDC_U_BIZ_SAMPLE.wf_surrogate.id is '主键ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_surrogate.process_Name is '流程名称';
+comment on column IDC_U_BIZ_SAMPLE.wf_surrogate.operator is '授权人';
+comment on column IDC_U_BIZ_SAMPLE.wf_surrogate.surrogate is '代理人';
+comment on column IDC_U_BIZ_SAMPLE.wf_surrogate.odate is '操作时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_surrogate.sdate is '开始时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_surrogate.edate is '结束时间';
+comment on column IDC_U_BIZ_SAMPLE.wf_surrogate.state is '状态';
+
+create table IDC_U_BIZ_SAMPLE.wf_cc_order (
+ order_Id varchar2(32),
+ actor_Id varchar2(50),
+ creator varchar2(50),
+ create_Time varchar2(50),
+ finish_Time varchar2(50),
+ status number(1)
+);
+comment on table IDC_U_BIZ_SAMPLE.wf_cc_order is '抄送实例表';
+comment on column IDC_U_BIZ_SAMPLE.wf_cc_order.order_Id is '流程实例ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_cc_order.actor_Id is '参与者ID';
+comment on column IDC_U_BIZ_SAMPLE.wf_cc_order.status is '状态';
+
+
+create index IDX_PROCESS_NAME on wf_process (name);
+create index IDX_ORDER_PROCESSID on wf_order (process_Id);
+create index IDX_ORDER_NO on wf_order (order_No);
+create index IDX_TASK_ORDER on wf_task (order_Id);
+create index IDX_TASK_TASKNAME on wf_task (task_Name);
+create index IDX_TASK_PARENTTASK on wf_task (parent_Task_Id);
+create index IDX_TASKACTOR_TASK on wf_task_actor (task_Id);
+create index IDX_HIST_ORDER_PROCESSID on wf_hist_order (process_Id);
+create index IDX_HIST_ORDER_NO on wf_hist_order (order_No);
+create index IDX_HIST_TASK_ORDER on wf_hist_task (order_Id);
+create index IDX_HIST_TASK_TASKNAME on wf_hist_task (task_Name);
+create index IDX_HIST_TASK_PARENTTASK on wf_hist_task (parent_Task_Id);
+create index IDX_HIST_TASKACTOR_TASK on wf_hist_task_actor (task_Id);
+create index IDX_SURROGATE_OPERATOR on wf_surrogate (operator);
+create index IDX_CCORDER_ORDER on wf_cc_order (order_Id);
+
+alter table wf_task_actor
+ add constraint FK_TASK_ACTOR_TASKID foreign key (task_Id)
+ references wf_task (id);
+alter table wf_task
+ add constraint FK_TASK_ORDERID foreign key (order_Id)
+ references wf_order (id);
+alter table wf_order
+ add constraint FK_ORDER_PARENTID foreign key (parent_Id)
+ references wf_order (id);
+alter table wf_order
+ add constraint FK_ORDER_PROCESSID foreign key (process_Id)
+ references wf_process (id);
+alter table wf_hist_task_actor
+ add constraint FK_HIST_TASKACTOR foreign key (task_Id)
+ references wf_hist_task (id);
+alter table wf_hist_task
+ add constraint FK_HIST_TASK_ORDERID foreign key (order_Id)
+ references wf_hist_order (id);
+alter table wf_hist_order
+ add constraint FK_HIST_ORDER_PARENTID foreign key (parent_Id)
+ references wf_hist_order (id);
+alter table wf_hist_order
+ add constraint FK_HIST_ORDER_PROCESSID foreign key (process_Id)
+ references wf_process (id);
diff --git a/sql/04 Create_Sequence.sql b/sql/04 Create_Sequence.sql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sql/04 Create_Sequence.sql
diff --git a/sql/05 Create_Function.sql b/sql/05 Create_Function.sql
new file mode 100644
index 0000000..60ab191
--- /dev/null
+++ b/sql/05 Create_Function.sql
@@ -0,0 +1,25 @@
+
+CREATE OR REPLACE FUNCTION IDC_U_BIZ_SAMPLE.MD5(SVAL IN VARCHAR2)
+ RETURN VARCHAR2
+AS
+ RVAL VARCHAR2(32);
+BEGIN
+ RVAL := UTL_RAW.CAST_TO_RAW(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => SVAL));
+ RETURN RVAL;
+END;
+/
+
+
+CREATE OR REPLACE FUNCTION IDC_U_BIZ_SAMPLE.F_IS_LEAF(fid IN VARCHAR2)
+RETURN NUMBER
+AS
+ fpid VARCHAR2(100);
+BEGIN
+ SELECT funcparentid INTO fpid FROM IDC_U_UNIAUTH.UIDS_TB_FUNCTION f WHERE f.funcid = fid;
+ IF(fpid = '0') THEN
+ RETURN 0;
+ ELSE
+ RETURN 1;
+ END IF;
+END;
+/
\ No newline at end of file
diff --git a/sql/06 Create_View.sql b/sql/06 Create_View.sql
new file mode 100644
index 0000000..5be7deb
--- /dev/null
+++ b/sql/06 Create_View.sql
@@ -0,0 +1,104 @@
+
+CREATE OR REPLACE VIEW IDC_U_BIZ_SAMPLE.V_IDENTITY (ID, NAME) AS
+ SELECT DM AS ID, MC AS NAME
+ FROM IDC_U_UNIAUTH.UIDS_DM_ACCOUNTTYPE
+;
+
+CREATE OR REPLACE VIEW IDC_U_BIZ_SAMPLE.V_ORGANIZE (ID, PARENTID, CODE, NAME, TYPE, STATUS) AS
+ SELECT orgid AS ID, orgparentid AS parentid, orgcode AS CODE, orgname AS NAME, orgtype AS TYPE, orgstatus AS status
+ FROM IDC_U_UNIAUTH.uids_tb_organize
+ WHERE orgisdeleted IS NULL OR orgisdeleted = 0
+;
+
+CREATE OR REPLACE VIEW IDC_U_BIZ_SAMPLE.V_REF_GROUP_ROLE (GROUP_ID, ROLE_ID) AS
+ SELECT usergrpid AS group_id, roleid AS role_id
+ FROM IDC_U_UNIAUTH.uids_ref_usergrouprole
+;
+
+CREATE OR REPLACE VIEW IDC_U_BIZ_SAMPLE.V_REF_USER_GROUP (USER_ID, GROUP_ID) AS
+ SELECT a.accountuserid AS user_id, ua.usergrpid AS group_id
+ FROM IDC_U_UNIAUTH.uids_ref_usergroupaccount ua
+ INNER JOIN IDC_U_UNIAUTH.uids_tb_account a ON ua.accountid = a.accountid
+ WHERE accountisdeleted IS NULL OR accountisdeleted = 0
+;
+
+CREATE OR REPLACE VIEW IDC_U_BIZ_SAMPLE.V_REF_USER_ORGANIZE (USER_ID, ORG_ID) AS
+ SELECT userid AS user_id, userorgid AS org_id
+ FROM IDC_U_UNIAUTH.uids_tb_user
+ WHERE userisdeleted IS NULL OR userisdeleted = 0
+;
+
+CREATE OR REPLACE VIEW IDC_U_BIZ_SAMPLE.V_SECURITY_FUNCTION AS
+SELECT
+ to_char(o.funcid) AS ID,
+ to_char(o.funcname) AS funname,
+ to_char(o.funcuri) AS funurl,
+ to_char(o.funccode) AS funcode,
+ to_char(o.funcparentid) AS funparent,
+ o.funcsequence AS order_num,
+ 1 AS is_show,
+ IDC_U_BIZ_SAMPLE.F_IS_LEAF(o.funcid) AS is_leaf,
+ 1 AS ENABLE,
+ SYSDATE AS addtime,
+ SYSDATE AS lastupdatetime
+FROM IDC_U_UNIAUTH.UIDS_TB_FUNCTION o
+WHERE o.funcappid = 'BIZ_app';
+
+
+CREATE OR REPLACE VIEW IDC_U_BIZ_SAMPLE.V_SECURITY_ROLE AS
+SELECT
+ roleid AS ID,
+ rolename,
+ rolememo AS roledesc,
+ 1 AS ENABLED,
+ SYSDATE AS addtime,
+ SYSDATE AS lastupdatetime,
+ rolecreateuser AS create_id
+FROM IDC_U_UNIAUTH.UIDS_TB_ROLE;
+
+
+CREATE OR REPLACE VIEW IDC_U_BIZ_SAMPLE.V_SECURITY_ROLE_FUNCTION AS
+SELECT
+ funcid || '_' || roleid AS ID,
+ roleid AS role_id, funcid AS function_id,
+ SYSDATE AS addtime,
+ SYSDATE AS lastupdatetime
+FROM IDC_U_UNIAUTH.UIDS_REF_FUNCTIONROLE;
+
+
+CREATE OR REPLACE VIEW IDC_U_BIZ_SAMPLE.V_SECURITY_USER AS
+SELECT
+ a.accountid AS ID,
+ a.accountkey AS username,
+ lower(IDC_U_BIZ_SAMPLE.MD5(a.accountpwd || '{' || a.accountkey || '}')) AS password,
+ u.username AS name,
+ SYSDATE AS addtime,
+ SYSDATE AS lastupdatetime,
+ 1 AS enabled,
+ 0 AS account_locked,
+ NULL AS associated_accont,
+ NULL AS use_time,
+ NULL AS last_login_time
+FROM IDC_U_UNIAUTH.UIDS_TB_ACCOUNT a
+INNER JOIN IDC_U_UNIAUTH.UIDS_TB_USER u ON a.accountuserid=u.userid;
+
+
+CREATE OR REPLACE VIEW IDC_U_BIZ_SAMPLE.V_SECURITY_USER_ROLE AS
+SELECT
+ accountid || '_' || roleid AS ID,
+ accountid AS user_id,
+ roleid AS role_id,
+ SYSDATE AS addtime,
+ SYSDATE AS lastupdatetime
+FROM IDC_U_UNIAUTH.UIDS_REF_ACCOUNTROLE;
+
+CREATE OR REPLACE VIEW IDC_U_BIZ_SAMPLE.V_USERGROUP (ID, CODE, NAME, STATUS) AS
+ SELECT usergrpid AS ID, usergrpcode AS CODE, usergrpname AS NAME, usergrpstatus AS status
+ FROM IDC_U_UNIAUTH.uids_tb_usergroup
+WHERE usergrpisdeleted IS NULL OR usergrpisdeleted = 0
+;
+
+CREATE OR REPLACE VIEW IDC_U_BIZ_SAMPLE.V_USER_IDENTITY (USER_ID, IDENTITY_ID) AS
+ SELECT accountuserid AS user_id, accounttype AS identity_id
+ FROM IDC_U_UNIAUTH.uids_tb_account
+;
\ No newline at end of file
diff --git a/sql/07 Create_Procedure.sql b/sql/07 Create_Procedure.sql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sql/07 Create_Procedure.sql
diff --git a/sql/07 Init-Data.sql b/sql/07 Init-Data.sql
new file mode 100644
index 0000000..12d57ed
--- /dev/null
+++ b/sql/07 Init-Data.sql
@@ -0,0 +1,69 @@
+
+/*
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('7','系统管理',null,null,7,1,0,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('1','首页','/html/admin/index.jsp',null,1,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('2','主页','/html/admin/main.html',null,2,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('7_3','日志管理','/html/admin/system_log_manage/*','7',3,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('5','数据管理',null,null,5,1,0,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('5_1','数据内容管理','/html/admin/data_content_manage/*','5',1,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('5_2','数据权限配置','/html/admin/data_auth_manage/*','5',2,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('5_3','数据表单配置','/html/admin/data_form_manage/*','5',3,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('6','服务管理',null,null,6,1,0,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('6_1','数据服务管理','/html/admin/data_service_manage/*','6',1,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('6_2','服务权限配置','/html/admin/data_service_authorization_manage/*','6',2,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('6_3','应用注册管理','/html/admin/data_service_application_manage/*','6',3,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('3','代码管理',null,null,3,1,0,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('3_1','参考代码管理','/html/admin/code_reference_manage/*','3',1,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('3_2','执行代码管理','/html/admin/code_execution_manage/*','3',2,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('3_3','代码版本管理','/html/admin/code_version_manage/*','3',3,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('3_4','代码发布管理','/html/admin/code_release_manage/*','3',4,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('4','模型管理',null,null,4,1,0,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('4_1','元数据管理','/html/admin/model_data_manage/*','4',1,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('4_5','模型版本执行','/html/admin/model_execute_manage/*','4',5,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('4_2','模型版本管理','/html/admin/model_version_manage/*','4',2,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('3_5','代码历史版本','/html/admin/code_history_manage/*','3',5,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('4_3','模型版本发布','/html/admin/model_release_manage/*','4',3,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('4_4','业务代码维护','/html/admin/business_code_manage/*','4',4,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('4_6','历史版本管理','/html/admin/model_history_manage/*','4',6,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('7_1','用户管理','/html/admin/system_user_manage/*','7',1,1,1,1,null,null);
+Insert into SECURITY_FUNCTION (ID,FUNNAME,FUNURL,FUNPARENT,ORDER_NUM,IS_SHOW,IS_LEAF,ENABLE,ADDTIME,LASTUPDATETIME) values ('7_2','角色管理','/html/admin/system_role_manage/*','7',2,1,1,1,null,null);
+
+insert into SECURITY_ROLE (id, rolename, roledesc, enabled, addtime, lastupdatetime, create_id)
+values ('1', 'administrator', '超级管理员', 1, null, null, null);
+
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('1548d920868b11e5288eae89d8ad767f','1','7_1',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('15499c70868b11e5288eae89d8ad767f','1','7_2',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154a38b0868b11e5288eae89d8ad767f','1','7_3',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154a86d0868b11e5288eae89d8ad767f','1','5_1',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154afc00868b11e5288eae89d8ad767f','1','5_2',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154b9840868b11e5288eae89d8ad767f','1','5_3',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154be660868b11e5288eae89d8ad767f','1','6_1',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154c5b90868b11e5288eae89d8ad767f','1','6_2',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154cd0c0868b11e5288eae89d8ad767f','1','6_3',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154d1ee0868b11e5288eae89d8ad767f','1','3_1',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154d9410868b11e5288eae89d8ad767f','1','3_2',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154de230868b11e5288eae89d8ad767f','1','3_3',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154e7e70868b11e5288eae89d8ad767f','1','3_4',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154ef3a0868b11e5288eae89d8ad767f','1','3_5',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154f8fe0868b11e5288eae89d8ad767f','1','4_1',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('154fde00868b11e5288eae89d8ad767f','1','4_2',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('15502c20868b11e5288eae89d8ad767f','1','4_3',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('1550a150868b11e5288eae89d8ad767f','1','4_4',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('1550ef70868b11e5288eae89d8ad767f','1','4_5',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('155164a0868b11e5288eae89d8ad767f','1','4_6',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('1551d9d0868b11e5288eae89d8ad767f','1','7',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('1552eb40868b11e5288eae89d8ad767f','1','1',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('15533960868b11e5288eae89d8ad767f','1','2',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('1553ae90868b11e5288eae89d8ad767f','1','5',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('155423c0868b11e5288eae89d8ad767f','1','6',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('155498f0868b11e5288eae89d8ad767f','1','3',null,null);
+Insert into SECURITY_ROLE_FUNCTION (ID,ROLE_ID,FUNCTION_ID,ADDTIME,LASTUPDATETIME) values ('15550e20868b11e5288eae89d8ad767f','1','4',null,null);
+
+insert into SECURITY_USER (id, username, password, name, addtime, lastupdatetime, enabled, account_locked, associated_accont, use_time, last_login_time)
+values ('1', 'admin', '71daded6dbab21f978591d8e56efc802', '管理员', null, null, 1, 0, null, null, null);
+
+insert into SECURITY_USER_ROLE (id, user_id, role_id, addtime, lastupdatetime)
+values ('1', '1', '1', null, null);
+
+commit;
+*/
diff --git a/sql/10_Init_Data_wf.sql b/sql/10_Init_Data_wf.sql
new file mode 100644
index 0000000..ba8aa9a
--- /dev/null
+++ b/sql/10_Init_Data_wf.sql
@@ -0,0 +1,45 @@
+/*
+
+insert into IDC_U_BIZ.WF_PROCESS (ID, NAME, DISPLAY_NAME, TYPE, INSTANCE_URL, STATE, CONTENT, VERSION, CREATE_TIME, CREATOR)
+values ('1', 'content', 'CMS内容发布流程', '', '', 1, '', 0, '2016-04-21 16:59:34', '');
+
+commit;
+
+update IDC_U_BIZ.WF_PROCESS
+set CONTENT='<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<process name="content" displayName="内容发布流程" >
+<start layout="-155,332,50,50" name="start" >
+<transition offset="0,-10" to="submit" name="transition1" />
+</start>
+<end layout="284,278,50,50" name="end" >
+</end>
+<task layout="-41,331,100,50" name="submit" displayName="内容提交" assignmentHandler="com.supwisdom.platform.biz.module.cms.workflow.handler.SubmitAssignmentHandler" taskType="Major" performType="ANY" autoExecute="Y" >
+<transition offset="0,-11" to="need_check_1" name="transition2" />
+</task>
+<task layout="174,448,100,50" name="check_1" displayName="一级审核" assignmentHandler="com.supwisdom.platform.biz.module.cms.workflow.handler.CheckAssignmentHandler" taskType="Major" performType="ANY" autoExecute="Y" >
+<transition offset="0,-10" to="check_result_1" name="transition3" displayName="审核结果判断" />
+</task>
+<task layout="573,290,100,50" name="check_2" displayName="二级审核" assignmentHandler="com.supwisdom.platform.biz.module.cms.workflow.handler.CheckAssignmentHandler" taskType="Major" performType="ANY" autoExecute="Y" >
+<transition offset="0,-10" to="check_result_2" name="transition4" displayName="审核结果判断" />
+</task>
+<decision layout="157,344,100,50" name="need_check_1" expr="#need_check_1" preInterceptors="com.supwisdom.platform.biz.module.cms.workflow.interceptor.SubmitPreInterceptor" >
+<transition offset="0,-10" to="end" name="need_check_1_0" displayName="无需审核" />
+<transition offset="0,-10" to="check_1" name="need_check_1_1" displayName="需审核" />
+</decision>
+<decision layout="456,430,100,50" name="need_check_2" expr="#need_check_2" >
+<transition offset="0,-10" to="end" name="need_check_2_0" displayName="审核结束" />
+<transition offset="0,-10" to="check_2" name="need_check_2_1" displayName="下级审核" />
+</decision>
+<decision layout="16,606,100,50" name="check_result_1" expr="#check_result_1" preInterceptors="com.supwisdom.platform.biz.module.cms.workflow.interceptor.CheckPreInterceptor" >
+<transition offset="0,-10" to="need_check_2" name="check_result_1_1" displayName="审核通过" />
+<transition offset="0,-10" to="submit" name="check_result_1_0" displayName="审核未通过" />
+</decision>
+<decision layout="341,161,100,50" name="check_result_2" expr="#check_result_2" postInterceptors="com.supwisdom.platform.biz.module.cms.workflow.interceptor.CheckPreInterceptor" >
+<transition offset="0,-10" to="submit" name="check_result_2_0" displayName="审核未通过" />
+<transition offset="0,-10" to="end" name="check_result_2_1" displayName="审核通过" />
+</decision>
+</process>'
+where ID='1';
+
+commit;
+*/
\ No newline at end of file
diff --git "a/sql/10_Init_\351\233\206\346\210\220\346\225\260\346\215\256.sql" "b/sql/10_Init_\351\233\206\346\210\220\346\225\260\346\215\256.sql"
new file mode 100644
index 0000000..b4e1b12
--- /dev/null
+++ "b/sql/10_Init_\351\233\206\346\210\220\346\225\260\346\215\256.sql"
@@ -0,0 +1,230 @@
+/*
+
+-- 用户
+INSERT INTO IDC_U_UNIAUTH.T_PERSON (ID, DICORGID, NAME, NICK, IS_TEACHER, IS_NONGRADUATE, IS_GRADUATE, IS_PH_D_CANDIDATE)
+VALUES ('BIZ_admin', '1', '管理员', 'bizadmin', 0, 0, 0, 0);
+-- 帐户
+INSERT INTO IDC_U_UNIAUTH.T_ACCOUNT
+ (ID, ACCOUNT_NAME, PASSWORD, PERSON_ID,
+ IS_LOCKED, IS_EXIPRED, IS_ENABLED, IS_ACTIVATED, IS_PASSWORD_EXIPRED, IS_FIRST_CHANGE_PASS,
+ CHECKSTATUES, PASSWORD_POLICY_ID, LOST_PASSWORD_POLICY_ID, IS_DELETED, IS_BLACKLISTED)
+VALUES
+ ('BIZ_admin', 'bizadmin', 'bizadmin', 'BIZ_admin',
+ 0, 0, 1, 1, 0, 0,
+ '1', '1', '1', 0, 0);
+
+
+-- 用户
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_USER
+ (USERID, USERORGID, USERNAME, USERNICK, USERSTATUS, USERCREATEUSER, USERCREATETIME, USERUPDATETIME, USERSERIALNO, USERPASSWORD, USERISEXPIRED, USERISACTIVATED, USERISDELETED, USERISBLACKLISTED)
+VALUES
+ ('BIZ_admin', '1', '管理员', 'bizadmin', '1', 'administrator', '2016-03-28', '2016-03-28', 'bizadmin', 'bizadmin', 0, 1, 0, 0);
+-- 帐户
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_ACCOUNT
+ (ACCOUNTID, ACCOUNTUSERID, ACCOUNTKEY, ACCOUNTPWD, ACCOUNTTYPE, ACCOUNTSTATUS, ACCOUNTCREATEUSER, ACCOUNTCREATETIME, ACCOUNTUPDATETIME, ACCOUNTFAILEDTIMES, ACCOUNTISEXPIRED, ACCOUNTISACTIVATED, ACCOUNTISDELETED, ACCOUNTISBLACKLISTED)
+VALUES
+ ('BIZ_admin', 'BIZ_admin', 'bizadmin', 'bizadmin', 'admin', '1', 'administrator', '2016-03-28', '2016-03-28', 0, 0, 1, 0, 0);
+
+COMMIT;
+
+-- 默认注册系统
+INSERT INTO IDC_U_UNIAUTH.T_REGISTERED_SERVICE
+ (ID, NAME, SERVICE_PATTERN,
+ IS_USER_MAP, IS_USER_MAP_PASS, IS_EXTRA_LOGIN_PARAM, IS_SSO_ENABLED, IS_ENABLED, IS_PROXY_ENABLED, IS_ANOY, ORDER_NUM, IS_ATTRIBUTE_ENABLED,
+ AUTH_TYPE, LOGIN_ADDRESS, LOGOUT_ADDRESS, IS_DEFAULT_LOGIN_SCREEN, CODE,
+ CREATERUSER, CREATETIME, UPDATETIME,
+ VALIDATE_ADDRESS, SEND_TYPE, SIMULATIONTYPE, IS_DELETED)
+VALUES
+ ('BIZ_app', '门户业务管理系统', 'http://*/biz-admin/**',
+ 0, 0, 0, 1, 1, 1, 1, 1, 0,
+ 1, '', '', 1, 10005,
+ 'bizadmin', SYSDATE, SYSDATE,
+ '', '1', 1, 0);
+
+-- 系统
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_APPLICATION
+ (APPID, APPCODE, APPNAME, APPSTATUS, APPCREATEUSER, APPCREATETIME, APPUPDATETIME, APPISDELETED)
+VALUES
+ ('BIZ_app', 'BIZ-ADMIN', '门户业务管理系统', '1', 'authadmin', '2012-04-10', '2012-04-10', 0);
+
+
+-- 默认注册系统
+INSERT INTO IDC_U_UNIAUTH.T_REGISTERED_SERVICE
+ (ID, NAME, SERVICE_PATTERN,
+ IS_USER_MAP, IS_USER_MAP_PASS, IS_EXTRA_LOGIN_PARAM, IS_SSO_ENABLED, IS_ENABLED, IS_PROXY_ENABLED, IS_ANOY, ORDER_NUM, IS_ATTRIBUTE_ENABLED,
+ AUTH_TYPE, LOGIN_ADDRESS, LOGOUT_ADDRESS, IS_DEFAULT_LOGIN_SCREEN, CODE,
+ CREATERUSER, CREATETIME, UPDATETIME,
+ VALIDATE_ADDRESS, SEND_TYPE, SIMULATIONTYPE, IS_DELETED)
+VALUES
+ ('BIZ_api', '门户业务API接口', 'http://*/biz-api/**',
+ 0, 0, 0, 1, 1, 1, 1, 1, 0,
+ 1, '', '', 1, 10004,
+ 'bizadmin', SYSDATE, SYSDATE,
+ '', '1', 1, 0);
+
+-- 系统
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_APPLICATION
+ (APPID, APPCODE, APPNAME, APPSTATUS, APPCREATEUSER, APPCREATETIME, APPUPDATETIME, APPISDELETED)
+VALUES
+ ('BIZ_api', 'BIZ-API', '门户业务API接口', '1', 'authadmin', '2012-04-10', '2012-04-10', 0);
+
+
+
+-- 功能菜单
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_FUNCTION
+ (FUNCID, FUNCPARENTID, FUNCAPPID, FUNCCODE, FUNCNAME, FUNCSTATUS, FUNCCREATEUSER, FUNCCREATETIME, FUNCUPDATETIME, FUNCURI, FUNCSEQUENCE, FUNCISDELETED)
+VALUES
+ ('BIZ_func_00000', '0', 'BIZ_app', 'Index', '首页', '1', 'bizadmin', '2016-03-28', '2016-03-28', '/html/admin/index.jsp', '0', 0);
+
+
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_FUNCTION
+ (FUNCID, FUNCPARENTID, FUNCAPPID, FUNCCODE, FUNCNAME, FUNCSTATUS, FUNCCREATEUSER, FUNCCREATETIME, FUNCUPDATETIME, FUNCURI, FUNCSEQUENCE, FUNCISDELETED)
+VALUES
+ ('BIZ_func_91000', '0', 'BIZ_app', 'WorkflowManage', '流程管理', '1', 'bizadmin', '2016-03-28', '2016-03-28', '', '91000', 0);
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_FUNCTION
+ (FUNCID, FUNCPARENTID, FUNCAPPID, FUNCCODE, FUNCNAME, FUNCSTATUS, FUNCCREATEUSER, FUNCCREATETIME, FUNCUPDATETIME, FUNCURI, FUNCSEQUENCE, FUNCISDELETED)
+VALUES
+ ('BIZ_func_91001', 'BIZ_func_91000', 'BIZ_app', 'WorkflowProcess', '流程定义', '1', 'bizadmin', '2016-03-28', '2016-03-28', 'workflow_manage/process.html', '91001', 0);
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_FUNCTION
+ (FUNCID, FUNCPARENTID, FUNCAPPID, FUNCCODE, FUNCNAME, FUNCSTATUS, FUNCCREATEUSER, FUNCCREATETIME, FUNCUPDATETIME, FUNCURI, FUNCSEQUENCE, FUNCISDELETED)
+VALUES
+ ('BIZ_func_91002', 'BIZ_func_91000', 'BIZ_app', 'WorkflowOrder', '流程实例', '1', 'bizadmin', '2016-03-28', '2016-03-28', 'workflow_manage/order.html', '91002', 0);
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_FUNCTION
+ (FUNCID, FUNCPARENTID, FUNCAPPID, FUNCCODE, FUNCNAME, FUNCSTATUS, FUNCCREATEUSER, FUNCCREATETIME, FUNCUPDATETIME, FUNCURI, FUNCSEQUENCE, FUNCISDELETED)
+VALUES
+ ('BIZ_func_91003', 'BIZ_func_91000', 'BIZ_app', 'WorkflowTask', '待办任务', '1', 'bizadmin', '2016-03-28', '2016-03-28', 'workflow_manage/task.html', '91003', 0);
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_FUNCTION
+ (FUNCID, FUNCPARENTID, FUNCAPPID, FUNCCODE, FUNCNAME, FUNCSTATUS, FUNCCREATEUSER, FUNCCREATETIME, FUNCUPDATETIME, FUNCURI, FUNCSEQUENCE, FUNCISDELETED)
+VALUES
+ ('BIZ_func_91004', 'BIZ_func_91000', 'BIZ_app', 'WorkflowHistory', '历史任务', '1', 'bizadmin', '2016-03-28', '2016-03-28', 'workflow_manage/history.html', '91004', 0);
+
+
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_FUNCTION
+ (FUNCID, FUNCPARENTID, FUNCAPPID, FUNCCODE, FUNCNAME, FUNCSTATUS, FUNCCREATEUSER, FUNCCREATETIME, FUNCUPDATETIME, FUNCURI, FUNCSEQUENCE, FUNCISDELETED)
+VALUES
+ ('BIZ_func_92000', '0', 'BIZ_app', 'ChannelManage', '栏目管理', '1', 'bizadmin', '2016-03-28', '2016-03-28', 'channel_manage/index.html', '92000', 0);
+
+
+
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_FUNCTION
+ (FUNCID, FUNCPARENTID, FUNCAPPID, FUNCCODE, FUNCNAME, FUNCSTATUS, FUNCCREATEUSER, FUNCCREATETIME, FUNCUPDATETIME, FUNCURI, FUNCSEQUENCE, FUNCISDELETED)
+VALUES
+ ('BIZ_func_93000', '0', 'BIZ_app', 'ContentManage', '内容管理', '1', 'bizadmin', '2016-03-28', '2016-03-28', '', '93000', 0);
+
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_FUNCTION
+ (FUNCID, FUNCPARENTID, FUNCAPPID, FUNCCODE, FUNCNAME, FUNCSTATUS, FUNCCREATEUSER, FUNCCREATETIME, FUNCUPDATETIME, FUNCURI, FUNCSEQUENCE, FUNCISDELETED)
+VALUES
+ ('BIZ_func_93001', 'BIZ_func_93000', 'BIZ_app', 'ContentIndex', '内容列表', '1', 'bizadmin', '2016-03-28', '2016-03-28', 'content_manage/index.html', '93001', 0);
+
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_FUNCTION
+ (FUNCID, FUNCPARENTID, FUNCAPPID, FUNCCODE, FUNCNAME, FUNCSTATUS, FUNCCREATEUSER, FUNCCREATETIME, FUNCUPDATETIME, FUNCURI, FUNCSEQUENCE, FUNCISDELETED)
+VALUES
+ ('BIZ_func_93002', 'BIZ_func_93000', 'BIZ_app', 'ContentDraft', '草稿箱', '1', 'bizadmin', '2016-03-28', '2016-03-28', 'content_manage/draft.html', '93002', 0);
+
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_FUNCTION
+ (FUNCID, FUNCPARENTID, FUNCAPPID, FUNCCODE, FUNCNAME, FUNCSTATUS, FUNCCREATEUSER, FUNCCREATETIME, FUNCUPDATETIME, FUNCURI, FUNCSEQUENCE, FUNCISDELETED)
+VALUES
+ ('BIZ_func_93003', 'BIZ_func_93000', 'BIZ_app', 'ContentAudit', '待审核列表', '1', 'bizadmin', '2016-03-28', '2016-03-28', 'content_manage/audit.html', '93003', 0);
+
+
+
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_FUNCTION
+ (FUNCID, FUNCPARENTID, FUNCAPPID, FUNCCODE, FUNCNAME, FUNCSTATUS, FUNCCREATEUSER, FUNCCREATETIME, FUNCUPDATETIME, FUNCURI, FUNCSEQUENCE, FUNCISDELETED)
+VALUES
+ ('BIZ_func_94000', '0', 'BIZ_app', 'PermissionManage', '权限管理', '1', 'bizadmin', '2016-03-28', '2016-03-28', 'permission_manage/index.html', '94000', 0);
+
+COMMIT;
+
+
+
+--业务管理系统
+
+--添加角色分类
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_ROLECATEGORY
+ (CATEGORYID, CATEGORYCODE, CATEGORYNAME, CATEGORYMEMO, CATEGORYSTATUS, CATEGORYCREATEUSER, CATEGORYCREATETIME, CATEGORYUPDATETIME, CATEGORYISDELETED)
+VALUES
+ ('10', 'BIZ_app_RoleCategory', '业务管理角色分类', '', '1', 'bizadmin', '2016-06-29', '2016-06-29', 0);
+
+
+--添加角色 若不需要自动添加角色,可把下面的删除掉------------------------------------------------------------------
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_ROLE
+ (ROLEID, ROLECATEGORYID, ROLECODE, ROLENAME, ROLEMEMO, ROLESTATUS, ROLECREATEUSER, ROLECREATETIME, ROLEUPDATETIME, ROLEAPPIDS, ROLEISDELETED)
+VALUES
+ ('BIZ_app_Role', '10', 'BIZ_app_admin', '业务管理系统管理员', '', '1', 'bizadmin', SYSDATE, SYSDATE, 'BIZ_app', 0);
+
+--将角色赋给用户
+INSERT INTO IDC_U_UNIAUTH.UIDS_REF_ACCOUNTROLE (ACCOUNTID, ROLEID)
+VALUES ((SELECT ACCOUNTID FROM IDC_U_UNIAUTH.UIDS_TB_ACCOUNT WHERE ACCOUNTKEY = 'bizadmin'), 'BIZ_app_Role');
+
+-- 给角色赋系统---
+INSERT INTO IDC_U_UNIAUTH.UIDS_REF_APPLICATIONROLE (APPID, ROLEID)
+VALUES ('BIZ_app', 'BIZ_app_Role');
+
+-- 给角色赋功能---
+INSERT INTO IDC_U_UNIAUTH.UIDS_REF_FUNCTIONROLE (FUNCID, ROLEID)
+(SELECT T.FUNCID, 'BIZ_app_Role' AS ROLEID FROM IDC_U_UNIAUTH.UIDS_TB_FUNCTION T WHERE T.FUNCAPPID = 'BIZ_app');
+
+---给角色赋权限
+INSERT INTO IDC_U_UNIAUTH.UIDS_REF_RIGHTROLE (RIGHTID, ROLEID)
+(SELECT RIGHTID, 'BIZ_app_Role' AS ROLEID FROM IDC_U_UNIAUTH.UIDS_TB_RIGHT WHERE RIGHTAPPID = 'BIZ_app');
+
+COMMIT;
+
+
+--添加角色
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_ROLE
+ (ROLEID, ROLECATEGORYID, ROLECODE, ROLENAME, ROLEMEMO, ROLESTATUS, ROLECREATEUSER, ROLECREATETIME, ROLEUPDATETIME, ROLEAPPIDS, ROLEISDELETED)
+VALUES
+ ('BIZ_api_Role', '10', 'BIZ_api_user', '门户业务API接口使用人', '', '1', 'bizadmin', SYSDATE, SYSDATE, 'BIZ_api', 0);
+
+-- 给角色赋系统---
+INSERT INTO IDC_U_UNIAUTH.UIDS_REF_APPLICATIONROLE (APPID, ROLEID)
+VALUES ('BIZ_api', 'BIZ_api_Role');
+
+--将角色赋给用户
+INSERT INTO IDC_U_UNIAUTH.UIDS_REF_ACCOUNTROLE (ACCOUNTID, ROLEID)
+SELECT ACCOUNTID, 'BIZ_api_Role' FROM IDC_U_UNIAUTH.UIDS_TB_ACCOUNT WHERE ACCOUNTID NOT IN (SELECT ACCOUNTID FROM IDC_U_UNIAUTH.UIDS_REF_ACCOUNTROLE WHERE ROLEID='BIZ_api_Role');
+
+COMMIT;
+
+
+--添加角色
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_ROLE
+ (ROLEID, ROLECATEGORYID, ROLECODE, ROLENAME, ROLEMEMO, ROLESTATUS, ROLECREATEUSER, ROLECREATETIME, ROLEUPDATETIME, ROLEAPPIDS, ROLEISDELETED)
+VALUES
+ ('BIZ_sticky_admin', '10', 'BIZ_sticky_admin', '业务管理置顶管理员', '', '1', 'bizadmin', SYSDATE, SYSDATE, 'BIZ_app', 0);
+
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_ROLE
+ (ROLEID, ROLECATEGORYID, ROLECODE, ROLENAME, ROLEMEMO, ROLESTATUS, ROLECREATEUSER, ROLECREATETIME, ROLEUPDATETIME, ROLEAPPIDS, ROLEISDELETED)
+VALUES
+ ('BIZ_channel_admin', '10', 'BIZ_channel_admin', '业务管理栏目管理员', '', '1', 'bizadmin', SYSDATE, SYSDATE, 'BIZ_app', 0);
+
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_ROLE
+ (ROLEID, ROLECATEGORYID, ROLECODE, ROLENAME, ROLEMEMO, ROLESTATUS, ROLECREATEUSER, ROLECREATETIME, ROLEUPDATETIME, ROLEAPPIDS, ROLEISDELETED)
+VALUES
+ ('BIZ_template_admin', '10', 'BIZ_template_admin', '红头文件模板使用人', '', '1', 'bizadmin', SYSDATE, SYSDATE, 'BIZ_app', 0);
+
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_ROLE
+ (ROLEID, ROLECATEGORYID, ROLECODE, ROLENAME, ROLEMEMO, ROLESTATUS, ROLECREATEUSER, ROLECREATETIME, ROLEUPDATETIME, ROLEAPPIDS, ROLEISDELETED)
+VALUES
+ ('BIZ_school_admin', '10', 'BIZ_school_admin', '业务管理校办管理员', '', '1', 'bizadmin', SYSDATE, SYSDATE, 'BIZ_app', 0);
+
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_ROLE
+ (ROLEID, ROLECATEGORYID, ROLECODE, ROLENAME, ROLEMEMO, ROLESTATUS, ROLECREATEUSER, ROLECREATETIME, ROLEUPDATETIME, ROLEAPPIDS, ROLEISDELETED)
+VALUES
+ ('BIZ_check_user', '10', 'BIZ_check_user', '业务管理审核人', '', '1', 'bizadmin', SYSDATE, SYSDATE, 'BIZ_app', 0);
+
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_ROLE
+ (ROLEID, ROLECATEGORYID, ROLECODE, ROLENAME, ROLEMEMO, ROLESTATUS, ROLECREATEUSER, ROLECREATETIME, ROLEUPDATETIME, ROLEAPPIDS, ROLEISDELETED)
+VALUES
+ ('BIZ_release_user', '10', 'BIZ_release_user', '业务管理需审核发布人', '', '1', 'bizadmin', SYSDATE, SYSDATE, 'BIZ_app', 0);
+
+INSERT INTO IDC_U_UNIAUTH.UIDS_TB_ROLE
+ (ROLEID, ROLECATEGORYID, ROLECODE, ROLENAME, ROLEMEMO, ROLESTATUS, ROLECREATEUSER, ROLECREATETIME, ROLEUPDATETIME, ROLEAPPIDS, ROLEISDELETED)
+VALUES
+ ('BIZ_direct_release_user', '10', 'BIZ_direct_release_user', '业务管理直接发布人', '', '1', 'bizadmin', SYSDATE, SYSDATE, 'BIZ_app', 0);
+
+
+
+COMMIT;
+*/
\ No newline at end of file
diff --git a/tomcat/TOMCAT b/tomcat/TOMCAT
new file mode 100644
index 0000000..f88212f
--- /dev/null
+++ b/tomcat/TOMCAT
@@ -0,0 +1 @@
+#TOMCAT
diff --git a/web/platform-biz-sample-web-notes/pom.xml b/web/platform-biz-sample-web-notes/pom.xml
new file mode 100644
index 0000000..5de805b
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/pom.xml
@@ -0,0 +1,79 @@
+<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>
+
+ <parent>
+ <groupId>com.supwisdom.platform.biz.sample</groupId>
+ <artifactId>platform-biz-sample-web</artifactId>
+ <version>3.0.0</version>
+ </parent>
+
+ <groupId>com.supwisdom.platform.biz.sample</groupId>
+ <artifactId>platform-biz-sample-web-notes</artifactId>
+ <packaging>war</packaging>
+ <version>3.0.0</version>
+ <name>Platform Biz Sample Web Notes</name>
+ <url>http://maven.apache.org</url>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-core-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-core-framework</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-domain</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-interface</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-security</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-log</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-resources</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-security-ext</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-module-workflow</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.supwisdom.platform.biz.sample</groupId>
+ <artifactId>platform-biz-sample-module-notes</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>biz-notes</finalName>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-war-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/web/platform-biz-sample-web-notes/src/main/resources/cas.properties b/web/platform-biz-sample-web-notes/src/main/resources/cas.properties
new file mode 100644
index 0000000..fc01346
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/resources/cas.properties
@@ -0,0 +1,3 @@
+cas.server.url=http://app.supwisdom.com:9080/cas
+
+app.server.url=http://localhost:9038/biz-notes
diff --git a/web/platform-biz-sample-web-notes/src/main/resources/log4j.properties b/web/platform-biz-sample-web-notes/src/main/resources/log4j.properties
new file mode 100644
index 0000000..82b85b0
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/resources/log4j.properties
@@ -0,0 +1,19 @@
+#log4j.rootLogger=info,stdout
+log4j.rootLogger=debug,stdout
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5p] %c {%F:%L} - %m%n
+
+log4j.appender.fileOut=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.fileOut.File=/work/ssr/logs/ssr.log
+log4j.appender.fileOut.Append=true
+log4j.appender.fileOut.layout=org.apache.log4j.PatternLayout
+log4j.appender.fileOut.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5p] %c {%F:%L} - %m%n
+
+
+log4j.logger.org.springframework=error,stdout
+log4j.logger.org.apache.commons=error,stdout
+log4j.logger.net.sf.ehcache=error,stdout
+log4j.logger.org.apache.ibatis=error
+log4j.logger.org.mybatis.spring=error
diff --git a/web/platform-biz-sample-web-notes/src/main/resources/mq.properties b/web/platform-biz-sample-web-notes/src/main/resources/mq.properties
new file mode 100644
index 0000000..4417663
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/resources/mq.properties
@@ -0,0 +1,12 @@
+#\u95e8\u6237\u6d88\u606f\u63a5\u53e3\u914d\u7f6e
+#portal.server.url=http://localhost:9008
+portal.server.url=http://101.231.81.202:7879
+
+
+#\u6d88\u606f\u4e34\u65f6\u8868\u6240\u5728\u6570\u636e\u5e93\u7684\u76f8\u5173\u914d\u7f6e
+db.driverClassName=oracle.jdbc.driver.OracleDriver
+db.url=jdbc:oracle:thin:@app.supwisdom.com:11521:dev
+db.username=dev_u_uniportal
+db.password=kingstar
+db.validateQuery=select 1 from dual
+db.schema=dev_u_uniportal
diff --git a/web/platform-biz-sample-web-notes/src/main/resources/oauth2-client.properties b/web/platform-biz-sample-web-notes/src/main/resources/oauth2-client.properties
new file mode 100644
index 0000000..557d753
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/resources/oauth2-client.properties
@@ -0,0 +1,6 @@
+client.server.uri=http://localhost:9038/biz-notes
+
+oauth.server.uri=http://localhost:9038/biz-notes
+
+oauth.client.id=client-api-resource
+oauth.client.secret=secret-api-resource
diff --git a/web/platform-biz-sample-web-notes/src/main/resources/redis.properties b/web/platform-biz-sample-web-notes/src/main/resources/redis.properties
new file mode 100644
index 0000000..39b8da5
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/resources/redis.properties
@@ -0,0 +1,4 @@
+#redis.hostName = 192.168.1.229
+redis.hostName = localhost
+redis.port = 6379
+redis.password =
\ No newline at end of file
diff --git a/web/platform-biz-sample-web-notes/src/main/resources/spring-override/platform-core-framework/spring-cache.xml b/web/platform-biz-sample-web-notes/src/main/resources/spring-override/platform-core-framework/spring-cache.xml
new file mode 100644
index 0000000..f9ef0ff
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/resources/spring-override/platform-core-framework/spring-cache.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
+
+ <bean id="cacheVisitor" class="com.supwisdom.platform.biz.core.common.cache.impl.CacheInMemoryVisitorImpl" />
+
+</beans>
\ No newline at end of file
diff --git a/web/platform-biz-sample-web-notes/src/main/resources/spring-override/platform-module-security/spring-security-oauth2.xml b/web/platform-biz-sample-web-notes/src/main/resources/spring-override/platform-module-security/spring-security-oauth2.xml
new file mode 100644
index 0000000..7ef7ec7
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/resources/spring-override/platform-module-security/spring-security-oauth2.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
+
+ <bean id="tokenStore"
+ class="org.springframework.security.oauth2.provider.token.store.InMemoryTokenStore" />
+
+</beans>
\ No newline at end of file
diff --git a/web/platform-biz-sample-web-notes/src/main/resources/spring/main.xml b/web/platform-biz-sample-web-notes/src/main/resources/spring/main.xml
new file mode 100644
index 0000000..e24857c
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/resources/spring/main.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans default-lazy-init="true" default-autowire="byName" xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xmlns:jee="http://www.springframework.org/schema/jee"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+ http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd">
+
+ <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
+ <property name="dataSource" ref="dataSource" />
+ <property name="configLocation" value="classpath:/sqlMapConfig.xml"/>
+ <property name="mapperLocations">
+ <list>
+ <!-- 基础映射xml -->
+ <value>classpath*:com/supwisdom/platform/**/*BaseMapper.xml</value>
+ <!-- mysql数据库定制xml -->
+ <!--<value>classpath*:com/supwisdom/platform/**/*MysqlMapper.xml</value>-->
+ <!-- oracle数据库定制xml -->
+ <value>classpath*:com/supwisdom/platform/**/*OracleMapper.xml</value>
+ </list>
+ </property>
+ </bean>
+
+ <!-- 配置SQLSession模板 -->
+ <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate" scope="prototype">
+ <constructor-arg index="0" ref="sqlSessionFactory" />
+ </bean>
+
+ <!-- jdbc 配置引用spring-jdbc -->
+ <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
+ <property name="dataSource" ref="dataSource" />
+ </bean>
+
+ <bean id="appParamConfig" class="com.supwisdom.platform.biz.core.framework.utils.AppParamConfig">
+ <property name="resourcePath">
+ <value>/biz-api</value>
+ </property>
+ <!-- 上线后此项应设置为false -->
+ <property name="debugMode">
+ <value>false</value>
+ </property>
+ <!-- 是否把JAR中的JSP复制到指定目录 -->
+ <property name="copyJarJspFile">
+ <value>false</value>
+ </property>
+ <!-- 指定数据库类型 -->
+ <property name="dataBaseKind">
+ <value>oracle</value>
+ </property>
+ <property name="sharedbUserName">
+ <value>SHAREDB</value>
+ </property>
+ <property name="standardUserName">
+ <value>STANDCODE</value>
+ </property>
+ <property name="tempPath">
+ <value>d:/temp/</value>
+ </property>
+ <property name="webserviceurl">
+ <value>http://localhost:7010/</value>
+ </property>
+ <property name="resourceServerUrl">
+ <value>http://app.supwisdom.com:9080/resources</value>
+ </property>
+ </bean>
+
+ <beans profile="production">
+ <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/biz" resource-ref="true" />
+ </beans>
+
+ <beans profile="test">
+ <!-- 配置dbcp数据源 ,unit test环境 -->
+ <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
+ <property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
+
+ <property name="url" value="jdbc:oracle:thin:@app.supwisdom.com:11521:dev" />
+ <property name="username" value="dev_u_biz" />
+ <property name="password" value="kingstar" />
+ </bean>
+ </beans>
+</beans>
diff --git a/web/platform-biz-sample-web-notes/src/main/resources/sqlMapConfig.xml b/web/platform-biz-sample-web-notes/src/main/resources/sqlMapConfig.xml
new file mode 100644
index 0000000..1e4a1b7
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/resources/sqlMapConfig.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
+<configuration>
+ <settings>
+ <setting name="cacheEnabled" value="true" />
+ <setting name="lazyLoadingEnabled" value="true" />
+ <setting name="multipleResultSetsEnabled" value="true" />
+ <setting name="useColumnLabel" value="true" />
+ <setting name="defaultExecutorType" value="REUSE" />
+ <setting name="defaultStatementTimeout" value="25000" />
+ <setting name="callSettersOnNulls" value="true"/>
+ </settings>
+ <!-- 用于MYBAITS拦截器配置,暂时未启用,可用于后期解决SQL差异化问题等 -->
+ <plugins>
+ <plugin interceptor="com.supwisdom.platform.biz.core.framework.interceptor.PageInterceptor">
+ <property name="databaseType" value="oracle"/>
+ </plugin>
+ </plugins>
+
+</configuration>
\ No newline at end of file
diff --git a/web/platform-biz-sample-web-notes/src/main/resources/system_log.properties b/web/platform-biz-sample-web-notes/src/main/resources/system_log.properties
new file mode 100644
index 0000000..d94cf8d
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/resources/system_log.properties
@@ -0,0 +1,326 @@
+ModelBusinessCodeController.module.name=\u6a21\u578b\u7ba1\u7406
+ModelDataClassController.module.name=\u6a21\u578b\u7ba1\u7406
+ModelDataClassVersionController.module.name=\u6a21\u578b\u7ba1\u7406
+ModelDataDetailController.module.name=\u6a21\u578b\u7ba1\u7406
+ModelDataDetailVersionController.module.name=\u6a21\u578b\u7ba1\u7406
+ModelDataItemController.module.name=\u6a21\u578b\u7ba1\u7406
+ModelDataItemVersionController.module.name=\u6a21\u578b\u7ba1\u7406
+ModelDataSubclassController.module.name=\u6a21\u578b\u7ba1\u7406
+ModelDataSubclassVersionController.module.name=\u6a21\u578b\u7ba1\u7406
+ModelDataSubsetController.module.name=\u6a21\u578b\u7ba1\u7406
+ModelDataSubsetVersionController.module.name=\u6a21\u578b\u7ba1\u7406
+ModelVersionController.module.name=\u6a21\u578b\u7ba1\u7406
+
+
+ModelBusinessCodeController.business.name=\u4e1a\u52a1\u4ee3\u7801
+ModelDataClassController.business.name=\u6570\u636e\u7c7b
+ModelDataClassVersionController.business.name=\u6307\u5b9a\u7248\u672c\u6570\u636e\u7c7b
+ModelDataDetailController.business.name=\u5143\u6570\u636e\u7ba1\u7406\u8be6\u7ec6
+ModelDataDetailVersionController.business.name=\u6307\u5b9a\u7248\u672c\u8be6\u7ec6
+ModelDataItemController.business.name=\u6570\u636e\u9879
+ModelDataItemVersionController.business.name=\u6307\u5b9a\u7248\u672c\u6570\u636e\u9879
+ModelDataSubclassController.business.name=\u6570\u636e\u5b50\u7c7b
+ModelDataSubclassVersionController.business.name=\u6307\u5b9a\u7248\u672c\u6570\u636e\u9879
+ModelDataSubsetController.business.name=\u6570\u636e\u5b50\u96c6
+ModelDataSubsetVersionController.business.name=\u6307\u5b9a\u7248\u672c\u6570\u636e\u5b50\u96c6
+ModelVersionController.business.name=\u6a21\u578b\u7248\u672c
+
+
+CodeExecutionClassController.module.name=\u4ee3\u7801\u7ba1\u7406
+CodeExecutionClassVController.module.name=\u4ee3\u7801\u7ba1\u7406
+CodeExecutionController.module.name=\u4ee3\u7801\u7ba1\u7406
+CodeExecutionDetailsController.module.name=\u4ee3\u7801\u7ba1\u7406
+CodeExecutionSubclassController.module.name=\u4ee3\u7801\u7ba1\u7406
+CodeExecutionSubclassVController.module.name=\u4ee3\u7801\u7ba1\u7406
+CodeExecutionVController.module.name=\u4ee3\u7801\u7ba1\u7406
+CodeExecutionVDetailsController.module.name=\u4ee3\u7801\u7ba1\u7406
+CodeReferenceClassController.module.name=\u4ee3\u7801\u7ba1\u7406
+CodeReferenceController.module.name=\u4ee3\u7801\u7ba1\u7406
+CodeReferenceDetailsController.module.name=\u4ee3\u7801\u7ba1\u7406
+CodeReferenceSubclassController.module.name=\u4ee3\u7801\u7ba1\u7406
+CodeVersionController.module.name=\u4ee3\u7801\u7ba1\u7406
+
+
+CodeExecutionClassController.business.name=\u4ee3\u7801\u7c7b
+CodeExecutionClassVController.business.name=\u6307\u5b9a\u7248\u672c\u4ee3\u7801\u7c7b
+CodeExecutionController.business.name=\u4ee3\u7801\u9879
+CodeExecutionDetailsController.business.name=\u4ee3\u7801\u8be6\u60c5
+CodeExecutionSubclassController.business.name=\u4ee3\u7801\u5b50\u7c7b
+CodeExecutionSubclassVController.business.name=\u6307\u5b9a\u7248\u672c\u4ee3\u7801\u5b50\u7c7b
+CodeExecutionVController.business.name=\u6307\u5b9a\u7248\u672c\u4ee3\u7801\u9879
+CodeExecutionVDetailsController.business.name=\u6307\u5b9a\u7248\u672c\u4ee3\u7801\u8be6\u60c5
+CodeReferenceClassController.business.name=\u53c2\u8003\u4ee3\u7801\u7c7b
+CodeReferenceController.business.name=\u53c2\u8003\u4ee3\u7801\u9879
+CodeReferenceDetailsController.business.name=\u53c2\u8003\u4ee3\u7801\u8be6\u60c5
+CodeReferenceSubclassController.business.name=\u53c2\u8003\u4ee3\u7801\u5b50\u7c7b
+CodeVersionController.business.name=\u4ee3\u7801\u7248\u672c
+
+
+DServiceApplicationController.module.name=\u6570\u636e\u670d\u52a1\u5e94\u7528
+DServiceController.module.name=\u6570\u636e\u670d\u52a1
+DServiceAuthorizationController.module.name=\u6570\u636e\u670d\u52a1\u6388\u6743
+
+common.list.info=\u67e5\u8be2{businessName}\u5217\u8868
+common.list.error=\u67e5\u8be2{businessName}\u5217\u8868\u5931\u8d25
+common.list.type=\u67e5\u8be2
+common.get.info=\u67e5\u8be2{businessName}\u5355\u6761\u4fe1\u606f
+common.get.error=\u67e5\u8be2{businessName}\u5355\u6761\u4fe1\u606f\u5931\u8d25
+common.get.type=\u67e5\u8be2
+common.create.info=\u521b\u5efa{businessName}
+common.create.error=\u521b\u5efa{businessName}\u5931\u8d25
+common.create.type=\u7ef4\u62a4
+common.update.info=\u66f4\u65b0{businessName}
+common.update.error=\u66f4\u65b0{businessName}\u5931\u8d25
+common.update.type=\u7ef4\u62a4
+common.delete.info=\u5220\u9664{businessName}
+common.delete.error=\u5220\u9664{businessName}\u5931\u8d25
+common.delete.type=\u7ef4\u62a4
+common.move.info=\u8fc1\u79fb{businessName}
+common.move.error=\u8fc1\u79fb{businessName}\u5931\u8d25
+common.move.type=\u7ef4\u62a4
+common.audit.info=\u63a5\u53d7{businessName}
+common.audit.error=\u63a5\u53d7{businessName}\u5931\u8d25
+common.audit.type=\u7ef4\u62a4
+common.cancelAudit.info=\u53d6\u6d88\u63a5\u53d7{businessName}
+common.cancelAudit.error=\u53d6\u6d88\u63a5\u53d7{businessName}\u5931\u8d25
+common.cancelAudit.type=\u7ef4\u62a4
+common.export.info=\u5bfc\u51fa{businessName}
+common.export.error=\u5bfc\u51fa{businessName}\u5931\u8d25
+common.export.type=\u67e5\u8be2
+common.cancel.info=\u64a4\u9500{businessName}
+common.cancel.error=\u64a4\u9500{businessName}\u5931\u8d25
+common.cancel.type=\u7ef4\u62a4
+
+
+ModelBusinessCodeController.getBusinessCodeContentList.info=\u67e5\u8be2\u4e1a\u52a1\u4ee3\u7801\u4e2d\u7684\u4ee3\u7801\u8be6\u7ec6
+ModelBusinessCodeController.getBusinessCodeContentList.error=\u67e5\u8be2\u4e1a\u52a1\u4ee3\u7801\u4e2d\u7684\u4ee3\u7801\u8be6\u7ec6
+ModelBusinessCodeController.getBusinessCodeContentList.type=\u67e5\u8be2
+
+ModelDataClassController.auditList.info=\u67e5\u8be2\u6a21\u578b\u53d1\u5e03\u9875\u9762\u6570\u636e\u7c7b\u5217\u8868
+ModelDataClassController.auditList.error=\u67e5\u8be2\u6a21\u578b\u53d1\u5e03\u9875\u9762\u6570\u636e\u7c7b\u5217\u8868\u5931\u8d25
+ModelDataClassController.auditList.type=\u67e5\u8be2
+
+ModelDataClassVersionController.compare.info=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u5bf9\u6bd4\u4fe1\u606f
+ModelDataClassVersionController.compare.error=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u5bf9\u6bd4\u4fe1\u606f\u5931\u8d25
+ModelDataClassVersionController.compare.type=\u67e5\u8be2
+
+ModelDataDetailController.getManagementPageInfo.info=\u67e5\u8be2\u5143\u6570\u636e\u7ba1\u7406\u9875\u9762\u6982\u51b5\u6570\u636e
+ModelDataDetailController.getManagementPageInfo.error=\u67e5\u8be2\u5143\u6570\u636e\u7ba1\u7406\u9875\u9762\u6982\u51b5\u6570\u636e\u5931\u8d25
+ModelDataDetailController.getManagementPageInfo.type=\u67e5\u8be2
+ModelDataDetailController.getManagementPageTreeMenu.info=\u67e5\u8be2\u5143\u6570\u636e\u7ba1\u7406\u9875\u9762\u6811
+ModelDataDetailController.getManagementPageTreeMenu.error=\u67e5\u8be2\u5143\u6570\u636e\u7ba1\u7406\u9875\u9762\u6811\u5931\u8d25
+ModelDataDetailController.getManagementPageTreeMenu.type=\u67e5\u8be2
+ModelDataDetailController.getReleasePageTreeMenu.info=\u67e5\u8be2\u6a21\u578b\u53d1\u5e03\u9875\u9762\u6811
+ModelDataDetailController.getReleasePageTreeMenu.error=\u67e5\u8be2\u6a21\u578b\u53d1\u5e03\u9875\u9762\u6811\u5931\u8d25
+ModelDataDetailController.getReleasePageTreeMenu.type=\u67e5\u8be2
+ModelDataDetailController.getReleaseHomePageDetail.info=\u67e5\u8be2\u6a21\u578b\u53d1\u5e03\u9996\u9875\u6982\u51b5\u6570\u636e
+ModelDataDetailController.getReleaseHomePageDetail.error=\u67e5\u8be2\u6a21\u578b\u53d1\u5e03\u9996\u9875\u6982\u51b5\u6570\u636e\u5931\u8d25
+ModelDataDetailController.getReleaseHomePageDetail.type=\u67e5\u8be2
+ModelDataDetailController.getAuditPageInfo.info=\u67e5\u8be2\u6a21\u578b\u53d1\u5e03\u9875\u9762\u6570\u636e
+ModelDataDetailController.getAuditPageInfo.error=\u67e5\u8be2\u6a21\u578b\u53d1\u5e03\u9875\u9762\u6570\u636e\u5931\u8d25
+ModelDataDetailController.getAuditPageInfo.type=\u67e5\u8be2
+
+ModelDataDetailVersionController.getVersionPageInfoById.info=\u67e5\u8be2\u6307\u5b9a\u7248\u672c\u7684\u6982\u51b5\u4fe1\u606f
+ModelDataDetailVersionController.getVersionPageInfoById.error=\u67e5\u8be2\u6307\u5b9a\u7248\u672c\u7684\u6982\u51b5\u4fe1\u606f\u5931\u8d25
+ModelDataDetailVersionController.getVersionPageInfoById.type=\u67e5\u8be2
+ModelDataDetailVersionController.getVersionPageTreeMenu.info=\u67e5\u8be2\u6307\u5b9a\u7248\u672c\u7684\u6811
+ModelDataDetailVersionController.getVersionPageTreeMenu.error=\u67e5\u8be2\u6307\u5b9a\u7248\u672c\u7684\u6811\u5931\u8d25
+ModelDataDetailVersionController.getVersionPageTreeMenu.type=\u67e5\u8be2
+ModelDataDetailVersionController.exportDiff.info=\u5bfc\u51fa\u4e24\u4e2a\u7248\u672c\u7684\u5bf9\u6bd4\u4fe1\u606f
+ModelDataDetailVersionController.exportDiff.error=\u5bfc\u51fa\u4e24\u4e2a\u7248\u672c\u7684\u5bf9\u6bd4\u4fe1\u606f\u5931\u8d25
+ModelDataDetailVersionController.exportDiff.type=\u67e5\u8be2
+
+ModelDataItemVersionController.compare.info=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u6570\u636e\u9879\u5bf9\u6bd4\u4fe1\u606f
+ModelDataItemVersionController.compare.error=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u6570\u636e\u9879\u5bf9\u6bd4\u4fe1\u606f\u5931\u8d25
+ModelDataItemVersionController.compare.type=\u67e5\u8be2
+ModelDataItemVersionController.databaseCompare.info=\u67e5\u8be2\u6267\u884c\u7248\u672c\u6570\u636e\u9879\u548c\u6570\u636e\u5e93\u5217\u5bf9\u6bd4\u4fe1\u606f
+ModelDataItemVersionController.databaseCompare.error=\u67e5\u8be2\u6267\u884c\u7248\u672c\u6570\u636e\u9879\u548c\u6570\u636e\u5e93\u5217\u5bf9\u6bd4\u4fe1\u606f\u5931\u8d25
+ModelDataItemVersionController.databaseCompare.type=\u67e5\u8be2
+
+ModelDataSubclassController.importExcel.info=\u5bfc\u5165\u6570\u636e\u5b50\u7c7b\u4fe1\u606f
+ModelDataSubclassController.importExcel.error=\u5bfc\u5165\u6570\u636e\u5b50\u7c7b\u4fe1\u606f
+ModelDataSubclassController.importExcel.type=\u7ef4\u62a4
+
+ModelDataSubclassVersionController.compare.info=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u6570\u636e\u5b50\u7c7b\u5bf9\u6bd4\u4fe1\u606f
+ModelDataSubclassVersionController.compare.error=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u6570\u636e\u5b50\u7c7b\u5bf9\u6bd4\u4fe1\u606f\u5931\u8d25
+ModelDataSubclassVersionController.compare.type=\u67e5\u8be2
+ModelDataSubclassVersionController.databaseCompare.info=\u67e5\u8be2\u6267\u884c\u7248\u672c\u6570\u636e\u5b50\u7c7b\u548c\u6570\u636e\u5e93\u8868\u5bf9\u6bd4\u4fe1\u606f
+ModelDataSubclassVersionController.databaseCompare.error=\u67e5\u8be2\u6267\u884c\u7248\u672c\u6570\u636e\u5b50\u7c7b\u548c\u6570\u636e\u5e93\u8868\u5bf9\u6bd4\u4fe1\u606f\u5931\u8d25
+ModelDataSubclassVersionController.databaseCompare.type=\u67e5\u8be2
+ModelDataSubclassVersionController.executeScript.info=\u6267\u884c\u6570\u636e\u5e93\u811a\u672c
+ModelDataSubclassVersionController.executeScript.error=\u6267\u884c\u6570\u636e\u5e93\u811a\u672c\u5931\u8d25
+ModelDataSubclassVersionController.executeScript.type=\u7ef4\u62a4
+
+ModelDataSubsetController.auditList.info=\u67e5\u8be2\u6a21\u578b\u53d1\u5e03\u9875\u9762\u6570\u636e\u5b50\u96c6\u5217\u8868
+ModelDataSubsetController.auditList.error=\u67e5\u8be2\u6a21\u578b\u53d1\u5e03\u9875\u9762\u6570\u636e\u5b50\u96c6\u5217\u8868\u5931\u8d25
+ModelDataSubsetController.auditList.type=\u67e5\u8be2
+ModelDataSubsetController.release.info=\u6a21\u578b\u7248\u672c\u53d1\u5e03
+ModelDataSubsetController.release.error=\u6a21\u578b\u7248\u672c\u53d1\u5e03\u5931\u8d25
+ModelDataSubsetController.release.type=\u7ef4\u62a4
+
+ModelDataSubsetVersionController.compare.info=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u6570\u636e\u5b50\u96c6\u5bf9\u6bd4\u4fe1\u606f
+ModelDataSubsetVersionController.compare.error=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u6570\u636e\u5b50\u96c6\u5bf9\u6bd4\u4fe1\u606f
+ModelDataSubsetVersionController.compare.type=\u67e5\u8be2
+
+ModelVersionController.setExeVersion.info=\u8bbe\u7f6e\u6267\u884c\u7248\u672c
+ModelVersionController.setExeVersion.error=\u8bbe\u7f6e\u6267\u884c\u7248\u672c\u5931\u8d25
+ModelVersionController.setExeVersion.type=\u7ef4\u62a4
+
+
+CodeExecutionClassController.publishList.info=\u67e5\u8be2\u4ee3\u7801\u53d1\u5e03\u9875\u9762\u4ee3\u7801\u7c7b\u5217\u8868
+CodeExecutionClassController.publishList.error=\u67e5\u8be2\u4ee3\u7801\u53d1\u5e03\u9875\u9762\u4ee3\u7801\u7c7b\u5217\u8868\u5931\u8d25
+CodeExecutionClassController.publishList.type=\u67e5\u8be2
+
+CodeExecutionClassController.publishDifference.info=\u67e5\u8be2\u4ee3\u7801\u53d1\u5e03\u9875\u9762\u7248\u672c\u5bf9\u6bd4
+CodeExecutionClassController.publishDifference.error=\u67e5\u8be2\u4ee3\u7801\u53d1\u5e03\u9875\u9762\u7248\u672c\u5bf9\u6bd4\u5931\u8d25
+CodeExecutionClassController.publishDifference.type=\u5931\u8d25
+
+CodeExecutionClassController.refer.info=\u53d6\u7528\u4ee3\u7801\u7c7b
+CodeExecutionClassController.refer.error=\u53d6\u7528\u4ee3\u7801\u7c7b\u5931\u8d25
+CodeExecutionClassController.refer.type=\u7ef4\u62a4
+
+CodeExecutionClassController.publish.info=\u4ee3\u7801\u7248\u672c\u53d1\u5e03
+CodeExecutionClassController.publish.error=\u4ee3\u7801\u7248\u672c\u53d1\u5e03\u5931\u8d25
+CodeExecutionClassController.publish.type=\u7ef4\u62a4
+
+CodeExecutionClassVController.compare.info=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u4ee3\u7801\u7c7b\u5bf9\u6bd4
+CodeExecutionClassVController.compare.error=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u4ee3\u7801\u7c7b\u5bf9\u6bd4\u5931\u8d25
+CodeExecutionClassVController.compare.type=\u67e5\u8be2
+
+CodeExecutionSubclassController.publishList.info=\u67e5\u8be2\u4ee3\u7801\u53d1\u5e03\u9875\u9762\u4ee3\u7801\u5b50\u7c7b\u5217\u8868
+CodeExecutionSubclassController.publishList.error=\u67e5\u8be2\u4ee3\u7801\u53d1\u5e03\u9875\u9762\u4ee3\u7801\u5b50\u7c7b\u5217\u8868\u5931\u8d25
+CodeExecutionSubclassController.publishList.type=\u67e5\u8be2
+
+CodeExecutionSubclassController.refer.info=\u53d6\u7528\u4ee3\u7801\u5b50\u7c7b
+CodeExecutionSubclassController.refer.error=\u53d6\u7528\u4ee3\u7801\u5b50\u7c7b\u5931\u8d25
+CodeExecutionSubclassController.refer.type=\u7ef4\u62a4
+
+CodeExecutionSubclassController.revoke.info=\u64a4\u9500\u4ee3\u7801\u5b50\u7c7b\u53d8\u66f4
+CodeExecutionSubclassController.revoke.error=\u64a4\u9500\u4ee3\u7801\u5b50\u7c7b\u53d8\u66f4\u5931\u8d25
+CodeExecutionSubclassController.revoke.type=\u7ef4\u62a4
+
+CodeExecutionSubclassController.updateDetails.info=\u67e5\u8be2\u4ee3\u7801\u5b50\u7c7b\u66f4\u65b0\u8be6\u60c5
+CodeExecutionSubclassController.updateDetails.error=\u67e5\u8be2\u4ee3\u7801\u5b50\u7c7b\u66f4\u65b0\u8be6\u60c5\u5931\u8d25
+CodeExecutionSubclassController.updateDetails.type=\u67e5\u8be2
+
+CodeExecutionSubclassController.fileImport.info=\u4ee3\u7801\u5b50\u7c7b\u5bfc\u5165
+CodeExecutionSubclassController.fileImport.error=\u4ee3\u7801\u5b50\u7c7b\u5bfc\u5165\u5931\u8d25
+CodeExecutionSubclassController.fileImport.type=\u7ef4\u62a4
+
+CodeExecutionSubclassVController.compare.info=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u4ee3\u7801\u5b50\u7c7b\u5bf9\u6bd4
+CodeExecutionSubclassVController.compare.error=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u4ee3\u7801\u5b50\u7c7b\u5bf9\u6bd4\u5931\u8d25
+CodeExecutionSubclassVController.compare.type=\u67e5\u8be2
+
+CodeExecutionController.publishList.info=\u67e5\u8be2\u4ee3\u7801\u53d1\u5e03\u9875\u9762\u4ee3\u7801\u9879\u5217\u8868
+CodeExecutionController.publishList.error=\u67e5\u8be2\u4ee3\u7801\u53d1\u5e03\u9875\u9762\u4ee3\u7801\u9879\u5217\u8868\u5931\u8d25
+CodeExecutionController.publishList.type=\u67e5\u8be2
+
+CodeExecutionController.updateDetails.info=\u67e5\u8be2\u4ee3\u7801\u9879\u66f4\u65b0\u8be6\u60c5
+CodeExecutionController.updateDetails.error=\u67e5\u8be2\u4ee3\u7801\u9879\u66f4\u65b0\u8be6\u60c5\u5931\u8d25
+CodeExecutionController.updateDetails.type=\u67e5\u8be2
+
+CodeExecutionController.revoke.info=\u64a4\u9500\u4ee3\u7801\u9879\u53d8\u66f4
+CodeExecutionController.revoke.error=\u64a4\u9500\u4ee3\u7801\u9879\u53d8\u66f4\u5931\u8d25
+CodeExecutionController.revoke.type=\u7ef4\u62a4
+
+CodeExecutionVController.compare.info=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u4ee3\u7801\u9879\u5bf9\u6bd4
+CodeExecutionVController.compare.error=\u67e5\u8be2\u4e24\u4e2a\u7248\u672c\u4ee3\u7801\u9879\u5bf9\u6bd4\u5931\u8d25
+CodeExecutionVController.compare.type=\u67e5\u8be2
+
+CodeExecutionDetailsController.details.info=\u67e5\u8be2\u4ee3\u7801\u6982\u51b5
+CodeExecutionDetailsController.details.error=\u67e5\u8be2\u4ee3\u7801\u6982\u51b5\u5931\u8d25
+CodeExecutionDetailsController.details.type=\u67e5\u8be2
+
+CodeExecutionDetailsController.publishDetails.info=\u67e5\u8be2\u4ee3\u7801\u53d1\u5e03\u6982\u51b5
+CodeExecutionDetailsController.publishDetails.error=\u67e5\u8be2\u4ee3\u7801\u53d1\u5e03\u6982\u51b5\u5931\u8d25
+CodeExecutionDetailsController.publishDetails.type=\u67e5\u8be2
+
+CodeExecutionDetailsController.tree.info=\u67e5\u8be2\u4ee3\u7801\u6811
+CodeExecutionDetailsController.tree.error=\u67e5\u8be2\u4ee3\u7801\u6811\u5931\u8d25
+CodeExecutionDetailsController.tree.type=\u67e5\u8be2
+
+CodeExecutionDetailsController.pubTree.info=\u67e5\u8be2\u4ee3\u7801\u53d1\u5e03\u6811
+CodeExecutionDetailsController.pubTree.error=\u67e5\u8be2\u4ee3\u7801\u53d1\u5e03\u6811\u5931\u8d25
+CodeExecutionDetailsController.pubTree.type=\u67e5\u8be2
+
+CodeExecutionVDetailsController.details.info=\u67e5\u8be2\u6307\u5b9a\u7248\u672c\u4ee3\u7801\u6982\u51b5
+CodeExecutionVDetailsController.details.error=\u67e5\u8be2\u6307\u5b9a\u7248\u672c\u4ee3\u7801\u6982\u51b5\u5931\u8d25
+CodeExecutionVDetailsController.details.type=\u67e5\u8be2
+
+CodeExecutionVDetailsController.exportDetails.info=\u5bfc\u51fa\u6307\u5b9a\u7248\u672c\u4ee3\u7801\u6982\u51b5
+CodeExecutionVDetailsController.exportDetails.error=\u5bfc\u51fa\u6307\u5b9a\u7248\u672c\u4ee3\u7801\u6982\u51b5\u5931\u8d25
+CodeExecutionVDetailsController.exportDetails.type=\u67e5\u8be2
+
+CodeExecutionVDetailsController.exportContrast.info=\u5bfc\u51fa\u7248\u672c\u5dee\u5f02
+CodeExecutionVDetailsController.exportContrast.error=\u5bfc\u51fa\u7248\u672c\u5dee\u5f02\u5931\u8d25
+CodeExecutionVDetailsController.exportContrast.type=\u67e5\u8be2
+
+CodeExecutionVDetailsController.tree.info=\u67e5\u8be2\u6307\u5b9a\u7248\u672c\u4ee3\u7801\u6811
+CodeExecutionVDetailsController.tree.error=\u67e5\u8be2\u6307\u5b9a\u7248\u672c\u4ee3\u7801\u6811\u5931\u8d25
+CodeExecutionVDetailsController.tree.type=\u67e5\u8be2
+
+CodeReferenceDetailsController.details.info=\u67e5\u8be2\u53c2\u8003\u4ee3\u7801\u6982\u51b5
+CodeReferenceDetailsController.details.error=\u67e5\u8be2\u53c2\u8003\u4ee3\u7801\u6982\u51b5\u5931\u8d25
+CodeReferenceDetailsController.details.type=\u67e5\u8be2
+
+CodeReferenceDetailsController.tree.info=\u67e5\u8be2\u53c2\u8003\u4ee3\u7801\u6811
+CodeReferenceDetailsController.tree.error=\u67e5\u8be2\u53c2\u8003\u4ee3\u7801\u6811\u5931\u8d25
+CodeReferenceDetailsController.tree.type=\u67e5\u8be2
+
+CodeVersionController.setExe.info=\u8bbe\u7f6e\u6267\u884c\u7248\u672c
+CodeVersionController.setExe.error=\u8bbe\u7f6e\u6267\u884c\u7248\u672c\u5931\u8d25
+CodeVersionController.setExe.type=\u7ef4\u62a4
+
+CodeVersionController.getExe.info=\u67e5\u8be2\u5f53\u524d\u6267\u884c\u7248\u672c
+CodeVersionController.getExe.error=\u67e5\u8be2\u5f53\u524d\u6267\u884c\u7248\u672c\u5931\u8d25
+CodeVersionController.getExe.type=\u67e5\u8be2
+
+
+DServiceController.list.info=\u67e5\u8be2\u6570\u636e\u670d\u52a1\u9875\u9762\u6570\u636e\u5217\u8868
+DServiceController.list.error=\u67e5\u8be2\u6570\u636e\u670d\u52a1\u9875\u9762\u6570\u636e\u5217\u8868\u5931\u8d25
+DServiceController.list.type=\u67e5\u8be2
+DServiceController.loglist.info=\u67e5\u8be2\u6570\u636e\u670d\u52a1\u65e5\u5fd7\u9875\u9762\u6570\u636e\u5217\u8868
+DServiceController.loglist.error=\u67e5\u8be2\u6570\u636e\u670d\u52a1\u65e5\u5fd7\u9875\u9762\u6570\u636e\u5217\u8868\u5931\u8d25
+DServiceController.loglist.type=\u67e5\u8be2
+DServiceController.getManagementPageTreeMenu.info=\u67e5\u8be2\u6570\u636e\u670d\u52a1\u6811\u6570\u636e\u5217\u8868
+DServiceController.getManagementPageTreeMenu.error=\u67e5\u8be2\u6570\u636e\u670d\u52a1\u6811\u6570\u636e\u5217\u8868\u5931\u8d25
+DServiceController.getManagementPageTreeMenu.type=\u67e5\u8be2
+DServiceController.saveservice.info=\u6570\u636e\u670d\u52a1\u4fdd\u5b58
+DServiceController.saveservice.error=\u6570\u636e\u670d\u52a1\u4fdd\u5b58\u5931\u8d25
+DServiceController.saveservice.type=\u7ef4\u62a4
+DServiceController.delete.info=\u6570\u636e\u670d\u52a1\u5220\u9664
+DServiceController.delete.error=\u6570\u636e\u670d\u52a1\u5220\u9664\u5931\u8d25
+DServiceController.delete.type=\u7ef4\u62a4
+DServiceController.export.info=\u6570\u636e\u670d\u52a1\u5bfc\u51fa
+DServiceController.export.error=\u6570\u636e\u670d\u52a1\u5bfc\u51fa\u5931\u8d25
+DServiceController.export.type=\u7ef4\u62a4
+
+DServiceApplicationController.list.info=\u67e5\u8be2\u5e94\u7528\u7ba1\u7406\u9875\u9762\u6570\u636e\u5217\u8868
+DServiceApplicationController.list.error=\u67e5\u8be2\u5e94\u7528\u7ba1\u7406\u9875\u9762\u6570\u636e\u5217\u8868\u5931\u8d25
+DServiceApplicationController.list.type=\u67e5\u8be2
+DServiceApplicationController.batchSetMaintenanceState.info=\u5e94\u7528\u7ba1\u7406\u4fdd\u5b58
+DServiceApplicationController.batchSetMaintenanceState.error=\u5e94\u7528\u7ba1\u7406\u4fdd\u5b58\u5931\u8d25
+DServiceApplicationController.batchSetMaintenanceState.type=\u7ef4\u62a4
+DServiceApplicationController.delete.info=\u5e94\u7528\u7ba1\u7406\u5220\u9664
+DServiceApplicationController.delete.error=\u5e94\u7528\u7ba1\u7406\u5220\u9664\u5931\u8d25
+DServiceApplicationController.delete.type=\u7ef4\u62a4
+DServiceApplicationController.export.info=\u5e94\u7528\u7ba1\u7406\u5bfc\u51fa
+DServiceApplicationController.export.error=\u5e94\u7528\u7ba1\u7406\u5bfc\u51fa\u5931\u8d25
+DServiceApplicationController.export.type=\u7ef4\u62a4
+
+
+DServiceAuthorizationController.list.info=\u67e5\u8be2\u5e94\u7528\u6388\u6743\u9875\u9762\u6570\u636e\u5217\u8868
+DServiceAuthorizationController.list.error=\u67e5\u8be2\u5e94\u7528\u6388\u6743\u9875\u9762\u6570\u636e\u5217\u8868\u5931\u8d25
+DServiceAuthorizationController.list.type=\u67e5\u8be2
+DServiceAuthorizationController.batchSetMaintenanceState.info=\u67e5\u8be2\u5e94\u7528\u6388\u6743\u9875\u9762\u6279\u91cf\u8bbe\u7f6e
+DServiceAuthorizationController.batchSetMaintenanceState.error=\u67e5\u8be2\u5e94\u7528\u6388\u6743\u9875\u9762\u6279\u91cf\u8bbe\u7f6e\u5931\u8d25
+DServiceAuthorizationController.batchSetMaintenanceState.type=\u7ef4\u62a4
+DServiceAuthorizationController.saveservice.info=\u5e94\u7528\u6388\u6743\u4fdd\u5b58
+DServiceAuthorizationController.saveservice.error=\u5e94\u7528\u6388\u6743\u4fdd\u5b58\u5931\u8d25
+DServiceAuthorizationController.saveservice.type=\u7ef4\u62a4
+DServiceAuthorizationController.delete.info=\u5e94\u7528\u6388\u6743\u5220\u9664
+DServiceAuthorizationController.delete.error=\u5e94\u7528\u6388\u6743\u5220\u9664\u5931\u8d25
+DServiceAuthorizationController.delete.type=\u7ef4\u62a4
+DServiceAuthorizationController.export.info=\u5e94\u7528\u6388\u6743\u5bfc\u51fa
+DServiceAuthorizationController.export.error=\u5e94\u7528\u6388\u6743\u5bfc\u51fa\u5931\u8d25
+DServiceAuthorizationController.export.type=\u7ef4\u62a4
\ No newline at end of file
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/WEB-INF/oauth2-servlet.xml b/web/platform-biz-sample-web-notes/src/main/webapp/WEB-INF/oauth2-servlet.xml
new file mode 100644
index 0000000..2225f09
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/WEB-INF/oauth2-servlet.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oauth2="http://www.springframework.org/schema/security/oauth2"
+ xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:security="http://www.springframework.org/schema/security"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
+
+ <mvc:annotation-driven />
+
+ <mvc:default-servlet-handler />
+
+</beans>
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/WEB-INF/web.xml b/web/platform-biz-sample-web-notes/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..263c48a
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+ version="3.0">
+ <display-name>platform-web-api</display-name>
+
+ <context-param>
+ <param-name>contextConfigLocation</param-name>
+ <param-value>classpath*:spring-parent.xml</param-value>
+ </context-param>
+
+ <!-- 設定Spring Context的默认Profile -->
+ <context-param>
+ <param-name>spring.profiles.default</param-name>
+ <param-value>production</param-value>
+ </context-param>
+ <!-- Spring 容器加载 -->
+ <listener>
+ <listener-class>com.supwisdom.platform.biz.core.framework.utils.InitContextLoaderListener</listener-class>
+ </listener>
+ <listener>
+ <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
+ </listener>
+ <listener>
+ <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
+ </listener>
+
+ <listener>
+ <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
+ </listener>
+
+
+ <filter>
+ <filter-name>OAuthTokenFilter</filter-name>
+ <filter-class>com.supwisdom.platform.biz.module.security.oauth2.provider.filter.OAuthTokenFilter</filter-class>
+ <init-param>
+ <param-name>oauth_server_uri</param-name>
+ <param-value>http://localhost:9038/biz-notes</param-value>
+ </init-param>
+ </filter>
+
+ <filter>
+ <filter-name>springSecurityFilterChain</filter-name>
+ <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
+ </filter>
+ <filter>
+ <filter-name>logFilter</filter-name>
+ <filter-class>com.supwisdom.platform.biz.module.log.filter.LogFilter</filter-class>
+ </filter>
+
+ <!-- Enables use of HTTP methods PUT and DELETE,默认参数名: _method -->
+ <filter>
+ <filter-name>httpMethodFilter</filter-name>
+ <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
+ </filter>
+
+ <!-- 字符编码过滤器 -->
+ <filter>
+ <filter-name>encodingFilter</filter-name>
+ <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
+ <init-param>
+ <param-name>encoding</param-name>
+ <param-value>UTF-8</param-value>
+ </init-param>
+ <init-param>
+ <param-name>forceEncoding</param-name>
+ <param-value>true</param-value>
+ </init-param>
+ </filter>
+
+ <!-- 静态资源处理 -->
+ <filter>
+ <filter-name>staticResFilter</filter-name>
+ <filter-class>com.supwisdom.platform.biz.core.framework.filter.StaticResourceFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>staticResFilter</filter-name>
+ <url-pattern>*.js</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>staticResFilter</filter-name>
+ <url-pattern>*.css</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>staticResFilter</filter-name>
+ <url-pattern>*.woff</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>staticResFilter</filter-name>
+ <url-pattern>*.ttf</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>staticResFilter</filter-name>
+ <url-pattern>*.json</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>staticResFilter</filter-name>
+ <url-pattern>*.jpg</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>staticResFilter</filter-name>
+ <url-pattern>*.png</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>staticResFilter</filter-name>
+ <url-pattern>*.gif</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>staticResFilter</filter-name>
+ <url-pattern>*.html</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>staticResFilter</filter-name>
+ <url-pattern>*.swf</url-pattern>
+ </filter-mapping>
+
+ <filter-mapping>
+ <filter-name>springSecurityFilterChain</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <filter-mapping>
+ <filter-name>OAuthTokenFilter</filter-name>
+ <url-pattern>/html/notes/*</url-pattern>
+ </filter-mapping>
+ <!--
+ <filter-mapping>
+ <filter-name>OAuthTokenFilter</filter-name>
+ <url-pattern>/login.jsp</url-pattern>
+ </filter-mapping>
+ -->
+ <filter-mapping>
+ <filter-name>OAuthTokenFilter</filter-name>
+ <url-pattern>/api/*</url-pattern>
+ </filter-mapping>
+
+ <filter-mapping>
+ <filter-name>httpMethodFilter</filter-name>
+ <servlet-name>SpringMVCDispatcherServlet</servlet-name>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>encodingFilter</filter-name>
+ <servlet-name>SpringMVCDispatcherServlet</servlet-name>
+ </filter-mapping>
+
+ <filter-mapping>
+ <filter-name>logFilter</filter-name>
+ <url-pattern>/api/rest/*</url-pattern>
+ </filter-mapping>
+
+ <!-- The front controller of this Spring Web application, responsible for
+ handling all application requests -->
+ <servlet>
+ <servlet-name>SpringMVCDispatcherServlet</servlet-name>
+ <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+ <init-param>
+ <param-name>contextConfigLocation</param-name>
+ <param-value>classpath*:spring-mvc-parent.xml</param-value>
+ </init-param>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <!-- Map all *.spring requests to the DispatcherServlet for handling -->
+ <servlet-mapping>
+ <servlet-name>SpringMVCDispatcherServlet</servlet-name>
+ <url-pattern>/api/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>oauth2</servlet-name>
+ <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+ <load-on-startup>2</load-on-startup>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>oauth2</servlet-name>
+ <url-pattern>/</url-pattern>
+ </servlet-mapping>
+
+
+ <!--
+ <servlet>
+ <servlet-name>DownloadServlet</servlet-name>
+ <servlet-class>com.supwisdom.platform.biz.module.datacenter.system.servlet.DownloadServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>DownloadServlet</servlet-name>
+ <url-pattern>/download</url-pattern>
+ </servlet-mapping>
+ -->
+
+ <session-config>
+ <session-timeout>720</session-timeout>
+ </session-config>
+
+
+ <!-- 欢迎页面 -->
+ <welcome-file-list>
+ <welcome-file>index.jsp</welcome-file>
+ </welcome-file-list>
+</web-app>
\ No newline at end of file
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/css/html5sticky.css b/web/platform-biz-sample-web-notes/src/main/webapp/assets/css/html5sticky.css
new file mode 100644
index 0000000..133bc8a
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/css/html5sticky.css
@@ -0,0 +1,382 @@
+/*
+ HTML5STICKY (http://github.com/sarfraznawaz2005/HTML5Sticky)
+ ================================================================
+ Author : Sarfraz Ahmed (sarfraznawaz2005@gmail.com)
+ Twitter : @sarfraznawaz
+ Blog : http://sarfraznawaz.wordpress.com/
+ LICENSE : MIT
+ ================================================================
+*/
+
+/* common styles start */
+h1{font-size:1.6em;}
+h2{font-size:1em;}
+a,a:visited{color:#fff;outline:none !important;text-decoration:none;}
+a img,a:visited img{border:none;}
+textarea{overflow:auto;}
+.left{float:left;}
+.right{float:right;}
+.clear{clear:both;}
+/* common styles end */
+
+
+body{background:url("../img/bg.png");color:#fff;padding:10px 30px 10px 30px;}
+
+h1{float:left; margin-right:30px; line-height:20px;color:#f6f6f6;text-shadow: 1px 1px 5px #fff;filter: dropshadow(color=#fff, offx=1, offy=1);}
+
+.topsection{border-right:1px solid #999;height:40px;padding:0 10px;width:auto;display:inline;}
+.topsection img{margin-top:7px;float:left;margin-right:3px;}
+.topsection a{float:left;display:inline;}
+
+#main{margin-left:10%;width:90%;padding-bottom:50px;margin-top:120px;}
+
+#head{
+ position:absolute;
+ margin:0 auto;
+ width:800px;
+ height:43px;
+ top:20px;
+ left:50px;
+ padding:10px;
+ right:30px;
+
+ background-color: transparent;
+ background-color: rgba(255, 255, 255, 0.3); /* FF3+, Saf3+, Opera 10.10+, Chrome, IE9 */
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4CFFFFFF,endColorstr=#4CFFFFFF); /* IE6IE9 */
+ zoom: 1;
+
+ -moz-border-radius:10px;
+ -webkit-border-radius:10px;
+ border-radius:10px;
+ margin-bottom:100px;
+}
+
+#twitter, #donate{float:right;margin-top:7px;margin-left:5px;}
+
+#head p{
+ clear:both;
+ width:200px;
+}
+
+footer{
+ margin:auto;
+ width:300px;
+ position:relative;
+ bottom:10px;
+ left:5%;
+}
+
+.note_common, .bignote, .editinfo{
+ padding:20px 10px 10px 10px;
+ color:#000;
+ float:left;
+ margin:20px;
+ margin-top:10px;
+ position:relative;
+ cursor:pointer;
+ border: 3px solid white;
+
+ /* page effect start */
+ -webkit-border-bottom-left-radius: 20px 500px;
+ -webkit-border-bottom-right-radius: 500px 30px;
+ -webkit-border-top-right-radius: 5px 100px;
+
+ -moz-border-radius-bottomleft: 20px 500px;
+ -moz-border-radius-bottomright: 500px 30px;
+ -moz-border-radius-topright: 5px 100px;
+
+ border-radius-bottomleft: 20px 500px;
+ border-radius-bottomright: 500px 30px;
+ border-radius-topright: 5px 100px;
+
+ -webkit-box-shadow: 0 2px 10px 1px rgba(0,0,0,.2);
+ -moz-box-shadow: 0 2px 10px 1px rgba(0,0,0,.2);
+ box-shadow: 0 2px 10px 1px rgba(0,0,0,.2);
+
+ /* page effect end */
+
+ -moz-box-shadow: -7px 10px rgba(0,0,0,0.3);
+ -webkit-box-shadow: -7px 10px rgba(0,0,0,0.3);
+ box-shadow: -7px 10px rgba(0,0,0,0.3);
+}
+
+.note_common h2{
+ text-align:center;
+ margin-top:0;
+ padding-top:0;
+ font-family: cursive;
+}
+
+.note_common p{
+ font-size:0.9em;
+ overflow:auto;
+ overflow-x:hidden;
+ line-height:18px;
+ text-align:left;
+ font-family: 'Architects Daughter', cursive;
+}
+
+.inset{
+ -moz-box-shadow:inset 0 0 10px #cccccc;
+ -webkit-box-shadow:inset 0 0 10px #cccccc;
+ box-shadow:inset 0 0 10px #cccccc;
+ background:#f8f7f7;
+ color:#333;
+ padding:5px;
+ font-size:0.9em;
+ border:1px solid #e7e7e7;
+ font-family: 'Architects Daughter', cursive;
+}
+
+input:focus,textarea:focus,select:focus{border:1px solid #fafafa;-webkit-box-shadow:0 0 6px #000;-moz-box-shadow:0 0 5px #000;box-shadow:0 0 5px #000;}
+
+.tip{
+ background:url(../img/tip.png) no-repeat;
+ font-size:13px;
+ padding-left:25px;
+ padding-top:3px;
+ vertical-align:middle;
+}
+
+.icons-footer .ficon{
+ margin-left:10px;
+ position:absolute;
+ bottom:-15px;
+}
+
+/* for sticky note background oolors */
+
+.stickynote0 {
+ background-color: #99FF41;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#99FF41), to(#53B00A));
+ background-image: -webkit-linear-gradient(top, #99FF41, #53B00A);
+ background-image: -moz-linear-gradient(top, #99FF41, #53B00A);
+ background-image: -ms-linear-gradient(top, #99FF41, #53B00A);
+ background-image: -o-linear-gradient(top, #99FF41, #53B00A);
+ background-image: linear-gradient(top, #99FF41, #53B00A);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#99FF41', EndColorStr='#53B00A');
+}
+
+.stickynote1 {
+ background-color: #3889C5;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#3889C5), to(#024B7E));
+ background-image: -webkit-linear-gradient(top, #3889C5, #024B7E);
+ background-image: -moz-linear-gradient(top, #3889C5, #024B7E);
+ background-image: -ms-linear-gradient(top, #3889C5, #024B7E);
+ background-image: -o-linear-gradient(top, #3889C5, #024B7E);
+ background-image: linear-gradient(top, #3889C5, #024B7E);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#3889C5', EndColorStr='#024B7E');
+}
+
+.stickynote2 {
+ background-color: #FF4FBF;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#FF4FBF), to(#C61684));
+ background-image: -webkit-linear-gradient(top, #FF4FBF, #C61684);
+ background-image: -moz-linear-gradient(top, #FF4FBF, #C61684);
+ background-image: -ms-linear-gradient(top, #FF4FBF, #C61684);
+ background-image: -o-linear-gradient(top, #FF4FBF, #C61684);
+ background-image: linear-gradient(top, #FF4FBF, #C61684);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF4FBF', EndColorStr='#C61684');
+}
+
+.stickynote3{
+ background-color: #FF3F1E;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#FF3F1E), to(#F02504));
+ background-image: -webkit-linear-gradient(top, #FF3F1E, #F02504);
+ background-image: -moz-linear-gradient(top, #FF3F1E, #F02504);
+ background-image: -ms-linear-gradient(top, #FF3F1E, #F02504);
+ background-image: -o-linear-gradient(top, #FF3F1E, #F02504);
+ background-image: linear-gradient(top, #FF3F1E, #F02504);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF3F1E', EndColorStr='#F02504');
+}
+
+.stickynote4{
+ background-color: #DCC37D;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#DCC37D), to(#988744));
+ background-image: -webkit-linear-gradient(top, #DCC37D, #988744);
+ background-image: -moz-linear-gradient(top, #DCC37D, #988744);
+ background-image: -ms-linear-gradient(top, #DCC37D, #988744);
+ background-image: -o-linear-gradient(top, #DCC37D, #988744);
+ background-image: linear-gradient(top, #DCC37D, #988744);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#DCC37D', EndColorStr='#988744');
+}
+
+.stickynote5{
+ background-color: #5F36BC;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5F36BC), to(#250082));
+ background-image: -webkit-linear-gradient(top, #5F36BC, #250082);
+ background-image: -moz-linear-gradient(top, #5F36BC, #250082);
+ background-image: -ms-linear-gradient(top, #5F36BC, #250082);
+ background-image: -o-linear-gradient(top, #5F36BC, #250082);
+ background-image: linear-gradient(top, #5F36BC, #250082);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#5F36BC', EndColorStr='#250082');
+}
+
+.stickynote6{
+ background-color: #A5C2FF;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#A5C2FF), to(#6986F4));
+ background-image: -webkit-linear-gradient(top, #A5C2FF, #6986F4);
+ background-image: -moz-linear-gradient(top, #A5C2FF, #6986F4);
+ background-image: -ms-linear-gradient(top, #A5C2FF, #6986F4);
+ background-image: -o-linear-gradient(top, #A5C2FF, #6986F4);
+ background-image: linear-gradient(top, #A5C2FF, #6986F4);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#A5C2FF', EndColorStr='#6986F4');
+}
+
+.stickynote7{
+ background-color: #FEBFBF;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#FEBFBF), to(#FE8080));
+ background-image: -webkit-linear-gradient(top, #FEBFBF, #FE8080);
+ background-image: -moz-linear-gradient(top, #FEBFBF, #FE8080);
+ background-image: -ms-linear-gradient(top, #FEBFBF, #FE8080);
+ background-image: -o-linear-gradient(top, #FEBFBF, #FE8080);
+ background-image: linear-gradient(top, #FEBFBF, #FE8080);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#FEBFBF', EndColorStr='#FE8080');
+}
+
+.stickynote8{
+ background-color: #FEBF80;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#FEBF80), to(#FF8000));
+ background-image: -webkit-linear-gradient(top, #FEBF80, #FF8000);
+ background-image: -moz-linear-gradient(top, #FEBF80, #FF8000);
+ background-image: -ms-linear-gradient(top, #FEBF80, #FF8000);
+ background-image: -o-linear-gradient(top, #FEBF80, #FF8000);
+ background-image: linear-gradient(top, #FEBF80, #FF8000);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#FEBF80', EndColorStr='#FF8000');
+}
+
+.stickynote9{
+ background-color: #FEF280;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#FEF280), to(#FFE500));
+ background-image: -webkit-linear-gradient(top, #FEF280, #FFE500);
+ background-image: -moz-linear-gradient(top, #FEF280, #FFE500);
+ background-image: -ms-linear-gradient(top, #FEF280, #FFE500);
+ background-image: -o-linear-gradient(top, #FEF280, #FFE500);
+ background-image: linear-gradient(top, #FEF280, #FFE500);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#FEF280', EndColorStr='#FFE500');
+}
+
+/* tooltip */
+
+.tooltip
+{
+ position: relative;
+ display: inline-block;
+}
+
+.tooltip span
+{
+ visibility: hidden;
+ position: absolute;
+ bottom: -15px;
+ left: 50%;
+ z-index: 99999;
+ width: 150px;
+ font-size:13px;
+ font-family:tahoma,verdana;
+ margin-left: -80px;
+ color:#000;
+ padding: 5px;
+ border: 2px solid #ccc;
+ opacity: .9;
+ background-color: #ddd;
+ background-image: -webkit-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
+ background-image: -moz-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
+ background-image: -ms-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
+ background-image: -o-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
+ background-image: linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ -moz-box-shadow: 0 1px 2px rgba(0,0,0,.4), 0 1px 0 rgba(255,255,255,.5) inset;
+ -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.4), 0 1px 0 rgba(255,255,255,.5) inset;
+ box-shadow: 0 1px 2px rgba(0,0,0,.4), 0 1px 0 rgba(255,255,255,.5) inset;
+}
+
+.tooltip:hover
+{
+ border: 0; /* IE6 fix */
+}
+
+.tooltip:hover span
+{
+ visibility: visible;
+}
+
+
+.tooltip span:after
+{
+ content: "";
+ position: absolute;
+ z-index: 1000;
+ top: -10px;
+ left: 50%;
+ margin-left: -8px;
+ border-bottom: 8px solid #59add4;
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ border-top: 0;
+}
+
+.tooltip span:before
+{
+ border-top-color: #ccc;
+ bottom: -8px;
+}
+
+/* Yellow */
+
+.yellow-tooltip span
+{
+
+ border-color: #e1ca82;
+ background-color: #ffeaa6;
+}
+
+.yellow-tooltip span:after
+{
+ border-top-color: #ffeaa6;
+}
+
+.yellow-tooltip span:before
+{
+ border-top-color: #e1ca82;
+}
+
+/* Navy */
+
+.navy-tooltip span
+{
+ color: #fff;
+ text-shadow: 0 1px 0 #000;
+ border-color: #161a1f;
+ background-color: #1e2227;
+}
+
+.navy-tooltip span:after
+{
+ border-top-color: #1e2227;
+}
+
+.navy-tooltip span:before
+{
+ border-top-color: #161a1f;
+}
+
+/* Blue */
+
+.blue-tooltip span
+{
+ border-color: #59add4;
+ background-color: #61bde7;
+}
+
+.blue-tooltip span:after
+{
+ border-top-color: #61bde7;
+}
+
+.blue-tooltip span:before
+{
+ border-top-color: #59add4;
+}
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/css/main.css b/web/platform-biz-sample-web-notes/src/main/webapp/assets/css/main.css
new file mode 100644
index 0000000..dc442a9
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/css/main.css
@@ -0,0 +1,449 @@
+/*
+ * Gridless version 2.0
+
+ * Credit is left inline and big thanks to Nicolas Gallagher and Jonathan Neal
+
+ * Across this document we use safe CSS hacks: http://mathiasbynens.be/notes/safe-css-hacks
+ * Selectors beggining with an underscore (_selector: property) target only IE6
+ * Selectors beggining with an asterisk (*selector: property) target only IE6 and IE7
+*/
+
+/* HTML5 display definitions
+---------------------------------------- */
+
+article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, dialog {
+ display: block;
+}
+
+/* Corrects inline-block not defined in IE6/7/8 and FF3 */
+audio, canvas, video {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+}
+
+audio:not([controls]) {
+ display: none;
+}
+
+/* Ensures content is hidden from all presentations, including screenreaders */
+[hidden] {
+ display: none;
+ visibility: hidden;
+}
+
+/* Base structure
+---------------------------------------- */
+
+/*
+ * The body will work like a 'div#wrapper' (for this to work, the 'body' needs to have a set width)
+
+ * To add a background to the PAGE, set it in the 'html' element
+ * To add a background to the WRAPPER, set it in the 'body' element
+*/
+html {
+ height: 100%;
+ font-size: 100%;
+ overflow-y: scroll; /* Force a scrollbar in non-IE */
+ -webkit-text-size-adjust: 100%; /* Prevent iOS text size adjust on orientation change without disabling user zoom */
+ -ms-text-size-adjust: 100%;
+}
+
+body {
+ margin: 0 auto;
+ min-height: 100%;
+}
+
+/* Fonts settings based on the 100E2R standard: http://www.informationarchitects.jp/en/100e2r/ */
+body, button, input, select, textarea {
+ font: 1em/1.625 Georgia, serif;
+ color: #333; /* Black on white is too much contrast, #333 is a lot better */
+}
+
+/* Add and/or remove tags as your baseline grid needs */
+p, blockquote, q, pre, address, hr, code, samp, dl, ol, ul, form, table, fieldset, menu, h4, h5, h6, img, figure, figcaption, button, hr {
+ margin: 0 0 1.625em;
+}
+
+/* Headings/small
+---------------------------------------- */
+
+/*
+ * Font sizes are based on the golden ratio of 16
+ * See this for the modular scale: ow.ly/5jGl6
+ * Line-heights and margins are adjusted to keep a 26px (1.625em) vertical rhythm across elements
+*/
+
+h1, h2, h3, h4, h5, h6 {
+ font-family: Palatino, 'Palatino Linotype', 'Book Antiqua', FreeSerif, Georgia, serif;
+ font-size: 1em;
+ font-weight: bold;
+}
+
+h1 {
+ font-size: 4.25em; /* 68px */
+ line-height: 1.1471em;
+ margin: 0 0 0.3824em;
+}
+
+h2 {
+ font-size: 2.625em; /* 42px */
+ line-height: 1.2381em;
+ margin: 0 0 0.619em;
+}
+
+h3 {
+ font-size: 1.625em; /* 26px */
+ line-height: 1em;
+ margin: 0 0 1em;
+}
+
+small {
+ font-size: 0.625em; /* 10px */
+ margin: 0 0 2.6em;
+}
+
+/* Preformatted text and code
+---------------------------------------- */
+
+/* Allows line wrapping of 'pre' */
+pre {
+ white-space: pre;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+pre, code, kbd, samp {
+ font: 1em/1.625em Menlo, Consolas, 'DejaVu Sans Mono', Monaco, 'Courier New', Courier, monospace;
+}
+
+/* Tables
+---------------------------------------- */
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+th {
+ text-align: left;
+}
+
+tr, th, td {
+ padding-right: 1.625em;
+}
+
+/* Forms
+---------------------------------------- */
+
+form {
+ margin: 0;
+}
+
+fieldset {
+ border: 0;
+ padding: 0;
+}
+
+textarea {
+ overflow: auto;
+ vertical-align: top;
+}
+
+legend {
+ border: 0;
+ *margin-left: -7px;
+}
+
+button, input, select, textarea {
+ vertical-align: baseline;
+ *vertical-align: middle;
+}
+
+button, input {
+ line-height: normal;
+ *overflow: visible;
+}
+
+button, input[type="button"], input[type="reset"], input[type="submit"] {
+ cursor: pointer;
+ -webkit-appearance: button;
+}
+
+input[type="checkbox"], input[type="radio"] {
+ box-sizing: border-box;
+}
+
+input[type="search"] {
+ -webkit-appearance: textfield;
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
+}
+
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+button::-moz-focus-inner, input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/* Reintroduce inner spacing in 'table' to avoid overlap and whitespace issues in IE6/7 */
+table button, table input {
+ *overflow: auto;
+}
+
+/* Quotes
+---------------------------------------- */
+
+blockquote, q {
+ quotes: none;
+}
+
+blockquote:before, blockquote:after, q:before, q:after {
+ content: '';
+ content: none;
+}
+
+blockquote, q, cite {
+ font-style: italic;
+}
+
+blockquote {
+ padding-left: 1.625em;
+ border-left: 1px solid #ddd;
+}
+
+blockquote > p {
+ padding: 0;
+}
+
+/* Lists
+---------------------------------------- */
+
+ul, ol {
+ list-style-position: inside;
+ padding: 0;
+}
+
+li ul, li ol {
+ margin: 0 1.625em;
+}
+
+dl dd {
+ margin-left: 1.625em;
+}
+
+/* Links
+---------------------------------------- */
+
+a, a:visited {
+ text-decoration: none;
+ color: #06c;
+ outline:none;
+}
+
+a:hover {
+ /*border-bottom: 1px solid;*/
+}
+
+a:focus {
+ outline: thin dotted;
+}
+
+/* Better CSS outline suppression: people.opera.com/patrickl/experiments/keyboard/test */
+a:hover, a:active {
+ outline: none;
+}
+
+/* Figures
+---------------------------------------- */
+
+figure {
+ margin: 0;
+}
+
+/* Embedded content
+---------------------------------------- */
+
+img, object, video {
+ max-width: 100%; /* Automatically scales images larger than the container. Consider this first: http://unstoppablerobotninja.com/entry/fluid-images/ */
+ /* _width: 100%; /* IE6 doesn't support max-width, so we just use width. If the image is larger than the container, just uncomment this. If it is smaller than the container, uncomment and change the 100% value to an absolute one */
+}
+
+img {
+ border: 0;
+ -ms-interpolation-mode: bicubic; /* Improve IE's resizing of images: css-tricks.com/ie-fix-bicubic-scaling-for-images */
+}
+
+/* Corrects overflow displayed oddly in IE9 */
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Abbreviations
+---------------------------------------- */
+
+abbr[title], dfn[title] {
+ border-bottom: 1px dotted;
+ cursor: help;
+}
+
+/* Marked/inserted/deleted text
+---------------------------------------- */
+
+mark {
+ background: #ff0;
+}
+
+ins {
+ text-decoration: none;
+ background: #ff9;
+}
+
+del {
+ text-decoration: line-through;
+}
+
+/* Others
+---------------------------------------- */
+
+hr {
+ display: block;
+ height: 1px;
+ border: 0;
+ border-bottom: 1px solid #ddd;
+}
+
+strong, b, dt {
+ font-weight: bold;
+}
+
+dfn {
+ font-style: italic;
+}
+
+var, address {
+ font-style: normal;
+}
+
+/* Position 'sub' and 'sup' without affecting line-height: gist.github.com/413930 */
+sub, sup {
+ font-size: 0.625em;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Helper classes
+---------------------------------------- */
+
+/*
+ * Micro clearfix hack, more semantically titled with 'group'
+ * Source: nicolasgallagher.com/micro-clearfix-hack/
+*/
+.group:before, .group:after {
+ content: "";
+ display: table;
+}
+
+.group:after {
+ clear: both;
+}
+
+.group {
+ *zoom: 1;
+}
+
+/* Primary styles
+---------------------------------------- */
+
+
+
+
+
+
+
+
+
+/* Media queries
+---------------------------------------- */
+
+/* The media queries included in here are only placeholder. Modify them as your content requires */
+
+@media only screen and (min-width: 480px) {
+ /* Wide mobile (480px+) styles go here */
+}
+
+@media only screen and (min-width: 768px) {
+ /* Tablets/netbooks (768px+) styles go here */
+}
+
+@media only screen and (min-width: 1024px) {
+ /* Desktops (1024px+) styles go here */
+}
+
+/* Print styles
+---------------------------------------- */
+
+/* Print styles inlined to avoid extra HTTP connection */
+
+@media print {
+ * {
+ background: transparent !important;
+ color: black !important; /* Black prints faster: sanbeiji.com/archives/953 */
+ text-shadow: none !important;
+ filter: none !important;
+ -ms-filter: none !important;
+ }
+
+ a, a:visited {
+ text-decoration: underline;
+ outline:none;
+ }
+
+ a[href]:after {
+ content: " (" attr(href) ")";
+ }
+
+ abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+
+ /* Do not show javascript and internal links */
+ a[href^="javascript:"]:after, a[href^="#"]:after {
+ content: "";
+ }
+
+ /* Printing Tables: css-discuss.incutio.com/wiki/Printing_Tables */
+ thead {
+ display: table-header-group;
+ }
+
+ tr, img {
+ page-break-inside: avoid;
+ }
+
+ @page {
+ margin: 0.5cm;
+ }
+
+ p, h2, h3 {
+ orphans: 3;
+ widows: 3;
+ }
+
+ h2, h3 {
+ page-break-after: avoid;
+ }
+}
\ No newline at end of file
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/HTML5Sticky.gif b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/HTML5Sticky.gif
new file mode 100644
index 0000000..a0a2e65
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/HTML5Sticky.gif
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/Load.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/Load.png
new file mode 100644
index 0000000..fa71885
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/Load.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/PaperClip4_Black.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/PaperClip4_Black.png
new file mode 100644
index 0000000..f9b915c
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/PaperClip4_Black.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/add.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/add.png
new file mode 100644
index 0000000..1599f17
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/add.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/alarm.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/alarm.png
new file mode 100644
index 0000000..6fe38ef
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/alarm.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/background.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/background.png
new file mode 100644
index 0000000..c85d950
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/background.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/bg.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/bg.png
new file mode 100644
index 0000000..61c031f
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/bg.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/blue_tag.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/blue_tag.png
new file mode 100644
index 0000000..366f10b
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/blue_tag.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/button_cancel.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/button_cancel.png
new file mode 100644
index 0000000..a432b49
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/button_cancel.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/calendar.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/calendar.png
new file mode 100644
index 0000000..67ae029
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/calendar.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/category.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/category.png
new file mode 100644
index 0000000..1a3f6a2
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/category.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/decrease.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/decrease.png
new file mode 100644
index 0000000..f41a942
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/decrease.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/delete.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/delete.png
new file mode 100644
index 0000000..939a102
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/delete.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/deletebig.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/deletebig.png
new file mode 100644
index 0000000..c13c4b1
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/deletebig.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/donate.jpg b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/donate.jpg
new file mode 100644
index 0000000..c659916
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/donate.jpg
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/drag.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/drag.png
new file mode 100644
index 0000000..849eb54
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/drag.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/duplicate.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/duplicate.png
new file mode 100644
index 0000000..58f76fc
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/duplicate.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/edit.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/edit.png
new file mode 100644
index 0000000..ad93f10
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/edit.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/email.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/email.png
new file mode 100644
index 0000000..1f07f76
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/email.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/export.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/export.png
new file mode 100644
index 0000000..9093f1a
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/export.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/font.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/font.png
new file mode 100644
index 0000000..38de9aa
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/font.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/green_tag.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/green_tag.png
new file mode 100644
index 0000000..83665a9
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/green_tag.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/hide.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/hide.png
new file mode 100644
index 0000000..bbd7fb1
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/hide.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/hint.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/hint.png
new file mode 100644
index 0000000..face71a
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/hint.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/image.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/image.png
new file mode 100644
index 0000000..72af875
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/image.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/import.gif b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/import.gif
new file mode 100644
index 0000000..263b1e4
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/import.gif
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/increase.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/increase.png
new file mode 100644
index 0000000..9b264c7
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/increase.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/like.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/like.png
new file mode 100644
index 0000000..baebc12
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/like.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/lock.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/lock.png
new file mode 100644
index 0000000..5294896
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/lock.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/message.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/message.png
new file mode 100644
index 0000000..f8526fb
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/message.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/package_favourite.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/package_favourite.png
new file mode 100644
index 0000000..e75523b
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/package_favourite.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/pin.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/pin.png
new file mode 100644
index 0000000..86df4ef
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/pin.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/pins.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/pins.png
new file mode 100644
index 0000000..727591d
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/pins.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/print.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/print.png
new file mode 100644
index 0000000..d65b339
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/print.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/protect.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/protect.png
new file mode 100644
index 0000000..452eae2
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/protect.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/red_tag.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/red_tag.png
new file mode 100644
index 0000000..bd4fdcb
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/red_tag.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/remove.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/remove.png
new file mode 100644
index 0000000..a7770a6
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/remove.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/resize.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/resize.png
new file mode 100644
index 0000000..b3fca27
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/resize.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/save.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/save.png
new file mode 100644
index 0000000..87df63a
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/save.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/savebig.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/savebig.png
new file mode 100644
index 0000000..79f4cde
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/savebig.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/send.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/send.png
new file mode 100644
index 0000000..a086102
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/send.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/settings.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/settings.png
new file mode 100644
index 0000000..0e81747
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/settings.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/share.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/share.png
new file mode 100644
index 0000000..fb7c55b
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/share.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/show.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/show.png
new file mode 100644
index 0000000..7a7c6d6
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/show.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/shrink.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/shrink.png
new file mode 100644
index 0000000..8ff63db
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/shrink.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/sticky-notes.ico b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/sticky-notes.ico
new file mode 100644
index 0000000..6036cdc
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/sticky-notes.ico
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/sticky-notes.jpg b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/sticky-notes.jpg
new file mode 100644
index 0000000..bb16d3f
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/sticky-notes.jpg
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/sticky.jpg b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/sticky.jpg
new file mode 100644
index 0000000..04d6b22
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/sticky.jpg
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/sticky.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/sticky.png
new file mode 100644
index 0000000..ef594f6
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/sticky.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/tape.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/tape.png
new file mode 100644
index 0000000..2ced2b1
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/tape.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/time.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/time.png
new file mode 100644
index 0000000..55e7f0a
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/time.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/tip.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/tip.png
new file mode 100644
index 0000000..608c5ca
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/tip.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/transparent.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/transparent.png
new file mode 100644
index 0000000..769c5f6
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/transparent.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/trash.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/trash.png
new file mode 100644
index 0000000..3d602ff
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/trash.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/trash16.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/trash16.png
new file mode 100644
index 0000000..0521fe2
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/trash16.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/tweet.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/tweet.png
new file mode 100644
index 0000000..2bcd957
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/tweet.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/twitter.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/twitter.png
new file mode 100644
index 0000000..b72dd2c
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/twitter.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/unlock.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/unlock.png
new file mode 100644
index 0000000..3a1a0d3
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/unlock.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/zoom-out.png b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/zoom-out.png
new file mode 100644
index 0000000..b71f448
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/img/zoom-out.png
Binary files differ
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/html5sticky_api.js b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/html5sticky_api.js
new file mode 100644
index 0000000..475d68a
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/html5sticky_api.js
@@ -0,0 +1,609 @@
+/*
+ HTML5STICKY (http://github.com/sarfraznawaz2005/HTML5Sticky)
+ ================================================================
+ Author : Sarfraz Ahmed (sarfraznawaz2005@gmail.com)
+ Twitter : @sarfraznawaz
+ Blog : http://sarfraznawaz.wordpress.com/
+ LICENSE : MIT
+ ================================================================
+*/
+
+var stickywidth = 200; // width of sticky note (can't be less than 200)
+var stickyheight = 200; // height of sticky note (can't be less than 200)
+var max_notes = 500; // maximum number of notes one can store
+var allowed_tags = '<br /><br><ol></ol><ul></ul><li></li><strong></strong><i></i>';
+
+var html5sticky = {};
+var note_index = 0;
+
+// add a note
+html5sticky.addNote = function(){
+
+ // unique localstorage identifier for this sticky note
+ var nindex = p.utils.Guid();
+
+ var dated = html5sticky.getDateTime();
+ var dateStr = new Date();
+
+ // get random color
+ var bgcolor = html5sticky.getColor();
+
+ var stickynote = $('<div class="note_common ' + bgcolor + '" />').appendTo($('#main'));
+ // add tape to stickynote
+ html5sticky.addPin(stickynote);
+
+ $(stickynote).append($('<h2>' + dated + '</h2>'));
+ $(stickynote).append($('<p>Text here...</p>'));
+ // append identifier
+ $(stickynote).append($('<span id="idf_' + nindex + '" />'));
+
+ // set width and height of the sticky note
+ $('.note_common').css({width: stickywidth + 'px', height:stickyheight + 'px'});
+
+ $('.note_common p').css({height:(stickyheight - 60) + 'px', width:(stickywidth + 9) + 'px'});
+
+ if (! $("#removenotes").is(':visible')){
+ $('#removenotes').slideDown('slow');
+ }
+
+ //$(stickynote).find('h2').attr('contentEditable', true);
+ //$(stickynote).find('p').attr('contentEditable', true);
+
+ // add utility buttons
+ //html5sticky.addUtilityButtons(stickynote);
+
+ // scroll to newly added sticky note
+ $('html, body').animate({
+ scrollTop:$(stickynote).offset().top
+ });
+
+ var data = {
+ id: nindex,
+ pos: parseInt($(stickynote).offset().left, 10) + '|' + parseInt($(stickynote).offset().top, 10),
+ text: $(stickynote).find('h2').text() + '|' + $(stickynote).find('p').text(),
+ bgColor: bgcolor
+ };
+
+ p.utils._ajaxJson("/api/rest/notes", data, "POST", function(data) {
+ html5sticky.showMessage('#9BED87', 'black', 'Sticky Note Created :)');
+ });
+
+};
+
+// no html5 ?
+html5sticky.nohtml5 = function(){
+ html5sticky.showMessage('#FFE16B', 'black', 'Your browser does not support html5, please upgrade your browser.');
+};
+
+
+// adds utility buttons on note footer
+html5sticky.addUtilityButtons = function(el){
+ $el = $(el);
+
+ $el.append('<div align="center" class="icons-footer" />');
+
+ $('.icons-footer').append('<img class="left shrink ficon" src="../../assets/img/shrink.png" alt="" title="shrink/expand">');
+ $('.icons-footer').append('<img class="left alarm ficon" src="../../assets/img/alarm.png" alt="" title="set alarm for this sticky note">');
+ $('.icons-footer').append('<img class="left lock ficon" src="../../assets/img/lock.png" alt="" title="lock this sticky note">');
+ $('.icons-footer').append('<img class="left settings ficon" src="../../assets/img/settings.png" alt="" title="settings for note">');
+ $('.icons-footer').append('<img class="left email ficon" src="../../assets/img/email.png" alt="" title="email this sticky note">');
+ $('.icons-footer').append('<img class="left tweet ficon" src="../../assets/img/tweet.png" alt="" title="tweet this sticky note">');
+ $('.icons-footer').append('<img class="left share ficon" src="../../assets/img/share.png" alt="" title="share this sticky note">');
+
+ // set "left" for these icons now
+ $('.ficon:first').css({marginLeft: '10px', marginRight: '15px'});
+ $('.ficon').each(function(index){
+ $(this).css('left', index * (parseInt($(this).width(), 10) + 5));
+ });
+
+};
+
+
+// save note
+html5sticky.saveNote = function(el){
+
+ var identifier = html5sticky.getIdentifier($(el));
+ var htext = html5sticky.stripTags($(el).closest('.bignote').find('.hedit')[0].value, allowed_tags);
+ var ptext = html5sticky.stripTags($(el).closest('.bignote').find('.pedit')[0].value, allowed_tags);
+ ptext = ptext.replace(/\r?\n/g, '<br />');
+
+ var data = {
+ id: identifier,
+ text: htext + '|' + ptext
+ };
+
+ p.utils._ajaxJson("/api/rest/notes", data, "PUT", function(data) {
+
+ $('[id^=idf_' + identifier + ']').closest('.note_common').find('h2').text(htext);
+ $('[id^=idf_' + identifier + ']').closest('.note_common').find('p').html(ptext);
+ html5sticky.showMessage('#9BED87', 'black', 'Sticky Note Saved :)');
+ html5sticky.closeNote($(".close_stickynote"));
+ });
+
+};
+
+// get note identifier
+html5sticky.getIdentifier = function(el){
+ var identifier = $(el).closest('.bignote').find('[id^=idf_]').attr('id');
+
+ if (typeof identifier == 'undefined' || identifier == null){
+ identifier = $(el).closest('.note_common').find('[id^=idf_]').attr('id');
+ }
+
+ if (typeof identifier != 'undefined'){
+ identifier = identifier.replace('idf_', '');
+ return identifier;
+ }
+ else{
+ return false;
+ }
+};
+
+
+// delete note
+html5sticky.deleteNote = function(el){
+ if (confirm('Are you sure you want to delete this sticky note ?')){
+
+ var identifier = html5sticky.getIdentifier($(el));
+
+ p.utils._ajaxJson("/api/rest/notes/" + identifier, "", "DELETE", function() {
+ $(el).closest('.note_common').fadeOut('slow', function(){
+ $(el).closest('.note_common').remove();
+
+ if (! $(".note_common").length > 0){
+ $('#removenotes').slideUp('slow');
+ }
+
+ });
+ html5sticky.showMessage('#9BED87', 'black', 'Sticky Note Deleted :)');
+ });
+
+
+ }
+};
+
+// delete all notes
+html5sticky.deleteAllNotes = function(){
+ if (confirm('Are you sure you want to delete ALL sticky note ?')){
+
+ p.utils._ajaxJson("/api/rest/notes?method=deleteAll", "", "POST", function() {
+
+ $('.note_common').fadeOut('slow', function(){
+ $('.note_common').remove();
+ $('#removenotes').slideUp('slow');
+ });
+ html5sticky.showMessage('#9BED87', 'black', 'Sticky Note Deleted :)');
+ });
+ }
+};
+
+
+// close big note
+html5sticky.closeNote = function(el){
+ $(el).closest('.bignote')[html5sticky.getAnimation(true)]('slow', function(){
+ $('#overlay').remove();
+ });
+};
+
+
+// get current date and time
+html5sticky.getDateTime = function(){
+ var currentTime = new Date();
+ var month = currentTime.getMonth() + 1;
+ var day = currentTime.getDate();
+ var year = currentTime.getFullYear();
+ var hours = currentTime.getHours();
+ var minutes = currentTime.getMinutes();
+ var ampm = '';
+ var sep = ' ';
+ var dsep = '/';
+ var tsep = ':';
+
+ if (minutes < 10) minutes = "0" + minutes;
+
+ if(hours > 11){
+ ampm = 'PM';
+ } else {
+ ampm = 'AM';
+ }
+
+ return month + dsep + day + dsep + year + sep + hours + tsep + minutes + sep + ampm;
+
+};
+
+// get ISO 8601 date and time
+html5sticky.getISODateTime = function(d){
+
+ function pad(n){return n < 10 ? '0' + n : n}
+
+ return d.getUTCFullYear()+'-'
+ + pad(d.getUTCMonth()+1)+'-'
+ + pad(d.getUTCDate())+'T'
+ + pad(d.getUTCHours())+':'
+ + pad(d.getUTCMinutes())+':'
+ + pad(d.getUTCSeconds())+'Z'
+};
+
+// edit note
+html5sticky.editNote = function($clone, el){
+ var ptext = $clone.find('p').html();
+ ptext = ptext.replace(/(<br \/>|<br>)/g, '\n');
+ $clone.find('p').replaceWith('<textarea class="pedit" />');
+
+ $clone.find('.pedit')
+ .val(ptext)
+ .css('margin-top', '5px')
+ .addClass('inset')
+ .width('590px')
+ .height('280px');
+
+ // make content editable
+ var htext = $clone.find('h2').text();
+ $clone.find('h2').replaceWith('<input type="text" class="hedit" />');
+
+ $('.hedit').addClass('inset').val(html5sticky.stripTags(htext, allowed_tags)).width(250);
+
+
+ // put in Close button
+ $('<a href="#" class="close_stickynote"><img src="../../assets/img/deletebig.png" alt="" title="close note"></a>')
+ .css({
+ position:'absolute',
+ top:7,
+ right:5
+ })
+ .appendTo($clone);
+
+ // put in Save button
+ $('<a href="#" class="save_stickynote"><img src="../../assets/img/savebig.png" alt="" title="save note"></a>')
+ .css({
+ position:'absolute',
+ top:7,
+ right:60
+ })
+ .appendTo($clone);
+
+ // put in Tip
+ $('<span class="tip">Tip: Allowed HTML tags: <code>')
+ .css({
+ position:'absolute',
+ bottom:10,
+ left:15
+ })
+ .appendTo($clone);
+
+ var tags = allowed_tags;
+ tags = tags.replace('<br />', '');
+ // remove ending tags
+ tags = tags.match(/<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)/ig);
+ $('.tip').text($('.tip').text() + tags.join(' '));
+
+};
+
+// get all notes
+html5sticky.getNotes = function(){
+
+ p.utils._ajaxJson("/api/rest/notes", "loadAll=true", "GET", function(json) {
+
+ if(json && json.data && json.data.items) {
+ $(json.data.items).each(function(i) {
+
+ var note = json.data.items[i];
+
+ var stickynote, bgcolor, htext, ptext, pleft, ptop, temp_array;
+
+ // get color and rotation level
+ bgcolor = note.bgColor;
+
+ // get position info
+ temp_array = note.pos.split('|');
+ pleft = temp_array[0];
+ ptop = temp_array[1];
+
+ // get text info
+ temp_array = note.text.split('|');
+ htext = temp_array[0];
+ ptext = temp_array[1];
+
+ stickynote = $('<div class="note_common ' + bgcolor + '" />').appendTo($('#main'));
+ // add tape to stickynote
+ html5sticky.addPin(stickynote);
+
+ $(stickynote).append($('<h2>Sticky Note</h2>'));
+ $(stickynote).append($('<p>Text here...</p>'));
+ // append identifier
+ $(stickynote).append($('<span id="idf_' + note.id + '" />'));
+
+ //$(stickynote).find('h2').attr('contentEditable', true);
+ //$(stickynote).find('p').attr('contentEditable', true);
+
+ $(stickynote).find('h2').text(html5sticky.stripTags(htext, allowed_tags));
+ $(stickynote).find('p').html(html5sticky.stripTags(ptext, allowed_tags));
+
+ // set width and height of the sticky note
+ $('.note_common').css({width: stickywidth + 'px', height:stickyheight + 'px'});
+
+ $('.note_common p').css({height:(stickyheight - 60) + 'px', width:(stickywidth + 9) + 'px'});
+ });
+ }
+
+ if (! $('.note_common').length > 0){
+ $('#removenotes').hide();
+ }
+ });
+
+};
+
+// email note
+html5sticky.emailNote = function(){
+
+};
+
+// share note
+html5sticky.shareNote = function(){
+
+};
+
+// shrink notes
+html5sticky.shrink = function(){
+ var height = 0 + parseInt($('.note_common:first').find('h2').height(), 10) + 'px';
+
+ $('.note_common').animate({height:height}, function(){
+ $('.note_common').find('p').hide();
+ });
+};
+
+// expand notes
+html5sticky.expand = function(){
+ $('.note_common').animate({height:stickyheight}, function(){
+ $('.note_common').find('p').fadeIn('slow');
+ });
+};
+
+
+// share note
+html5sticky.showMessage = function(bgcolor, color, msg){
+ if (!$('#smsg').is(':visible'))
+ {
+ $('html, body').animate({
+ scrollTop: 0
+ }, 500, function(){
+ if (!$('#smsg').length)
+ {
+ $('<div id="smsg">'+msg+'</div>').appendTo($('body')).css({
+ position:'absolute',
+ top:0,
+ left:3,
+ width:'98%',
+ height:'30px',
+ lineHeight:'30px',
+ background:bgcolor,
+ color:color,
+ zIndex:1000,
+ padding:'10px',
+ fontWeight:'bold',
+ textAlign:'center',
+ opacity:0.9,
+ margin:'auto',
+ display:'none'
+ }).slideDown('show');
+
+ setTimeout(function(){
+ $('#smsg').animate({'width':'hide'}, function(){
+ $('#smsg').remove();
+ });
+ }, 4000);
+ }
+ });
+ }
+};
+
+// get random color
+html5sticky.getColor = function(){
+ var text = "";
+ var possible = "0123456789";
+
+ text += possible.charAt(Math.floor(Math.random() * possible.length));
+ return 'stickynote' + text;
+};
+
+
+// get random animation string
+html5sticky.getAnimation = function(hideAnimation){
+ var words = new Array();
+
+ if (typeof hideAnimation != 'undefined'){
+ words[1] = "hide";
+ words[2] = "fadeOut";
+ words[3] = "slideUp";
+ }
+ else {
+ words[1] = "show";
+ words[2] = "fadeIn";
+ words[3] = "slideDown";
+ }
+
+ // Generate a random number between 1 and 3
+ var rnd = Math.ceil(Math.random() * 3);
+
+ return words[rnd];
+};
+
+
+// add pin to note
+html5sticky.addPin = function(el){
+ var close = $('<div><a href="#" class="delete_stickynote"><img src="../../assets/img/delete.png" alt="" title="delete note"></a></div>');
+ var tag = $('<div align="center"><img src="../../assets/img/pin.png" alt=""></div>');
+
+ $(close).css({
+ position:'absolute',
+ top:-15,
+ right:-15
+ }).prependTo($(el));
+
+ $(tag).css({
+ position:'absolute',
+ zIndex:99,
+ top:-30,
+ left:parseInt(stickywidth / 2, 10) - 10
+ }).prependTo($(el));
+};
+
+// enlarge note for editing
+html5sticky.enlargeNote = function(el){
+ $this = $(el);
+
+ // get initial position
+ var posLeft = parseInt($(el).offset().left, 10);
+ var posTop = parseInt($(el).offset().top, 10);
+
+ // create overlay
+ $('<div id="overlay" />').css({
+ position:'fixed',
+ background:'transparent',
+ background:'rgba(0,0,0,0.5)',
+ top:'0',
+ left:'0',
+ width:'100%',
+ height:'100%',
+ zIndex:'100'
+ }).appendTo($('body'));
+
+ $clone = $(el).clone().removeClass('note_common').addClass('bignote').appendTo($('#overlay'));
+
+ // remove the pin
+ $clone.find($('img[src*="pin.png"]').closest('div')).hide();
+ // change delete button title
+ $clone.find($('img[src*="delete.png"]').closest('div')).hide();
+
+ $($clone).css({
+ position:'absolute',
+ zIndex: 500,
+ cursor:'default',
+ paddingTop:'5px',
+ top:posTop,
+ left:posLeft,
+ width:'600px',
+ height:'400px',
+ top:'50%',
+ left:'50%',
+ display:'none',
+ marginLeft:'-300px',
+ marginTop:'-200px'
+ });
+
+ $($clone)[html5sticky.getAnimation()](400);
+
+ // add date and time info
+ var dateStr = '', dateAgo = '';
+
+ var timeImg = '<img class="left" align="absmiddle" src="../../assets/img/time.png">';
+
+ $('<div class="timeago left" />').prependTo($clone);
+ $('.timeago').css({fontSize: '12px', fontFamily:'tahoma'}).html(timeImg + ' ' + dateStr + dateAgo);
+ $('.timeago').after('<div class="clear" />');
+
+ // hide the utility buttons
+ $($clone).find('.icons-footer').hide();
+
+ // make content editable
+ html5sticky.editNote($clone, el);
+};
+
+html5sticky.setup = function(){
+
+ var fontFamily = $('.note_common p').css('font-family');
+
+ // Architects font needs to have lesser line height / spacing for lists
+ if (typeof fontFamily != 'undefined' && fontFamily.indexOf('Architects') >= 0){
+ $('.note_common ul').css({lineHeight:'10px', padding:'0px', margin:'0px'});
+ $('.note_common ol').css({lineHeight:'0px', padding:'0px', margin:'0px'});
+ }
+
+ // sticky notes can't be less than 200x200
+ if (stickywidth < 200){
+ stickywidth = 200;
+ }
+
+ if (stickyheight < 200){
+ stickyheight = 200;
+ }
+
+};
+
+// http://phpjs.org/functions/strip_tags:535
+html5sticky.stripTags = function(input, allowed) {
+ allowed = (((allowed || "") + "").toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
+ var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
+ commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
+ return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
+ return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
+ });
+}
+
+
+// jQuery Play
+$(function(){
+
+ // initial setup
+ html5sticky.setup();
+
+ // get any saved notes on page load
+ html5sticky.getNotes();
+
+ // add note
+ $('#addnote').click(function(){
+ html5sticky.addNote();
+ return false;
+ });
+
+ // delete all notes
+ $('#removenotes').click(function(){
+ html5sticky.deleteAllNotes();
+ return false;
+ });
+
+ // delete note
+ $('.delete_stickynote').live('click', function(){
+ html5sticky.deleteNote($(this));
+ return false;
+ });
+
+ // close enlarged note
+ $('.close_stickynote').live('click', function(){
+ html5sticky.closeNote($(this));
+ return false;
+ });
+
+ // save the note
+ $('.save_stickynote').live('click', function(){
+ html5sticky.saveNote($(this));
+ return false;
+ });
+
+
+ // enlarge the note
+ $(".note_common").live("click", function(event) {
+ html5sticky.enlargeNote($(this));
+ });
+
+ // shrink the notes
+ $('#shrink').click(function(event) {
+ html5sticky.shrink();
+ });
+
+ // expand the notes
+ $('#expand').click(function(event) {
+ html5sticky.expand();
+ });
+
+
+ // allow escape to close big note
+ $(document).keyup(function(e) {
+ if (e.keyCode == "27") {
+ $('#overlay').remove();
+ $('.bignore').remove();
+ }
+ });
+
+});
+
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/html5sticky_localstorage.js b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/html5sticky_localstorage.js
new file mode 100644
index 0000000..cc24eb0
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/html5sticky_localstorage.js
@@ -0,0 +1,638 @@
+/*
+ HTML5STICKY (http://github.com/sarfraznawaz2005/HTML5Sticky)
+ ================================================================
+ Author : Sarfraz Ahmed (sarfraznawaz2005@gmail.com)
+ Twitter : @sarfraznawaz
+ Blog : http://sarfraznawaz.wordpress.com/
+ LICENSE : MIT
+ ================================================================
+*/
+
+var stickywidth = 200; // width of sticky note (can't be less than 200)
+var stickyheight = 200; // height of sticky note (can't be less than 200)
+var max_notes = 500; // maximum number of notes one can store
+var allowed_tags = '<br /><br><ol></ol><ul></ul><li></li><strong></strong><i></i>';
+
+var html5sticky = {};
+var note_index = 0;
+
+// add a note
+html5sticky.addNote = function(){
+
+ // count total present notes
+ var tnotes = $('.note_common').length;
+
+ if (tnotes === max_notes){
+ html5sticky.showMessage('#FFE16B', 'black', 'You can not add any more notes, please delete some to add more.');
+ return false;
+ }
+
+ // unique localstorage identifier for this sticky note
+ var nindex = ++note_index + 'stickynote';
+
+ var dated = html5sticky.getDateTime();
+ var dateStr = new Date();
+
+ // get random color
+ var bgcolor = html5sticky.getColor();
+
+ var stickynote = $('<div class="note_common ' + bgcolor + '" />').appendTo($('#main'));
+ // add tape to stickynote
+ html5sticky.addPin(stickynote);
+
+ $(stickynote).append($('<h2>' + dated + '</h2>'));
+ $(stickynote).append($('<p>Text here...</p>'));
+ // append identifier
+ $(stickynote).append($('<span id="idf_' + nindex + '" />'));
+
+ // set width and height of the sticky note
+ $('.note_common').css({width: stickywidth + 'px', height:stickyheight + 'px'});
+
+ $('.note_common p').css({height:(stickyheight - 60) + 'px', width:(stickywidth + 9) + 'px'});
+
+ if (! $("#removenotes").is(':visible')){
+ $('#removenotes').slideDown('slow');
+ }
+
+ //$(stickynote).find('h2').attr('contentEditable', true);
+ //$(stickynote).find('p').attr('contentEditable', true);
+
+ // add utility buttons
+ //html5sticky.addUtilityButtons(stickynote);
+
+ // scroll to newly added sticky note
+ $('html, body').animate({
+ scrollTop:$(stickynote).offset().top
+ });
+
+ // store note info local storage
+ if (Modernizr.localstorage){
+ localStorage.setItem(nindex, nindex);
+ localStorage.setItem(nindex + '|pos', parseInt($(stickynote).offset().left, 10) + '|' + parseInt($(stickynote).offset().top, 10));
+ localStorage.setItem(nindex + '|text', $(stickynote).find('h2').text() + '|' + $(stickynote).find('p').text());
+ localStorage.setItem(nindex + '|bgcolor', bgcolor);
+ localStorage.setItem(nindex + '|dated', dated + '|' + html5sticky.getISODateTime(dateStr));
+ }
+ else {
+ html5sticky.nohtml5();
+ }
+};
+
+// no html5 ?
+html5sticky.nohtml5 = function(){
+ html5sticky.showMessage('#FFE16B', 'black', 'Your browser does not support html5, please upgrade your browser.');
+};
+
+
+// adds utility buttons on note footer
+html5sticky.addUtilityButtons = function(el){
+ $el = $(el);
+
+ $el.append('<div align="center" class="icons-footer" />');
+
+ $('.icons-footer').append('<img class="left shrink ficon" src="../../assets/img/shrink.png" alt="" title="shrink/expand">');
+ $('.icons-footer').append('<img class="left alarm ficon" src="../../assets/img/alarm.png" alt="" title="set alarm for this sticky note">');
+ $('.icons-footer').append('<img class="left lock ficon" src="../../assets/img/lock.png" alt="" title="lock this sticky note">');
+ $('.icons-footer').append('<img class="left settings ficon" src="../../assets/img/settings.png" alt="" title="settings for note">');
+ $('.icons-footer').append('<img class="left email ficon" src="../../assets/img/email.png" alt="" title="email this sticky note">');
+ $('.icons-footer').append('<img class="left tweet ficon" src="../../assets/img/tweet.png" alt="" title="tweet this sticky note">');
+ $('.icons-footer').append('<img class="left share ficon" src="../../assets/img/share.png" alt="" title="share this sticky note">');
+
+ // set "left" for these icons now
+ $('.ficon:first').css({marginLeft: '10px', marginRight: '15px'});
+ $('.ficon').each(function(index){
+ $(this).css('left', index * (parseInt($(this).width(), 10) + 5));
+ });
+
+};
+
+
+// save note
+html5sticky.saveNote = function(el){
+ if (Modernizr.localstorage){
+ var identifier = html5sticky.getIdentifier($(el));
+ var htext = html5sticky.stripTags($(el).closest('.bignote').find('.hedit')[0].value, allowed_tags);
+ var ptext = html5sticky.stripTags($(el).closest('.bignote').find('.pedit')[0].value, allowed_tags);
+ ptext = ptext.replace(/\r?\n/g, '<br />');
+
+ localStorage.setItem(identifier + '|text', htext + '|' + ptext);
+
+ $('[id^=idf_' + identifier + ']').closest('.note_common').find('h2').text(htext);
+ $('[id^=idf_' + identifier + ']').closest('.note_common').find('p').html(ptext);
+
+ html5sticky.showMessage('#9BED87', 'black', 'Sticky Note Saved :)');
+
+ }
+ else {
+ html5sticky.nohtml5();
+ }
+};
+
+// get note identifier
+html5sticky.getIdentifier = function(el){
+ var identifier = $(el).closest('.bignote').find('[id^=idf_]').attr('id');
+
+ if (typeof identifier == 'undefined' || identifier == null){
+ identifier = $(el).closest('.note_common').find('[id^=idf_]').attr('id');
+ }
+
+ if (typeof identifier != 'undefined'){
+ identifier = identifier.replace('idf_', '');
+ return identifier;
+ }
+ else{
+ return false;
+ }
+};
+
+
+// delete note
+html5sticky.deleteNote = function(el){
+ if (confirm('Are you sure you want to delete this sticky note ?')){
+
+ // delete from storage also
+ if (Modernizr.localstorage){
+ var identifier = html5sticky.getIdentifier($(el));
+
+ localStorage.removeItem(identifier);
+ localStorage.removeItem(identifier + '|pos');
+ localStorage.removeItem(identifier + '|text');
+ localStorage.removeItem(identifier + '|settings');
+ }
+ else {
+ html5sticky.nohtml5();
+ }
+
+ $(el).closest('.note_common').fadeOut('slow', function(){
+ $(el).closest('.note_common').remove();
+
+ if (! $(".note_common").length > 0){
+ $('#removenotes').slideUp('slow');
+ }
+
+ });
+ }
+};
+
+// delete all notes
+html5sticky.deleteAllNotes = function(){
+ if (confirm('Are you sure you want to delete ALL sticky note ?')){
+ $('.note_common').fadeOut('slow', function(){
+ $('.note_common').remove();
+ localStorage.clear();
+ $('#removenotes').slideUp('slow');
+ });
+ }
+};
+
+
+// close big note
+html5sticky.closeNote = function(el){
+ $(el).closest('.bignote')[html5sticky.getAnimation(true)]('slow', function(){
+ $('#overlay').remove();
+ });
+};
+
+
+// get current date and time
+html5sticky.getDateTime = function(){
+ var currentTime = new Date();
+ var month = currentTime.getMonth() + 1;
+ var day = currentTime.getDate();
+ var year = currentTime.getFullYear();
+ var hours = currentTime.getHours();
+ var minutes = currentTime.getMinutes();
+ var ampm = '';
+ var sep = ' ';
+ var dsep = '/';
+ var tsep = ':';
+
+ if (minutes < 10) minutes = "0" + minutes;
+
+ if(hours > 11){
+ ampm = 'PM';
+ } else {
+ ampm = 'AM';
+ }
+
+ return month + dsep + day + dsep + year + sep + hours + tsep + minutes + sep + ampm;
+
+};
+
+// get ISO 8601 date and time
+html5sticky.getISODateTime = function(d){
+
+ function pad(n){return n < 10 ? '0' + n : n}
+
+ return d.getUTCFullYear()+'-'
+ + pad(d.getUTCMonth()+1)+'-'
+ + pad(d.getUTCDate())+'T'
+ + pad(d.getUTCHours())+':'
+ + pad(d.getUTCMinutes())+':'
+ + pad(d.getUTCSeconds())+'Z'
+};
+
+// edit note
+html5sticky.editNote = function($clone, el){
+ var ptext = $clone.find('p').html();
+ ptext = ptext.replace(/(<br \/>|<br>)/g, '\n');
+ $clone.find('p').replaceWith('<textarea class="pedit" />');
+
+ $clone.find('.pedit')
+ .val(ptext)
+ .css('margin-top', '5px')
+ .addClass('inset')
+ .width('590px')
+ .height('280px');
+
+ // make content editable
+ var htext = $clone.find('h2').text();
+ $clone.find('h2').replaceWith('<input type="text" class="hedit" />');
+
+ $('.hedit').addClass('inset').val(html5sticky.stripTags(htext, allowed_tags)).width(250);
+
+
+ // put in Close button
+ $('<a href="#" class="close_stickynote"><img src="../../assets/img/deletebig.png" alt="" title="close note"></a>')
+ .css({
+ position:'absolute',
+ top:7,
+ right:5
+ })
+ .appendTo($clone);
+
+ // put in Save button
+ $('<a href="#" class="save_stickynote"><img src="../../assets/img/savebig.png" alt="" title="save note"></a>')
+ .css({
+ position:'absolute',
+ top:7,
+ right:60
+ })
+ .appendTo($clone);
+
+ // put in Tip
+ $('<span class="tip">Tip: Allowed HTML tags: <code>')
+ .css({
+ position:'absolute',
+ bottom:10,
+ left:15
+ })
+ .appendTo($clone);
+
+ var tags = allowed_tags;
+ tags = tags.replace('<br />', '');
+ // remove ending tags
+ tags = tags.match(/<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)/ig);
+ $('.tip').text($('.tip').text() + tags.join(' '));
+
+};
+
+// get all notes
+html5sticky.getNotes = function(){
+ if (Modernizr.localstorage){
+ for(var i = 1; i <= max_notes; i++){
+
+ if (localStorage.getItem(i + 'stickynote')){
+ //console.log(i + 'stickynote');
+
+ note_index = i;
+ var stickynote, bgcolor, htext, ptext, pleft, ptop, temp_array;
+
+ // get color and rotation level
+ bgcolor = localStorage.getItem(i + 'stickynote' + '|bgcolor');
+
+ // get position info
+ temp_array = localStorage.getItem(i + 'stickynote' + '|pos').split('|');
+ pleft = temp_array[0];
+ ptop = temp_array[1];
+
+ // get text info
+ temp_array = localStorage.getItem(i + 'stickynote' + '|text').split('|');
+ htext = temp_array[0];
+ ptext = temp_array[1];
+
+ stickynote = $('<div class="note_common ' + bgcolor + '" />').appendTo($('#main'));
+ // add tape to stickynote
+ html5sticky.addPin(stickynote);
+
+ $(stickynote).append($('<h2>Sticky Note</h2>'));
+ $(stickynote).append($('<p>Text here...</p>'));
+ // append identifier
+ $(stickynote).append($('<span id="idf_' + i + 'stickynote' + '" />'));
+
+ //$(stickynote).find('h2').attr('contentEditable', true);
+ //$(stickynote).find('p').attr('contentEditable', true);
+
+ $(stickynote).find('h2').text(html5sticky.stripTags(htext, allowed_tags));
+ $(stickynote).find('p').html(html5sticky.stripTags(ptext, allowed_tags));
+
+ // set width and height of the sticky note
+ $('.note_common').css({width: stickywidth + 'px', height:stickyheight + 'px'});
+
+ $('.note_common p').css({height:(stickyheight - 60) + 'px', width:(stickywidth + 9) + 'px'});
+
+ // add utility buttons
+ //html5sticky.addUtilityButtons(stickynote);
+
+ }
+ }
+
+ if (! $('.note_common').length > 0){
+ $('#removenotes').hide();
+ }
+
+ }
+ else {
+ html5sticky.nohtml5();
+ }
+};
+
+// email note
+html5sticky.emailNote = function(){
+
+};
+
+// share note
+html5sticky.shareNote = function(){
+
+};
+
+// shrink notes
+html5sticky.shrink = function(){
+ var height = 0 + parseInt($('.note_common:first').find('h2').height(), 10) + 'px';
+
+ $('.note_common').animate({height:height}, function(){
+ $('.note_common').find('p').hide();
+ });
+};
+
+// expand notes
+html5sticky.expand = function(){
+ $('.note_common').animate({height:stickyheight}, function(){
+ $('.note_common').find('p').fadeIn('slow');
+ });
+};
+
+
+// share note
+html5sticky.showMessage = function(bgcolor, color, msg){
+ if (!$('#smsg').is(':visible'))
+ {
+ $('html, body').animate({
+ scrollTop: 0
+ }, 500, function(){
+ if (!$('#smsg').length)
+ {
+ $('<div id="smsg">'+msg+'</div>').appendTo($('body')).css({
+ position:'absolute',
+ top:0,
+ left:3,
+ width:'98%',
+ height:'30px',
+ lineHeight:'30px',
+ background:bgcolor,
+ color:color,
+ zIndex:1000,
+ padding:'10px',
+ fontWeight:'bold',
+ textAlign:'center',
+ opacity:0.9,
+ margin:'auto',
+ display:'none'
+ }).slideDown('show');
+
+ setTimeout(function(){
+ $('#smsg').animate({'width':'hide'}, function(){
+ $('#smsg').remove();
+ });
+ }, 4000);
+ }
+ });
+ }
+};
+
+// get random color
+html5sticky.getColor = function(){
+ var text = "";
+ var possible = "0123456789";
+
+ text += possible.charAt(Math.floor(Math.random() * possible.length));
+ return 'stickynote' + text;
+};
+
+
+// get random animation string
+html5sticky.getAnimation = function(hideAnimation){
+ var words = new Array();
+
+ if (typeof hideAnimation != 'undefined'){
+ words[1] = "hide";
+ words[2] = "fadeOut";
+ words[3] = "slideUp";
+ }
+ else {
+ words[1] = "show";
+ words[2] = "fadeIn";
+ words[3] = "slideDown";
+ }
+
+ // Generate a random number between 1 and 3
+ var rnd = Math.ceil(Math.random() * 3);
+
+ return words[rnd];
+};
+
+
+// add pin to note
+html5sticky.addPin = function(el){
+ var close = $('<div><a href="#" class="delete_stickynote"><img src="../../assets/img/delete.png" alt="" title="delete note"></a></div>');
+ var tag = $('<div align="center"><img src="../../assets/img/pin.png" alt=""></div>');
+
+ $(close).css({
+ position:'absolute',
+ top:-15,
+ right:-15
+ }).prependTo($(el));
+
+ $(tag).css({
+ position:'absolute',
+ zIndex:99,
+ top:-30,
+ left:parseInt(stickywidth / 2, 10) - 10
+ }).prependTo($(el));
+};
+
+// enlarge note for editing
+html5sticky.enlargeNote = function(el){
+ $this = $(el);
+
+ // get initial position
+ var posLeft = parseInt($(el).offset().left, 10);
+ var posTop = parseInt($(el).offset().top, 10);
+
+ // create overlay
+ $('<div id="overlay" />').css({
+ position:'fixed',
+ background:'transparent',
+ background:'rgba(0,0,0,0.5)',
+ top:'0',
+ left:'0',
+ width:'100%',
+ height:'100%',
+ zIndex:'100'
+ }).appendTo($('body'));
+
+ $clone = $(el).clone().removeClass('note_common').addClass('bignote').appendTo($('#overlay'));
+
+ // remove the pin
+ $clone.find($('img[src*="pin.png"]').closest('div')).hide();
+ // change delete button title
+ $clone.find($('img[src*="delete.png"]').closest('div')).hide();
+
+ $($clone).css({
+ position:'absolute',
+ zIndex: 500,
+ cursor:'default',
+ paddingTop:'5px',
+ top:posTop,
+ left:posLeft,
+ width:'600px',
+ height:'400px',
+ top:'50%',
+ left:'50%',
+ display:'none',
+ marginLeft:'-300px',
+ marginTop:'-200px'
+ });
+
+ $($clone)[html5sticky.getAnimation()](400);
+
+ // add date and time info
+ var dateStr = '', dateAgo = '';
+
+ if (Modernizr.localstorage){
+ var identifier = html5sticky.getIdentifier($(el));
+ var dateTime = localStorage.getItem(identifier + '|dated');
+ var timeImg = '<img class="left" align="absmiddle" src="../../assets/img/time.png">';
+
+ dateStr = dateTime.split('|')[0];
+ dateAgo = prettyDate(dateTime.split('|')[1]);
+
+ dateStr = (dateStr.length > 0) ? 'Created on: ' + dateStr : '';
+ dateAgo = (dateAgo.length > 0) ? ' (' + dateAgo + ')' : '';
+ timeImg = (dateStr.length > 0) ? timeImg : '';
+
+ }
+ else {
+ html5sticky.nohtml5();
+ }
+
+ $('<div class="timeago left" />').prependTo($clone);
+ $('.timeago').css({fontSize: '12px', fontFamily:'tahoma'}).html(timeImg + ' ' + dateStr + dateAgo);
+ $('.timeago').after('<div class="clear" />');
+
+ // hide the utility buttons
+ $($clone).find('.icons-footer').hide();
+
+ // make content editable
+ html5sticky.editNote($clone, el);
+};
+
+html5sticky.setup = function(){
+
+ var fontFamily = $('.note_common p').css('font-family');
+
+ // Architects font needs to have lesser line height / spacing for lists
+ if (typeof fontFamily != 'undefined' && fontFamily.indexOf('Architects') >= 0){
+ $('.note_common ul').css({lineHeight:'10px', padding:'0px', margin:'0px'});
+ $('.note_common ol').css({lineHeight:'0px', padding:'0px', margin:'0px'});
+ }
+
+ // sticky notes can't be less than 200x200
+ if (stickywidth < 200){
+ stickywidth = 200;
+ }
+
+ if (stickyheight < 200){
+ stickyheight = 200;
+ }
+
+};
+
+// http://phpjs.org/functions/strip_tags:535
+html5sticky.stripTags = function(input, allowed) {
+ allowed = (((allowed || "") + "").toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
+ var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
+ commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
+ return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
+ return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
+ });
+}
+
+
+// jQuery Play
+$(function(){
+
+ // initial setup
+ html5sticky.setup();
+
+ // get any saved notes on page load
+ html5sticky.getNotes();
+
+ // add note
+ $('#addnote').click(function(){
+ html5sticky.addNote();
+ return false;
+ });
+
+ // delete all notes
+ $('#removenotes').click(function(){
+ html5sticky.deleteAllNotes();
+ return false;
+ });
+
+ // delete note
+ $('.delete_stickynote').live('click', function(){
+ html5sticky.deleteNote($(this));
+ return false;
+ });
+
+ // close enlarged note
+ $('.close_stickynote').live('click', function(){
+ html5sticky.closeNote($(this));
+ return false;
+ });
+
+ // save the note
+ $('.save_stickynote').live('click', function(){
+ html5sticky.saveNote($(this));
+ return false;
+ });
+
+
+ // enlarge the note
+ $(".note_common").live("click", function(event) {
+ html5sticky.enlargeNote($(this));
+ });
+
+ // shrink the notes
+ $('#shrink').click(function(event) {
+ html5sticky.shrink();
+ });
+
+ // expand the notes
+ $('#expand').click(function(event) {
+ html5sticky.expand();
+ });
+
+
+ // allow escape to close big note
+ $(document).keyup(function(e) {
+ if (e.keyCode == "27") {
+ $('#overlay').remove();
+ $('.bignore').remove();
+ }
+ });
+
+});
+
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/jquery1.6.2.js b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/jquery1.6.2.js
new file mode 100644
index 0000000..8cdc80e
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/jquery1.6.2.js
@@ -0,0 +1,18 @@
+/*!
+ * jQuery JavaScript Library v1.6.2
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Jun 30 14:16:56 2011 -0400
+ */
+(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bC.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bR,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bX(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bX(a,c,d,e,"*",g));return l}function bW(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bN),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bA(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bv:bw;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bg(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(x,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(H)return H.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:|^on/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.
+shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,N(a.origType,a.selector),f.extend({},a,{handler:M,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,N(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?E:D):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=E;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=E;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=E,this.stopPropagation()},isDefaultPrevented:D,isPropagationStopped:D,isImmediatePropagationStopped:D};var F=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},G=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?G:F,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?G:F)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&K("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&K("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var H,I=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var L={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||D,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=x.exec(h),k="",j&&(k=j[0],h=h.replace(x,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,L[h]?(a.push(L[h]+k),h=h+k):h=(L[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+N(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+N(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=T.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/<tbody/i,ba=/<|&#?\w+;/,bb=/<(?:script|object|embed|option|style)/i,bc=/checked\s*(?:[^=]|=\s*.checked.)/i,bd=/\/(java|ecma)script/i,be=/^\s*<!(?:\[CDATA\[|\-\-)/,bf={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bc.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bg(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bm)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bb.test(a[0])&&(f.support.checkClone||!bc.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j
+)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1></$2>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bl(k[i]);else bl(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bd.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bn=/alpha\([^)]*\)/i,bo=/opacity=([^)]*)/,bp=/([A-Z]|^ms)/g,bq=/^-?\d+(?:px)?$/i,br=/^-?\d/,bs=/^[+\-]=/,bt=/[^+\-\.\de]+/g,bu={position:"absolute",visibility:"hidden",display:"block"},bv=["Left","Right"],bw=["Top","Bottom"],bx,by,bz;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bx(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bs.test(d)&&(d=+d.replace(bt,"")+parseFloat(f.css(a,c)),h="number"),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bx)return bx(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bA(a,b,d);f.swap(a,bu,function(){e=bA(a,b,d)});return e}},set:function(a,b){if(!bq.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cs(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cr("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cr("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cs(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cr("show",1),slideUp:cr("hide",1),slideToggle:cr("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cn||cp(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!cl&&(co?(cl=!0,g=function(){cl&&(co(g),e.tick())},co(g)):cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||cp(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var ct=/^t(?:able|d|h)$/i,cu=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cv(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!ct.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
\ No newline at end of file
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/modernizr.custom.23610.js b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/modernizr.custom.23610.js
new file mode 100644
index 0000000..4437f8a
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/modernizr.custom.23610.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.0.6 (Custom Build) | MIT & BSD
+ * Contains: fontface | backgroundsize | borderimage | borderradius | boxshadow | flexbox | hsla | multiplebgs | opacity | rgba | textshadow | cssanimations | csscolumns | generatedcontent | cssgradients | cssreflections | csstransforms | csstransforms3d | csstransitions | applicationcache | canvas | canvastext | draganddrop | hashchange | history | audio | video | indexeddb | input | inputtypes | localstorage | postmessage | sessionstorage | websockets | websqldatabase | webworkers | inlinesvg | smil | svg | svgclippaths | touch | webgl | iepp | mq | cssclasses | teststyles | testprop | testallprops | hasevent | prefixes | domprefixes | load
+ */
+;window.Modernizr=function(a,b,c){function I(){e.input=function(a){for(var b=0,c=a.length;b<c;b++)t[a[b]]=a[b]in l;return t}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)l.setAttribute("type",f=a[d]),e=l.type!=="text",e&&(l.value=m,l.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&l.style.WebkitAppearance!==c?(g.appendChild(l),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(l,null).WebkitAppearance!=="textfield"&&l.offsetHeight!==0,g.removeChild(l)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=l.checkValidity&&l.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(l),g.offsetWidth,e=l.value!=m,g.removeChild(l)):e=l.value!=m)),s[a[d]]=!!e;return s}("search tel url email datetime date month week time datetime-local number range color".split(" "))}function G(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1),d=(a+" "+p.join(c+" ")+c).split(" ");return F(d,b)}function F(a,b){for(var d in a)if(k[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function E(a,b){return!!~(""+a).indexOf(b)}function D(a,b){return typeof a===b}function C(a,b){return B(o.join(a+";")+(b||""))}function B(a){k.cssText=a}var d="2.0.6",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l=b.createElement("input"),m=":)",n=Object.prototype.toString,o=" -webkit- -moz- -o- -ms- -khtml- ".split(" "),p="Webkit Moz O ms Khtml".split(" "),q={svg:"http://www.w3.org/2000/svg"},r={},s={},t={},u=[],v=function(a,c,d,e){var f,h,j,k=b.createElement("div");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:i+(d+1),k.appendChild(j);f=["­","<style>",a,"</style>"].join(""),k.id=i,k.innerHTML+=f,g.appendChild(k),h=c(k,a),k.parentNode.removeChild(k);return!!h},w=function(b){if(a.matchMedia)return matchMedia(b).matches;var c;v("@media "+b+" { #"+i+" { position: absolute; } }",function(b){c=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position=="absolute"});return c},x=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=D(e[d],"function"),D(e[d],c)||(e[d]=c),e.removeAttribute(d))),e=null;return f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),y,z={}.hasOwnProperty,A;!D(z,c)&&!D(z.call,c)?A=function(a,b){return z.call(a,b)}:A=function(a,b){return b in a&&D(a.constructor.prototype[b],c)};var H=function(c,d){var f=c.join(""),g=d.length;v(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||j.touch.offsetTop===9,e.csstransforms3d=j.csstransforms3d.offsetLeft===9,e.generatedcontent=j.generatedcontent.offsetHeight>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",o.join("touch-enabled),("),i,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",o.join("transform-3d),("),i,")","{#csstransforms3d{left:9px;position:absolute}}"].join(""),['#generatedcontent:after{content:"',m,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);r.flexbox=function(){function c(a,b,c,d){a.style.cssText=o.join(b+":"+c+";")+(d||"")}function a(a,b,c,d){b+=":",a.style.cssText=(b+o.join(c+";"+b)).slice(0,-b.length)+(d||"")}var d=b.createElement("div"),e=b.createElement("div");a(d,"display","box","width:42px;padding:0;"),c(e,"box-flex","1","width:10px;"),d.appendChild(e),g.appendChild(d);var f=e.offsetWidth===42;d.removeChild(e),g.removeChild(d);return f},r.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},r.canvastext=function(){return!!e.canvas&&!!D(b.createElement("canvas").getContext("2d").fillText,"function")},r.webgl=function(){return!!a.WebGLRenderingContext},r.touch=function(){return e.touch},r.postmessage=function(){return!!a.postMessage},r.websqldatabase=function(){var b=!!a.openDatabase;return b},r.indexedDB=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b].toLowerCase()+"IndexedDB"])return!0;return!!a.indexedDB},r.hashchange=function(){return x("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},r.history=function(){return!!a.history&&!!history.pushState},r.draganddrop=function(){return x("dragstart")&&x("drop")},r.websockets=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b]+"WebSocket"])return!0;return"WebSocket"in a},r.rgba=function(){B("background-color:rgba(150,255,150,.5)");return E(k.backgroundColor,"rgba")},r.hsla=function(){B("background-color:hsla(120,40%,100%,.5)");return E(k.backgroundColor,"rgba")||E(k.backgroundColor,"hsla")},r.multiplebgs=function(){B("background:url(https://),url(https://),red url(https://)");return/(url\s*\(.*?){3}/.test(k.background)},r.backgroundsize=function(){return G("backgroundSize")},r.borderimage=function(){return G("borderImage")},r.borderradius=function(){return G("borderRadius")},r.boxshadow=function(){return G("boxShadow")},r.textshadow=function(){return b.createElement("div").style.textShadow===""},r.opacity=function(){C("opacity:.55");return/^0.55$/.test(k.opacity)},r.cssanimations=function(){return G("animationName")},r.csscolumns=function(){return G("columnCount")},r.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";B((a+o.join(b+a)+o.join(c+a)).slice(0,-a.length));return E(k.backgroundImage,"gradient")},r.cssreflections=function(){return G("boxReflect")},r.csstransforms=function(){return!!F(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])},r.csstransforms3d=function(){var a=!!F(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d);return a},r.csstransitions=function(){return G("transitionProperty")},r.fontface=function(){return e.fontface},r.generatedcontent=function(){return e.generatedcontent},r.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType){c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"');var d='video/mp4; codecs="avc1.42E01E';c.h264=a.canPlayType(d+'"')||a.canPlayType(d+', mp4a.40.2"'),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}}catch(e){}return c},r.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"'),c.mp3=a.canPlayType("audio/mpeg;"),c.wav=a.canPlayType('audio/wav; codecs="1"'),c.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")}catch(d){}return c},r.localstorage=function(){try{return!!localStorage.getItem}catch(a){return!1}},r.sessionstorage=function(){try{return!!sessionStorage.getItem}catch(a){return!1}},r.webworkers=function(){return!!a.Worker},r.applicationcache=function(){return!!a.applicationCache},r.svg=function(){return!!b.createElementNS&&!!b.createElementNS(q.svg,"svg").createSVGRect},r.inlinesvg=function(){var a=b.createElement("div");a.innerHTML="<svg/>";return(a.firstChild&&a.firstChild.namespaceURI)==q.svg},r.smil=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"animate")))},r.svgclippaths=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"clipPath")))};for(var J in r)A(r,J)&&(y=J.toLowerCase(),e[y]=r[J](),u.push((e[y]?"":"no-")+y));e.input||I(),B(""),j=l=null,a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function s(a){var b=-1;while(++b<g)a.createElement(f[b])}a.iepp=a.iepp||{};var d=a.iepp,e=d.html5elements||"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",f=e.split("|"),g=f.length,h=new RegExp("(^|\\s)("+e+")","gi"),i=new RegExp("<(/*)("+e+")","gi"),j=/^\s*[\{\}]\s*$/,k=new RegExp("(^|[^\\n]*?\\s)("+e+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),l=b.createDocumentFragment(),m=b.documentElement,n=m.firstChild,o=b.createElement("body"),p=b.createElement("style"),q=/print|all/,r;d.getCSS=function(a,b){if(a+""===c)return"";var e=-1,f=a.length,g,h=[];while(++e<f){g=a[e];if(g.disabled)continue;b=g.media||b,q.test(b)&&h.push(d.getCSS(g.imports,b),g.cssText),b="all"}return h.join("")},d.parseCSS=function(a){var b=[],c;while((c=k.exec(a))!=null)b.push(((j.exec(c[1])?"\n":c[1])+c[2]+c[3]).replace(h,"$1.iepp_$2")+c[4]);return b.join("\n")},d.writeHTML=function(){var a=-1;r=r||b.body;while(++a<g){var c=b.getElementsByTagName(f[a]),d=c.length,e=-1;while(++e<d)c[e].className.indexOf("iepp_")<0&&(c[e].className+=" iepp_"+f[a])}l.appendChild(r),m.appendChild(o),o.className=r.className,o.id=r.id,o.innerHTML=r.innerHTML.replace(i,"<$1font")},d._beforePrint=function(){p.styleSheet.cssText=d.parseCSS(d.getCSS(b.styleSheets,"all")),d.writeHTML()},d.restoreHTML=function(){o.innerHTML="",m.removeChild(o),m.appendChild(r)},d._afterPrint=function(){d.restoreHTML(),p.styleSheet.cssText=""},s(b),s(l);d.disablePP||(n.insertBefore(p,n.firstChild),p.media="print",p.className="iepp-printshim",a.attachEvent("onbeforeprint",d._beforePrint),a.attachEvent("onafterprint",d._afterPrint))}(a,b),e._version=d,e._prefixes=o,e._domPrefixes=p,e.mq=w,e.hasEvent=x,e.testProp=function(a){return F([a])},e.testAllProps=G,e.testStyles=v,g.className=g.className.replace(/\bno-js\b/,"")+(f?" js "+u.join(" "):"");return e}(this,this.document),function(a,b,c){function k(a){return!a||a=="loaded"||a=="complete"}function j(){var a=1,b=-1;while(p.length- ++b)if(p[b].s&&!(a=p[b].r))break;a&&g()}function i(a){var c=b.createElement("script"),d;c.src=a.s,c.onreadystatechange=c.onload=function(){!d&&k(c.readyState)&&(d=1,j(),c.onload=c.onreadystatechange=null)},m(function(){d||(d=1,j())},H.errorTimeout),a.e?c.onload():n.parentNode.insertBefore(c,n)}function h(a){var c=b.createElement("link"),d;c.href=a.s,c.rel="stylesheet",c.type="text/css";if(!a.e&&(w||r)){var e=function(a){m(function(){if(!d)try{a.sheet.cssRules.length?(d=1,j()):e(a)}catch(b){b.code==1e3||b.message=="security"||b.message=="denied"?(d=1,m(function(){j()},0)):e(a)}},0)};e(c)}else c.onload=function(){d||(d=1,m(function(){j()},0))},a.e&&c.onload();m(function(){d||(d=1,j())},H.errorTimeout),!a.e&&n.parentNode.insertBefore(c,n)}function g(){var a=p.shift();q=1,a?a.t?m(function(){a.t=="c"?h(a):i(a)},0):(a(),j()):q=0}function f(a,c,d,e,f,h){function i(){!o&&k(l.readyState)&&(r.r=o=1,!q&&j(),l.onload=l.onreadystatechange=null,m(function(){u.removeChild(l)},0))}var l=b.createElement(a),o=0,r={t:d,s:c,e:h};l.src=l.data=c,!s&&(l.style.display="none"),l.width=l.height="0",a!="object"&&(l.type=d),l.onload=l.onreadystatechange=i,a=="img"?l.onerror=i:a=="script"&&(l.onerror=function(){r.e=r.r=1,g()}),p.splice(e,0,r),u.insertBefore(l,s?null:n),m(function(){o||(u.removeChild(l),r.r=r.e=o=1,j())},H.errorTimeout)}function e(a,b,c){var d=b=="c"?z:y;q=0,b=b||"j",C(a)?f(d,a,b,this.i++,l,c):(p.splice(this.i++,0,a),p.length==1&&g());return this}function d(){var a=H;a.loader={load:e,i:0};return a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=r&&!s,u=s?l:n.parentNode,v=a.opera&&o.call(a.opera)=="[object Opera]",w="webkitAppearance"in l.style,x=w&&"async"in b.createElement("script"),y=r?"object":v||x?"img":"script",z=w?"img":y,A=Array.isArray||function(a){return o.call(a)=="[object Array]"},B=function(a){return Object(a)===a},C=function(a){return typeof a=="string"},D=function(a){return o.call(a)=="[object Function]"},E=[],F={},G,H;H=function(a){function f(a){var b=a.split("!"),c=E.length,d=b.pop(),e=b.length,f={url:d,origUrl:d,prefixes:b},g,h;for(h=0;h<e;h++)g=F[b[h]],g&&(f=g(f));for(h=0;h<c;h++)f=E[h](f);return f}function e(a,b,e,g,h){var i=f(a),j=i.autoCallback;if(!i.bypass){b&&(b=D(b)?b:b[a]||b[g]||b[a.split("/").pop().split("?")[0]]);if(i.instead)return i.instead(a,b,e,g,h);e.load(i.url,i.forceCSS||!i.forceJS&&/css$/.test(i.url)?"c":c,i.noexec),(D(b)||D(j))&&e.load(function(){d(),b&&b(i.origUrl,h,g),j&&j(i.origUrl,h,g)})}}function b(a,b){function c(a){if(C(a))e(a,h,b,0,d);else if(B(a))for(i in a)a.hasOwnProperty(i)&&e(a[i],h,b,i,d)}var d=!!a.test,f=d?a.yep:a.nope,g=a.load||a.both,h=a.callback,i;c(f),c(g),a.complete&&b.load(a.complete)}var g,h,i=this.yepnope.loader;if(C(a))e(a,0,i,0);else if(A(a))for(g=0;g<a.length;g++)h=a[g],C(h)?e(h,0,i,0):A(h)?H(h):B(h)&&b(h,i);else B(a)&&b(a,i)},H.addPrefix=function(a,b){F[a]=b},H.addFilter=function(a){E.push(a)},H.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",G=function(){b.removeEventListener("DOMContentLoaded",G,0),b.readyState="complete"},0)),a.yepnope=d()}(this,this.document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
\ No newline at end of file
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/platform.js b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/platform.js
new file mode 100644
index 0000000..611780d
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/platform.js
@@ -0,0 +1,209 @@
+/*
+
+
+ */
+
+if (typeof jQuery === 'undefined') {
+ //throw new Error('Platform\'s JavaScript requires jQuery')
+}
+
+(function(window, document, $) {
+ 'use strict';
+
+ var P = function(a, b) {
+ return $(a, b);
+ };
+
+ var Config = {
+ api_server_url : "http://localhost:9038/biz-notes"
+ };
+
+ P.config = Config;
+
+ if (window.p) {
+ return;
+ }
+
+ window.p = window.SWPlatform = P;
+
+})(window, document, jQuery);
+
+
+
+
+/*
+ * Utils
+ */
+(function($, P) {
+ 'use strict';
+
+ var Utils = {
+ DateFormat : function(date, fmt) {
+ var o = {
+ "M+" : date.getMonth() + 1, // 月份
+ "d+" : date.getDate(), // 日
+ "h+" : date.getHours(), // 小时
+ "m+" : date.getMinutes(), // 分
+ "s+" : date.getSeconds(), // 秒
+ "q+" : Math.floor((date.getMonth() + 3) / 3), // 季度
+ "S" : date.getMilliseconds() // 毫秒
+ };
+ if (/(y+)/.test(fmt)) {
+ fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
+ }
+ for ( var k in o) {
+ if (new RegExp("(" + k + ")").test(fmt))
+ fmt = fmt.replace(RegExp.$1,(RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
+ }
+ return fmt;
+ },
+
+ Guid: function() {
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
+ var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
+ return v.toString(16);
+ });
+ },
+
+ AppendUrl: function(url, params) {
+
+ var curParam = url.split('?')[1];
+ if (curParam) {
+ curParam = decodeURIComponent(curParam);
+ var jParam = this._deserializeParam2JSON(curParam);
+ params = $.extend(jParam, params);
+ }
+
+ var p = this._serializeJSON2Params(params);
+ url = url.split('?')[0] + "?" + p;
+
+ return url;
+ },
+
+ RandomUrl: function(url) {
+ var t = new Date().getTime();
+ return this.AppendUrl(url, {"t": t});
+ },
+
+ access_token : function() {
+ var name = "access_token";
+ var access_token;
+ var modulus;
+ var exponent;
+ var cookies=document.cookie.split("; ");
+
+ for(var i=0;i<cookies.length;i++)
+ {
+ var s=cookies[i].split("=");
+ if(s[0]=="access_token") {
+ access_token = s[1];
+ }
+ if(s[0]=="modulus") {
+ modulus = s[1];
+ }
+ if(s[0]=="exponent") {
+ exponent = s[1];
+ }
+ }
+ if (access_token) {
+ //access_token="393179c2-a46d-4a7b-89d9-e6bafbe3eee6";
+ if( access_token && modulus && exponent && localStorage["private"]) {
+ var decoder = new RSAKey();
+ decoder.setPrivate(modulus,exponent,localStorage["private"]);
+ return decoder.decrypt(access_token);
+ } else {
+ return access_token;
+ }
+ } else {
+ if(confirm("登录过期,请点击确定后重新重新登录!")) {
+ window.location.reload();
+ };
+ }
+ },
+
+ _ajaxJson: function(url, data, type, callback) {
+ //Metronic.blockUI({"animate":true,"zIndex":100000});
+ url = this.AppendUrl(url, {"access_token": this.access_token()});
+
+ if (url.indexOf("http") != 0) {
+ url = P.config.api_server_url + url;
+ }
+ //console.log(data);
+ var settings = {
+ url:url,
+ data:data,
+ type:type,
+ dataType: "json",
+ success : function(result) {
+ //Metronic.unblockUI();
+
+ callback(result);
+ },
+ error : function(XMLHttpRequest, textStatus, errorThrown){
+ //Metronic.unblockUI();
+ if(XMLHttpRequest.status == 401){
+ if(confirm("登录过期,请点击确定后重新重新登录!")) {
+ window.location.reload();//刷新当前页面.
+ }
+ }else{
+
+ if(XMLHttpRequest.responseJSON.error.errors[0].message) {
+ alert(XMLHttpRequest.responseJSON.error.errors[0].message);
+ } else {
+ alert("未知原因,访问服务器错误!");
+ }
+
+ if(console) {
+ console.log(errorThrown);
+ }
+ }
+ }
+ };
+
+ if (type == 'GET' || type == 'get') {
+
+ } else {
+ $.extend(settings, {"contentType": "application/json; charset=utf-8"});
+ if (data!=undefined)
+ $.extend(settings, {"data": JSON.stringify(data)});
+ }
+ $.ajax(settings);
+ },
+
+ _serializeJSON2Params: function(params) {
+ return $.param(params);
+ },
+ _deserializeParam2JSON: function(param) {
+ var params = {};
+
+ var arrParam = param.split('&');
+ for (var idx in arrParam) {
+ var kvParam = arrParam[idx].split('=');
+
+
+ if(kvParam[0].indexOf('.') > 0) {
+ var keys = kvParam[0].split('.');
+ var value = kvParam[1];
+ var p = value;
+ for(var i = keys.length - 1; i >= 0; i--) {
+ var tmp = p;
+ p = {};
+ p[keys[i]] = tmp;
+
+ }
+ $.extend(true, params, p);
+ } else {
+ if (params[kvParam[0]] && typeof(params[kvParam[0]]) != 'object') {
+ params[kvParam[0]] += "," + kvParam[1];
+ } else {
+ params[kvParam[0]] = kvParam[1];
+ }
+ }
+ }
+ return params;
+ }
+
+ };
+
+ P.utils = Utils;
+})(jQuery, SWPlatform);
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/prettyDate.js b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/prettyDate.js
new file mode 100644
index 0000000..61551eb
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/prettyDate.js
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2008 Dean Landolt (deanlandolt.com)
+ * Re-write by Zach Leatherman (zachleat.com)
+ *
+ * Adopted from the John Resig's pretty.js
+ * at http://ejohn.org/blog/javascript-pretty-date
+ * and henrah's proposed modification
+ * at http://ejohn.org/blog/javascript-pretty-date/#comment-297458
+ *
+ * Licensed under the MIT license.
+ */
+
+
+// Dates for this script must have a specific ISO8601 format: YYYY-MM-DDTHH:MM:SSZ (in UTC) where T and Z are literals.
+function prettyDate(date_str){
+ var time_formats = [
+ [60, 'just now'],
+ [90, '1 minute'], // 60*1.5
+ [3600, 'minutes', 60], // 60*60, 60
+ [5400, '1 hour'], // 60*60*1.5
+ [86400, 'hours', 3600], // 60*60*24, 60*60
+ [129600, '1 day'], // 60*60*24*1.5
+ [604800, 'days', 86400], // 60*60*24*7, 60*60*24
+ [907200, '1 week'], // 60*60*24*7*1.5
+ [2628000, 'weeks', 604800], // 60*60*24*(365/12), 60*60*24*7
+ [3942000, '1 month'], // 60*60*24*(365/12)*1.5
+ [31536000, 'months', 2628000], // 60*60*24*365, 60*60*24*(365/12)
+ [47304000, '1 year'], // 60*60*24*365*1.5
+ [3153600000, 'years', 31536000], // 60*60*24*365*100, 60*60*24*365
+ [4730400000, '1 century'] // 60*60*24*365*100*1.5
+ ];
+
+ var time = ('' + date_str).replace(/-/g,"/").replace(/[TZ]/g," "),
+ dt = new Date,
+ seconds = ((dt - new Date(time) + (dt.getTimezoneOffset() * 60000)) / 1000),
+ token = ' ago',
+ i = 0,
+ format;
+
+ if (seconds < 0) {
+ seconds = Math.abs(seconds);
+ token = '';
+ }
+
+ while (format = time_formats[i++]) {
+ if (seconds < format[0]) {
+ if (format.length == 2) {
+ return format[1] + (i > 1 ? token : ''); // Conditional so we don't return Just Now Ago
+ } else {
+ return Math.round(seconds / format[2]) + ' ' + format[1] + (i > 1 ? token : '');
+ }
+ }
+ }
+
+ // overflow for centuries
+ if(seconds > 4730400000)
+ return Math.round(seconds / 4730400000) + ' centuries' + token;
+
+ return date_str;
+};
+
+/*
+
+prettyDate("2010-08-28T20:24:17Z") // => "2 hours ago"
+prettyDate("2010-08-27T22:24:17Z") // => "Yesterday"
+prettyDate("2010-08-26T22:24:17Z") // => "2 days ago"
+prettyDate("2010-08-14T22:24:17.000Z") // => "2 weeks ago"
+
+*/
\ No newline at end of file
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/respond.min.js b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/respond.min.js
new file mode 100644
index 0000000..1547082
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/assets/js/respond.min.js
@@ -0,0 +1,2 @@
+/*! Respond.js: min/max-width media query polyfill. (c) Scott Jehl. MIT Lic. j.mp/respondjs */
+(function(e,h){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=h;if(h){return}var u=e.document,r=u.documentElement,i=[],k=[],p=[],o={},g=30,f=u.getElementsByTagName("head")[0]||r,b=f.getElementsByTagName("link"),d=[],a=function(){var B=b,w=B.length,z=0,y,x,A,v;for(;z<w;z++){y=B[z],x=y.href,A=y.media,v=y.rel&&y.rel.toLowerCase()==="stylesheet";if(!!x&&v&&!o[x]){if(y.styleSheet.rawCssText){m(y.styleSheet.rawCssText,x,A);o[x]=true}else{if(!/^([a-zA-Z]+?:(\/\/)?)/.test(x)||x.replace(RegExp.$1,"").split("/")[0]===e.location.host){d.push({href:x,media:A})}}}}t()},t=function(){if(d.length){var v=d.shift();n(v.href,function(w){m(w,v.href,v.media);o[v.href]=true;t()})}},m=function(G,v,x){var E=G.match(/@media[^\{]+\{([^\{\}]+\{[^\}\{]+\})+/gi),H=E&&E.length||0,v=v.substring(0,v.lastIndexOf("/")),w=function(I){return I.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+v+"$2$3")},y=!H&&x,B=0,A,C,D,z,F;if(v.length){v+="/"}if(y){H=1}for(;B<H;B++){A=0;if(y){C=x;k.push(w(G))}else{C=E[B].match(/@media ([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1;k.push(RegExp.$2&&w(RegExp.$2))}z=C.split(",");F=z.length;for(;A<F;A++){D=z[A];i.push({media:D.match(/(only\s+)?([a-zA-Z]+)(\sand)?/)&&RegExp.$2,rules:k.length-1,minw:D.match(/\(min\-width:[\s]*([\s]*[0-9]+)px[\s]*\)/)&&parseFloat(RegExp.$1),maxw:D.match(/\(max\-width:[\s]*([\s]*[0-9]+)px[\s]*\)/)&&parseFloat(RegExp.$1)})}}j()},l,q,j=function(E){var v="clientWidth",x=r[v],D=u.compatMode==="CSS1Compat"&&x||u.body[v]||x,z={},C=u.createDocumentFragment(),B=b[b.length-1],w=(new Date()).getTime();if(E&&l&&w-l<g){clearTimeout(q);q=setTimeout(j,g);return}else{l=w}for(var y in i){var F=i[y];if(!F.minw&&!F.maxw||(!F.minw||F.minw&&D>=F.minw)&&(!F.maxw||F.maxw&&D<=F.maxw)){if(!z[F.media]){z[F.media]=[]}z[F.media].push(k[F.rules])}}for(var y in p){if(p[y]&&p[y].parentNode===f){f.removeChild(p[y])}}for(var y in z){var G=u.createElement("style"),A=z[y].join("\n");G.type="text/css";G.media=y;if(G.styleSheet){G.styleSheet.cssText=A}else{G.appendChild(u.createTextNode(A))}C.appendChild(G);p.push(G)}f.insertBefore(C,B.nextSibling)},n=function(v,x){var w=c();if(!w){return}w.open("GET",v,true);w.onreadystatechange=function(){if(w.readyState!=4||w.status!=200&&w.status!=304){return}x(w.responseText)};if(w.readyState==4){return}w.send(null)},c=(function(){var v=false;try{v=XMLHttpRequest()}catch(w){v=new ActiveXObject("Microsoft.XMLHTTP")}return function(){return v}})();a();respond.update=a;function s(){j(true)}if(e.addEventListener){e.addEventListener("resize",s,false)}else{if(e.attachEvent){e.attachEvent("onresize",s)}}})(this,(function(f){if(f.matchMedia){return true}var e,i=document,c=i.documentElement,g=c.firstElementChild||c.firstChild,h=!i.body,d=i.body||i.createElement("body"),b=i.createElement("div"),a="only all";b.id="mq-test-1";b.style.cssText="position:absolute;top:-99em";d.appendChild(b);b.innerHTML='_<style media="'+a+'"> #mq-test-1 { width: 9px; }</style>';if(h){c.insertBefore(d,g)}b.removeChild(b.firstChild);e=b.offsetWidth==9;if(h){c.removeChild(d)}else{d.removeChild(b)}return e})(this));
\ No newline at end of file
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/html/notes/index.html b/web/platform-biz-sample-web-notes/src/main/webapp/html/notes/index.html
new file mode 100644
index 0000000..157dfab
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/html/notes/index.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="utf-8" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+
+ <title>HTML5Sticky - Sticky Notes for the Web !</title>
+
+ <!-- Meta tags -->
+ <meta name="description" content="HTML5 sticky notes application. Create sticky notes for the web !" />
+ <meta name="keywords" content="HTML5,sticky,notes,stickynote,note,stickies,css3,localstorage,offline,sticky-notes" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+
+ <link rel="shortcut icon" type="image/x-icon" href="favicon.ico?v=1">
+
+ <!-- For non-Retina iPhone, iPod Touch, and Android 2.1+ devices: -->
+ <link rel="apple-touch-icon-precomposed" href="apple-touch-icon-precomposed.png">
+ <!-- For first-generation iPad: -->
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="apple-touch-icon-72x72-precomposed.png">
+ <!-- For iPhone 4 with high-resolution Retina display: -->
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="apple-touch-icon-114x114-precomposed.png">
+
+ <!-- CSS -->
+ <link rel="stylesheet" href="../../assets/css/main.css?version=1" />
+ <link rel="stylesheet" href="../../assets/css/html5sticky.css?version=1" />
+
+ <!-- <link href='http://fonts.googleapis.com/css?family=Architects+Daughter' rel='stylesheet' /> -->
+
+ <!-- JavaScript -->
+ <!--[if IE]><![endif]-->
+ <!--[if lt IE 9]>
+ <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+
+ <script src="../../assets/js/jquery1.6.2.js"></script>
+ <script src="../../assets/js/respond.min.js"></script>
+ <script src="../../assets/js/modernizr.custom.23610.js"></script>
+ <script src="../../assets/js/html5sticky_api.js"></script>
+ <script src="../../assets/js/prettyDate.js"></script>
+ <script src="../../assets/js/platform.js"></script>
+</head>
+
+<body>
+
+ <!-- First header has an ID so you can give it individual styles, and target stuff inside it -->
+ <header id="head">
+
+ <a href="index.html">
+ <h1>HTML5Sticky <br /><small>sticky notes for web !</small></h1>
+ </a>
+
+ <div class="left topsection">
+ <a href="#" id="addnote" class="tooltip blue-tooltip"><img src="../../assets/img/add.png" alt="Add a new sticky note"><span>Add a new sticky note</span></a>
+ <a href="#" id="removenotes" class="tooltip blue-tooltip"><img src="../../assets/img/remove.png" alt="Remove all sticky notes"><span>Remove all sticky notes</span></a>
+ </div>
+
+ <div class="left topsection">
+ <a href="#" id="shrink" class="tooltip blue-tooltip"><img src="../../assets/img/decrease.png" alt="Shrink"><span>Shrink sticky notes</span></a>
+ <a href="#" id="expand" class="tooltip blue-tooltip"><img src="../../assets/img/increase.png" alt="Expand"><span>Expand sticky notes</span></a>
+ </div>
+
+
+ </header><!-- #head -->
+
+ <div id="main"></div>
+
+ <div class="clear"> </div>
+ <div class="clear"> </div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/web/platform-biz-sample-web-notes/src/main/webapp/index.jsp b/web/platform-biz-sample-web-notes/src/main/webapp/index.jsp
new file mode 100644
index 0000000..88de5ec
--- /dev/null
+++ b/web/platform-biz-sample-web-notes/src/main/webapp/index.jsp
@@ -0,0 +1,21 @@
+<%@page language="java" pageEncoding="UTF-8"%>
+
+<!DOCTYPE html>
+
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>公共数据管理平台 - 上海树维信息科技有限公司</title>
+<script>window.location.href="html/notes/index.html";</script>
+</head>
+<body>
+<h4>请勿禁用 活动脚本!</h4>
+<br />请按以下步骤启用:
+<p>1、进入“工具” -- “Internet选项(O)”</p>
+<p>2、进入“安全”选项卡</p>
+<p>3、点击“自定义级别(C)...”按钮</p>
+<p>4、在设置框中,定位到“脚本” -- “活动脚本”,选择“启用”;</p>
+<p>5、点击“确定”按钮,保存当前设置。</p>
+<p>6、重新“刷新”浏览器,继续操作!</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/web/pom.xml b/web/pom.xml
new file mode 100644
index 0000000..a269d47
--- /dev/null
+++ b/web/pom.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.supwisdom.platform.biz.sample</groupId>
+ <artifactId>platform-biz-sample</artifactId>
+ <version>3.0.0</version>
+ </parent>
+
+ <groupId>com.supwisdom.platform.biz.sample</groupId>
+ <artifactId>platform-biz-sample-web</artifactId>
+ <packaging>pom</packaging>
+ <name>Platform Biz Sample Web Parent</name>
+ <url>http://maven.apache.org/</url>
+
+ <modules>
+ <module>platform-web-notes</module>
+ </modules>
+
+ <dependencies>
+ <!-- Modules Start -->
+ <!-- 业务无关API -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-core-common</artifactId>
+ </dependency>
+ <!-- 系统框架 -->
+ <dependency>
+ <groupId>com.supwisdom.platform.biz</groupId>
+ <artifactId>platform-core-framework</artifactId>
+ </dependency>
+ <!-- Modules End -->
+ <!-- 测试-->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ </dependency>
+ </dependencies>
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src/main/java</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <directory>src/test/resources</directory>
+ </testResource>
+ <testResource>
+ <directory>src/test/webapp</directory>
+ </testResource>
+ <testResource>
+ <directory>src/test/java</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </testResource>
+ </testResources>
+ </build>
+</project>