diff --git a/static/css/default.css b/static/css/default.css
new file mode 100644
index 0000000..3f72660
--- /dev/null
+++ b/static/css/default.css
@@ -0,0 +1,1147 @@
+/* common */
+.ke-inline-block {
+ display: -moz-inline-stack;
+ display: inline-block;
+ vertical-align: middle;
+ zoom: 1;
+ *display: inline;
+}
+.ke-clearfix {
+ zoom: 1;
+}
+.ke-clearfix:after {
+ content: ".";
+ display: block;
+ clear: both;
+ font-size: 0;
+ height: 0;
+ line-height: 0;
+ visibility: hidden;
+}
+.ke-shadow {
+ box-shadow: 1px 1px 3px #A0A0A0;
+ -moz-box-shadow: 1px 1px 3px #A0A0A0;
+ -webkit-box-shadow: 1px 1px 3px #A0A0A0;
+ filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3);
+ background-color: #F0F0EE;
+}
+.ke-menu a,
+.ke-menu a:hover,
+.ke-dialog a,
+.ke-dialog a:hover {
+ color: #337FE5;
+ text-decoration: none;
+}
+/* icons */
+.ke-icon-source {
+ background-position: 0px 0px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-preview {
+ background-position: 0px -16px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-print {
+ background-position: 0px -32px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-undo {
+ background-position: 0px -48px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-redo {
+ background-position: 0px -64px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-cut {
+ background-position: 0px -80px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-copy {
+ background-position: 0px -96px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-paste {
+ background-position: 0px -112px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-selectall {
+ background-position: 0px -128px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-justifyleft {
+ background-position: 0px -144px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-justifycenter {
+ background-position: 0px -160px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-justifyright {
+ background-position: 0px -176px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-justifyfull {
+ background-position: 0px -192px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-insertorderedlist {
+ background-position: 0px -208px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-insertunorderedlist {
+ background-position: 0px -224px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-indent {
+ background-position: 0px -240px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-outdent {
+ background-position: 0px -256px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-subscript {
+ background-position: 0px -272px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-superscript {
+ background-position: 0px -288px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-date {
+ background-position: 0px -304px;
+ width: 25px;
+ height: 16px;
+}
+.ke-icon-time {
+ background-position: 0px -320px;
+ width: 25px;
+ height: 16px;
+}
+.ke-icon-formatblock {
+ background-position: 0px -336px;
+ width: 25px;
+ height: 16px;
+}
+.ke-icon-fontname {
+ background-position: 0px -352px;
+ width: 21px;
+ height: 16px;
+}
+.ke-icon-fontsize {
+ background-position: 0px -368px;
+ width: 23px;
+ height: 16px;
+}
+.ke-icon-forecolor {
+ background-position: 0px -384px;
+ width: 20px;
+ height: 16px;
+}
+.ke-icon-hilitecolor {
+ background-position: 0px -400px;
+ width: 23px;
+ height: 16px;
+}
+.ke-icon-bold {
+ background-position: 0px -416px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-italic {
+ background-position: 0px -432px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-underline {
+ background-position: 0px -448px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-strikethrough {
+ background-position: 0px -464px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-removeformat {
+ background-position: 0px -480px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-image {
+ background-position: 0px -496px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-flash {
+ background-position: 0px -512px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-media {
+ background-position: 0px -528px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-div {
+ background-position: 0px -544px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-formula {
+ background-position: 0px -576px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-hr {
+ background-position: 0px -592px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-emoticons {
+ background-position: 0px -608px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-link {
+ background-position: 0px -624px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-unlink {
+ background-position: 0px -640px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-fullscreen {
+ background-position: 0px -656px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-about {
+ background-position: 0px -672px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-plainpaste {
+ background-position: 0px -704px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-wordpaste {
+ background-position: 0px -720px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-table {
+ background-position: 0px -784px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tablemenu {
+ background-position: 0px -768px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tableinsert {
+ background-position: 0px -784px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tabledelete {
+ background-position: 0px -800px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tablecolinsertleft {
+ background-position: 0px -816px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tablecolinsertright {
+ background-position: 0px -832px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tablerowinsertabove {
+ background-position: 0px -848px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tablerowinsertbelow {
+ background-position: 0px -864px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tablecoldelete {
+ background-position: 0px -880px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tablerowdelete {
+ background-position: 0px -896px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tablecellprop {
+ background-position: 0px -912px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tableprop {
+ background-position: 0px -928px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-checked {
+ background-position: 0px -944px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-code {
+ background-position: 0px -960px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-map {
+ background-position: 0px -976px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-baidumap {
+ background-position: 0px -976px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-lineheight {
+ background-position: 0px -992px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-clearhtml {
+ background-position: 0px -1008px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-pagebreak {
+ background-position: 0px -1024px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-insertfile {
+ background-position: 0px -1040px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-quickformat {
+ background-position: 0px -1056px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-template {
+ background-position: 0px -1072px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tablecellsplit {
+ background-position: 0px -1088px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tablerowmerge {
+ background-position: 0px -1104px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tablerowsplit {
+ background-position: 0px -1120px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tablecolmerge {
+ background-position: 0px -1136px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-tablecolsplit {
+ background-position: 0px -1152px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-anchor {
+ background-position: 0px -1168px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-search {
+ background-position: 0px -1184px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-new {
+ background-position: 0px -1200px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-specialchar {
+ background-position: 0px -1216px;
+ width: 16px;
+ height: 16px;
+}
+.ke-icon-multiimage {
+ background-position: 0px -1232px;
+ width: 16px;
+ height: 16px;
+}
+/* container */
+.ke-container {
+ display: block;
+ border: 1px solid #CCCCCC;
+ background-color: #FFF;
+ overflow: hidden;
+ margin: 0;
+ padding: 0;
+}
+/* toolbar */
+.ke-toolbar {
+ border-bottom: 1px solid #CCC;
+ background-color: #F0F0EE;
+ padding: 2px 5px;
+ text-align: left;
+ overflow: hidden;
+ zoom: 1;
+}
+.ke-toolbar-icon {
+ background-repeat: no-repeat;
+ font-size: 0;
+ line-height: 0;
+ overflow: hidden;
+ display: block;
+}
+.ke-toolbar-icon-url {
+ background-image: url(default.png);
+}
+.ke-toolbar .ke-outline {
+ border: 1px solid #F0F0EE;
+ margin: 1px;
+ padding: 1px 2px;
+ font-size: 0;
+ line-height: 0;
+ overflow: hidden;
+ cursor: pointer;
+ display: block;
+ float: left;
+}
+.ke-toolbar .ke-on {
+ border: 1px solid #5690D2;
+}
+.ke-toolbar .ke-selected {
+ border: 1px solid #5690D2;
+ background-color: #E9EFF6;
+}
+.ke-toolbar .ke-disabled {
+ cursor: default;
+}
+.ke-toolbar .ke-separator {
+ height: 16px;
+ margin: 2px 3px;
+ border-left: 1px solid #A0A0A0;
+ border-right: 1px solid #FFFFFF;
+ border-top:0;
+ border-bottom:0;
+ width: 0;
+ font-size: 0;
+ line-height: 0;
+ overflow: hidden;
+ display: block;
+ float: left;
+}
+.ke-toolbar .ke-hr {
+ overflow: hidden;
+ height: 1px;
+ clear: both;
+}
+/* edit */
+.ke-edit {
+ padding: 0;
+}
+.ke-edit-iframe,
+.ke-edit-textarea {
+ border: 0;
+ margin: 0;
+ padding: 0;
+ overflow: auto;
+}
+.ke-edit-textarea {
+ font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace;
+ color: #000;
+ overflow: auto;
+ resize: none;
+}
+.ke-edit-textarea:focus {
+ outline: none;
+}
+/* statusbar */
+.ke-statusbar {
+ position: relative;
+ background-color: #F0F0EE;
+ border-top: 1px solid #CCCCCC;
+ font-size: 0;
+ line-height: 0;
+ *height: 12px;
+ overflow: hidden;
+ text-align: center;
+ cursor: s-resize;
+}
+.ke-statusbar-center-icon {
+ background-position: -0px -754px;
+ width: 15px;
+ height: 11px;
+ background-image: url(default.png);
+}
+.ke-statusbar-right-icon {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ cursor: se-resize;
+ background-position: -5px -741px;
+ width: 11px;
+ height: 11px;
+ background-image: url(default.png);
+}
+/* menu */
+.ke-menu {
+ border: 1px solid #A0A0A0;
+ background-color: #F1F1F1;
+ color: #222222;
+ padding: 2px;
+ font-family: "sans serif",tahoma,verdana,helvetica;
+ font-size: 12px;
+ text-align: left;
+ overflow: hidden;
+}
+.ke-menu-item {
+ border: 1px solid #F1F1F1;
+ background-color: #F1F1F1;
+ color: #222222;
+ height: 24px;
+ overflow: hidden;
+ cursor: pointer;
+}
+.ke-menu-item-on {
+ border: 1px solid #5690D2;
+ background-color: #E9EFF6;
+}
+.ke-menu-item-left {
+ width: 27px;
+ text-align: center;
+ overflow: hidden;
+}
+.ke-menu-item-center {
+ width: 0;
+ height: 24px;
+ border-left: 1px solid #E3E3E3;
+ border-right: 1px solid #FFFFFF;
+ border-top: 0;
+ border-bottom: 0;
+}
+.ke-menu-item-center-on {
+ border-left: 1px solid #E9EFF6;
+ border-right: 1px solid #E9EFF6;
+}
+.ke-menu-item-right {
+ border: 0;
+ padding: 0 0 0 5px;
+ line-height: 24px;
+ text-align: left;
+ overflow: hidden;
+}
+.ke-menu-separator {
+ margin: 2px 0;
+ height: 0;
+ overflow: hidden;
+ border-top: 1px solid #CCCCCC;
+ border-bottom: 1px solid #FFFFFF;
+ border-left: 0;
+ border-right: 0;
+}
+/* colorpicker */
+.ke-colorpicker {
+ border: 1px solid #A0A0A0;
+ background-color: #F1F1F1;
+ color: #222222;
+ padding: 2px;
+}
+.ke-colorpicker-table {
+ border:0;
+ margin:0;
+ padding:0;
+ border-collapse: separate;
+}
+.ke-colorpicker-cell {
+ font-size: 0;
+ line-height: 0;
+ border: 1px solid #F0F0EE;
+ cursor: pointer;
+ margin:3px;
+ padding:0;
+}
+.ke-colorpicker-cell-top {
+ font-family: "sans serif",tahoma,verdana,helvetica;
+ font-size: 12px;
+ line-height: 24px;
+ border: 1px solid #F0F0EE;
+ cursor: pointer;
+ margin:0;
+ padding:0;
+ text-align: center;
+}
+.ke-colorpicker-cell-on {
+ border: 1px solid #5690D2;
+}
+.ke-colorpicker-cell-selected {
+ border: 1px solid #2446AB;
+}
+.ke-colorpicker-cell-color {
+ width: 14px;
+ height: 14px;
+ margin: 3px;
+ padding: 0;
+ border: 0;
+}
+/* dialog */
+.ke-dialog {
+ position: absolute;
+ margin: 0;
+ padding: 0;
+}
+.ke-dialog .ke-header {
+ width: 100%;
+ margin-bottom: 10px;
+}
+.ke-dialog .ke-header .ke-left {
+ float: left;
+}
+.ke-dialog .ke-header .ke-right {
+ float: right;
+}
+.ke-dialog .ke-header label {
+ margin-right: 0;
+ cursor: pointer;
+ font-weight: normal;
+ display: inline;
+ vertical-align: top;
+}
+.ke-dialog-content {
+ background-color: #FFF;
+ width: 100%;
+ height: 100%;
+ color: #333;
+ border: 1px solid #A0A0A0;
+}
+.ke-dialog-shadow {
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ box-shadow: 3px 3px 7px #999;
+ -moz-box-shadow: 3px 3px 7px #999;
+ -webkit-box-shadow: 3px 3px 7px #999;
+ filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='true', ShadowOpacity='0.4');
+ background-color: #F0F0EE;
+}
+.ke-dialog-header {
+ border:0;
+ margin:0;
+ padding: 0 10px;
+ background: url(background.png) repeat scroll 0 0 #F0F0EE;
+ border-bottom: 1px solid #CFCFCF;
+ height: 24px;
+ font: 12px/24px "sans serif",tahoma,verdana,helvetica;
+ text-align: left;
+ color: #222;
+ cursor: move;
+}
+.ke-dialog-icon-close {
+ display: block;
+ background: url(default.png) no-repeat scroll 0px -688px;
+ width: 16px;
+ height: 16px;
+ position: absolute;
+ right: 6px;
+ top: 6px;
+ cursor: pointer;
+}
+.ke-dialog-body {
+ font: 12px/1.5 "sans serif",tahoma,verdana,helvetica;
+ text-align: left;
+ overflow: hidden;
+ width: 100%;
+}
+.ke-dialog-body textarea {
+ display: block;
+ overflow: auto;
+ padding: 0;
+ resize: none;
+}
+.ke-dialog-body textarea:focus,
+.ke-dialog-body input:focus,
+.ke-dialog-body select:focus {
+ outline: none;
+}
+.ke-dialog-body label {
+ margin-right: 10px;
+ cursor: pointer;
+ display: -moz-inline-stack;
+ display: inline-block;
+ vertical-align: middle;
+ zoom: 1;
+ *display: inline;
+}
+.ke-dialog-body img {
+ display: -moz-inline-stack;
+ display: inline-block;
+ vertical-align: middle;
+ zoom: 1;
+ *display: inline;
+}
+.ke-dialog-body select {
+ display: -moz-inline-stack;
+ display: inline-block;
+ vertical-align: middle;
+ zoom: 1;
+ *display: inline;
+ width: auto;
+}
+.ke-dialog-body .ke-textarea {
+ display: block;
+ width: 408px;
+ height: 260px;
+ font-family: "sans serif",tahoma,verdana,helvetica;
+ font-size: 12px;
+ border-color: #848484 #E0E0E0 #E0E0E0 #848484;
+ border-style: solid;
+ border-width: 1px;
+}
+.ke-dialog-body .ke-form {
+ margin: 0;
+ padding: 0;
+}
+.ke-dialog-loading {
+ position: absolute;
+ top: 0;
+ left: 1px;
+ z-index: 1;
+ text-align: center;
+}
+.ke-dialog-loading-content {
+ background: url("../common/loading.gif") no-repeat;
+ color: #666;
+ font-size: 14px;
+ font-weight: bold;
+ height: 31px;
+ line-height: 31px;
+ padding-left: 36px;
+}
+.ke-dialog-row {
+ margin-bottom: 10px;
+}
+.ke-dialog-footer {
+ font: 12px/1 "sans serif",tahoma,verdana,helvetica;
+ text-align: right;
+ padding:0 0 5px 0;
+ background-color: #FFF;
+ width: 100%;
+}
+.ke-dialog-preview,
+.ke-dialog-yes {
+ margin: 5px;
+}
+.ke-dialog-no {
+ margin: 5px 10px 5px 5px;
+}
+.ke-dialog-mask {
+ background-color:#FFF;
+ filter:alpha(opacity=50);
+ opacity:0.5;
+}
+.ke-button-common {
+ background: url(background.png) no-repeat;
+ cursor: pointer;
+ height: 23px;
+ line-height: 23px;
+ overflow: visible;
+ display: inline-block;
+ vertical-align: top;
+ cursor: pointer;
+}
+.ke-button-outer {
+ background-position: 0 -25px;
+ padding: 0;
+ display: -moz-inline-stack;
+ display: inline-block;
+ vertical-align: middle;
+ zoom: 1;
+ *display: inline;
+}
+.ke-button {
+ background-position: right -25px;
+ padding: 0 14px 0 12px;
+ margin: 0 0 0 2px;
+ font-family: "sans serif",tahoma,verdana,helvetica;
+ border: 0 none;
+ color: #333;
+ font-size: 12px;
+ text-decoration: none;
+}
+/* inputbox */
+.ke-input-text {
+ background-color:#FFFFFF;
+ font-family: "sans serif",tahoma,verdana,helvetica;
+ font-size: 12px;
+ line-height: 17px;
+ height: 17px;
+ padding: 2px 4px;
+ border-color: #848484 #E0E0E0 #E0E0E0 #848484;
+ border-style: solid;
+ border-width: 1px;
+ display: -moz-inline-stack;
+ display: inline-block;
+ vertical-align: middle;
+ zoom: 1;
+ *display: inline;
+}
+.ke-input-number {
+ width: 50px;
+}
+.ke-input-color {
+ border: 1px solid #A0A0A0;
+ background-color: #FFFFFF;
+ font-size: 12px;
+ width: 60px;
+ height: 20px;
+ line-height: 20px;
+ padding-left: 5px;
+ overflow: hidden;
+ cursor: pointer;
+ display: -moz-inline-stack;
+ display: inline-block;
+ vertical-align: middle;
+ zoom: 1;
+ *display: inline;
+}
+.ke-upload-button {
+ position: relative;
+}
+.ke-upload-area {
+ position: relative;
+ overflow: hidden;
+ margin: 0;
+ padding: 0;
+ *height: 25px;
+}
+.ke-upload-area .ke-upload-file {
+ position: absolute;
+ font-size: 60px;
+ top: 0;
+ right: 0;
+ padding: 0;
+ margin: 0;
+ z-index: 811212;
+ border: 0 none;
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+/* tabs */
+.ke-tabs {
+ font: 12px/1 "sans serif",tahoma,verdana,helvetica;
+ border-bottom:1px solid #A0A0A0;
+ padding-left:5px;
+ margin-bottom:20px;
+}
+.ke-tabs-ul {
+ list-style-image:none;
+ list-style-position:outside;
+ list-style-type:none;
+ margin:0;
+ padding:0;
+}
+.ke-tabs-li {
+ position: relative;
+ border: 1px solid #A0A0A0;
+ background-color: #F0F0EE;
+ margin: 0 2px -1px 0;
+ padding: 0 20px;
+ float: left;
+ line-height: 25px;
+ text-align: center;
+ color: #555555;
+ cursor: pointer;
+}
+.ke-tabs-li-selected {
+ background-color: #FFF;
+ border-bottom: 1px solid #FFF;
+ color: #000;
+ cursor: default;
+}
+.ke-tabs-li-on {
+ background-color: #FFF;
+ color: #000;
+}
+/* progressbar */
+.ke-progressbar {
+ position: relative;
+ margin: 0;
+ padding: 0;
+}
+.ke-progressbar-bar {
+ border: 1px solid #6FA5DB;
+ width: 80px;
+ height: 5px;
+ margin: 10px 10px 0 10px;
+ padding: 0;
+}
+.ke-progressbar-bar-inner {
+ width: 0;
+ height: 5px;
+ background-color: #6FA5DB;
+ overflow: hidden;
+ margin: 0;
+ padding: 0;
+}
+.ke-progressbar-percent {
+ position: absolute;
+ top: 0;
+ left: 40%;
+ display: none;
+}
+/* swfupload */
+.ke-swfupload-top {
+ position: relative;
+ margin-bottom: 10px;
+ _width: 608px;
+}
+.ke-swfupload-button {
+ height: 23px;
+ line-height: 23px;
+}
+.ke-swfupload-desc {
+ padding: 0 10px;
+ height: 23px;
+ line-height: 23px;
+}
+.ke-swfupload-startupload {
+ position: absolute;
+ top: 0;
+ right: 0;
+}
+.ke-swfupload-body {
+ overflow: scroll;
+ background-color:#FFFFFF;
+ border-color: #848484 #E0E0E0 #E0E0E0 #848484;
+ border-style: solid;
+ border-width: 1px;
+ width: auto;
+ height: 370px;
+ padding: 5px;
+}
+.ke-swfupload-body .ke-item {
+ width: 100px;
+ margin: 5px;
+}
+.ke-swfupload-body .ke-photo {
+ position: relative;
+ border: 1px solid #DDDDDD;
+ background-color:#FFFFFF;
+ padding: 10px;
+}
+.ke-swfupload-body .ke-delete {
+ display: block;
+ background: url(default.png) no-repeat scroll 0px -688px;
+ width: 16px;
+ height: 16px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ cursor: pointer;
+}
+.ke-swfupload-body .ke-status {
+ position: absolute;
+ left: 0;
+ bottom: 5px;
+ width: 100px;
+ height: 17px;
+}
+.ke-swfupload-body .ke-message {
+ width: 100px;
+ text-align: center;
+ overflow: hidden;
+ height:17px;
+}
+.ke-swfupload-body .ke-error {
+ color: red;
+}
+.ke-swfupload-body .ke-name {
+ width: 100px;
+ text-align: center;
+ overflow: hidden;
+ height:16px;
+}
+.ke-swfupload-body .ke-on {
+ border: 1px solid #5690D2;
+ background-color: #E9EFF6;
+}
+
+/* emoticons */
+.ke-plugin-emoticons {
+ position: relative;
+}
+.ke-plugin-emoticons .ke-preview {
+ position: absolute;
+ text-align: center;
+ margin: 2px;
+ padding: 10px;
+ top: 0;
+ border: 1px solid #A0A0A0;
+ background-color: #FFFFFF;
+ display: none;
+}
+.ke-plugin-emoticons .ke-preview-img {
+ border:0;
+ margin:0;
+ padding:0;
+}
+.ke-plugin-emoticons .ke-table {
+ border:0;
+ margin:0;
+ padding:0;
+ border-collapse:separate;
+}
+.ke-plugin-emoticons .ke-cell {
+ margin:0;
+ padding:1px;
+ border:1px solid #F0F0EE;
+ cursor:pointer;
+}
+.ke-plugin-emoticons .ke-on {
+ border: 1px solid #5690D2;
+ background-color: #E9EFF6;
+}
+.ke-plugin-emoticons .ke-img {
+ display:block;
+ background-repeat:no-repeat;
+ overflow:hidden;
+ margin:2px;
+ width:24px;
+ height:24px;
+ margin: 0;
+ padding: 0;
+ border: 0;
+}
+.ke-plugin-emoticons .ke-page {
+ text-align: right;
+ margin: 5px;
+ padding: 0;
+ border: 0;
+ font: 12px/1 "sans serif",tahoma,verdana,helvetica;
+ color: #333;
+ text-decoration: none;
+}
+.ke-plugin-plainpaste-textarea,
+.ke-plugin-wordpaste-iframe {
+ display: block;
+ width: 408px;
+ height: 260px;
+ font-family: "sans serif",tahoma,verdana,helvetica;
+ font-size: 12px;
+ border-color: #848484 #E0E0E0 #E0E0E0 #848484;
+ border-style: solid;
+ border-width: 1px;
+}
+/* filemanager */
+.ke-plugin-filemanager-header {
+ width: 100%;
+ margin-bottom: 10px;
+}
+.ke-plugin-filemanager-header .ke-left {
+ float: left;
+}
+.ke-plugin-filemanager-header .ke-right {
+ float: right;
+}
+.ke-plugin-filemanager-body {
+ overflow: scroll;
+ background-color:#FFFFFF;
+ border-color: #848484 #E0E0E0 #E0E0E0 #848484;
+ border-style: solid;
+ border-width: 1px;
+ width: auto;
+ height: 370px;
+ padding: 5px;
+}
+.ke-plugin-filemanager-body .ke-item {
+ width: 100px;
+ margin: 5px;
+}
+.ke-plugin-filemanager-body .ke-photo {
+ border: 1px solid #DDDDDD;
+ background-color:#FFFFFF;
+ padding: 10px;
+}
+.ke-plugin-filemanager-body .ke-name {
+ width: 100px;
+ text-align: center;
+ overflow: hidden;
+ height:16px;
+}
+.ke-plugin-filemanager-body .ke-on {
+ border: 1px solid #5690D2;
+ background-color: #E9EFF6;
+}
+.ke-plugin-filemanager-body .ke-table {
+ width: 95%;
+ border: 0;
+ margin: 0;
+ padding: 0;
+ border-collapse: separate;
+}
+.ke-plugin-filemanager-body .ke-table .ke-cell {
+ margin: 0;
+ padding: 0;
+ border: 0;
+}
+.ke-plugin-filemanager-body .ke-table .ke-name {
+ width: 55%;
+ text-align: left;
+}
+.ke-plugin-filemanager-body .ke-table .ke-size {
+ width: 15%;
+ text-align: left;
+}
+.ke-plugin-filemanager-body .ke-table .ke-datetime {
+ width: 30%;
+ text-align: center;
+}
+
diff --git a/static/css/user/user.css b/static/css/user/user.css
index 4a5ecb0..c74e328 100644
--- a/static/css/user/user.css
+++ b/static/css/user/user.css
@@ -244,4 +244,8 @@
padding: 5px 30px;
border-radius: 15px;
clear: both;
+}
+
+textarea {
+ display: block;
}
\ No newline at end of file
diff --git a/static/images/zwtp.jpg b/static/images/zwtp.jpg
index ac0d049..8f4b5e8 100644
Binary files a/static/images/zwtp.jpg and b/static/images/zwtp.jpg differ
diff --git a/static/js/common/main.js b/static/js/common/main.js
index caa087b..9f65c0f 100644
--- a/static/js/common/main.js
+++ b/static/js/common/main.js
@@ -34,6 +34,8 @@ requirejs.config({
user: 'api/user',//用户信息接口
register:'api/register',//用户注册接口
ajaxUploadImage:'lib/ajaxUpload/ajaxupload',//上传图片
+ kindeditor:'lib/kindeditor/kindeditor-all',
+ zhCN:'lib/kindeditor/lang/zh-CN',
},
shim: {
bootstrap: {
@@ -65,6 +67,10 @@ requirejs.config({
ajaxUploadImage: {
deps: ['jquery'],
exports: 'ajaxUploadImage'
+ },
+ kindeditor: {
+ deps: ['zhCN'],
+ exports: 'kindeditor'
}
}
});
diff --git a/static/js/common/tools.js b/static/js/common/tools.js
index 0dbd047..0ef9f34 100644
--- a/static/js/common/tools.js
+++ b/static/js/common/tools.js
@@ -4,7 +4,6 @@ define(['jquery', 'dialog'], function ($, dialog) {
function Tool() {
this.version = "1.0.0";
this.description = "这是一个工具类";
-
}
var ajaxJsUrl = "/api";
diff --git a/static/js/lib/kindeditor/kindeditor-all-min.js b/static/js/lib/kindeditor/kindeditor-all-min.js
new file mode 100644
index 0000000..9d4aacb
--- /dev/null
+++ b/static/js/lib/kindeditor/kindeditor-all-min.js
@@ -0,0 +1,7 @@
+/* KindEditor 4.1.11 (2016-03-31), Copyright (C) kindsoft.net, Licence: http://kindeditor.net/license.php */
+!function(window,undefined){function _isArray(a){return a?"[object Array]"===Object.prototype.toString.call(a):!1}function _isFunction(a){return a?"[object Function]"===Object.prototype.toString.call(a):!1}function _inArray(a,b){for(var c=0,d=b.length;d>c;c++)if(a===b[c])return c;return-1}function _each(a,b){if(_isArray(a))for(var c=0,d=a.length;d>c&&b.call(a[c],c,a[c])!==!1;c++);else for(var e in a)if(a.hasOwnProperty(e)&&b.call(a[e],e,a[e])===!1)break}function _trim(a){return a.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"")}function _inString(a,b,c){return c=c===undefined?",":c,(c+b+c).indexOf(c+a+c)>=0}function _addUnit(a,b){return b=b||"px",a&&/^-?\d+(?:\.\d+)?$/.test(a)?a+b:a}function _removeUnit(a){var b;return a&&(b=/(\d+)/.exec(a))?parseInt(b[1],10):0}function _escape(a){return a.replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function _unescape(a){return a.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/&/g,"&")}function _toCamel(a){var b=a.split("-");return a="",_each(b,function(b,c){a+=b>0?c.charAt(0).toUpperCase()+c.substr(1):c}),a}function _toHex(a){function b(a){var b=parseInt(a,10).toString(16).toUpperCase();return b.length>1?b:"0"+b}return a.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/gi,function(a,c,d,e){return"#"+b(c)+b(d)+b(e)})}function _toMap(a,b){b=b===undefined?",":b;var c,d={},e=_isArray(a)?a:a.split(b);return _each(e,function(a,b){if(c=/^(\d+)\.\.(\d+)$/.exec(b))for(var e=parseInt(c[1],10);e<=parseInt(c[2],10);e++)d[e.toString()]=!0;else d[b]=!0}),d}function _toArray(a,b){return Array.prototype.slice.call(a,b||0)}function _undef(a,b){return a===undefined?b:a}function _invalidUrl(a){return!a||/[<>"]/.test(a)}function _addParam(a,b){return a.indexOf("?")>=0?a+"&"+b:a+"?"+b}function _extend(a,b,c){c||(c=b,b=null);var d;if(b){var e=function(){};e.prototype=b.prototype,d=new e,_each(c,function(a,b){d[a]=b})}else d=c;d.constructor=a,a.prototype=d,a.parent=b?b.prototype:null}function _json(text){var match;(match=/\{[\s\S]*\}|\[[\s\S]*\]/.exec(text))&&(text=match[0]);var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;if(cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return eval("("+text+")");throw"JSON parse error"}function _getBasePath(){for(var a,b=document.getElementsByTagName("script"),c=0,d=b.length;d>c;c++)if(a=b[c].src||"",/kindeditor[\w\-\.]*\.js/.test(a))return a.substring(0,a.lastIndexOf("/")+1);return""}function _bindEvent(a,b,c){a.addEventListener?a.addEventListener(b,c,_useCapture):a.attachEvent&&a.attachEvent("on"+b,c)}function _unbindEvent(a,b,c){a.removeEventListener?a.removeEventListener(b,c,_useCapture):a.detachEvent&&a.detachEvent("on"+b,c)}function KEvent(a,b){this.init(a,b)}function _getId(a){return a[_eventExpendo]||null}function _setId(a){return a[_eventExpendo]=++_eventId,_eventId}function _removeId(a){try{delete a[_eventExpendo]}catch(b){a.removeAttribute&&a.removeAttribute(_eventExpendo)}}function _bind(a,b,c){if(b.indexOf(",")>=0)return void _each(b.split(","),function(){_bind(a,this,c)});var d=_getId(a);d||(d=_setId(a)),_eventData[d]===undefined&&(_eventData[d]={});var e=_eventData[d][b];e&&e.length>0?_unbindEvent(a,b,e[0]):(_eventData[d][b]=[],_eventData[d].el=a),e=_eventData[d][b],0===e.length&&(e[0]=function(b){var c=b?new KEvent(a,b):undefined;_each(e,function(b,d){b>0&&d&&d.call(a,c)})}),_inArray(c,e)<0&&e.push(c),_bindEvent(a,b,e[0])}function _unbind(a,b,c){if(b&&b.indexOf(",")>=0)return void _each(b.split(","),function(){_unbind(a,this,c)});var d=_getId(a);if(d){if(b===undefined)return void(d in _eventData&&(_each(_eventData[d],function(b,c){"el"!=b&&c.length>0&&_unbindEvent(a,b,c[0])}),delete _eventData[d],_removeId(a)));if(_eventData[d]){var e=_eventData[d][b];if(e&&e.length>0){c===undefined?(_unbindEvent(a,b,e[0]),delete _eventData[d][b]):(_each(e,function(a,b){a>0&&b===c&&e.splice(a,1)}),1==e.length&&(_unbindEvent(a,b,e[0]),delete _eventData[d][b]));var f=0;_each(_eventData[d],function(){f++}),2>f&&(delete _eventData[d],_removeId(a))}}}}function _fire(a,b){if(b.indexOf(",")>=0)return void _each(b.split(","),function(){_fire(a,this)});var c=_getId(a);if(c){var d=_eventData[c][b];_eventData[c]&&d&&d.length>0&&d[0]()}}function _ctrl(a,b,c){b=/^\d{2,}$/.test(b)?b:b.toUpperCase().charCodeAt(0),_bind(a,"keydown",function(d){!d.ctrlKey||d.which!=b||d.shiftKey||d.altKey||(c.call(a),d.stop())})}function _ready(a){function b(){e||(e=!0,a(KindEditor),_readyFinished=!0)}function c(){if(!e){try{document.documentElement.doScroll("left")}catch(a){return void setTimeout(c,100)}b()}}function d(){"complete"===document.readyState&&b()}if(_readyFinished)return void a(KindEditor);var e=!1;if(document.addEventListener)_bind(document,"DOMContentLoaded",b);else if(document.attachEvent){_bind(document,"readystatechange",d);var f=!1;try{f=null==window.frameElement}catch(g){}document.documentElement.doScroll&&f&&c()}_bind(window,"load",b)}function _getCssList(a){for(var b,c={},d=/\s*([\w\-]+)\s*:([^;]*)(;|$)/g;b=d.exec(a);){var e=_trim(b[1].toLowerCase()),f=_trim(_toHex(b[2]));c[e]=f}return c}function _getAttrList(a){for(var b,c={},d=/\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g;b=d.exec(a);){var e=(b[1]||b[2]||b[4]||b[6]).toLowerCase(),f=(b[2]?b[3]:b[4]?b[5]:b[7])||"";c[e]=f}return c}function _addClassToTag(a,b){return a=/\s+class\s*=/.test(a)?a.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/,function(a,c,d,e){return(" "+d+" ").indexOf(" "+b+" ")<0?""===d?c+b+e:c+d+" "+b+e:a}):a.substr(0,a.length-1)+' class="'+b+'">'}function _formatCss(a){var b="";return _each(_getCssList(a),function(a,c){b+=a+":"+c+";"}),b}function _formatUrl(a,b,c,d){function e(a){for(var b=a.split("/"),c=[],d=0,e=b.length;e>d;d++){var f=b[d];".."==f?c.length>0&&c.pop():""!==f&&"."!=f&&c.push(f)}return"/"+c.join("/")}function f(b,c){if(a.substr(0,b.length)===b){for(var e=[],g=0;c>g;g++)e.push("..");var i=".";return e.length>0&&(i+="/"+e.join("/")),"/"==d&&(i+="/"),i+a.substr(b.length)}return(h=/^(.*)\//.exec(b))?f(h[1],++c):void 0}if(b=_undef(b,"").toLowerCase(),"data:"!=a.substr(0,5)&&(a=a.replace(/([^:])\/\//g,"$1/")),_inArray(b,["absolute","relative","domain"])<0)return a;if(c=c||location.protocol+"//"+location.host,d===undefined){var g=location.pathname.match(/^(\/.*)\//);d=g?g[1]:""}var h;if(h=/^(\w+:\/\/[^\/]*)/.exec(a)){if(h[1]!==c)return a}else if(/^\w+:/.test(a))return a;return/^\//.test(a)?a=c+e(a.substr(1)):/^\w+:\/\//.test(a)||(a=c+e(d+"/"+a)),"relative"===b?a=f(c+d,0).substr(2):"absolute"===b&&a.substr(0,c.length)===c&&(a=a.substr(c.length)),a}function _formatHtml(a,b,c,d,e){null==a&&(a=""),c=c||"",d=_undef(d,!1),e=_undef(e," ");var f="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function(a,b,c,d){return b+c.replace(/<(?:br|br\s[^>]*)>/gi,"\n")+d}),a=a.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/gi,""),a=a.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/gi,"$1
$2"),a=a.replace(/\u200B/g,""),a=a.replace(/\u00A9/g,"©"),a=a.replace(/\u00AE/g,"®"),a=a.replace(/\u2003/g," "),a=a.replace(/\u3000/g," "),a=a.replace(/<[^>]+/g,function(a){return a.replace(/\s+/g," ")});var g={};b&&(_each(b,function(a,b){for(var c=a.split(","),d=0,e=c.length;e>d;d++)g[c[d]]=_toMap(b)}),g.script||(a=a.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/gi,"")),g.style||(a=a.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/gi,"")));var h=/(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g,i=[];return a=a.replace(h,function(a,h,j,k,l,m,n){var o=a,p=h||"",q=j||"",r=k.toLowerCase(),s=l||"",t=m?" "+m:"",u=n||"";if(b&&!g[r])return"";if(""===t&&_SINGLE_TAG_MAP[r]&&(t=" /"),_INLINE_TAG_MAP[r]&&(p&&(p=" "),u&&(u=" ")),_PRE_TAG_MAP[r]&&(q?u="\n":p="\n"),d&&"br"==r&&(u="\n"),_BLOCK_TAG_MAP[r]&&!_PRE_TAG_MAP[r])if(d){q&&i.length>0&&i[i.length-1]===r?i.pop():i.push(r),p="\n",u="\n";for(var v=0,w=q?i.length:i.length-1;w>v;v++)p+=e,q||(u+=e);t?i.pop():q||(u+=e)}else p=u="";if(""!==s){var x=_getAttrList(o);if("font"===r){var y={},z="";_each(x,function(a,b){"color"===a&&(y.color=b,delete x[a]),"size"===a&&(y["font-size"]=f[parseInt(b,10)-1]||"",delete x[a]),"face"===a&&(y["font-family"]=b,delete x[a]),"style"===a&&(z=b)}),z&&!/;$/.test(z)&&(z+=";"),_each(y,function(a,b){""!==b&&(/\s/.test(b)&&(b="'"+b+"'"),z+=a+":"+b+";")}),x.style=z}_each(x,function(a,d){if(_FILL_ATTR_MAP[a]&&(x[a]=a),_inArray(a,["src","href"])>=0&&(x[a]=_formatUrl(d,c)),(b&&"style"!==a&&!g[r]["*"]&&!g[r][a]||"body"===r&&"contenteditable"===a||/^kindeditor_\d+$/.test(a))&&delete x[a],"style"===a&&""!==d){var e=_getCssList(d);_each(e,function(a){!b||g[r].style||g[r]["."+a]||delete e[a]});var f="";_each(e,function(a,b){f+=a+":"+b+";"}),x.style=f}}),s="",_each(x,function(a,b){("style"!==a||""!==b)&&(b=b.replace(/"/g,"""),s+=" "+a+'="'+b+'"')})}return"font"===r&&(r="span"),p+"<"+q+r+s+t+">"+u}),a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function(a,b,c,d){return b+c.replace(/\n/g,'\n')+d}),a=a.replace(/\n\s*\n/g,"\n"),a=a.replace(/\n/g,"\n"),_trim(a)}function _clearMsWord(a,b){return a=a.replace(//gi,"").replace(//gi,"").replace(/"];return _isArray(c)||(c=[c]),_each(c,function(a,b){b&&e.push('')}),d&&e.push(""),e.push("