├── .gitignore ├── LICENSE ├── README.md ├── bin └── syncdb.py ├── conf ├── __init__.py ├── conf.yml ├── init_settings.py └── settings.py ├── docs └── images │ ├── zkdash_conf.jpg │ ├── zkdash_search.jpg │ ├── zkdash_snapshot.jpg │ └── zkdash_zookeeper.jpg ├── handler ├── __init__.py ├── api │ ├── __init__.py │ └── v1 │ │ ├── __init__.py │ │ └── feedback.py ├── auth │ ├── __init__.py │ └── index.py ├── bases │ ├── __init__.py │ ├── api_base.py │ ├── base.py │ └── common_base.py └── config │ ├── __init__.py │ ├── agent.py │ ├── snapshot.py │ ├── znode.py │ └── zookeeper.py ├── init.py ├── lib ├── __init__.py ├── db │ ├── __init__.py │ ├── database.py │ └── retrydb.py ├── excel │ ├── __init__.py │ └── excel.py ├── uimethods │ └── __init__.py ├── uimodule │ ├── __init__.py │ ├── paginate.py │ └── query.py ├── utils │ ├── __init__.py │ ├── logger.py │ ├── pyshell.py │ └── routes.py └── zyqconf │ ├── README.rst │ ├── __init__.py │ ├── hooks.py │ ├── qconf_py.so │ └── types.py ├── model ├── __init__.py └── db │ ├── __init__.py │ ├── base.py │ ├── zd_qconf_agent.py │ ├── zd_qconf_feedback.py │ ├── zd_snapshot.py │ ├── zd_snapshot_tree.py │ ├── zd_znode.py │ └── zd_zookeeper.py ├── requirements.txt ├── service ├── __init__.py ├── snapshot.py ├── znode.py └── zookeeper.py ├── static ├── BJUI │ ├── js │ │ ├── bjui-ajax.js │ │ ├── bjui-ajaxtab.js │ │ ├── bjui-alertmsg.js │ │ ├── bjui-all.js │ │ ├── bjui-basedrag.js │ │ ├── bjui-contextmenu.js │ │ ├── bjui-core.js │ │ ├── bjui-datagrid.js │ │ ├── bjui-datepicker.js │ │ ├── bjui-dialog.js │ │ ├── bjui-extends.js │ │ ├── bjui-frag.js │ │ ├── bjui-initui.js │ │ ├── bjui-lookup.js │ │ ├── bjui-navtab.js │ │ ├── bjui-pagination.js │ │ ├── bjui-plugins.js │ │ ├── bjui-regional.zh-CN.js │ │ ├── bjui-slidebar.js │ │ ├── bjui-spinner.js │ │ ├── bjui-tabledit.js │ │ ├── bjui-tablefixed.js │ │ ├── bjui-tags.js │ │ ├── bjui-taskbar.js │ │ ├── bjui-theme.js │ │ ├── bjui-upload.js │ │ ├── bjui-util.date.js │ │ ├── jquery-1.7.2.min.js │ │ ├── jquery.cookie.js │ │ ├── minify.sh │ │ └── yuicompressor-2.4.8.jar │ ├── other │ │ ├── html5shiv.min.js │ │ ├── jquery.iframe-transport.js │ │ └── respond.min.js │ ├── plugins │ │ ├── bootstrap.js │ │ ├── bootstrap.min.js │ │ ├── bootstrapSelect │ │ │ ├── bootstrap-select.css │ │ │ ├── bootstrap-select.css.map │ │ │ ├── bootstrap-select.js │ │ │ ├── bootstrap-select.js.map │ │ │ ├── bootstrap-select.min.js │ │ │ ├── defaults-zh_CN.js │ │ │ └── defaults-zh_CN.min.js │ │ ├── colorpicker │ │ │ ├── css │ │ │ │ ├── bootstrap-colorpicker.css │ │ │ │ └── bootstrap-colorpicker.min.css │ │ │ ├── img │ │ │ │ └── bootstrap-colorpicker │ │ │ │ │ ├── alpha-horizontal.png │ │ │ │ │ ├── alpha.png │ │ │ │ │ ├── hue-horizontal.png │ │ │ │ │ ├── hue.png │ │ │ │ │ └── saturation.png │ │ │ └── js │ │ │ │ ├── bootstrap-colorpicker.js │ │ │ │ └── bootstrap-colorpicker.min.js │ │ ├── download │ │ │ └── jquery.fileDownload.js │ │ ├── dragsort │ │ │ ├── jquery.dragsort-0.5.1.js │ │ │ └── jquery.dragsort-0.5.1.min.js │ │ ├── echarts │ │ │ ├── chart │ │ │ │ ├── bar.js │ │ │ │ ├── chord.js │ │ │ │ ├── eventRiver.js │ │ │ │ ├── force.js │ │ │ │ ├── funnel.js │ │ │ │ ├── gauge.js │ │ │ │ ├── k.js │ │ │ │ ├── line.js │ │ │ │ ├── map.js │ │ │ │ ├── pie.js │ │ │ │ ├── radar.js │ │ │ │ └── scatter.js │ │ │ ├── echarts.js │ │ │ └── theme │ │ │ │ ├── blue.js │ │ │ │ ├── dark.js │ │ │ │ ├── default.js │ │ │ │ ├── gray.js │ │ │ │ ├── green.js │ │ │ │ ├── helianthus.js │ │ │ │ ├── infographic.js │ │ │ │ ├── macarons.js │ │ │ │ ├── red.js │ │ │ │ └── shine.js │ │ ├── highcharts │ │ │ ├── adapters │ │ │ │ └── standalone-framework.js │ │ │ ├── highcharts-3d.js │ │ │ ├── highcharts-all.js │ │ │ ├── highcharts-more.js │ │ │ ├── highcharts.js │ │ │ ├── modules │ │ │ │ ├── canvas-tools.js │ │ │ │ ├── data.js │ │ │ │ ├── drilldown.js │ │ │ │ ├── exporting.js │ │ │ │ ├── funnel.js │ │ │ │ ├── heatmap.js │ │ │ │ ├── no-data-to-display.js │ │ │ │ └── solid-gauge.js │ │ │ └── themes │ │ │ │ ├── dark-blue.js │ │ │ │ ├── dark-green.js │ │ │ │ ├── dark-unica.js │ │ │ │ ├── gray.js │ │ │ │ ├── grid-light.js │ │ │ │ ├── grid.js │ │ │ │ ├── sand-signika.js │ │ │ │ └── skies.js │ │ ├── icheck │ │ │ ├── icheck.js │ │ │ └── icheck.min.js │ │ ├── kindeditor_4.1.10 │ │ │ ├── attached │ │ │ │ └── test.txt │ │ │ ├── editor-content.css │ │ │ ├── kindeditor-all-min.js │ │ │ ├── kindeditor-all.js │ │ │ ├── kindeditor-all.min.js │ │ │ ├── kindeditor-min.js │ │ │ ├── kindeditor.js │ │ │ ├── lang │ │ │ │ ├── ar.js │ │ │ │ ├── en.js │ │ │ │ ├── ko.js │ │ │ │ ├── zh_CN.js │ │ │ │ └── zh_TW.js │ │ │ ├── license.txt │ │ │ ├── php │ │ │ │ ├── JSON.php │ │ │ │ ├── demo.php │ │ │ │ ├── file_manager_json.php │ │ │ │ └── upload_json.php │ │ │ ├── plugins │ │ │ │ ├── anchor │ │ │ │ │ └── anchor.js │ │ │ │ ├── autoheight │ │ │ │ │ └── autoheight.js │ │ │ │ ├── baidumap │ │ │ │ │ ├── baidumap.js │ │ │ │ │ ├── index.html │ │ │ │ │ └── map.html │ │ │ │ ├── clearhtml │ │ │ │ │ └── clearhtml.js │ │ │ │ ├── code │ │ │ │ │ ├── code.js │ │ │ │ │ ├── prettify.css │ │ │ │ │ └── prettify.js │ │ │ │ ├── emoticons │ │ │ │ │ ├── emoticons.js │ │ │ │ │ └── images │ │ │ │ │ │ ├── 0.gif │ │ │ │ │ │ ├── 1.gif │ │ │ │ │ │ ├── 10.gif │ │ │ │ │ │ ├── 100.gif │ │ │ │ │ │ ├── 101.gif │ │ │ │ │ │ ├── 102.gif │ │ │ │ │ │ ├── 103.gif │ │ │ │ │ │ ├── 104.gif │ │ │ │ │ │ ├── 105.gif │ │ │ │ │ │ ├── 106.gif │ │ │ │ │ │ ├── 107.gif │ │ │ │ │ │ ├── 108.gif │ │ │ │ │ │ ├── 109.gif │ │ │ │ │ │ ├── 11.gif │ │ │ │ │ │ ├── 110.gif │ │ │ │ │ │ ├── 111.gif │ │ │ │ │ │ ├── 112.gif │ │ │ │ │ │ ├── 113.gif │ │ │ │ │ │ ├── 114.gif │ │ │ │ │ │ ├── 115.gif │ │ │ │ │ │ ├── 116.gif │ │ │ │ │ │ ├── 117.gif │ │ │ │ │ │ ├── 118.gif │ │ │ │ │ │ ├── 119.gif │ │ │ │ │ │ ├── 12.gif │ │ │ │ │ │ ├── 120.gif │ │ │ │ │ │ ├── 121.gif │ │ │ │ │ │ ├── 122.gif │ │ │ │ │ │ ├── 123.gif │ │ │ │ │ │ ├── 124.gif │ │ │ │ │ │ ├── 125.gif │ │ │ │ │ │ ├── 126.gif │ │ │ │ │ │ ├── 127.gif │ │ │ │ │ │ ├── 128.gif │ │ │ │ │ │ ├── 129.gif │ │ │ │ │ │ ├── 13.gif │ │ │ │ │ │ ├── 130.gif │ │ │ │ │ │ ├── 131.gif │ │ │ │ │ │ ├── 132.gif │ │ │ │ │ │ ├── 133.gif │ │ │ │ │ │ ├── 134.gif │ │ │ │ │ │ ├── 14.gif │ │ │ │ │ │ ├── 15.gif │ │ │ │ │ │ ├── 16.gif │ │ │ │ │ │ ├── 17.gif │ │ │ │ │ │ ├── 18.gif │ │ │ │ │ │ ├── 19.gif │ │ │ │ │ │ ├── 2.gif │ │ │ │ │ │ ├── 20.gif │ │ │ │ │ │ ├── 21.gif │ │ │ │ │ │ ├── 22.gif │ │ │ │ │ │ ├── 23.gif │ │ │ │ │ │ ├── 24.gif │ │ │ │ │ │ ├── 25.gif │ │ │ │ │ │ ├── 26.gif │ │ │ │ │ │ ├── 27.gif │ │ │ │ │ │ ├── 28.gif │ │ │ │ │ │ ├── 29.gif │ │ │ │ │ │ ├── 3.gif │ │ │ │ │ │ ├── 30.gif │ │ │ │ │ │ ├── 31.gif │ │ │ │ │ │ ├── 32.gif │ │ │ │ │ │ ├── 33.gif │ │ │ │ │ │ ├── 34.gif │ │ │ │ │ │ ├── 35.gif │ │ │ │ │ │ ├── 36.gif │ │ │ │ │ │ ├── 37.gif │ │ │ │ │ │ ├── 38.gif │ │ │ │ │ │ ├── 39.gif │ │ │ │ │ │ ├── 4.gif │ │ │ │ │ │ ├── 40.gif │ │ │ │ │ │ ├── 41.gif │ │ │ │ │ │ ├── 42.gif │ │ │ │ │ │ ├── 43.gif │ │ │ │ │ │ ├── 44.gif │ │ │ │ │ │ ├── 45.gif │ │ │ │ │ │ ├── 46.gif │ │ │ │ │ │ ├── 47.gif │ │ │ │ │ │ ├── 48.gif │ │ │ │ │ │ ├── 49.gif │ │ │ │ │ │ ├── 5.gif │ │ │ │ │ │ ├── 50.gif │ │ │ │ │ │ ├── 51.gif │ │ │ │ │ │ ├── 52.gif │ │ │ │ │ │ ├── 53.gif │ │ │ │ │ │ ├── 54.gif │ │ │ │ │ │ ├── 55.gif │ │ │ │ │ │ ├── 56.gif │ │ │ │ │ │ ├── 57.gif │ │ │ │ │ │ ├── 58.gif │ │ │ │ │ │ ├── 59.gif │ │ │ │ │ │ ├── 6.gif │ │ │ │ │ │ ├── 60.gif │ │ │ │ │ │ ├── 61.gif │ │ │ │ │ │ ├── 62.gif │ │ │ │ │ │ ├── 63.gif │ │ │ │ │ │ ├── 64.gif │ │ │ │ │ │ ├── 65.gif │ │ │ │ │ │ ├── 66.gif │ │ │ │ │ │ ├── 67.gif │ │ │ │ │ │ ├── 68.gif │ │ │ │ │ │ ├── 69.gif │ │ │ │ │ │ ├── 7.gif │ │ │ │ │ │ ├── 70.gif │ │ │ │ │ │ ├── 71.gif │ │ │ │ │ │ ├── 72.gif │ │ │ │ │ │ ├── 73.gif │ │ │ │ │ │ ├── 74.gif │ │ │ │ │ │ ├── 75.gif │ │ │ │ │ │ ├── 76.gif │ │ │ │ │ │ ├── 77.gif │ │ │ │ │ │ ├── 78.gif │ │ │ │ │ │ ├── 79.gif │ │ │ │ │ │ ├── 8.gif │ │ │ │ │ │ ├── 80.gif │ │ │ │ │ │ ├── 81.gif │ │ │ │ │ │ ├── 82.gif │ │ │ │ │ │ ├── 83.gif │ │ │ │ │ │ ├── 84.gif │ │ │ │ │ │ ├── 85.gif │ │ │ │ │ │ ├── 86.gif │ │ │ │ │ │ ├── 87.gif │ │ │ │ │ │ ├── 88.gif │ │ │ │ │ │ ├── 89.gif │ │ │ │ │ │ ├── 9.gif │ │ │ │ │ │ ├── 90.gif │ │ │ │ │ │ ├── 91.gif │ │ │ │ │ │ ├── 92.gif │ │ │ │ │ │ ├── 93.gif │ │ │ │ │ │ ├── 94.gif │ │ │ │ │ │ ├── 95.gif │ │ │ │ │ │ ├── 96.gif │ │ │ │ │ │ ├── 97.gif │ │ │ │ │ │ ├── 98.gif │ │ │ │ │ │ ├── 99.gif │ │ │ │ │ │ └── static.gif │ │ │ │ ├── filemanager │ │ │ │ │ ├── filemanager.js │ │ │ │ │ └── images │ │ │ │ │ │ ├── file-16.gif │ │ │ │ │ │ ├── file-64.gif │ │ │ │ │ │ ├── folder-16.gif │ │ │ │ │ │ ├── folder-64.gif │ │ │ │ │ │ └── go-up.gif │ │ │ │ ├── flash │ │ │ │ │ └── flash.js │ │ │ │ ├── image │ │ │ │ │ ├── image.js │ │ │ │ │ └── images │ │ │ │ │ │ ├── align_left.gif │ │ │ │ │ │ ├── align_right.gif │ │ │ │ │ │ ├── align_top.gif │ │ │ │ │ │ └── refresh.png │ │ │ │ ├── insertfile │ │ │ │ │ └── insertfile.js │ │ │ │ ├── lineheight │ │ │ │ │ └── lineheight.js │ │ │ │ ├── link │ │ │ │ │ └── link.js │ │ │ │ ├── map │ │ │ │ │ ├── map.html │ │ │ │ │ └── map.js │ │ │ │ ├── media │ │ │ │ │ └── media.js │ │ │ │ ├── multiimage │ │ │ │ │ ├── images │ │ │ │ │ │ ├── image.png │ │ │ │ │ │ ├── select-files-en.png │ │ │ │ │ │ ├── select-files-zh_CN.png │ │ │ │ │ │ └── swfupload.swf │ │ │ │ │ └── multiimage.js │ │ │ │ ├── pagebreak │ │ │ │ │ └── pagebreak.js │ │ │ │ ├── plainpaste │ │ │ │ │ └── plainpaste.js │ │ │ │ ├── preview │ │ │ │ │ └── preview.js │ │ │ │ ├── quickformat │ │ │ │ │ └── quickformat.js │ │ │ │ ├── table │ │ │ │ │ └── table.js │ │ │ │ ├── template │ │ │ │ │ ├── html │ │ │ │ │ │ ├── 1.html │ │ │ │ │ │ ├── 2.html │ │ │ │ │ │ └── 3.html │ │ │ │ │ └── template.js │ │ │ │ └── wordpaste │ │ │ │ │ └── wordpaste.js │ │ │ └── themes │ │ │ │ ├── common │ │ │ │ ├── anchor.gif │ │ │ │ ├── blank.gif │ │ │ │ ├── flash.gif │ │ │ │ ├── loading.gif │ │ │ │ ├── media.gif │ │ │ │ └── rm.gif │ │ │ │ ├── default │ │ │ │ ├── background.png │ │ │ │ ├── default.css │ │ │ │ └── default.png │ │ │ │ ├── qq │ │ │ │ ├── editor.gif │ │ │ │ └── qq.css │ │ │ │ └── simple │ │ │ │ └── simple.css │ │ ├── niceValidator │ │ │ ├── images │ │ │ │ ├── loading.gif │ │ │ │ ├── validator_default.png │ │ │ │ └── validator_simple.png │ │ │ ├── jquery.validator.css │ │ │ ├── jquery.validator.js │ │ │ ├── jquery.validator.themes.js │ │ │ └── local │ │ │ │ └── en.js │ │ ├── other │ │ │ ├── jquery.autosize.js │ │ │ └── respond.js │ │ ├── styles │ │ │ └── zTreeStyle │ │ │ │ ├── img │ │ │ │ ├── diy │ │ │ │ │ ├── 1_close.png │ │ │ │ │ ├── 1_open.png │ │ │ │ │ ├── 2.png │ │ │ │ │ ├── 3.png │ │ │ │ │ ├── 4.png │ │ │ │ │ ├── 5.png │ │ │ │ │ ├── 6.png │ │ │ │ │ ├── 7.png │ │ │ │ │ ├── 8.png │ │ │ │ │ └── 9.png │ │ │ │ ├── line_conn.gif │ │ │ │ ├── loading.gif │ │ │ │ ├── zTreeStandard.gif │ │ │ │ └── zTreeStandard.png │ │ │ │ └── zTreeStyle.css │ │ ├── swfupload │ │ │ ├── swfupload.js │ │ │ └── swfupload.min.js │ │ ├── uploadify │ │ │ ├── css │ │ │ │ └── uploadify.css │ │ │ ├── img │ │ │ │ ├── add.jpg │ │ │ │ ├── cancel.jpg │ │ │ │ ├── delete.jpg │ │ │ │ ├── upload.jpg │ │ │ │ └── uploadify-cancel.png │ │ │ └── scripts │ │ │ │ ├── jquery.uploadify.js │ │ │ │ ├── jquery.uploadify.min.js │ │ │ │ └── uploadify.swf │ │ └── ztree │ │ │ ├── jquery.ztree.all-3.5.js │ │ │ ├── jquery.ztree.all-3.5.min.js │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ ├── jquery.ztree.core-3.5.min.js │ │ │ ├── jquery.ztree.excheck-3.5.js │ │ │ ├── jquery.ztree.excheck-3.5.min.js │ │ │ ├── jquery.ztree.exedit-3.5.js │ │ │ ├── jquery.ztree.exedit-3.5.min.js │ │ │ ├── jquery.ztree.exhide-3.5.js │ │ │ └── jquery.ztree.exhide-3.5.min.js │ └── themes │ │ ├── blue │ │ ├── core.css │ │ ├── purple.png │ │ ├── purple@2x.png │ │ ├── topbg.png │ │ └── zTreeStandard.png │ │ ├── css │ │ ├── FA │ │ │ ├── css │ │ │ │ ├── font-awesome.css │ │ │ │ └── font-awesome.min.css │ │ │ └── fonts │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ └── fontawesome-webfont.woff2 │ │ ├── bootstrap.css │ │ ├── bootstrap.min.css │ │ ├── ie7.css │ │ ├── img │ │ │ ├── changed-flag-icon.png │ │ │ ├── diy │ │ │ │ ├── 1_close.png │ │ │ │ ├── 1_open.png │ │ │ │ ├── 2.png │ │ │ │ ├── 3.png │ │ │ │ ├── 4.png │ │ │ │ ├── 5.png │ │ │ │ ├── 6.png │ │ │ │ ├── 7.png │ │ │ │ ├── 8.png │ │ │ │ └── 9.png │ │ │ ├── error-bg.png │ │ │ ├── line_conn.gif │ │ │ ├── line_conn.png │ │ │ ├── loading.gif │ │ │ └── logo.png │ │ └── style.css │ │ ├── default │ │ ├── core.css │ │ ├── purple.png │ │ ├── purple@2x.png │ │ ├── topbg.png │ │ └── zTreeStandard.png │ │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff │ │ ├── green │ │ ├── core.css │ │ ├── purple.png │ │ ├── purple@2x.png │ │ ├── topbg.png │ │ └── zTreeStandard.png │ │ ├── orange │ │ ├── core.css │ │ ├── purple.png │ │ ├── purple@2x.png │ │ ├── topbg.png │ │ └── zTreeStandard.png │ │ └── purple │ │ ├── core.css │ │ ├── purple.png │ │ ├── purple@2x.png │ │ ├── topbg.png │ │ └── zTreeStandard.png ├── css │ ├── admin.css │ ├── base.css │ ├── doc │ │ └── doc.css │ ├── style.css │ └── table.css ├── images │ ├── 001.jpg │ ├── 002.jpg │ ├── 003.jpg │ ├── 004.jpg │ ├── 005.jpg │ ├── bjui-b.png │ ├── bodybg.jpg │ ├── btn.jpg │ ├── captcha.jpeg │ ├── domain_logo.png │ ├── group.png │ ├── inputbg.jpg │ ├── loginbg_01.jpg │ ├── loginbg_02.jpg │ ├── loginbg_03.jpg │ ├── loginbg_04.jpg │ ├── loginbg_05.jpg │ ├── loginbg_06.jpg │ ├── loginbg_07.jpg │ ├── loginbg_08.jpg │ ├── loginbg_09.jpg │ ├── loginbtnbg.jpg │ ├── logo.jpg │ ├── logo.png │ ├── logo_bootstrap.png │ ├── magage-bg.jpg │ ├── magage-img.jpg │ └── tablethbg.jpg └── js │ └── form_search.js └── tpl ├── config ├── agent │ ├── add.html │ ├── datagrid.html │ ├── edit.html │ ├── index.html │ └── watch.html ├── snapshot │ ├── displaytree.html │ ├── index.html │ └── view.html ├── znode │ ├── add.html │ ├── batchedit.html │ ├── displaytree.html │ ├── edit.html │ ├── index.html │ ├── syncstatus.html │ └── view.html └── zookeeper │ ├── add.html │ ├── datagrid.html │ ├── edit.html │ ├── index.html │ ├── stat.html │ └── statdetail.html ├── error └── error.html ├── index.html └── uimodule ├── paginate.html └── query.html /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | 3 | *.swp 4 | *.swo 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # zkdash 2 | 3 | zkdash是一个zookeeper的管理界面,也可以作为任何基于zookeeper的配置管理项目比如:Qconf 4 | 5 | ## 开发规划 6 | 7 | zkdash目前正在开发第二版本,更易用,更开发,拥有完善权限管理,支持zk,更易用。 8 | 第二版已经在着手开源相关工作,会打造一个基于配置中心,服务发现,CICD,CMDB一体化的微服务管理平台。 9 | 10 | ### zkdash页面展示 11 | 12 | ![zkdash_conf](docs/images/zkdash_conf.jpg) 13 | 14 | ![zkdash_search](docs/images/zkdash_search.jpg) 15 | 16 | ![zkdash_snapshot](docs/images/zkdash_snapshot.jpg) 17 | 18 | ![zkdash_zookeeper](docs/images/zkdash_zookeeper.jpg) 19 | 20 | 21 | ### 安装与运行 22 | 安装步骤 23 | 24 | - 安装并运行mysql 25 | 26 | - 安装python2.7, 版本最好 >= 2.7.6 27 | 28 | - 下载zkdash `git clone https://github.com/ireaderlab/zkdash.git` 29 | 30 | - 安装依赖项 31 | 32 | ``` 33 | cd zkdash 34 | pip install -r requirements.txt 35 | ``` 36 | 37 | - 设置配置文件 38 | 39 | 根据需要修改当前目录下./conf/conf.yml中相关配置信息,配置文件详细说明见后面 40 | 41 | - 同步数据库表结构 42 | 首先创建数据库zkdash,并设置数据库的用户名和密码 43 | 将配置文件的数据库的用户名和密码进行修改 44 | 45 | ``` 46 | DATABASE: 47 | db: 'zkdash' 48 | host: '192.168.1.1' # 修改为你的数据库地址 49 | port: 3306 # 设置端口号 50 | user: 'tokyo' # 修改用户名 51 | passwd: 'tokyo!' # 修改密码 52 | ``` 53 | 54 | 设置完成后进行初始化数据库 55 | 56 | ``` 57 | cd zkdash 58 | python ./bin/syncdb.py # 注意执行路径必须为./bin/syncdb.py 59 | ``` 60 | 61 | 说明:数据库使用mysql,创建表结构前请先配置数据库连接信息 62 | 63 | - 运行 64 | 65 | ``` 66 | cd zkdash 67 | python init.py -port=8888 68 | ``` 69 | 70 | 说明:初次运行zkdash时需要到zookeeper管理菜单下增加监控的zookeeper集群ip信息 71 | 72 | 73 | ### 配置文件说明 74 | 75 | 配置文件详细说明 76 | 77 | 数据库配置项(DATABASE) 78 | 79 | - db: 数据库名称 80 | - host: ip地址 81 | - port: 端口号 82 | - user: 用户名 83 | - passwd: 密码 84 | 85 | 全局配置项 86 | 87 | - USE_QCONF: 是否通过QConf获取zookeeper数据(使用该项可以提高树形展示配置信息的响应速度) 88 | 89 | 90 | ### 与QConf的搭配使用 91 | 92 | - 反馈服务器地址:http://ip:port/api/v1/feedback(Agent同步状况查看依赖此反馈信息) 93 | 94 | 95 | ### 注意事项 96 | 1. 新增节点需要先指定父节点,并且只能逐级增加 97 | 2. 当设置使用QConf获取zookeeper数据时,zookeeper管理菜单下的zookeeper集群名称需要与QConf 98 | 客户端Agent配置文件的idc名称一致 99 | -------------------------------------------------------------------------------- /bin/syncdb.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | ''' 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: syncdb.py 9 | 创 建 者: zhuangshixiong 10 | 创建日期: 2015-10-10 11 | ''' 12 | # pylint: disable=import-error, unused-variable, protected-access 13 | import sys 14 | import os 15 | import pkgutil 16 | sys.path.append(os.path.dirname(os.path.split(os.path.realpath(__file__))[0])) 17 | 18 | import model.db 19 | from model.db.base import ZKDASH_DB 20 | from lib.utils import find_subclasses 21 | 22 | 23 | def sync_db(): 24 | """sync db 25 | """ 26 | # firstly, import all modules of model.db package 27 | prefix = model.db.__name__ + "." 28 | for importer, modname, ispkg in pkgutil.iter_modules(model.db.__path__, prefix): 29 | __import__(modname) 30 | 31 | # then, find all subclasses of WARSHIP_DB.Model 32 | models = find_subclasses(ZKDASH_DB.Model) 33 | for mod in models: 34 | if mod.table_exists(): 35 | print "table exists: %s, drop it!" % mod._meta.db_table 36 | mod.drop_table() 37 | mod.create_table() 38 | print "created table: %s" % mod._meta.db_table 39 | 40 | 41 | if __name__ == '__main__': 42 | sync_db() 43 | -------------------------------------------------------------------------------- /conf/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-01-13 11 | """ 12 | # pylint: disable=invalid-name 13 | 14 | # initailize log 15 | import logging 16 | log = logging.getLogger() 17 | 18 | # initialize conf.settings module which stores conf info 19 | import conf.init_settings 20 | -------------------------------------------------------------------------------- /conf/conf.yml: -------------------------------------------------------------------------------- 1 | # database 2 | DATABASE: 3 | db: 'zkdash' 4 | host: '192.168.1.1' 5 | port: 3306 6 | user: 'tokyo' 7 | passwd: 'tokyo!' 8 | 9 | # 是否通过QConf获取zookeeper数据(使用该项需要在本地先运行QConf客户端agent) 10 | USE_QCONF: False 11 | 12 | # log conf 13 | LOG_ITEMS: 14 | - file: /data/logs/zkdash/zkdash.log 15 | log_levels: 16 | - DEBUG 17 | - INFO 18 | - WARNING 19 | - ERROR 20 | - CRITICAL 21 | format: '[%(levelname)s %(asctime)s %(filename)s %(lineno)d] %(message)s' 22 | when: 'midnight' 23 | interval: 1 24 | backup_count: 10 25 | backup_suffix: '%Y%m%d' 26 | level: 'DEBUG' 27 | - file: /data/logs/zkdash/zkdash.error.log 28 | log_levels: 29 | - WARNING 30 | - ERROR 31 | - CRITICAL 32 | format: '[%(levelname)s %(asctime)s %(filename)s %(lineno)d] %(message)s' 33 | when: 'midnight' 34 | interval: 1 35 | backup_count: 30 36 | backup_suffix: '%Y%m%d' 37 | level: 'DEBUG' 38 | -------------------------------------------------------------------------------- /conf/init_settings.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | ''' 5 | Copyright (c) 2013,掌阅科技 6 | All rights reserved. 7 | 8 | File Name: init_settings.py 9 | Author: zhuangshixiong 10 | Created on: 2015-10-15 11 | ''' 12 | import os 13 | import sys 14 | import imp 15 | 16 | import yaml 17 | import tornado 18 | from tornado.options import define, options 19 | 20 | define("port", default=8080, help="port to listen", type=int) 21 | define("debug", default=True, help="debug mode or not") 22 | 23 | tornado.options.parse_command_line() 24 | 25 | if options.debug: 26 | import tornado.autoreload 27 | 28 | 29 | def create_settings_module(file_name): 30 | """ create settings module from config file 31 | """ 32 | conf_data = None 33 | with open(file_name, 'r') as conf_file: 34 | conf_data = yaml.load(conf_file) 35 | if not isinstance(conf_data, dict): 36 | raise Exception("config file not parsed correctly") 37 | 38 | module = imp.new_module('settings') 39 | module.__dict__.update(conf_data) 40 | module.__dict__.update({'OPTIONS': options}) 41 | return module 42 | 43 | 44 | # 根据配置文件生成配置模块,供全局使用 45 | settings_module = create_settings_module('{}/conf/conf.yml'.format(os.getcwd())) 46 | sys.modules['conf.settings'] = settings_module 47 | -------------------------------------------------------------------------------- /conf/settings.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | Copyright (c) 2014,掌阅科技 5 | All rights reserved. 6 | 7 | 摘 要: settings.py 8 | 创 建 者: zhuangshixiong 9 | 创建日期: 2015-09-23 10 | ''' 11 | 12 | 13 | if __name__ == '__main__': 14 | pass 15 | -------------------------------------------------------------------------------- /docs/images/zkdash_conf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/docs/images/zkdash_conf.jpg -------------------------------------------------------------------------------- /docs/images/zkdash_search.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/docs/images/zkdash_search.jpg -------------------------------------------------------------------------------- /docs/images/zkdash_snapshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/docs/images/zkdash_snapshot.jpg -------------------------------------------------------------------------------- /docs/images/zkdash_zookeeper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/docs/images/zkdash_zookeeper.jpg -------------------------------------------------------------------------------- /handler/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-01-13 11 | """ 12 | 13 | 14 | if __name__ == '__main__': 15 | pass 16 | -------------------------------------------------------------------------------- /handler/api/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-01-13 11 | """ 12 | 13 | 14 | if __name__ == '__main__': 15 | pass 16 | -------------------------------------------------------------------------------- /handler/api/v1/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-01-13 11 | """ 12 | 13 | 14 | if __name__ == '__main__': 15 | pass 16 | -------------------------------------------------------------------------------- /handler/api/v1/feedback.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: feedback.py 9 | 创 建 者: zhuangshixiong 10 | 创建日期: 2015-06-24 11 | """ 12 | from datetime import datetime 13 | 14 | from handler.bases import ApiBaseHandler 15 | from handler.bases import ArgsMap 16 | from lib import route 17 | from model.db.zd_qconf_feedback import ZdQconfFeedback 18 | 19 | 20 | @route(r'/api/v1/feedback') 21 | class ZdQconfFeedbackSaveHandler(ApiBaseHandler): 22 | """save 23 | """ 24 | args_list = [ 25 | ArgsMap('id', default=''), 26 | ArgsMap('hostname', default=''), 27 | ArgsMap('ip', default=''), 28 | ArgsMap('node_whole', default=''), 29 | ArgsMap('value_md5', default=''), 30 | ArgsMap('idc', default=''), 31 | ArgsMap('update_time', default=''), 32 | ArgsMap('data_type', default=''), 33 | ArgsMap('deleted', default=''), 34 | ] 35 | 36 | def response(self): 37 | '''add 38 | ''' 39 | feedback = ZdQconfFeedback.one(idc=self.idc, ip=self.ip, path=self.node_whole) 40 | if feedback is None: 41 | # create new feedback record 42 | feedback = ZdQconfFeedback() 43 | # 填充字段 44 | if self.idc: 45 | feedback.idc = self.idc 46 | if self.ip: 47 | feedback.ip = self.ip 48 | if self.hostname: 49 | feedback.hostname = self.hostname 50 | if self.node_whole: 51 | feedback.path = self.node_whole 52 | if self.value_md5: 53 | feedback.md5_value = self.value_md5 54 | if self.update_time: 55 | # convert unix timestamp to datetime 56 | update_time = datetime.fromtimestamp( 57 | int(self.update_time)).strftime('%Y-%m-%d %H:%M:%S') 58 | feedback.update_time = update_time 59 | if self.data_type: 60 | feedback.data_type = self.data_type 61 | # 自定义字段 62 | if self.deleted: 63 | feedback.deleted = self.deleted 64 | feedback.save() 65 | # qconf protocol, return '0' means ok 66 | self.finish('0') 67 | -------------------------------------------------------------------------------- /handler/auth/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-01-13 11 | """ 12 | 13 | 14 | if __name__ == '__main__': 15 | pass 16 | -------------------------------------------------------------------------------- /handler/auth/index.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: index.py 9 | 创 建 者: zhuangshixiong 10 | 创建日期: 2015-10-09 11 | """ 12 | from handler.bases import CommonBaseHandler 13 | from lib import route 14 | 15 | 16 | @route(r'/') 17 | class IndexHandler(CommonBaseHandler): 18 | 19 | '''配置管理系统页面入口 20 | ''' 21 | 22 | def response(self): 23 | return self.render('index.html') 24 | 25 | 26 | @route(r'/auth/index/main', '首页') 27 | class IndexMainHandler(CommonBaseHandler): 28 | 29 | '''首页 30 | ''' 31 | 32 | def response(self): 33 | self.finish() 34 | -------------------------------------------------------------------------------- /handler/bases/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: base.py,2014-12-5日添加文件头文档 9 | 创 建 者: WangLichao 10 | 创建日期: 2014-12-5 11 | """ 12 | from handler.bases.base import RestHandler 13 | from handler.bases.base import ArgsMap 14 | from handler.bases.common_base import CommonBaseHandler 15 | from handler.bases.api_base import ApiBaseHandler 16 | -------------------------------------------------------------------------------- /handler/bases/api_base.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | ''' 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: api_base.py 9 | 创 建 者: ZengDuju 10 | 创建日期: 2015-04-10 11 | ''' 12 | from handler.bases import CommonBaseHandler 13 | 14 | 15 | class ApiBaseHandler(CommonBaseHandler): 16 | """ApiBaseHandler 不进行XSRF cookie检查 17 | """ 18 | 19 | def check_xsrf_cookie(self): 20 | """重写check_xsrf_cookie 21 | """ 22 | pass 23 | -------------------------------------------------------------------------------- /handler/config/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | ''' 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: zhuangshixiong 10 | 创建日期: 2015-06-12 11 | ''' 12 | 13 | 14 | if __name__ == '__main__': 15 | pass 16 | -------------------------------------------------------------------------------- /init.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | ''' 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: init.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2014-10-13 11 | ''' 12 | import os 13 | # tornado 14 | import tornado.httpserver 15 | import tornado.ioloop 16 | # lib 17 | from lib import load 18 | from lib import uimodule, uimethods 19 | from lib.utils import logger 20 | from lib.utils import pyshell 21 | # conf 22 | from conf import log 23 | from conf.settings import ( 24 | LOG_ITEMS, 25 | OPTIONS, 26 | ) 27 | 28 | 29 | class Application(tornado.web.Application): 30 | 31 | """应用程序启动初始化 32 | """ 33 | 34 | def __init__(self): 35 | routes = load('handler') 36 | settings = { 37 | 'static_path': os.path.join(os.path.dirname(__file__), "static"), 38 | 'template_path': os.path.join(os.path.dirname(__file__), "tpl"), 39 | 'xsrf_cookies': True, 40 | 'cookie_secret': 'tokyo', 41 | 'site_title': 'zkdash', 42 | 'ui_modules': uimodule, 43 | 'ui_methods': uimethods, 44 | 'debug': OPTIONS.debug, 45 | } 46 | tornado.web.Application.__init__(self, routes, **settings) 47 | 48 | def log_request(self, handler): 49 | """重写tornado request日志 50 | """ 51 | status = handler.get_status() 52 | if status < 400: 53 | if handler.request.uri[0:7] == '/static': 54 | return 55 | log_method = log.info 56 | elif status < 500: 57 | log_method = log.warning 58 | else: 59 | log_method = log.error 60 | request_time = 1000.0 * handler.request.request_time() 61 | if request_time > 30 or OPTIONS.debug or status >= 400: 62 | log_method("%d %s %.2fms", 63 | status, 64 | handler._request_summary(), 65 | request_time) 66 | 67 | 68 | def make_clean(): 69 | '''清理文件 70 | ''' 71 | pyshell.shell("find . -name '*.pyc' | xargs rm -rf", debug=True) 72 | 73 | 74 | def main(): 75 | """主程序入口 76 | """ 77 | logger.init_logger(LOG_ITEMS, suffix=OPTIONS.port) 78 | application = Application() 79 | http_server = tornado.httpserver.HTTPServer(application, 80 | xheaders=True) 81 | http_server.listen(OPTIONS.port) 82 | tornado.ioloop.IOLoop.instance().start() 83 | 84 | if __name__ == "__main__": 85 | make_clean() 86 | main() 87 | -------------------------------------------------------------------------------- /lib/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: Wanglichao 10 | 创建日期: 2014-12-06 11 | """ 12 | 13 | from lib.utils.routes import Route as route 14 | from lib.utils.routes import load 15 | -------------------------------------------------------------------------------- /lib/db/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: WangLiChao 10 | 创建日期: 2014-12-06 11 | """ 12 | -------------------------------------------------------------------------------- /lib/db/database.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: database.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-01-26 11 | """ 12 | # pylint: disable=invalid-name, bare-except 13 | from lib.db.retrydb import MyRetryDB 14 | from peewee import Model as _Model 15 | from peewee import DoesNotExist 16 | from peewee import OperationalError 17 | 18 | 19 | class Database(object): 20 | 21 | '''db封装,自动查找数据库 22 | ''' 23 | 24 | def __init__(self, **connect_kwargs): 25 | self.connect_kwargs = connect_kwargs 26 | self.load_database() 27 | self.Model = self.get_model_class() 28 | 29 | def load_database(self): 30 | self.db = self.connect_kwargs.pop('db') 31 | self.database = MyRetryDB(self.db, **self.connect_kwargs) 32 | self.database.field_overrides.update({'enum': 'enum'}) # 增加枚举类型 33 | 34 | def get_model_class(self): 35 | '''获取基类model 36 | ''' 37 | class BaseModel(_Model): 38 | 39 | '''BaseModel的封装 40 | ''' 41 | 42 | class Meta(object): 43 | '''元类 44 | ''' 45 | database = self.database 46 | 47 | @classmethod 48 | def one(cls, *query, **kwargs): 49 | '''获取单条数据 50 | Retruns: 51 | 返回单条数据不存在则返回None 52 | ''' 53 | try: 54 | return cls.get(*query, **kwargs) 55 | except DoesNotExist: 56 | return None 57 | 58 | def delete_instance(self, *args, **kwargs): 59 | '''如果deleted字段存在自动使用逻辑删除 60 | ''' 61 | if 'deleted' in self._meta.fields: 62 | setattr(self, 'deleted', '1') 63 | super(BaseModel, self).save() 64 | else: 65 | super(BaseModel, self).delete_instance(*args, **kwargs) 66 | 67 | def __hash__(self): 68 | """提供hash支持 69 | """ 70 | return hash(self.id) 71 | 72 | return BaseModel 73 | 74 | def connect(self): 75 | '''主从建立连接,如果连接关闭重试 76 | ''' 77 | i = 0 78 | while i < 4: 79 | try: 80 | if self.database.is_closed(): 81 | self.database.get_conn().ping(True) 82 | break 83 | except OperationalError: 84 | self.close() 85 | i = i + 1 86 | 87 | def close(self): 88 | '''关闭连接 89 | ''' 90 | try: 91 | self.database.close() 92 | except: 93 | pass 94 | -------------------------------------------------------------------------------- /lib/db/retrydb.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | Copyright (c) 2014,掌阅科技 4 | All rights reserved. 5 | 6 | 摘 要: retrydb.py 7 | 创 建 者: zxb 8 | 创建日期: 2015-10-13 9 | """ 10 | from peewee import MySQLDatabase 11 | from peewee import OperationalError 12 | 13 | 14 | class RetryDBMixin(object): 15 | 16 | __slots__ = () 17 | 18 | def execute_sql(self, sql, params=None, require_commit=True): 19 | try: 20 | cursor = super(RetryDBMixin, self).execute_sql( 21 | sql, params, require_commit) 22 | except OperationalError: 23 | if not self.is_closed(): 24 | # 手动关闭连接 25 | self.close() 26 | cursor = self.get_cursor() 27 | cursor.execute(sql, params or ()) 28 | if require_commit and self.get_autocommit(): 29 | self.commit() 30 | return cursor 31 | 32 | 33 | class MyRetryDB(RetryDBMixin, MySQLDatabase): 34 | pass 35 | -------------------------------------------------------------------------------- /lib/excel/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | ''' 5 | Copyright (c) 2015,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-04-09 11 | ''' 12 | from lib.excel.excel import ExcelWorkBook 13 | -------------------------------------------------------------------------------- /lib/uimethods/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | ''' 5 | Copyright (c) 2015,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: zhuangshixiong 10 | 创建日期: 2015-10-10 11 | ''' 12 | 13 | if __name__ == '__main__': 14 | pass 15 | -------------------------------------------------------------------------------- /lib/uimodule/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-02-06 11 | """ 12 | from lib.uimodule.paginate import Paginate 13 | from lib.uimodule.query import Query 14 | -------------------------------------------------------------------------------- /lib/uimodule/paginate.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: paginate.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-02-06 11 | """ 12 | # pylint: disable=arguments-differ 13 | from tornado.web import UIModule 14 | 15 | 16 | class Paginate(UIModule): 17 | 18 | '''分页组件 19 | ''' 20 | 21 | def render(self, total, current_page, page_size): 22 | ''' 23 | Args: 24 | total: 总数 25 | current_page: 当前页 26 | page_size: 页码数 27 | ''' 28 | return self.render_string("uimodule/paginate.html", 29 | total=total, 30 | current_page=current_page, 31 | page_size=page_size) 32 | -------------------------------------------------------------------------------- /lib/uimodule/query.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2015,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: query.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-03-06 11 | """ 12 | # pylint: disable=arguments-differ 13 | from tornado.web import UIModule 14 | 15 | OPERATOR = { 16 | 'like': '包含', 17 | '=': '等于', 18 | '!=': '不等于', 19 | '>': '大于', 20 | '>=': '大于等于', 21 | '<': '小于', 22 | '<=': '小于等于', 23 | } 24 | 25 | 26 | class Query(UIModule): 27 | 28 | '''操作条件 29 | ''' 30 | 31 | def render(self, column, default_column, 32 | default_operator, time_flag=False): 33 | ''' 34 | Args: 35 | column: 数据库列字典 36 | default_column: 默认列 37 | operator: 操作字典 38 | default_operator: 默认操作 39 | time_flag: 输入为时间字段标记 40 | ''' 41 | return self.render_string("uimodule/query.html", 42 | column=column, 43 | default_column=default_column, 44 | default_operator=default_operator, 45 | operator=OPERATOR, 46 | time_flag=time_flag) 47 | -------------------------------------------------------------------------------- /lib/utils/logger.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | ''' 5 | Copyright (c) 2013,掌阅科技 6 | All rights reserved. 7 | 8 | File Name: logger.py 9 | Author: WangLichao 10 | Created on: 2014-03-28 11 | ''' 12 | import os 13 | import os.path 14 | import logging 15 | import logging.handlers 16 | LOGGER_LEVEL = { 17 | 'DEBUG': logging.DEBUG, 18 | 'INFO': logging.INFO, 19 | 'WARNING': logging.WARNING, 20 | 'ERROR': logging.ERROR, 21 | 'CRITICAL': logging.CRITICAL 22 | } 23 | 24 | 25 | def init_logger(log_conf_items, suffix=None, log_name=None): 26 | """ 27 | 初始化logger. 28 | Args: 29 | log_conf_items: 配置项list. 30 | """ 31 | logger = logging.getLogger(log_name) 32 | for log_item in log_conf_items: 33 | path = os.path.expanduser(log_item['file']) 34 | if suffix: 35 | path = '%s.%s' % (path, suffix) 36 | dir_name = os.path.dirname(path) 37 | if dir_name and not os.path.exists(dir_name): 38 | os.makedirs(dir_name) 39 | handler = logging.handlers.TimedRotatingFileHandler( 40 | path, 41 | when=log_item['when'], 42 | interval=int(log_item['interval']), 43 | backupCount=int(log_item['backup_count']), 44 | ) 45 | enable_levels = [LOGGER_LEVEL[i] for i in log_item['log_levels']] 46 | handler.addFilter(LevelFilter(enable_levels, False)) 47 | handler.suffix = log_item['backup_suffix'] 48 | formatter = logging.Formatter(log_item['format']) 49 | handler.setFormatter(formatter) 50 | logger.addHandler(handler) 51 | logger.setLevel(log_item['level']) 52 | 53 | 54 | class LevelFilter(logging.Filter): 55 | 56 | '''日志过滤器 57 | ''' 58 | 59 | def __init__(self, passlevels, reject): 60 | super(LevelFilter, self).__init__() 61 | self.passlevels = passlevels 62 | self.reject = reject 63 | 64 | def filter(self, record): 65 | if self.reject: 66 | return record.levelno not in self.passlevels 67 | else: 68 | return record.levelno in self.passlevels 69 | 70 | if __name__ == '__main__': 71 | LOG_CONF = [{'name': 'operation', 'file': 'log/operation.log', 72 | 'level': 'DEBUG', 'format': '%(asctime)s %(levelname)s %(message)s'}] 73 | init_logger(LOG_CONF) 74 | -------------------------------------------------------------------------------- /lib/utils/pyshell.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | ''' 5 | Copyright (c) 2013,掌阅科技 6 | All rights reserved. 7 | 8 | File Name: pyshell.py 9 | Author: WangLichao 10 | Created on: 2014-03-21 11 | ''' 12 | import subprocess 13 | import time 14 | 15 | 16 | def wait_process_end(process, timeout): 17 | '''等待进程终止 18 | Args: 19 | process: 进程句柄 20 | timeout: 超时时间 21 | Returns: 22 | 与shell的执行保持一致 23 | 0:成功 24 | 1:超时 25 | 2:错误 26 | ''' 27 | if timeout <= 0: 28 | process.wait() 29 | return 0 30 | start_time = time.time() 31 | end_time = start_time + timeout 32 | while 1: 33 | ret = process.poll() 34 | if ret == 0: 35 | return 0 36 | elif ret is None: 37 | cur_time = time.time() 38 | if cur_time >= end_time: 39 | return 1 40 | time.sleep(0.1) 41 | else: 42 | return 2 43 | 44 | 45 | class ShellResult(object): 46 | 47 | '''封装shell执行的返回结果形式 48 | Attributes: 49 | return_code: 返回码 50 | stdout:标准输出 51 | stderr: 错误输出 52 | ''' 53 | 54 | def __init__(self, return_code, stdout, stderr): 55 | self.return_code = return_code 56 | self.stdout = stdout 57 | self.stderr = stderr 58 | 59 | 60 | def shell(command, timeout=0, capture=False, debug=False): 61 | '''用于执行本地shell的功能 62 | Args: 63 | command: bash命令 64 | timeout: 命令的超时时间 65 | capture: 是否捕获输出结果 66 | debug: 是否输出debug信息 67 | Returns: 68 | 返回ShellResult对象 69 | ''' 70 | if debug: 71 | print '=' * 35 72 | print '[local] ' + command 73 | print '=' * 35 74 | if capture: 75 | process = subprocess.Popen(command, stdin=subprocess.PIPE, 76 | stderr=subprocess.PIPE, 77 | stdout=subprocess.PIPE, 78 | shell=True) 79 | else: 80 | process = subprocess.Popen(command, shell=True) 81 | ret = wait_process_end(process, timeout) 82 | if ret == 1: 83 | process.terminate() 84 | raise Exception("terminated_for_timout") 85 | if capture: 86 | stdout = ''.join(process.stdout.readlines()) 87 | stderr = ''.join(process.stderr.readlines()) 88 | return ShellResult(process.returncode, stdout, stderr) 89 | else: 90 | return ShellResult(process.returncode, None, None) 91 | -------------------------------------------------------------------------------- /lib/zyqconf/README.rst: -------------------------------------------------------------------------------- 1 | ======= 2 | zyqconf 3 | ======= 4 | 配置管理系统配套的python客户端 5 | 6 | 项目描述 7 | -------- 8 | - QConf客户端python驱动包的进一步封装,与配置管理系统配套使用 9 | - 使用yaml对配置信息进行序列化,以便支持int和float类型 10 | - 支持python复杂数据结构,dict和list 11 | - 所有配置信息都是只可读,任何会改变配置信息的方法均不支持(dict和list的一些方法因此未提供支持) 12 | 13 | 项目依赖 14 | -------- 15 | - QConf agent 16 | - yaml 17 | 18 | 版本变更 19 | -------- 20 | - v0.0.1 21 | 提供基本功能 22 | - v1.0.0 23 | 增加钩子功能,方便在通过QConf获取配置失败时执行自定义函数 24 | 25 | 使用举例 26 | -------- 27 | 28 | 获取配置管理系统的配置:: 29 | import zyqconf 30 | 31 | # 字典节点需要存储特殊值 `DICT_ZNODE` 32 | dict_conf = zyqconf.DictNode('dict_node_path') 33 | print dict_conf.get('conf', '') 34 | print dict_conf.as_dict() 35 | 36 | # 列表节点需要存储特殊值 `LIST_ZNODE` 37 | list_conf = zyqconf.ListNode('list_node_path') 38 | print len(list_conf) 39 | print list_conf.as_list() 40 | 41 | 通过钩子注册获取配置失败时执行的回调函数:: 42 | import zyqconf 43 | 44 | @zyqconf.hooks.on(zyqconf.HOOK_CONF_ERROR) 45 | def conf_error(path, exc_info): 46 | # do whatever you want 47 | print "conf error, path: {0}\n{1}".format(path, exc_info) 48 | -------------------------------------------------------------------------------- /lib/zyqconf/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | Copyright (c) 2014,掌阅科技 5 | All rights reserved. 6 | 7 | 摘 要: __init__.py 8 | 创 建 者: zhuangshixiong 9 | 创建日期: 2015-09-09 10 | ''' 11 | # pylint: disable=relative-import 12 | import qconf_py 13 | import hooks 14 | from .types import ( 15 | QconfNode, 16 | ListNode, 17 | DictNode, 18 | HOOK_CONF_ERROR, 19 | ) 20 | 21 | __version__ = '1.0.0' 22 | 23 | __all__ = [ 24 | 'qconf_py', 25 | 'hooks', 26 | 'QconfNode', 27 | 'DictNode', 28 | 'ListNode', 29 | 'HOOK_CONF_ERROR', 30 | ] 31 | -------------------------------------------------------------------------------- /lib/zyqconf/hooks.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | Copyright (c) 2014,掌阅科技 5 | All rights reserved. 6 | 7 | 摘 要: hooks.py 8 | 创 建 者: zhuangshixiong 9 | 创建日期: 2015-09-22 10 | ''' 11 | # pylint: disable=invalid-name, missing-docstring 12 | from collections import defaultdict 13 | 14 | 15 | class Hook(object): 16 | """ 17 | A single hook that can be listened for. 18 | """ 19 | def __init__(self): 20 | self.subscribers = [] 21 | 22 | def attach(self, task): 23 | """attach a task to this hook. 24 | """ 25 | self.subscribers.append(task) 26 | 27 | def detach(self, task): 28 | """detach a task from this hook 29 | """ 30 | self.subscribers.remove(task) 31 | 32 | def send(self, **kwargs): 33 | """send msg to tasks and return their results. 34 | """ 35 | return [task(**kwargs) for task in self.subscribers] 36 | 37 | 38 | _HOOKS = defaultdict(Hook) 39 | 40 | 41 | def all_hooks(): 42 | """ 43 | Return all registered hooks. 44 | """ 45 | return _HOOKS 46 | 47 | 48 | def get_hook(name): 49 | """ 50 | Return hook with given name, creating it if necessary. 51 | """ 52 | return _HOOKS[name] 53 | 54 | 55 | def on(name): 56 | """Return a decorator that attach the wrapped function to the hook with given name. 57 | """ 58 | hook = get_hook(name) 59 | 60 | def hook_decorator(func): 61 | hook.attach(func) 62 | return func 63 | return hook_decorator 64 | -------------------------------------------------------------------------------- /lib/zyqconf/qconf_py.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/lib/zyqconf/qconf_py.so -------------------------------------------------------------------------------- /model/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-01-13 11 | """ 12 | 13 | 14 | if __name__ == '__main__': 15 | pass 16 | -------------------------------------------------------------------------------- /model/db/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-01-13 11 | """ 12 | 13 | 14 | if __name__ == '__main__': 15 | pass 16 | -------------------------------------------------------------------------------- /model/db/base.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: base.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-01-22 11 | """ 12 | from peewee import Field 13 | 14 | from lib.db.database import Database 15 | from conf.settings import DATABASE 16 | 17 | # 后台管理数据库 18 | ZKDASH_DB = Database(**DATABASE) 19 | 20 | 21 | class EnumField(Field): 22 | """自定义枚举类型字段, peewee中不提供枚举类型 23 | """ 24 | db_field = 'enum' 25 | 26 | def __init__(self, enum_value=None, *args, **kwargs): 27 | """枚举初始化 28 | """ 29 | self.enum_value = enum_value 30 | super(EnumField, self).__init__(*args, **kwargs) 31 | 32 | def get_modifiers(self): 33 | """使用传递的枚举值 34 | """ 35 | return self.enum_value and [self.enum_value] or None 36 | -------------------------------------------------------------------------------- /model/db/zd_qconf_agent.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # pylint: disable=invalid-name 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: zd_qconf_agent.py 9 | 创 建 者: zhuangshixiong 10 | 创建日期: 2015-08-26 11 | """ 12 | from peewee import CharField 13 | from peewee import IntegerField 14 | from peewee import SQL 15 | 16 | from model.db.base import ZKDASH_DB, EnumField 17 | 18 | 19 | class ZdQconfAgent(ZKDASH_DB.Model): 20 | 21 | """ZdQconfAgent Model 22 | """ 23 | 24 | id = IntegerField(primary_key=True, constraints=[SQL("AUTO_INCREMENT")]) 25 | ip = CharField(max_length=32, null=True) 26 | hostname = CharField(max_length=32, null=True) 27 | cluster_name = CharField(max_length=32, null=True) 28 | notes = CharField(max_length=255, null=True) 29 | deleted = EnumField(enum_value="'0', '1'", constraints=[SQL("DEFAULT '0'")]) 30 | 31 | class Meta(object): 32 | 33 | """表配置信息 34 | """ 35 | db_table = "zd_qconf_agent" 36 | -------------------------------------------------------------------------------- /model/db/zd_qconf_feedback.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # pylint: disable=invalid-name 4 | 5 | """ 6 | Copyright (c) 2014,掌阅科技 7 | All rights reserved. 8 | 9 | 摘 要: zd_qconf_feedback.py 10 | 创 建 者: zhuangshixiong 11 | 创建日期: 2015-06-24 12 | """ 13 | 14 | from peewee import DateTimeField 15 | from peewee import CharField 16 | from peewee import IntegerField 17 | from peewee import SQL 18 | 19 | from model.db.base import ZKDASH_DB, EnumField 20 | 21 | 22 | class ZdQconfFeedback(ZKDASH_DB.Model): 23 | 24 | """ZdQconfFeedback Model 25 | """ 26 | 27 | id = IntegerField(primary_key=True, constraints=[SQL("AUTO_INCREMENT")]) 28 | hostname = CharField(max_length=32, null=True) 29 | ip = CharField(max_length=32, null=True) 30 | path = CharField(max_length=512, null=True) 31 | md5_value = CharField(max_length=128, null=True) 32 | idc = CharField(max_length=32, null=True) 33 | update_time = DateTimeField(null=True) 34 | data_type = CharField(null=True) 35 | execute_status = EnumField(enum_value="'0', '1', '2'", constraints=[SQL("DEFAULT '0'")]) 36 | deleted = EnumField(enum_value="'0', '1'", constraints=[SQL("DEFAULT '0'")]) 37 | 38 | class Meta(object): 39 | 40 | """表配置信息 41 | """ 42 | db_table = "zd_qconf_feedback" 43 | -------------------------------------------------------------------------------- /model/db/zd_snapshot.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # pylint: disable=invalid-name 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: zd_snapshot.py 9 | 创 建 者: zhuangshixiong 10 | 创建日期: 2015-06-16 11 | """ 12 | from peewee import DateTimeField 13 | from peewee import CharField 14 | from peewee import TextField 15 | from peewee import IntegerField 16 | from peewee import SQL 17 | 18 | from model.db.base import ZKDASH_DB, EnumField 19 | 20 | 21 | class ZdSnapshot(ZKDASH_DB.Model): 22 | 23 | """ZdSnapshot Model 24 | """ 25 | 26 | id = IntegerField(primary_key=True, constraints=[SQL("AUTO_INCREMENT")]) 27 | cluster_name = CharField(max_length=64, null=True) 28 | path = CharField(max_length=512, null=True) 29 | data = TextField(null=True) 30 | create_time = DateTimeField(null=True) 31 | commit = CharField(max_length=64, null=True) 32 | status = EnumField(enum_value="'0', '1'", constraints=[SQL("DEFAULT '0'")]) 33 | deleted = EnumField(enum_value="'0', '1'", constraints=[SQL("DEFAULT '0'")]) 34 | 35 | class Meta(object): 36 | 37 | """表配置信息 38 | """ 39 | db_table = "zd_snapshot" 40 | -------------------------------------------------------------------------------- /model/db/zd_snapshot_tree.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # pylint: disable=invalid-name 4 | 5 | """ 6 | Copyright (c) 2014,掌阅科技 7 | All rights reserved. 8 | 9 | 摘 要: zd_snapshot_tree.py 10 | 创 建 者: zhuangshixiong 11 | 创建日期: 2015-09-02 12 | """ 13 | 14 | from peewee import CharField 15 | from peewee import IntegerField 16 | from peewee import SQL 17 | 18 | from model.db.base import ZKDASH_DB 19 | 20 | 21 | class ZdSnapshotTree(ZKDASH_DB.Model): 22 | 23 | """ZdSnapshotTree Model 24 | """ 25 | 26 | id = IntegerField(primary_key=True, constraints=[SQL("AUTO_INCREMENT")]) 27 | cluster_name = CharField(max_length=64, null=True) 28 | node_path = CharField(max_length=512, null=True) 29 | left = IntegerField(null=True) 30 | right = IntegerField(null=True) 31 | 32 | class Meta(object): 33 | 34 | """表配置信息 35 | """ 36 | db_table = "zd_snapshot_tree" 37 | -------------------------------------------------------------------------------- /model/db/zd_znode.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # pylint: disable=invalid-name 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: zd_znode.py 9 | 创 建 者: zhuangshixiong 10 | 创建日期: 2015-06-16 11 | """ 12 | from peewee import CharField 13 | from peewee import IntegerField 14 | from peewee import SQL 15 | 16 | from model.db.base import ZKDASH_DB, EnumField 17 | 18 | 19 | class ZdZnode(ZKDASH_DB.Model): 20 | 21 | """ZdZnode Model 22 | """ 23 | 24 | id = IntegerField(primary_key=True, constraints=[SQL("AUTO_INCREMENT")]) 25 | cluster_name = CharField(max_length=64, null=True) 26 | path = CharField(max_length=512, null=True) 27 | type = EnumField(enum_value="'0', '1'", constraints=[SQL("DEFAULT '0'")]) # 节点属于普通节点还是文件节点,默认普通节点 28 | business = CharField(max_length=64, null=True) 29 | deleted = EnumField(enum_value="'0', '1'", constraints=[SQL("DEFAULT '0'")]) 30 | 31 | class Meta(object): 32 | 33 | """表配置信息 34 | """ 35 | db_table = "zd_znode" 36 | -------------------------------------------------------------------------------- /model/db/zd_zookeeper.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # pylint: disable=invalid-name 4 | 5 | """ 6 | Copyright (c) 2014,掌阅科技 7 | All rights reserved. 8 | 9 | 摘 要: zd_zookeeper.py 10 | 创 建 者: zhuangshixiong 11 | 创建日期: 2015-06-23 12 | """ 13 | 14 | from peewee import CharField 15 | from peewee import IntegerField 16 | from peewee import SQL 17 | 18 | from model.db.base import ZKDASH_DB, EnumField 19 | 20 | 21 | class ZdZookeeper(ZKDASH_DB.Model): 22 | 23 | """ZdZookeeper Model 24 | """ 25 | 26 | id = IntegerField(primary_key=True, constraints=[SQL("AUTO_INCREMENT")]) 27 | cluster_name = CharField(max_length=32) 28 | hosts = CharField(max_length=128) 29 | business = CharField(max_length=255) 30 | deleted = EnumField(enum_value="'0', '1'", constraints=[SQL("DEFAULT '0'")]) 31 | 32 | class Meta(object): 33 | 34 | """表配置信息 35 | """ 36 | db_table = "zd_zookeeper" 37 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | tornado==4.0 2 | peewee==2.4.7 3 | xlrd==0.9.3 4 | xlwt==0.7.5 5 | PyYAML==5.1 6 | pymysql==0.7.4 7 | argparse==1.2.1 8 | kazoo==2.1 9 | -------------------------------------------------------------------------------- /service/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Copyright (c) 2014,掌阅科技 6 | All rights reserved. 7 | 8 | 摘 要: __init__.py 9 | 创 建 者: WangLichao 10 | 创建日期: 2015-01-13 11 | """ 12 | 13 | 14 | if __name__ == '__main__': 15 | pass 16 | -------------------------------------------------------------------------------- /static/BJUI/js/minify.sh: -------------------------------------------------------------------------------- 1 | ########################################### 2 | # 摘 要: minify.sh 3 | # 创 建 者: WangLichao 4 | # 创建日期: 2015-06-02 5 | ########################################### 6 | #!/bin/bash 7 | 8 | rm bjui-all.js && touch bjui-all.js 9 | for js in `ls bjui-*.js|grep -v bjui-all.js|grep -v bjui-slidebar.js`;do 10 | echo $js "begin minify"; 11 | java -jar yuicompressor-2.4.8.jar $js --charset utf-8 --type js >> bjui-all.js 12 | done 13 | -------------------------------------------------------------------------------- /static/BJUI/js/yuicompressor-2.4.8.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/js/yuicompressor-2.4.8.jar -------------------------------------------------------------------------------- /static/BJUI/other/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document); -------------------------------------------------------------------------------- /static/BJUI/plugins/bootstrapSelect/defaults-zh_CN.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | (function ($) { 8 | $.fn.selectpicker.defaults = { 9 | //noneSelectedText: '没有选中任何项', 10 | noneSelectedText: '', 11 | noneResultsText: '没有找到匹配项', 12 | countSelectedText: '选中{1}中的{0}项', 13 | maxOptionsText: ['超出限制 (最多选择{n}项)', '组选择超出限制(最多选择{n}组)'], 14 | multipleSeparator: ', ' 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /static/BJUI/plugins/bootstrapSelect/defaults-zh_CN.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) 3 | * 4 | * Copyright 2013-2014 bootstrap-select 5 | * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) 6 | */ 7 | !function(a){a.fn.selectpicker.defaults={noneSelectedText:"",noneResultsText:"没有找到匹配项",countSelectedText:"选中{1}中的{0}项",maxOptionsText:["超出限制 (最多选择{n}项)","组选择超出限制(最多选择{n}组)"],multipleSeparator:", "}}(jQuery); -------------------------------------------------------------------------------- /static/BJUI/plugins/colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png -------------------------------------------------------------------------------- /static/BJUI/plugins/colorpicker/img/bootstrap-colorpicker/alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/colorpicker/img/bootstrap-colorpicker/alpha.png -------------------------------------------------------------------------------- /static/BJUI/plugins/colorpicker/img/bootstrap-colorpicker/hue-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/colorpicker/img/bootstrap-colorpicker/hue-horizontal.png -------------------------------------------------------------------------------- /static/BJUI/plugins/colorpicker/img/bootstrap-colorpicker/hue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/colorpicker/img/bootstrap-colorpicker/hue.png -------------------------------------------------------------------------------- /static/BJUI/plugins/colorpicker/img/bootstrap-colorpicker/saturation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/colorpicker/img/bootstrap-colorpicker/saturation.png -------------------------------------------------------------------------------- /static/BJUI/plugins/echarts/theme/default.js: -------------------------------------------------------------------------------- 1 | /** 2 | * echarts默认主题,开发中 3 | * 4 | * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。 5 | * @author Kener (@Kener-林峰, kener.linfeng@gmail.com) 6 | * 7 | */ 8 | define(function() { 9 | return {}; 10 | }); -------------------------------------------------------------------------------- /static/BJUI/plugins/highcharts/modules/funnel.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Highcharts funnel module 4 | 5 | (c) 2010-2014 Torstein Honsi 6 | 7 | License: www.highcharts.com/license 8 | */ 9 | (function(b){var d=b.getOptions(),v=d.plotOptions,q=b.seriesTypes,E=b.merge,D=function(){},A=b.each;v.funnel=E(v.pie,{animation:!1,center:["50%","50%"],width:"90%",neckWidth:"30%",height:"100%",neckHeight:"25%",reversed:!1,dataLabels:{connectorWidth:1,connectorColor:"#606060"},size:!0,states:{select:{color:"#C0C0C0",borderColor:"#000000",shadow:!1}}});q.funnel=b.extendClass(q.pie,{type:"funnel",animate:D,singularTooltips:!0,translate:function(){var a=function(j,a){return/%$/.test(j)?a*parseInt(j, 10 | 10)/100:parseInt(j,10)},B=0,f=this.chart,c=this.options,g=c.reversed,b=f.plotWidth,n=f.plotHeight,o=0,f=c.center,h=a(f[0],b),d=a(f[0],n),q=a(c.width,b),k,r,e=a(c.height,n),s=a(c.neckWidth,b),t=a(c.neckHeight,n),w=e-t,a=this.data,x,y,v=c.dataLabels.position==="left"?1:0,z,l,C,p,i,u,m;this.getWidthAt=r=function(j){return j>e-t||e===t?s:s+(q-s)*((e-t-j)/(e-t))};this.getX=function(j,a){return h+(a?-1:1)*(r(g?n-j:j)/2+c.dataLabels.distance)};this.center=[h,d,e];this.centerX=h;A(a,function(a){B+=a.y}); 11 | A(a,function(a){m=null;y=B?a.y/B:0;l=d-e/2+o*e;i=l+y*e;k=r(l);z=h-k/2;C=z+k;k=r(i);p=h-k/2;u=p+k;l>w?(z=p=h-s/2,C=u=h+s/2):i>w&&(m=i,k=r(w),p=h-k/2,u=p+k,i=w);g&&(l=e-l,i=e-i,m=m?e-m:null);x=["M",z,l,"L",C,l,u,i];m&&x.push(u,m,p,m);x.push(p,i,"Z");a.shapeType="path";a.shapeArgs={d:x};a.percentage=y*100;a.plotX=h;a.plotY=(l+(m||i))/2;a.tooltipPos=[h,a.plotY];a.slice=D;a.half=v;o+=y})},drawPoints:function(){var a=this,b=a.options,f=a.chart.renderer;A(a.data,function(c){var g=c.graphic,d=c.shapeArgs; 12 | g?g.animate(d):c.graphic=f.path(d).attr({fill:c.color,stroke:b.borderColor,"stroke-width":b.borderWidth}).add(a.group)})},sortByAngle:function(a){a.sort(function(a,b){return a.plotY-b.plotY})},drawDataLabels:function(){var a=this.data,b=this.options.dataLabels.distance,f,c,g,d=a.length,n,o;for(this.center[2]-=2*b;d--;)g=a[d],c=(f=g.half)?1:-1,o=g.plotY,n=this.getX(o,f),g.labelPos=[0,o,n+(b-5)*c,o,n+b*c,o,f?"right":"left",0];q.pie.prototype.drawDataLabels.call(this)}});d.plotOptions.pyramid=b.merge(d.plotOptions.funnel, 13 | {neckWidth:"0%",neckHeight:"0%",reversed:!0});b.seriesTypes.pyramid=b.extendClass(b.seriesTypes.funnel,{type:"pyramid"})})(Highcharts); 14 | -------------------------------------------------------------------------------- /static/BJUI/plugins/highcharts/modules/no-data-to-display.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v4.0.3 (2014-07-03) 3 | Plugin for displaying a message when there is no data visible in chart. 4 | 5 | (c) 2010-2014 Highsoft AS 6 | Author: Oystein Moseng 7 | 8 | License: www.highcharts.com/license 9 | */ 10 | (function(c){function f(){return!!this.points.length}function g(){this.hasData()?this.hideNoData():this.showNoData()}var d=c.seriesTypes,e=c.Chart.prototype,h=c.getOptions(),i=c.extend;i(h.lang,{noData:"No data to display"});h.noData={position:{x:0,y:0,align:"center",verticalAlign:"middle"},attr:{},style:{fontWeight:"bold",fontSize:"12px",color:"#60606a"}};if(d.pie)d.pie.prototype.hasData=f;if(d.gauge)d.gauge.prototype.hasData=f;if(d.waterfall)d.waterfall.prototype.hasData=f;c.Series.prototype.hasData= 11 | function(){return this.dataMax!==void 0&&this.dataMin!==void 0};e.showNoData=function(a){var b=this.options,a=a||b.lang.noData,b=b.noData;if(!this.noDataLabel)this.noDataLabel=this.renderer.label(a,0,0,null,null,null,null,null,"no-data").attr(b.attr).css(b.style).add(),this.noDataLabel.align(i(this.noDataLabel.getBBox(),b.position),!1,"plotBox")};e.hideNoData=function(){if(this.noDataLabel)this.noDataLabel=this.noDataLabel.destroy()};e.hasData=function(){for(var a=this.series,b=a.length;b--;)if(a[b].hasData()&& 12 | !a[b].options.isInternal)return!0;return!1};e.callbacks.push(function(a){c.addEvent(a,"load",g);c.addEvent(a,"redraw",g)})})(Highcharts); 13 | -------------------------------------------------------------------------------- /static/BJUI/plugins/highcharts/modules/solid-gauge.js: -------------------------------------------------------------------------------- 1 | /* 2 | Highcharts JS v4.0.3 (2014-07-03) 3 | Solid angular gauge module 4 | 5 | (c) 2010-2014 Torstein Honsi 6 | 7 | License: www.highcharts.com/license 8 | */ 9 | (function(a){var k=a.getOptions().plotOptions,q=a.pInt,r=a.pick,l=a.each,n;k.solidgauge=a.merge(k.gauge,{colorByPoint:!0});n={initDataClasses:function(b){var h=this,e=this.chart,c,m=0,f=this.options;this.dataClasses=c=[];l(b.dataClasses,function(g,d){var i,g=a.merge(g);c.push(g);if(!g.color)f.dataClassColor==="category"?(i=e.options.colors,g.color=i[m++],m===i.length&&(m=0)):g.color=h.tweenColors(a.Color(f.minColor),a.Color(f.maxColor),d/(b.dataClasses.length-1))})},initStops:function(b){this.stops= 10 | b.stops||[[0,this.options.minColor],[1,this.options.maxColor]];l(this.stops,function(b){b.color=a.Color(b[1])})},toColor:function(b,h){var e,c=this.stops,a,f=this.dataClasses,g,d;if(f)for(d=f.length;d--;){if(g=f[d],a=g.from,c=g.to,(a===void 0||b>=a)&&(c===void 0||b<=c)){e=g.color;if(h)h.dataClass=d;break}}else{this.isLog&&(b=this.val2lin(b));e=1-(this.max-b)/(this.max-this.min);for(d=c.length;d--;)if(e>c[d][0])break;a=c[d]||c[d+1];c=c[d+1]||a;e=1-(c[0]-e)/(c[0]-a[0]||1);e=this.tweenColors(a.color, 11 | c.color,e)}return e},tweenColors:function(b,a,e){var c=a.rgba[3]!==1||b.rgba[3]!==1;return b.rgba.length===0||a.rgba.length===0?"none":(c?"rgba(":"rgb(")+Math.round(a.rgba[0]+(b.rgba[0]-a.rgba[0])*(1-e))+","+Math.round(a.rgba[1]+(b.rgba[1]-a.rgba[1])*(1-e))+","+Math.round(a.rgba[2]+(b.rgba[2]-a.rgba[2])*(1-e))+(c?","+(a.rgba[3]+(b.rgba[3]-a.rgba[3])*(1-e)):"")+")"}};a.seriesTypes.solidgauge=a.extendClass(a.seriesTypes.gauge,{type:"solidgauge",bindAxes:function(){var b;a.seriesTypes.gauge.prototype.bindAxes.call(this); 12 | b=this.yAxis;a.extend(b,n);b.options.dataClasses&&b.initDataClasses(b.options);b.initStops(b.options)},drawPoints:function(){var b=this,h=b.yAxis,e=h.center,c=b.options,m=b.chart.renderer;a.each(b.points,function(f){var g=f.graphic,d=h.startAngleRad+h.translate(f.y,null,null,null,!0),i=q(r(c.radius,100))*e[2]/200,o=q(r(c.innerRadius,60))*e[2]/200,p=h.toColor(f.y,f),k;if(p!=="none")k=f.color,f.color=p;c.wrap===!1&&(d=Math.max(h.startAngleRad,Math.min(h.endAngleRad,d)));var d=d*180/Math.PI,j=d/(180/ 13 | Math.PI),l=h.startAngleRad,d=Math.min(j,l),j=Math.max(j,l);j-d>2*Math.PI&&(j=d+2*Math.PI);i={x:e[0],y:e[1],r:i,innerR:o,start:d,end:j};g?(o=i.d,g.attr({fill:f.color}).animate(i,{step:function(b,c){g.attr("fill",n.tweenColors(a.Color(k),a.Color(p),c.pos))}}),i.d=o):f.graphic=m.arc(i).attr({stroke:c.borderColor||"none","stroke-width":c.borderWidth||0,fill:f.color,"sweep-flag":0}).add(b.group)})},animate:null})})(Highcharts); 14 | -------------------------------------------------------------------------------- /static/BJUI/plugins/highcharts/themes/grid-light.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Grid-light theme for Highcharts JS 3 | * @author Torstein Honsi 4 | */ 5 | 6 | // Load the fonts 7 | Highcharts.createElement('link', { 8 | href: 'http://fonts.googleapis.com/css?family=Dosis:400,600', 9 | rel: 'stylesheet', 10 | type: 'text/css' 11 | }, null, document.getElementsByTagName('head')[0]); 12 | 13 | Highcharts.theme = { 14 | colors: ["#7cb5ec", "#f7a35c", "#90ee7e", "#7798BF", "#aaeeee", "#ff0066", "#eeaaee", 15 | "#55BF3B", "#DF5353", "#7798BF", "#aaeeee"], 16 | chart: { 17 | backgroundColor: null, 18 | style: { 19 | fontFamily: "Dosis, sans-serif" 20 | } 21 | }, 22 | title: { 23 | style: { 24 | fontSize: '16px', 25 | fontWeight: 'bold', 26 | textTransform: 'uppercase' 27 | } 28 | }, 29 | tooltip: { 30 | borderWidth: 0, 31 | backgroundColor: 'rgba(219,219,216,0.8)', 32 | shadow: false 33 | }, 34 | legend: { 35 | itemStyle: { 36 | fontWeight: 'bold', 37 | fontSize: '13px' 38 | } 39 | }, 40 | xAxis: { 41 | gridLineWidth: 1, 42 | labels: { 43 | style: { 44 | fontSize: '12px' 45 | } 46 | } 47 | }, 48 | yAxis: { 49 | minorTickInterval: 'auto', 50 | title: { 51 | style: { 52 | textTransform: 'uppercase' 53 | } 54 | }, 55 | labels: { 56 | style: { 57 | fontSize: '12px' 58 | } 59 | } 60 | }, 61 | plotOptions: { 62 | candlestick: { 63 | lineColor: '#404048' 64 | } 65 | }, 66 | 67 | 68 | // General 69 | background2: '#F0F0EA' 70 | 71 | }; 72 | 73 | // Apply the theme 74 | Highcharts.setOptions(Highcharts.theme); 75 | -------------------------------------------------------------------------------- /static/BJUI/plugins/highcharts/themes/grid.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Grid theme for Highcharts JS 3 | * @author Torstein Honsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'], 8 | chart: { 9 | backgroundColor: { 10 | linearGradient: { x1: 0, y1: 0, x2: 1, y2: 1 }, 11 | stops: [ 12 | [0, 'rgb(255, 255, 255)'], 13 | [1, 'rgb(240, 240, 255)'] 14 | ] 15 | }, 16 | borderWidth: 2, 17 | plotBackgroundColor: 'rgba(255, 255, 255, .9)', 18 | plotShadow: true, 19 | plotBorderWidth: 1 20 | }, 21 | title: { 22 | style: { 23 | color: '#000', 24 | font: 'bold 16px "Trebuchet MS", Verdana, sans-serif' 25 | } 26 | }, 27 | subtitle: { 28 | style: { 29 | color: '#666666', 30 | font: 'bold 12px "Trebuchet MS", Verdana, sans-serif' 31 | } 32 | }, 33 | xAxis: { 34 | gridLineWidth: 1, 35 | lineColor: '#000', 36 | tickColor: '#000', 37 | labels: { 38 | style: { 39 | color: '#000', 40 | font: '11px Trebuchet MS, Verdana, sans-serif' 41 | } 42 | }, 43 | title: { 44 | style: { 45 | color: '#333', 46 | fontWeight: 'bold', 47 | fontSize: '12px', 48 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 49 | 50 | } 51 | } 52 | }, 53 | yAxis: { 54 | minorTickInterval: 'auto', 55 | lineColor: '#000', 56 | lineWidth: 1, 57 | tickWidth: 1, 58 | tickColor: '#000', 59 | labels: { 60 | style: { 61 | color: '#000', 62 | font: '11px Trebuchet MS, Verdana, sans-serif' 63 | } 64 | }, 65 | title: { 66 | style: { 67 | color: '#333', 68 | fontWeight: 'bold', 69 | fontSize: '12px', 70 | fontFamily: 'Trebuchet MS, Verdana, sans-serif' 71 | } 72 | } 73 | }, 74 | legend: { 75 | itemStyle: { 76 | font: '9pt Trebuchet MS, Verdana, sans-serif', 77 | color: 'black' 78 | 79 | }, 80 | itemHoverStyle: { 81 | color: '#039' 82 | }, 83 | itemHiddenStyle: { 84 | color: 'gray' 85 | } 86 | }, 87 | labels: { 88 | style: { 89 | color: '#99b' 90 | } 91 | }, 92 | 93 | navigation: { 94 | buttonOptions: { 95 | theme: { 96 | stroke: '#CCCCCC' 97 | } 98 | } 99 | } 100 | }; 101 | 102 | // Apply the theme 103 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 104 | -------------------------------------------------------------------------------- /static/BJUI/plugins/highcharts/themes/sand-signika.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Sand-Signika theme for Highcharts JS 3 | * @author Torstein Honsi 4 | */ 5 | 6 | // Load the fonts 7 | Highcharts.createElement('link', { 8 | href: 'http://fonts.googleapis.com/css?family=Signika:400,700', 9 | rel: 'stylesheet', 10 | type: 'text/css' 11 | }, null, document.getElementsByTagName('head')[0]); 12 | 13 | // Add the background image to the container 14 | Highcharts.wrap(Highcharts.Chart.prototype, 'getContainer', function (proceed) { 15 | proceed.call(this); 16 | this.container.style.background = 'url(http://www.highcharts.com/samples/graphics/sand.png)'; 17 | }); 18 | 19 | 20 | Highcharts.theme = { 21 | colors: ["#f45b5b", "#8085e9", "#8d4654", "#7798BF", "#aaeeee", "#ff0066", "#eeaaee", 22 | "#55BF3B", "#DF5353", "#7798BF", "#aaeeee"], 23 | chart: { 24 | backgroundColor: null, 25 | style: { 26 | fontFamily: "Signika, serif" 27 | } 28 | }, 29 | title: { 30 | style: { 31 | color: 'black', 32 | fontSize: '16px', 33 | fontWeight: 'bold' 34 | } 35 | }, 36 | subtitle: { 37 | style: { 38 | color: 'black' 39 | } 40 | }, 41 | tooltip: { 42 | borderWidth: 0 43 | }, 44 | legend: { 45 | itemStyle: { 46 | fontWeight: 'bold', 47 | fontSize: '13px' 48 | } 49 | }, 50 | xAxis: { 51 | labels: { 52 | style: { 53 | color: '#6e6e70' 54 | } 55 | } 56 | }, 57 | yAxis: { 58 | labels: { 59 | style: { 60 | color: '#6e6e70' 61 | } 62 | } 63 | }, 64 | plotOptions: { 65 | series: { 66 | shadow: true 67 | }, 68 | candlestick: { 69 | lineColor: '#404048' 70 | }, 71 | map: { 72 | shadow: false 73 | } 74 | }, 75 | 76 | // Highstock specific 77 | navigator: { 78 | xAxis: { 79 | gridLineColor: '#D0D0D8' 80 | } 81 | }, 82 | rangeSelector: { 83 | buttonTheme: { 84 | fill: 'white', 85 | stroke: '#C0C0C8', 86 | 'stroke-width': 1, 87 | states: { 88 | select: { 89 | fill: '#D0D0D8' 90 | } 91 | } 92 | } 93 | }, 94 | scrollbar: { 95 | trackBorderColor: '#C0C0C8' 96 | }, 97 | 98 | // General 99 | background2: '#E0E0E8' 100 | 101 | }; 102 | 103 | // Apply the theme 104 | Highcharts.setOptions(Highcharts.theme); 105 | -------------------------------------------------------------------------------- /static/BJUI/plugins/highcharts/themes/skies.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Skies theme for Highcharts JS 3 | * @author Torstein Honsi 4 | */ 5 | 6 | Highcharts.theme = { 7 | colors: ["#514F78", "#42A07B", "#9B5E4A", "#72727F", "#1F949A", "#82914E", "#86777F", "#42A07B"], 8 | chart: { 9 | className: 'skies', 10 | borderWidth: 0, 11 | plotShadow: true, 12 | plotBackgroundImage: 'http://www.highcharts.com/demo/gfx/skies.jpg', 13 | plotBackgroundColor: { 14 | linearGradient: [0, 0, 250, 500], 15 | stops: [ 16 | [0, 'rgba(255, 255, 255, 1)'], 17 | [1, 'rgba(255, 255, 255, 0)'] 18 | ] 19 | }, 20 | plotBorderWidth: 1 21 | }, 22 | title: { 23 | style: { 24 | color: '#3E576F', 25 | font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 26 | } 27 | }, 28 | subtitle: { 29 | style: { 30 | color: '#6D869F', 31 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 32 | } 33 | }, 34 | xAxis: { 35 | gridLineWidth: 0, 36 | lineColor: '#C0D0E0', 37 | tickColor: '#C0D0E0', 38 | labels: { 39 | style: { 40 | color: '#666', 41 | fontWeight: 'bold' 42 | } 43 | }, 44 | title: { 45 | style: { 46 | color: '#666', 47 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 48 | } 49 | } 50 | }, 51 | yAxis: { 52 | alternateGridColor: 'rgba(255, 255, 255, .5)', 53 | lineColor: '#C0D0E0', 54 | tickColor: '#C0D0E0', 55 | tickWidth: 1, 56 | labels: { 57 | style: { 58 | color: '#666', 59 | fontWeight: 'bold' 60 | } 61 | }, 62 | title: { 63 | style: { 64 | color: '#666', 65 | font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 66 | } 67 | } 68 | }, 69 | legend: { 70 | itemStyle: { 71 | font: '9pt Trebuchet MS, Verdana, sans-serif', 72 | color: '#3E576F' 73 | }, 74 | itemHoverStyle: { 75 | color: 'black' 76 | }, 77 | itemHiddenStyle: { 78 | color: 'silver' 79 | } 80 | }, 81 | labels: { 82 | style: { 83 | color: '#3E576F' 84 | } 85 | } 86 | }; 87 | 88 | // Apply the theme 89 | var highchartsOptions = Highcharts.setOptions(Highcharts.theme); 90 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/attached/test.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/attached/test.txt -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/editor-content.css: -------------------------------------------------------------------------------- 1 | @CHARSET "UTF-8"; 2 | /*自定义--编辑框内的内容样式*/ 3 | .ke-content table { 4 | border-collapse: collapse; 5 | border-spacing: 0; 6 | } 7 | .ke-content table th, 8 | .ke-content table td { 9 | border: 1px solid #ddd !important; 10 | } -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/php/demo.php: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | KindEditor PHP 16 | 17 | 18 | 19 | 20 | 21 | 43 | 44 | 45 | 46 |
47 | 48 |
49 | (提交快捷键: Ctrl + Enter) 50 |
51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/anchor/anchor.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('anchor', function(K) { 11 | var self = this, name = 'anchor', lang = self.lang(name + '.'); 12 | self.plugin.anchor = { 13 | edit : function() { 14 | var html = ['
', 15 | '
', 16 | '', 17 | '', 18 | '
', 19 | '
'].join(''); 20 | var dialog = self.createDialog({ 21 | name : name, 22 | width : 300, 23 | title : self.lang(name), 24 | body : html, 25 | yesBtn : { 26 | name : self.lang('yes'), 27 | click : function(e) { 28 | self.insertHtml('').hideDialog().focus(); 29 | } 30 | } 31 | }); 32 | var div = dialog.div, 33 | nameBox = K('input[name="name"]', div); 34 | var img = self.plugin.getSelectedAnchor(); 35 | if (img) { 36 | nameBox.val(unescape(img.attr('data-ke-name'))); 37 | } 38 | nameBox[0].focus(); 39 | nameBox[0].select(); 40 | }, 41 | 'delete' : function() { 42 | self.plugin.getSelectedAnchor().remove(); 43 | } 44 | }; 45 | self.clickToolbar(name, self.plugin.anchor.edit); 46 | }); 47 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/autoheight/autoheight.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('autoheight', function(K) { 11 | var self = this; 12 | 13 | if (!self.autoHeightMode) { 14 | return; 15 | } 16 | 17 | var minHeight; 18 | 19 | function hideScroll() { 20 | var edit = self.edit; 21 | var body = edit.doc.body; 22 | edit.iframe[0].scroll = 'no'; 23 | body.style.overflowY = 'hidden'; 24 | } 25 | 26 | function resetHeight() { 27 | var edit = self.edit; 28 | var body = edit.doc.body; 29 | edit.iframe.height(minHeight); 30 | self.resize(null, Math.max((K.IE ? body.scrollHeight : body.offsetHeight) + 76, minHeight)); 31 | } 32 | 33 | function init() { 34 | minHeight = K.removeUnit(self.height); 35 | 36 | self.edit.afterChange(resetHeight); 37 | hideScroll(); 38 | resetHeight(); 39 | } 40 | 41 | if (self.isCreated) { 42 | init(); 43 | } else { 44 | self.afterCreate(init); 45 | } 46 | }); 47 | 48 | /* 49 | * 如何实现真正的自动高度? 50 | * 修改编辑器高度之后,再次获取body内容高度时,最小值只会是当前iframe的设置高度,这样就导致高度只增不减。 51 | * 所以每次获取body内容高度之前,先将iframe的高度重置为最小高度,这样就能获取body的实际高度。 52 | * 由此就实现了真正的自动高度 53 | * 测试:chrome、firefox、IE9、IE8 54 | * */ 55 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/baidumap/map.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Baidu Maps 6 | 10 | 11 | 39 | 40 | 41 |
42 | 43 | 44 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/clearhtml/clearhtml.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('clearhtml', function(K) { 11 | var self = this, name = 'clearhtml'; 12 | self.clickToolbar(name, function() { 13 | self.focus(); 14 | var html = self.html(); 15 | html = html.replace(/(]*>)([\s\S]*?)(<\/script>)/ig, ''); 16 | html = html.replace(/(]*>)([\s\S]*?)(<\/style>)/ig, ''); 17 | html = K.formatHtml(html, { 18 | a : ['href', 'target'], 19 | embed : ['src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess'], 20 | img : ['src', 'width', 'height', 'border', 'alt', 'title', '.width', '.height'], 21 | table : ['border'], 22 | 'td,th' : ['rowspan', 'colspan'], 23 | 'div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6' : [] 24 | }); 25 | self.html(html); 26 | self.cmd.selection(true); 27 | self.addBookmark(); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/code/code.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | // google code prettify: http://google-code-prettify.googlecode.com/ 11 | // http://google-code-prettify.googlecode.com/ 12 | 13 | KindEditor.plugin('code', function(K) { 14 | var self = this, name = 'code'; 15 | self.clickToolbar(name, function() { 16 | var lang = self.lang(name + '.'), 17 | html = ['
', 18 | '
', 19 | '', 35 | '
', 36 | '', 37 | '
'].join(''), 38 | dialog = self.createDialog({ 39 | name : name, 40 | width : 450, 41 | title : self.lang(name), 42 | body : html, 43 | yesBtn : { 44 | name : self.lang('yes'), 45 | click : function(e) { 46 | var type = K('.ke-code-type', dialog.div).val(), 47 | code = textarea.val(), 48 | cls = type === '' ? '' : ' lang-' + type, 49 | html = '
\n' + K.escape(code) + '
'; 50 | if (K.trim(code) === '') { 51 | alert(lang.pleaseInput); 52 | textarea[0].focus(); 53 | return; 54 | } 55 | self.insertHtml(html).hideDialog().focus(); 56 | } 57 | } 58 | }), 59 | textarea = K('textarea', dialog.div); 60 | textarea[0].focus(); 61 | }); 62 | }); 63 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/code/prettify.css: -------------------------------------------------------------------------------- 1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} 2 | 3 | pre.prettyprint { 4 | border: 0; 5 | border-left: 3px solid rgb(204, 204, 204); 6 | margin-left: 2em; 7 | padding: 0.5em; 8 | font-size: 110%; 9 | display: block; 10 | font-family: "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; 11 | margin: 1em 0px; 12 | white-space: pre; 13 | } 14 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/0.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/1.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/10.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/100.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/100.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/101.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/101.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/102.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/102.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/103.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/103.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/104.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/104.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/105.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/105.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/106.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/106.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/107.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/107.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/108.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/108.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/109.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/109.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/11.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/110.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/110.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/111.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/111.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/112.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/112.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/113.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/113.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/114.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/114.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/115.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/115.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/116.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/116.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/117.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/117.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/118.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/118.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/119.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/119.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/12.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/120.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/120.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/121.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/121.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/122.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/122.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/123.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/123.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/124.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/124.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/125.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/125.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/126.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/126.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/127.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/127.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/128.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/128.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/129.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/129.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/13.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/130.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/130.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/131.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/131.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/132.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/132.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/133.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/133.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/134.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/134.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/14.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/15.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/16.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/17.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/18.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/19.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/2.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/20.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/21.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/22.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/23.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/24.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/25.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/26.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/27.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/28.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/29.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/3.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/30.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/31.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/32.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/33.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/34.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/35.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/36.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/37.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/38.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/39.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/4.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/40.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/41.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/42.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/43.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/44.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/45.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/46.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/47.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/48.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/49.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/5.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/50.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/51.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/52.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/53.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/54.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/55.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/56.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/57.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/58.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/59.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/6.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/60.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/61.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/62.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/63.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/64.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/65.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/66.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/67.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/68.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/69.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/7.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/70.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/71.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/72.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/72.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/73.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/73.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/74.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/74.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/75.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/75.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/76.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/76.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/77.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/77.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/78.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/78.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/79.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/79.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/8.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/80.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/80.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/81.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/81.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/82.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/82.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/83.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/83.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/84.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/84.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/85.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/85.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/86.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/86.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/87.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/87.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/88.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/88.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/89.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/89.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/9.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/90.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/90.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/91.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/91.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/92.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/92.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/93.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/93.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/94.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/94.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/95.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/95.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/96.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/96.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/97.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/97.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/98.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/98.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/99.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/99.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/static.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/emoticons/images/static.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/filemanager/images/file-16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/filemanager/images/file-16.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/filemanager/images/file-64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/filemanager/images/file-64.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/filemanager/images/folder-16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/filemanager/images/folder-16.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/filemanager/images/folder-64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/filemanager/images/folder-64.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/filemanager/images/go-up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/filemanager/images/go-up.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/image/images/align_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/image/images/align_left.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/image/images/align_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/image/images/align_right.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/image/images/align_top.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/image/images/align_top.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/image/images/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/image/images/refresh.png -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/lineheight/lineheight.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('lineheight', function(K) { 11 | var self = this, name = 'lineheight', lang = self.lang(name + '.'); 12 | self.clickToolbar(name, function() { 13 | var curVal = '', commonNode = self.cmd.commonNode({'*' : '.line-height'}); 14 | if (commonNode) { 15 | curVal = commonNode.css('line-height'); 16 | } 17 | var menu = self.createMenu({ 18 | name : name, 19 | width : 150 20 | }); 21 | K.each(lang.lineHeight, function(i, row) { 22 | K.each(row, function(key, val) { 23 | menu.addItem({ 24 | title : val, 25 | checked : curVal === key, 26 | click : function() { 27 | self.cmd.toggle('', { 28 | span : '.line-height=' + key 29 | }); 30 | self.updateState(); 31 | self.addBookmark(); 32 | self.hideMenu(); 33 | } 34 | }); 35 | }); 36 | }); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/link/link.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('link', function(K) { 11 | var self = this, name = 'link'; 12 | self.plugin.link = { 13 | edit : function() { 14 | var lang = self.lang(name + '.'), 15 | html = '
' + 16 | //url 17 | '
' + 18 | '' + 19 | '
' + 20 | //type 21 | '
' + 22 | '' + 23 | '' + 24 | '
' + 25 | '
', 26 | dialog = self.createDialog({ 27 | name : name, 28 | width : 450, 29 | title : self.lang(name), 30 | body : html, 31 | yesBtn : { 32 | name : self.lang('yes'), 33 | click : function(e) { 34 | var url = K.trim(urlBox.val()); 35 | if (url == 'http://' || K.invalidUrl(url)) { 36 | alert(self.lang('invalidUrl')); 37 | urlBox[0].focus(); 38 | return; 39 | } 40 | self.exec('createlink', url, typeBox.val()).hideDialog().focus(); 41 | } 42 | } 43 | }), 44 | div = dialog.div, 45 | urlBox = K('input[name="url"]', div), 46 | typeBox = K('select[name="type"]', div); 47 | urlBox.val('http://'); 48 | typeBox[0].options[0] = new Option(lang.newWindow, '_blank'); 49 | typeBox[0].options[1] = new Option(lang.selfWindow, ''); 50 | self.cmd.selection(); 51 | var a = self.plugin.getSelectedLink(); 52 | if (a) { 53 | self.cmd.range.selectNode(a[0]); 54 | self.cmd.select(); 55 | urlBox.val(a.attr('data-ke-src')); 56 | typeBox.val(a.attr('target')); 57 | } 58 | urlBox[0].focus(); 59 | urlBox[0].select(); 60 | }, 61 | 'delete' : function() { 62 | self.exec('unlink', null); 63 | } 64 | }; 65 | self.clickToolbar(name, self.plugin.link.edit); 66 | }); 67 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/map/map.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 53 | 54 | 55 |
56 | 57 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/multiimage/images/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/multiimage/images/image.png -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/multiimage/images/select-files-en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/multiimage/images/select-files-en.png -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/multiimage/images/select-files-zh_CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/multiimage/images/select-files-zh_CN.png -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/multiimage/images/swfupload.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/plugins/multiimage/images/swfupload.swf -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/pagebreak/pagebreak.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('pagebreak', function(K) { 11 | var self = this; 12 | var name = 'pagebreak'; 13 | var pagebreakHtml = K.undef(self.pagebreakHtml, '
'); 14 | 15 | self.clickToolbar(name, function() { 16 | var cmd = self.cmd, range = cmd.range; 17 | self.focus(); 18 | var tail = self.newlineTag == 'br' || K.WEBKIT ? '' : ''; 19 | self.insertHtml(pagebreakHtml + tail); 20 | if (tail !== '') { 21 | var p = K('#__kindeditor_tail_tag__', self.edit.doc); 22 | range.selectNodeContents(p[0]); 23 | p.removeAttr('id'); 24 | cmd.select(); 25 | } 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/plainpaste/plainpaste.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('plainpaste', function(K) { 11 | var self = this, name = 'plainpaste'; 12 | self.clickToolbar(name, function() { 13 | var lang = self.lang(name + '.'), 14 | html = '
' + 15 | '
' + lang.comment + '
' + 16 | '' + 17 | '
', 18 | dialog = self.createDialog({ 19 | name : name, 20 | width : 450, 21 | title : self.lang(name), 22 | body : html, 23 | yesBtn : { 24 | name : self.lang('yes'), 25 | click : function(e) { 26 | var html = textarea.val(); 27 | html = K.escape(html); 28 | html = html.replace(/ {2}/g, '  '); 29 | if (self.newlineTag == 'p') { 30 | html = html.replace(/^/, '

').replace(/$/, '

').replace(/\n/g, '

'); 31 | } else { 32 | html = html.replace(/\n/g, '
$&'); 33 | } 34 | self.insertHtml(html).hideDialog().focus(); 35 | } 36 | } 37 | }), 38 | textarea = K('textarea', dialog.div); 39 | textarea[0].focus(); 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/preview/preview.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('preview', function(K) { 11 | var self = this, name = 'preview', undefined; 12 | self.clickToolbar(name, function() { 13 | var lang = self.lang(name + '.'), 14 | html = '

' + 15 | '' + 16 | '
', 17 | dialog = self.createDialog({ 18 | name : name, 19 | width : 750, 20 | title : self.lang(name), 21 | body : html 22 | }), 23 | iframe = K('iframe', dialog.div), 24 | doc = K.iframeDoc(iframe); 25 | doc.open(); 26 | doc.write(self.fullHtml()); 27 | doc.close(); 28 | K(doc.body).css('background-color', '#FFF'); 29 | iframe[0].contentWindow.focus(); 30 | }); 31 | }); 32 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/quickformat/quickformat.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('quickformat', function(K) { 11 | var self = this, name = 'quickformat', 12 | blockMap = K.toMap('blockquote,center,div,h1,h2,h3,h4,h5,h6,p'); 13 | function getFirstChild(knode) { 14 | var child = knode.first(); 15 | while (child && child.first()) { 16 | child = child.first(); 17 | } 18 | return child; 19 | } 20 | self.clickToolbar(name, function() { 21 | self.focus(); 22 | var doc = self.edit.doc, 23 | range = self.cmd.range, 24 | child = K(doc.body).first(), next, 25 | nodeList = [], subList = [], 26 | bookmark = range.createBookmark(true); 27 | while(child) { 28 | next = child.next(); 29 | var firstChild = getFirstChild(child); 30 | if (!firstChild || firstChild.name != 'img') { 31 | if (blockMap[child.name]) { 32 | child.html(child.html().replace(/^(\s| | )+/ig, '')); 33 | child.css('text-indent', '2em'); 34 | } else { 35 | subList.push(child); 36 | } 37 | if (!next || (blockMap[next.name] || blockMap[child.name] && !blockMap[next.name])) { 38 | if (subList.length > 0) { 39 | nodeList.push(subList); 40 | } 41 | subList = []; 42 | } 43 | } 44 | child = next; 45 | } 46 | K.each(nodeList, function(i, subList) { 47 | var wrapper = K('

', doc); 48 | subList[0].before(wrapper); 49 | K.each(subList, function(i, knode) { 50 | wrapper.append(knode); 51 | }); 52 | }); 53 | range.moveToBookmark(bookmark); 54 | self.addBookmark(); 55 | }); 56 | }); 57 | 58 | /** 59 | -------------------------- 60 | abcd
61 | 1234
62 | 63 | to 64 | 65 |

66 | abcd
67 | 1234
68 |

69 | 70 | -------------------------- 71 | 72 |   abcd1233 73 |

1234

74 | 75 | to 76 | 77 |

abcd1233

78 |

1234

79 | 80 | -------------------------- 81 | */ -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/template/html/1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

8 | 在此处输入标题 9 |

10 |

11 | 在此处输入内容 12 |

13 | 14 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/template/html/2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

8 | 标题 9 |

10 | 11 | 12 | 13 | 16 | 19 | 20 | 21 | 24 | 27 | 28 | 29 | 32 | 35 | 36 | 37 |
14 |

标题1

15 |
17 |

标题1

18 |
22 | 内容1 23 | 25 | 内容2 26 |
30 | 内容3 31 | 33 | 内容4 34 |
38 |

39 | 表格说明 40 |

41 | 42 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/template/html/3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

8 | 在此处输入内容 9 |

10 |
    11 |
  1. 12 | 描述1 13 |
  2. 14 |
  3. 15 | 描述2 16 |
  4. 17 |
  5. 18 | 描述3 19 |
  6. 20 |
21 |

22 | 在此处输入内容 23 |

24 |
    25 |
  • 26 | 描述1 27 |
  • 28 |
  • 29 | 描述2 30 |
  • 31 |
  • 32 | 描述3 33 |
  • 34 |
35 | 36 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/template/template.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('template', function(K) { 11 | var self = this, name = 'template', lang = self.lang(name + '.'), 12 | htmlPath = self.pluginsPath + name + '/html/'; 13 | function getFilePath(fileName) { 14 | return htmlPath + fileName + '?ver=' + encodeURIComponent(K.DEBUG ? K.TIME : K.VERSION); 15 | } 16 | self.clickToolbar(name, function() { 17 | var lang = self.lang(name + '.'), 18 | arr = ['
', 19 | '
', 20 | // left start 21 | '
', 22 | lang. selectTemplate + '
', 28 | // right start 29 | '
', 30 | ' ', 31 | '
', 32 | '
', 33 | '
', 34 | '', 35 | '
'].join(''); 36 | var dialog = self.createDialog({ 37 | name : name, 38 | width : 500, 39 | title : self.lang(name), 40 | body : html, 41 | yesBtn : { 42 | name : self.lang('yes'), 43 | click : function(e) { 44 | var doc = K.iframeDoc(iframe); 45 | self[checkbox[0].checked ? 'html' : 'insertHtml'](doc.body.innerHTML).hideDialog().focus(); 46 | } 47 | } 48 | }); 49 | var selectBox = K('select', dialog.div), 50 | checkbox = K('[name="replaceFlag"]', dialog.div), 51 | iframe = K('iframe', dialog.div); 52 | checkbox[0].checked = true; 53 | iframe.attr('src', getFilePath(selectBox.val())); 54 | selectBox.change(function() { 55 | iframe.attr('src', getFilePath(this.value)); 56 | }); 57 | }); 58 | }); 59 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/plugins/wordpaste/wordpaste.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('wordpaste', function(K) { 11 | var self = this, name = 'wordpaste'; 12 | self.clickToolbar(name, function() { 13 | var lang = self.lang(name + '.'), 14 | html = '
' + 15 | '
' + lang.comment + '
' + 16 | '' + 17 | '
', 18 | dialog = self.createDialog({ 19 | name : name, 20 | width : 450, 21 | title : self.lang(name), 22 | body : html, 23 | yesBtn : { 24 | name : self.lang('yes'), 25 | click : function(e) { 26 | var str = doc.body.innerHTML; 27 | str = K.clearMsWord(str, self.filterMode ? self.htmlTags : K.options.htmlTags); 28 | self.insertHtml(str).hideDialog().focus(); 29 | } 30 | } 31 | }), 32 | div = dialog.div, 33 | iframe = K('iframe', div), 34 | doc = K.iframeDoc(iframe); 35 | if (!K.IE) { 36 | doc.designMode = 'on'; 37 | } 38 | doc.open(); 39 | doc.write('WordPaste'); 40 | doc.write(''); 41 | if (!K.IE) { 42 | doc.write('
'); 43 | } 44 | doc.write(''); 45 | doc.close(); 46 | if (K.IE) { 47 | doc.body.contentEditable = 'true'; 48 | } 49 | iframe[0].contentWindow.focus(); 50 | }); 51 | }); 52 | -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/themes/common/anchor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/themes/common/anchor.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/themes/common/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/themes/common/blank.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/themes/common/flash.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/themes/common/flash.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/themes/common/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/themes/common/loading.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/themes/common/media.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/themes/common/media.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/themes/common/rm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/themes/common/rm.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/themes/default/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/themes/default/background.png -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/themes/default/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/themes/default/default.png -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/themes/qq/editor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/kindeditor_4.1.10/themes/qq/editor.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/kindeditor_4.1.10/themes/simple/simple.css: -------------------------------------------------------------------------------- 1 | /* container */ 2 | .ke-container-simple { 3 | display: block; 4 | border: 1px solid #CCC; 5 | background-color: #FFF; 6 | overflow: hidden; 7 | } 8 | /* toolbar */ 9 | .ke-container-simple .ke-toolbar { 10 | border-bottom: 1px solid #CCC; 11 | background-color: #FFF; 12 | padding: 2px 5px; 13 | overflow: hidden; 14 | } 15 | .ke-container-simple .ke-toolbar .ke-outline { 16 | border: 1px solid #FFF; 17 | background-color: transparent; 18 | margin: 1px; 19 | padding: 1px 2px; 20 | font-size: 0; 21 | line-height: 0; 22 | overflow: hidden; 23 | cursor: pointer; 24 | } 25 | .ke-container-simple .ke-toolbar .ke-on { 26 | border: 1px solid #5690D2; 27 | } 28 | .ke-container-simple .ke-toolbar .ke-selected { 29 | border: 1px solid #5690D2; 30 | background-color: #E9EFF6; 31 | } 32 | .ke-container-simple .ke-toolbar .ke-disabled { 33 | cursor: default; 34 | } 35 | /* statusbar */ 36 | .ke-container-simple .ke-statusbar { 37 | position: relative; 38 | background-color: #FFF; 39 | border-top: 1px solid #CCCCCC; 40 | font-size: 0; 41 | line-height: 0; 42 | *height: 12px; 43 | overflow: hidden; 44 | text-align: center; 45 | cursor: s-resize; 46 | } 47 | /* menu */ 48 | .ke-menu-simple { 49 | border: 1px solid #A0A0A0; 50 | background-color: #FFF; 51 | color: #222222; 52 | padding: 2px; 53 | font-family: "sans serif",tahoma,verdana,helvetica; 54 | font-size: 12px; 55 | text-align: left; 56 | overflow: hidden; 57 | } 58 | .ke-menu-simple .ke-menu-item { 59 | border: 1px solid #FFF; 60 | background-color: #FFF; 61 | color: #222222; 62 | height: 24px; 63 | overflow: hidden; 64 | cursor: pointer; 65 | } 66 | .ke-menu-simple .ke-menu-item-on { 67 | border: 1px solid #5690D2; 68 | background-color: #FFF; 69 | } 70 | /* colorpicker */ 71 | .ke-colorpicker-simple { 72 | border: 1px solid #A0A0A0; 73 | background-color: #FEFEFE; 74 | color: #222222; 75 | padding: 2px; 76 | } 77 | .ke-colorpicker-simple .ke-colorpicker-cell { 78 | font-size: 0; 79 | line-height: 0; 80 | border: 1px solid #FEFEFE; 81 | cursor: pointer; 82 | margin:3px; 83 | padding:0; 84 | } 85 | .ke-colorpicker-simple .ke-colorpicker-cell-top { 86 | font-family: "sans serif",tahoma,verdana,helvetica; 87 | font-size: 12px; 88 | line-height: 24px; 89 | border: 1px solid #FEFEFE; 90 | cursor: pointer; 91 | margin:0; 92 | padding:0; 93 | text-align: center; 94 | } 95 | .ke-colorpicker-simple .ke-colorpicker-cell-on { 96 | border: 1px solid #5690D2; 97 | } 98 | .ke-colorpicker-simple .ke-colorpicker-cell-selected { 99 | border: 1px solid #2446AB; 100 | } 101 | -------------------------------------------------------------------------------- /static/BJUI/plugins/niceValidator/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/niceValidator/images/loading.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/niceValidator/images/validator_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/niceValidator/images/validator_default.png -------------------------------------------------------------------------------- /static/BJUI/plugins/niceValidator/images/validator_simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/niceValidator/images/validator_simple.png -------------------------------------------------------------------------------- /static/BJUI/plugins/niceValidator/local/en.js: -------------------------------------------------------------------------------- 1 | /* nice validate - Global configuration */ 2 | $.validator.config({ 3 | //stopOnError: false, 4 | //theme: 'yellow_right', 5 | defaultMsg: "This field is not valid.", 6 | loadingMsg: "Validating...", 7 | 8 | // Custom rules 9 | rules: { 10 | digits: [/^\d+$/, "Please enter only digits."] 11 | 12 | } 13 | }) 14 | 15 | /* nice validate - Default error messages */ 16 | $.validator.config({ 17 | messages: { 18 | required: "This field is required.", 19 | remote: "Please try another name.", 20 | integer: { 21 | '*': "Please enter an integer.", 22 | '+': "Please enter a positive integer.", 23 | '+0': "Please enter a positive integer or 0.", 24 | '-': "Please enter a negative integer.", 25 | '-0': "Please enter a negative integer or 0." 26 | }, 27 | match: { 28 | eq: "{0} must be equal to {1}.", 29 | neq: "{0} must be not equal to {1}.", 30 | lt: "{0} must be less than {1}.", 31 | gt: "{0} must be greater than {1}.", 32 | lte: "{0} must be less than or equal to {1}.", 33 | gte: "{0} must be greater than or equal to {1}." 34 | }, 35 | range: { 36 | rg: "Please enter a number between {1} and {2}.", 37 | gte: "Please enter a number greater than or equal to {1}.", 38 | lte: "Please enter a number less than or equal to {1}." 39 | }, 40 | checked: { 41 | eq: "Please check {1} items.", 42 | rg: "Please check between {1} and {2} items.", 43 | gte: "Please check at least {1} items.", 44 | lte: "Please check no more than {1} items." 45 | }, 46 | length: { 47 | eq: "Please enter {1} characters.", 48 | rg: "Please enter a value between {1} and {2} characters long.", 49 | gte: "Please enter at least {1} characters.", 50 | lte: "Please enter no more than {1} characters.", 51 | eq_2: "", 52 | rg_2: "", 53 | gte_2: "", 54 | lte_2: "" 55 | } 56 | } 57 | }) -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/diy/1_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/diy/1_close.png -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/diy/1_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/diy/1_open.png -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/diy/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/diy/2.png -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/diy/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/diy/3.png -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/diy/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/diy/4.png -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/diy/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/diy/5.png -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/diy/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/diy/6.png -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/diy/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/diy/7.png -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/diy/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/diy/8.png -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/diy/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/diy/9.png -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/line_conn.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/loading.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/zTreeStandard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/zTreeStandard.gif -------------------------------------------------------------------------------- /static/BJUI/plugins/styles/zTreeStyle/img/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/styles/zTreeStyle/img/zTreeStandard.png -------------------------------------------------------------------------------- /static/BJUI/plugins/uploadify/css/uploadify.css: -------------------------------------------------------------------------------- 1 | /* 2 | Uploadify 3 | Copyright (c) 2012 Reactive Apps, Ronnie Garcia 4 | Released under the MIT License 5 | */ 6 | .uploadify{position:relative;} 7 | .uploadify-button-text{display:block; font-size:12px; line-height:24px !important;} 8 | .uploadify-button{background-color:#505050;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;border:1px solid #808080;color:#FFF;text-align:center;width:100%;} 9 | .uploadify-button span{line-height:inherit} 10 | .uploadify:hover .uploadify-button{background-color:#606060;} 11 | .uploadify-button.disabled{background-color:#D0D0D0;color:#808080;} 12 | .uploadify-queue-item{background-color:#F5F5F5;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;font:11px Verdana, Geneva, sans-serif;margin-top:5px;max-width:350px;padding:10px;} 13 | .uploadify-error{background-color:#FDE5DD !important;} 14 | .uploadify-queue-item .cancel a{background:url('../img/uploadify-cancel.png') 0 0 no-repeat;float:right;height:16px;text-indent:-9999px;width:16px;} 15 | .uploadify-queue-item.completed{background-color:#E5E5E5;} 16 | .uploadify-progress{background-color:#E5E5E5;margin-top:10px;width:100%;} 17 | .uploadify-progress-bar{background-color:#0099FF;height:3px;width:1px;} -------------------------------------------------------------------------------- /static/BJUI/plugins/uploadify/img/add.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/uploadify/img/add.jpg -------------------------------------------------------------------------------- /static/BJUI/plugins/uploadify/img/cancel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/uploadify/img/cancel.jpg -------------------------------------------------------------------------------- /static/BJUI/plugins/uploadify/img/delete.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/uploadify/img/delete.jpg -------------------------------------------------------------------------------- /static/BJUI/plugins/uploadify/img/upload.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/uploadify/img/upload.jpg -------------------------------------------------------------------------------- /static/BJUI/plugins/uploadify/img/uploadify-cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/uploadify/img/uploadify-cancel.png -------------------------------------------------------------------------------- /static/BJUI/plugins/uploadify/scripts/uploadify.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/plugins/uploadify/scripts/uploadify.swf -------------------------------------------------------------------------------- /static/BJUI/themes/blue/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/blue/purple.png -------------------------------------------------------------------------------- /static/BJUI/themes/blue/purple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/blue/purple@2x.png -------------------------------------------------------------------------------- /static/BJUI/themes/blue/topbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/blue/topbg.png -------------------------------------------------------------------------------- /static/BJUI/themes/blue/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/blue/zTreeStandard.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/FA/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/FA/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /static/BJUI/themes/css/FA/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/FA/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /static/BJUI/themes/css/FA/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/FA/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /static/BJUI/themes/css/FA/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/FA/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /static/BJUI/themes/css/FA/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/FA/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /static/BJUI/themes/css/ie7.css: -------------------------------------------------------------------------------- 1 | /*IE 7及以下*/ 2 | #errorie {position: fixed; top: 0; z-index: 100000; height: 30px; background: #FCF8E3;} 3 | #errorie div {width: 900px; margin: 0 auto; line-height: 30px; color: orange; font-size: 14px; text-align: center;} 4 | #errorie div a {color: #459f79;font-size: 14px;} 5 | #errorie div a:hover {text-decoration: underline;} 6 | 7 | -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/changed-flag-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/changed-flag-icon.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/diy/1_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/diy/1_close.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/diy/1_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/diy/1_open.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/diy/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/diy/2.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/diy/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/diy/3.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/diy/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/diy/4.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/diy/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/diy/5.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/diy/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/diy/6.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/diy/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/diy/7.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/diy/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/diy/8.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/diy/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/diy/9.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/error-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/error-bg.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/line_conn.gif -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/line_conn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/line_conn.png -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/loading.gif -------------------------------------------------------------------------------- /static/BJUI/themes/css/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/css/img/logo.png -------------------------------------------------------------------------------- /static/BJUI/themes/default/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/default/purple.png -------------------------------------------------------------------------------- /static/BJUI/themes/default/purple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/default/purple@2x.png -------------------------------------------------------------------------------- /static/BJUI/themes/default/topbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/default/topbg.png -------------------------------------------------------------------------------- /static/BJUI/themes/default/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/default/zTreeStandard.png -------------------------------------------------------------------------------- /static/BJUI/themes/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /static/BJUI/themes/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /static/BJUI/themes/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /static/BJUI/themes/green/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/green/purple.png -------------------------------------------------------------------------------- /static/BJUI/themes/green/purple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/green/purple@2x.png -------------------------------------------------------------------------------- /static/BJUI/themes/green/topbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/green/topbg.png -------------------------------------------------------------------------------- /static/BJUI/themes/green/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/green/zTreeStandard.png -------------------------------------------------------------------------------- /static/BJUI/themes/orange/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/orange/purple.png -------------------------------------------------------------------------------- /static/BJUI/themes/orange/purple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/orange/purple@2x.png -------------------------------------------------------------------------------- /static/BJUI/themes/orange/topbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/orange/topbg.png -------------------------------------------------------------------------------- /static/BJUI/themes/orange/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/orange/zTreeStandard.png -------------------------------------------------------------------------------- /static/BJUI/themes/purple/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/purple/purple.png -------------------------------------------------------------------------------- /static/BJUI/themes/purple/purple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/purple/purple@2x.png -------------------------------------------------------------------------------- /static/BJUI/themes/purple/topbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/purple/topbg.png -------------------------------------------------------------------------------- /static/BJUI/themes/purple/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/BJUI/themes/purple/zTreeStandard.png -------------------------------------------------------------------------------- /static/css/admin.css: -------------------------------------------------------------------------------- 1 | /* 2 | Description: Purpose of the stylesheet follows. 3 | */ 4 | 5 | /* 6 | TODO customize this sample style 7 | Syntax recommendation http://www.w3.org/TR/REC-CSS2/ 8 | */ 9 | 10 | .cmnt_admin { 11 | width: auto; 12 | display: block; 13 | overflow: auto; 14 | zoom:1; 15 | } 16 | .cmnt_admin h1 { 17 | font-size:18px; 18 | margin:18px 2px; 19 | } 20 | .cmnt_admin table { 21 | margin: 10px; 22 | border-collapse: collapse; 23 | width:780px; 24 | border:1px solid #7A90A8; 25 | text-align:left; 26 | } 27 | 28 | .cmnt_admin .result {margin:0px 0px;} 29 | .cmnt_admin .msg_wrapper { 30 | border-color:-moz-use-text-color #e7eff0; 31 | border-style:none none dashed; 32 | border-width:1px; 33 | overflow:hidden; 34 | padding:0px; 35 | } 36 | 37 | .cmnt_admin .msg_hdr{ 38 | padding:0px; 39 | margin:0px; 40 | border-style:none; 41 | border-width:1px; 42 | background-color:#e7eff0; 43 | } 44 | .cmnt_admin .msg_hdr_inline { 45 | -moz-background-clip:border; 46 | -moz-background-inline-policy:continuous; 47 | -moz-background-origin:padding; 48 | font-family:Arial,Helvetica,sans-serif; 49 | line-height:10px; 50 | padding:0px 10px; 51 | font-size:13px; 52 | } 53 | .cmnt_admin .msg_hdr_inline span, 54 | .cmnt_admin .msg_hdr_inline input, 55 | .cmnt_admin .msg_hdr_inline a{ 56 | padding:0px; 57 | margin:0px 0px; 58 | font-size:13px; 59 | } 60 | .cmnt_admin .msg_cont { 61 | -moz-background-clip:border; 62 | -moz-background-inline-policy:continuous; 63 | -moz-background-origin:padding; 64 | background:none repeat scroll 0 0; 65 | font-family:Arial,Helvetica,sans-serif; 66 | line-height:20px; 67 | padding:5px 10px; 68 | font-size:14px; 69 | } 70 | -------------------------------------------------------------------------------- /static/css/table.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | .ellipsis_div{ 4 | overflow:hidden; 5 | text-overflow:ellipsis; 6 | white-space:nowrap; 7 | } 8 | .z-table{ border-bottom: #cccccc 1px solid; border-left:#cccccc 1px solid; color: #333; font-size: 12px;width:90%; margin:0 auto;} 9 | .z-table td{border-top: #cccccc 1px solid; border-right: #cccccc 1px solid;padding: 2px 5px;} 10 | .z-table td.z-one{ text-align: right; background-color: #f5fafe; } 11 | .z-btn{ background-color:#0CF; color:#fff; border:1px solid #09F; height:22px; width:50px; border-radius:5px; line-height:22px;} 12 | .z-btn:hover{ background-color:#09F} 13 | .z-text{ height:20px; border:1px solid #09F; line-height:20px; width:100px;border-radius:3px; padding:0 0 0 5px; vertical-align:middle} 14 | .z-text.focus{height:20px!important; border:1px solid #09F!important; line-height:20px!important; width:100px!important;border-radius:3px!important; padding:0 0 0 5px!important; vertical-align:middle; background-color:#F8FAFC;} 15 | -------------------------------------------------------------------------------- /static/images/001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/001.jpg -------------------------------------------------------------------------------- /static/images/002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/002.jpg -------------------------------------------------------------------------------- /static/images/003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/003.jpg -------------------------------------------------------------------------------- /static/images/004.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/004.jpg -------------------------------------------------------------------------------- /static/images/005.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/005.jpg -------------------------------------------------------------------------------- /static/images/bjui-b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/bjui-b.png -------------------------------------------------------------------------------- /static/images/bodybg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/bodybg.jpg -------------------------------------------------------------------------------- /static/images/btn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/btn.jpg -------------------------------------------------------------------------------- /static/images/captcha.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/captcha.jpeg -------------------------------------------------------------------------------- /static/images/domain_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/domain_logo.png -------------------------------------------------------------------------------- /static/images/group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/group.png -------------------------------------------------------------------------------- /static/images/inputbg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/inputbg.jpg -------------------------------------------------------------------------------- /static/images/loginbg_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/loginbg_01.jpg -------------------------------------------------------------------------------- /static/images/loginbg_02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/loginbg_02.jpg -------------------------------------------------------------------------------- /static/images/loginbg_03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/loginbg_03.jpg -------------------------------------------------------------------------------- /static/images/loginbg_04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/loginbg_04.jpg -------------------------------------------------------------------------------- /static/images/loginbg_05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/loginbg_05.jpg -------------------------------------------------------------------------------- /static/images/loginbg_06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/loginbg_06.jpg -------------------------------------------------------------------------------- /static/images/loginbg_07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/loginbg_07.jpg -------------------------------------------------------------------------------- /static/images/loginbg_08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/loginbg_08.jpg -------------------------------------------------------------------------------- /static/images/loginbg_09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/loginbg_09.jpg -------------------------------------------------------------------------------- /static/images/loginbtnbg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/loginbtnbg.jpg -------------------------------------------------------------------------------- /static/images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/logo.jpg -------------------------------------------------------------------------------- /static/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/logo.png -------------------------------------------------------------------------------- /static/images/logo_bootstrap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/logo_bootstrap.png -------------------------------------------------------------------------------- /static/images/magage-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/magage-bg.jpg -------------------------------------------------------------------------------- /static/images/magage-img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/magage-img.jpg -------------------------------------------------------------------------------- /static/images/tablethbg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ireaderlab/zkdash/a9e27e9cc63dcfbb483a1fdfa00c98fd0b079739/static/images/tablethbg.jpg -------------------------------------------------------------------------------- /static/js/form_search.js: -------------------------------------------------------------------------------- 1 | // 将form转为AJAX提交 2 | function ajaxSubmit(frm, fn) { 3 | var dataPara = getFormJson(frm); 4 | // alert(frm.action) 5 | var real_action = frm.action; 6 | if (frm.action.lastIndexOf('/index') > -1) { 7 | real_action = frm.action.replace('/index', '/search'); 8 | } 9 | // alert(dumpProps(dataPara, 'dataPara')) 10 | $.ajax({ 11 | url: real_action, 12 | type: frm.method, 13 | data: dataPara, 14 | success: fn, 15 | dataType: 'text', 16 | }); 17 | } 18 | 19 | // 将form中的值转换为键值对。 20 | function getFormJson(frm) { 21 | var json = {}; 22 | var arr = $(frm).serializeArray(); 23 | $.each(arr, function () { 24 | if (json[this.name] !== undefined) { 25 | if (!json[this.name].push) { 26 | json[this.name] = [json[this.name]]; 27 | } 28 | json[this.name].push(this.value || ''); 29 | } else { 30 | json[this.name] = this.value || ''; 31 | } 32 | }); 33 | 34 | return json; 35 | } 36 | 37 | // 调试js打印对象属性 38 | function dumpProps(obj, obj_name) { 39 | var result = ""; 40 | for (var i in obj) { 41 | result += obj_name + "." + i + " = " + obj[i] + "\n"; 42 | } 43 | return result; 44 | } 45 | -------------------------------------------------------------------------------- /tpl/config/agent/add.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% raw xsrf_form_html() %} 4 |

5 |
6 | 7 |
8 | 9 |
10 |
11 |
12 | 13 |
14 | 15 |
16 |
17 |
18 | 19 |
20 | 25 |
26 |
27 |
28 | 29 |
30 | 31 |
32 |
33 |
34 |
35 |
36 | 40 | -------------------------------------------------------------------------------- /tpl/config/agent/datagrid.html: -------------------------------------------------------------------------------- 1 |
2 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | {% for record in records %} 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | {% end %} 43 | 44 |
ip主机名集群名说明
{% if record.ip %} {{ record.ip }} {% end %} {% if record.hostname %} {{ record.hostname }} {% end %} {% if record.cluster_name %} {{ record.cluster_name }} {% end %} {% if record.notes %} {{ record.notes }} {% end %}
45 | {% module Paginate(total, current_page, page_size) %} 46 | -------------------------------------------------------------------------------- /tpl/config/agent/edit.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% raw xsrf_form_html() %} 4 |

5 |
6 | 7 |
8 | 9 |
10 |
11 |
12 | 13 |
14 | 15 |
16 |
17 |
18 | 19 |
20 | 25 |
26 |
27 |
28 | 29 |
30 | 31 |
32 |
33 | 34 |
35 |
36 |
37 | 41 | -------------------------------------------------------------------------------- /tpl/config/agent/watch.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
QConf Agent
4 |
5 | 16 |
17 |
18 |
19 |
Agent
20 |
21 |
22 |
23 | Mysql统计的Agent 24 |
25 |
26 | Zookeeper注册的Agent 27 |
28 |
29 |
30 |
31 |
32 | 60 | -------------------------------------------------------------------------------- /tpl/config/snapshot/index.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
快照查询
4 |
5 | 18 |
19 |
20 |
21 | 36 | -------------------------------------------------------------------------------- /tpl/config/snapshot/view.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | {% for snapshot in snapshots %} 13 | 14 | 15 | 16 | 17 | 18 | 22 | 23 | {% end %} 24 |
快照路径快照生成时间快照状态快照值操作
{{ snapshot.path }}{{ snapshot.create_time }}{{ status_mapping.get(snapshot.status) }}{{ snapshot.data }} 19 | 回滚 20 | 删除 21 |
25 |
26 | -------------------------------------------------------------------------------- /tpl/config/znode/edit.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% raw xsrf_form_html() %} 4 |

5 | 6 |
7 | 8 |
9 | 10 |
11 |
12 | 13 |
14 | 15 |
16 | 17 |
18 |
19 | 20 |
21 | 22 |
23 | 27 |
28 |
29 | 30 |
31 | 32 |
33 | {% if download_link %} 34 | 点击下载节点文件 35 | {% else %} 36 | 37 | {% end %} 38 |
39 |
40 | 41 |
42 | 43 |
44 | 45 |
46 |
47 |
48 |
49 |
50 | 54 | 65 | -------------------------------------------------------------------------------- /tpl/config/znode/index.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
配置查询
4 |
5 | 18 |
19 |
20 |
21 | 36 | -------------------------------------------------------------------------------- /tpl/config/znode/syncstatus.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | {% for feedback in feedbacks %} 21 | {% if hasattr(feedback, 'sync_status') %} 22 | 23 | 24 | 25 | 26 | 27 | 28 | {% end %} 29 | {% end %} 30 |
主机名IP配置同步状态配置同步时间
{{ feedback.hostname }}{{ feedback.ip }}{{ feedback.sync_status }}{{ feedback.update_time }}
31 |
32 | -------------------------------------------------------------------------------- /tpl/config/znode/view.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

4 | 5 |
6 | 7 |
8 | 9 |
10 |
11 | 12 |
13 | 14 |
15 | {% if download_link %} 16 | 点击下载节点文件 17 | {% else %} 18 | 21 | {% end %} 22 |
23 |
24 | 25 |
26 |
27 |
28 | -------------------------------------------------------------------------------- /tpl/config/zookeeper/add.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% raw xsrf_form_html() %} 4 |

5 |
6 | 7 |
8 | 9 |
10 |
11 |
12 | 13 |
14 | 15 |
16 |
17 |
18 | 19 |
20 | 21 |
22 |
23 |
24 |
25 |
26 | 30 | 65 | -------------------------------------------------------------------------------- /tpl/config/zookeeper/datagrid.html: -------------------------------------------------------------------------------- 1 |
2 |
    3 | 4 |
    5 | 6 | 7 | 8 | 9 |
    10 | 11 |
    12 |
    13 | 14 | 18 |
    19 |
    20 | 21 |
22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | {% for record in records %} 34 | 35 | 36 | 37 | 38 | 39 | 40 | {% end %} 41 | 42 |
集群名称集群配置集群业务
{% if record.cluster_name %} {{ record.cluster_name }} {% end %} {% if record.hosts %} {{ record.hosts }} {% end %} {% if record.business %} {{ record.business }} {% end %}
43 | {% module Paginate(total, current_page, page_size) %} 44 | -------------------------------------------------------------------------------- /tpl/config/zookeeper/edit.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% raw xsrf_form_html() %} 4 |

5 |
6 | 7 |
8 | 9 |
10 |
11 |
12 | 13 |
14 | 15 |
16 |
17 |
18 | 19 |
20 | 21 |
22 |
23 | 24 |
25 |
26 |
27 | 31 | 64 | -------------------------------------------------------------------------------- /tpl/config/zookeeper/stat.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |
ZOOKEEPER集群
5 |
6 | {% for zk in zk_clusters %} 7 |
8 | 9 |
10 | {% end %} 11 |
12 |
13 | 14 |
15 |
ZOOKEEPER集群节点
16 |
17 |
18 |
19 |
20 |
21 | 22 |
23 | 43 | -------------------------------------------------------------------------------- /tpl/config/zookeeper/statdetail.html: -------------------------------------------------------------------------------- 1 |
2 |
    3 | {% for host, stat in cluster_info.iteritems() %} 4 |
  • 5 | 6 |
    {{ stat }}
    7 |
  • 8 | {% end %} 9 |
10 |
11 | -------------------------------------------------------------------------------- /tpl/error/error.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tpl/uimodule/paginate.html: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /tpl/uimodule/query.html: -------------------------------------------------------------------------------- 1 | 9 |   17 |   25 | {% if time_flag %} 26 |   27 | {% else %} 28 |   29 | {% end %} 30 | --------------------------------------------------------------------------------