├── Dockerfile
├── Gruntfile.js
├── README.md
├── api
├── common
│ ├── FileUtil.js
│ ├── StringUtil.js
│ └── ZipUtil.js
├── controllers
│ ├── TestController.js
│ ├── api
│ │ ├── OauthController.js
│ │ ├── TestController.js
│ │ └── oauth.json
│ ├── open
│ │ ├── FileUploadController.js
│ │ ├── ImageController.js
│ │ ├── UeditorController.js
│ │ ├── UeditorWxController.js
│ │ └── WeixinController.js
│ ├── private
│ │ ├── HomeController.js
│ │ ├── LoginController.js
│ │ ├── cms
│ │ │ ├── ArticleController.js
│ │ │ ├── ChannelController.js
│ │ │ ├── LinkClassController.js
│ │ │ ├── LinkController.js
│ │ │ └── SiteController.js
│ │ ├── conf
│ │ │ └── ImgController.js
│ │ ├── img
│ │ │ └── ImageController.js
│ │ ├── sys
│ │ │ ├── BackupController.js
│ │ │ ├── ConfController.js
│ │ │ ├── IpController.js
│ │ │ ├── JobController.js
│ │ │ ├── LogController.js
│ │ │ ├── MenuController.js
│ │ │ ├── RoleController.js
│ │ │ ├── UnitController.js
│ │ │ └── UserController.js
│ │ └── wx
│ │ │ ├── ConfigController.js
│ │ │ ├── MenuController.js
│ │ │ ├── NewsController.js
│ │ │ ├── ReplyController.js
│ │ │ ├── TxtController.js
│ │ │ ├── UserController.js
│ │ │ └── msg
│ │ │ ├── MassController.js
│ │ │ └── UserController.js
│ └── public
│ │ └── pc
│ │ └── IndexController.js
├── models
│ ├── cms
│ │ ├── Cms_article.js
│ │ ├── Cms_article_content.js
│ │ ├── Cms_channel.js
│ │ ├── Cms_link.js
│ │ ├── Cms_linkClass.js
│ │ └── Cms_site.js
│ ├── img
│ │ ├── Img_config.js
│ │ └── Img_image.js
│ ├── sys
│ │ ├── Sys_backup.js
│ │ ├── Sys_config.js
│ │ ├── Sys_ip.js
│ │ ├── Sys_job.js
│ │ ├── Sys_log.js
│ │ ├── Sys_menu.js
│ │ ├── Sys_role.js
│ │ ├── Sys_unit.js
│ │ └── Sys_user.js
│ └── wx
│ │ ├── Wx_config.js
│ │ ├── Wx_mass.js
│ │ ├── Wx_mass_news.js
│ │ ├── Wx_mass_send.js
│ │ ├── Wx_menu.js
│ │ ├── Wx_msg.js
│ │ ├── Wx_msg_reply.js
│ │ ├── Wx_news.js
│ │ ├── Wx_reply.js
│ │ ├── Wx_txt.js
│ │ └── Wx_user.js
├── policies
│ ├── login.js
│ ├── none.js
│ ├── oauthAuth.js
│ └── sessionAuth.js
├── responses
│ ├── badRequest.js
│ ├── forbidden.js
│ ├── notFound.js
│ ├── ok.js
│ └── serverError.js
└── services
│ ├── EmailService.js
│ ├── JobService.js
│ ├── RedisService.js
│ ├── WechatService.js
│ └── WeixinService.js
├── app.js
├── assets
├── bootstrap
│ ├── css
│ │ └── bootstrap.min.css
│ ├── fonts
│ │ ├── glyphicons-halflings-regular (1).eot
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ └── glyphicons-halflings-regular.woff
│ └── js
│ │ └── bootstrap.js
├── css
│ ├── animate.min.css
│ ├── font-awesome.css
│ ├── fonts
│ │ ├── DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff
│ │ ├── EInbV5DfGHOiMmvb1Xr-hnhCUOGz7vYGh680lGh-uXM.woff
│ │ ├── MTP_ySUJH_bn48VBG8sNSnhCUOGz7vYGh680lGh-uXM.woff
│ │ ├── cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff
│ │ ├── css.css
│ │ ├── font.css
│ │ └── k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff
│ ├── importer.less
│ ├── main.css
│ ├── panel.css
│ ├── skins
│ │ ├── palette.2.css
│ │ ├── palette.3.css
│ │ ├── palette.4.css
│ │ ├── palette.css
│ │ └── purple.css
│ └── themify-icons.css
├── favicon.ico
├── fonts
│ ├── fontawesome-webfont (1).eot
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.svg
│ ├── fontawesome-webfont.ttf
│ ├── fontawesome-webfont.woff
│ ├── themify (1).eot
│ ├── themify.eot
│ ├── themify.svg
│ ├── themify.ttf
│ └── themify.woff
├── img
│ ├── avatar.jpg
│ ├── close.gif
│ ├── cover.jpg
│ ├── empty.bmp
│ ├── face1.jpg
│ ├── face3.jpg
│ ├── face4.jpg
│ ├── face5.jpg
│ ├── fishy4.png
│ ├── flags
│ │ ├── cn.png
│ │ ├── es.png
│ │ ├── fr.png
│ │ ├── us.png
│ │ └── za.png
│ ├── image_devInTub.png
│ ├── invoice.png
│ ├── loading.gif
│ ├── logo.png
│ ├── man.png
│ ├── minimal.png
│ ├── minimal@2x.png
│ ├── panel
│ │ ├── boxed.png
│ │ ├── scroll.png
│ │ └── small.png
│ ├── sago.jpg
│ └── sprite-skin-flat.png
├── js
│ ├── animated.js
│ ├── bootstrap-datatables.js
│ ├── buttons.js
│ ├── calendar.js
│ ├── catalog.js
│ ├── chart.js
│ ├── dashboard.js
│ ├── datatables.js
│ ├── date.js
│ ├── demo-mock.js
│ ├── dependencies
│ │ └── sails.io.js
│ ├── editor.js
│ ├── form-crop.js
│ ├── form-custom.js
│ ├── form-masks.js
│ ├── form-wizard.js
│ ├── form-wysiwyg.js
│ ├── form.js
│ ├── gallery.js
│ ├── general.js
│ ├── html5shiv.js
│ ├── jquery.pjax.js
│ ├── json2.js
│ ├── jstree.js
│ ├── main.js
│ ├── maps.js
│ ├── notifications.js
│ ├── offscreen.js
│ ├── page.js
│ ├── pickers.js
│ ├── progress-slider.js
│ ├── respond.min.js
│ ├── select.js
│ ├── sortable.js
│ ├── stepy.js
│ ├── table-edit.js
│ ├── toast.js
│ ├── tour.js
│ ├── validator.js
│ ├── vector.js
│ ├── x-editable.js
│ └── zjson.js
├── plugins
│ ├── address
│ │ ├── address.css
│ │ └── address.js
│ ├── appear
│ │ └── jquery.appear.js
│ ├── bootstrap-colorpalette
│ │ ├── bootstrap-colorpalette.css
│ │ └── bootstrap-colorpalette.js
│ ├── bootstrap-markdown
│ │ ├── css
│ │ │ └── bootstrap-markdown.min.css
│ │ └── js
│ │ │ └── bootstrap-markdown.js
│ ├── bootstrap-rating-input
│ │ └── bootstrap-rating-input.min.js
│ ├── bootstrap-tagsinput
│ │ ├── bootstrap-tagsinput.css
│ │ └── bootstrap-tagsinput.min.js
│ ├── chartjs
│ │ └── Chart.min.js
│ ├── chosen
│ │ ├── chosen-sprite.png
│ │ ├── chosen-sprite@2x.png
│ │ ├── chosen.jquery.min.js
│ │ └── chosen.min.css
│ ├── colorpicker
│ │ ├── css
│ │ │ └── colorpicker.css
│ │ ├── img
│ │ │ ├── alpha.png
│ │ │ ├── hue.png
│ │ │ └── saturation.png
│ │ └── js
│ │ │ └── bootstrap-colorpicker.js
│ ├── count-to
│ │ └── jquery.countTo.js
│ ├── datatables
│ │ ├── cn.json
│ │ ├── dataTables.bootstrap.css
│ │ ├── dataTables.bootstrap.js
│ │ ├── jquery.dataTables.css
│ │ └── jquery.dataTables.js
│ ├── datepicker
│ │ ├── bootstrap-datetimepicker.css
│ │ ├── bootstrap-datetimepicker.js
│ │ ├── bootstrap-datetimepicker.min.css
│ │ ├── bootstrap-datetimepicker.min.js
│ │ └── locales
│ │ │ ├── bootstrap-datetimepicker.zh-CN.js
│ │ │ └── bootstrap-datetimepicker.zh-TW.js
│ ├── daterangepicker
│ │ ├── daterangepicker-bs3.css
│ │ ├── daterangepicker.js
│ │ └── moment.js
│ ├── dropzone
│ │ ├── dropzone.css
│ │ ├── dropzone.js
│ │ └── images
│ │ │ ├── spritemap.png
│ │ │ └── spritemap@2x.png
│ ├── easy-pie-chart
│ │ └── jquery.easypiechart.js
│ ├── emoji
│ │ ├── emoji.css
│ │ ├── emoji.js
│ │ └── emoji.png
│ ├── enjoyhint
│ │ ├── Casino_Hand
│ │ │ ├── casino_hand-webfont.eot
│ │ │ ├── casino_hand-webfont.svg
│ │ │ ├── casino_hand-webfont.ttf
│ │ │ └── casino_hand-webfont.woff
│ │ ├── enjoyhint.css
│ │ └── enjoyhint.min.js
│ ├── fastclick.js
│ ├── flot
│ │ ├── jquery.flot.categories.js
│ │ ├── jquery.flot.js
│ │ ├── jquery.flot.orderBars.js
│ │ ├── jquery.flot.pie.js
│ │ ├── jquery.flot.resize.js
│ │ ├── jquery.flot.stack.js
│ │ └── jquery.flot.time.js
│ ├── fuelux
│ │ ├── pillbox.js
│ │ ├── spinner.js
│ │ └── wizard.js
│ ├── fullcalendar
│ │ ├── fullcalendar.css
│ │ └── fullcalendar.min.js
│ ├── gmaps.js
│ ├── icheck
│ │ └── icheck.js
│ ├── imagesloaded
│ │ └── imagesloaded.js
│ ├── ion.rangeSlider
│ │ ├── ion.rangeSlider.css
│ │ ├── ion.rangeSlider.min.js
│ │ └── ion.rangeSlider.skinFlat.css
│ ├── isotope
│ │ └── isotope.pkgd.min.js
│ ├── jquery-1.11.1.min.js
│ ├── jquery-ui.custom.min.js
│ ├── jquery.blockUI.js
│ ├── jquery.dragsort-0.5.1.min.js
│ ├── jquery.easing.min.js
│ ├── jquery.form.js
│ ├── jquery.maskedinput.min.js
│ ├── jquery.mockjax.js
│ ├── jquery.nestable.js
│ ├── jquery.placeholder.js
│ ├── jquery.qrcode.min.js
│ ├── jquery.slimscroll.min.js
│ ├── jquery.sortable.js
│ ├── jquery.sparkline.js
│ ├── jstree
│ │ ├── jstree.min.js
│ │ └── themes
│ │ │ └── default
│ │ │ ├── 32px.png
│ │ │ ├── 40px.png
│ │ │ ├── style.min.css
│ │ │ └── throbber.gif
│ ├── jvectormap
│ │ ├── jquery-jvectormap-1.2.2.css
│ │ ├── jquery-jvectormap-1.2.2.min.js
│ │ └── jquery-jvectormap-world-mill-en.js
│ ├── medium
│ │ ├── medium-editor.css
│ │ └── medium-editor.min.js
│ ├── modernizr.js
│ ├── moment.js
│ ├── morris
│ │ └── morris.js
│ ├── parsley.min.js
│ ├── parsley.zh_cn.js
│ ├── raphael.min.js
│ ├── responsive-tables
│ │ ├── responsive-tables.js
│ │ └── theme.css
│ ├── select2
│ │ ├── select2-spinner.gif
│ │ ├── select2.css
│ │ ├── select2.min.js
│ │ ├── select2.png
│ │ └── select2x2.png
│ ├── slider
│ │ ├── bootstrap-slider.js
│ │ └── slider.css
│ ├── sorttable
│ │ ├── Sortable.js
│ │ └── Sortable.min.js
│ ├── stepy
│ │ ├── img
│ │ │ └── alert.png
│ │ ├── jquery.stepy.css
│ │ ├── jquery.stepy.js
│ │ └── jquery.validate.min.js
│ ├── superbox
│ │ └── superbox.min.js
│ ├── switchery
│ │ └── switchery.js
│ ├── table-sortable
│ │ ├── sortable.min.js
│ │ └── theme.css
│ ├── timepicker
│ │ ├── jquery.timepicker.css
│ │ └── jquery.timepicker.min.js
│ ├── toastr
│ │ ├── toastr.min.css
│ │ └── toastr.min.js
│ ├── treetable
│ │ ├── jquery.treetable.css
│ │ └── jquery.treetable.js
│ ├── typeaheadjs
│ │ ├── lib
│ │ │ ├── typeahead.js
│ │ │ └── typeahead.js-bootstrap.css
│ │ └── typeaheadjs.js
│ ├── ueditor
│ │ ├── dialogs
│ │ │ ├── anchor
│ │ │ │ └── anchor.html
│ │ │ ├── attachment
│ │ │ │ ├── attachment.css
│ │ │ │ ├── attachment.html
│ │ │ │ ├── attachment.js
│ │ │ │ ├── fileTypeImages
│ │ │ │ │ ├── icon_chm.gif
│ │ │ │ │ ├── icon_default.png
│ │ │ │ │ ├── icon_doc.gif
│ │ │ │ │ ├── icon_exe.gif
│ │ │ │ │ ├── icon_jpg.gif
│ │ │ │ │ ├── icon_mp3.gif
│ │ │ │ │ ├── icon_mv.gif
│ │ │ │ │ ├── icon_pdf.gif
│ │ │ │ │ ├── icon_ppt.gif
│ │ │ │ │ ├── icon_psd.gif
│ │ │ │ │ ├── icon_rar.gif
│ │ │ │ │ ├── icon_txt.gif
│ │ │ │ │ └── icon_xls.gif
│ │ │ │ └── images
│ │ │ │ │ ├── alignicon.gif
│ │ │ │ │ ├── alignicon.png
│ │ │ │ │ ├── bg.png
│ │ │ │ │ ├── file-icons.gif
│ │ │ │ │ ├── file-icons.png
│ │ │ │ │ ├── icons.gif
│ │ │ │ │ ├── icons.png
│ │ │ │ │ ├── image.png
│ │ │ │ │ ├── progress.png
│ │ │ │ │ ├── success.gif
│ │ │ │ │ └── success.png
│ │ │ ├── background
│ │ │ │ ├── background.css
│ │ │ │ ├── background.html
│ │ │ │ ├── background.js
│ │ │ │ └── images
│ │ │ │ │ ├── bg.png
│ │ │ │ │ └── success.png
│ │ │ ├── charts
│ │ │ │ ├── chart.config.js
│ │ │ │ ├── charts.css
│ │ │ │ ├── charts.html
│ │ │ │ ├── charts.js
│ │ │ │ └── images
│ │ │ │ │ ├── charts0.png
│ │ │ │ │ ├── charts1.png
│ │ │ │ │ ├── charts2.png
│ │ │ │ │ ├── charts3.png
│ │ │ │ │ ├── charts4.png
│ │ │ │ │ └── charts5.png
│ │ │ ├── emotion
│ │ │ │ ├── emotion.css
│ │ │ │ ├── emotion.html
│ │ │ │ ├── emotion.js
│ │ │ │ └── images
│ │ │ │ │ ├── 0.gif
│ │ │ │ │ ├── bface.gif
│ │ │ │ │ ├── cface.gif
│ │ │ │ │ ├── fface.gif
│ │ │ │ │ ├── jxface2.gif
│ │ │ │ │ ├── neweditor-tab-bg.png
│ │ │ │ │ ├── tface.gif
│ │ │ │ │ ├── wface.gif
│ │ │ │ │ └── yface.gif
│ │ │ ├── gmap
│ │ │ │ └── gmap.html
│ │ │ ├── help
│ │ │ │ ├── help.css
│ │ │ │ ├── help.html
│ │ │ │ └── help.js
│ │ │ ├── image
│ │ │ │ ├── image.css
│ │ │ │ ├── image.html
│ │ │ │ ├── image.js
│ │ │ │ └── images
│ │ │ │ │ ├── alignicon.jpg
│ │ │ │ │ ├── bg.png
│ │ │ │ │ ├── icons.gif
│ │ │ │ │ ├── icons.png
│ │ │ │ │ ├── image.png
│ │ │ │ │ ├── progress.png
│ │ │ │ │ ├── success.gif
│ │ │ │ │ └── success.png
│ │ │ ├── insertframe
│ │ │ │ └── insertframe.html
│ │ │ ├── internal.js
│ │ │ ├── link
│ │ │ │ └── link.html
│ │ │ ├── map
│ │ │ │ ├── map.html
│ │ │ │ └── show.html
│ │ │ ├── music
│ │ │ │ ├── music.css
│ │ │ │ ├── music.html
│ │ │ │ └── music.js
│ │ │ ├── preview
│ │ │ │ └── preview.html
│ │ │ ├── scrawl
│ │ │ │ ├── images
│ │ │ │ │ ├── addimg.png
│ │ │ │ │ ├── brush.png
│ │ │ │ │ ├── delimg.png
│ │ │ │ │ ├── delimgH.png
│ │ │ │ │ ├── empty.png
│ │ │ │ │ ├── emptyH.png
│ │ │ │ │ ├── eraser.png
│ │ │ │ │ ├── redo.png
│ │ │ │ │ ├── redoH.png
│ │ │ │ │ ├── scale.png
│ │ │ │ │ ├── scaleH.png
│ │ │ │ │ ├── size.png
│ │ │ │ │ ├── undo.png
│ │ │ │ │ └── undoH.png
│ │ │ │ ├── scrawl.css
│ │ │ │ ├── scrawl.html
│ │ │ │ └── scrawl.js
│ │ │ ├── searchreplace
│ │ │ │ ├── searchreplace.html
│ │ │ │ └── searchreplace.js
│ │ │ ├── snapscreen
│ │ │ │ └── snapscreen.html
│ │ │ ├── spechars
│ │ │ │ ├── spechars.html
│ │ │ │ └── spechars.js
│ │ │ ├── table
│ │ │ │ ├── dragicon.png
│ │ │ │ ├── edittable.css
│ │ │ │ ├── edittable.html
│ │ │ │ ├── edittable.js
│ │ │ │ ├── edittd.html
│ │ │ │ └── edittip.html
│ │ │ ├── template
│ │ │ │ ├── config.js
│ │ │ │ ├── images
│ │ │ │ │ ├── bg.gif
│ │ │ │ │ ├── pre0.png
│ │ │ │ │ ├── pre1.png
│ │ │ │ │ ├── pre2.png
│ │ │ │ │ ├── pre3.png
│ │ │ │ │ └── pre4.png
│ │ │ │ ├── template.css
│ │ │ │ ├── template.html
│ │ │ │ └── template.js
│ │ │ ├── video
│ │ │ │ ├── images
│ │ │ │ │ ├── bg.png
│ │ │ │ │ ├── center_focus.jpg
│ │ │ │ │ ├── file-icons.gif
│ │ │ │ │ ├── file-icons.png
│ │ │ │ │ ├── icons.gif
│ │ │ │ │ ├── icons.png
│ │ │ │ │ ├── image.png
│ │ │ │ │ ├── left_focus.jpg
│ │ │ │ │ ├── none_focus.jpg
│ │ │ │ │ ├── progress.png
│ │ │ │ │ ├── right_focus.jpg
│ │ │ │ │ ├── success.gif
│ │ │ │ │ └── success.png
│ │ │ │ ├── video.css
│ │ │ │ ├── video.html
│ │ │ │ └── video.js
│ │ │ ├── webapp
│ │ │ │ └── webapp.html
│ │ │ └── wordimage
│ │ │ │ ├── fClipboard_ueditor.swf
│ │ │ │ ├── imageUploader.swf
│ │ │ │ ├── tangram.js
│ │ │ │ ├── wordimage.html
│ │ │ │ └── wordimage.js
│ │ ├── index.html
│ │ ├── lang
│ │ │ ├── en
│ │ │ │ ├── en.js
│ │ │ │ └── images
│ │ │ │ │ ├── addimage.png
│ │ │ │ │ ├── alldeletebtnhoverskin.png
│ │ │ │ │ ├── alldeletebtnupskin.png
│ │ │ │ │ ├── background.png
│ │ │ │ │ ├── button.png
│ │ │ │ │ ├── copy.png
│ │ │ │ │ ├── deletedisable.png
│ │ │ │ │ ├── deleteenable.png
│ │ │ │ │ ├── listbackground.png
│ │ │ │ │ ├── localimage.png
│ │ │ │ │ ├── music.png
│ │ │ │ │ ├── rotateleftdisable.png
│ │ │ │ │ ├── rotateleftenable.png
│ │ │ │ │ ├── rotaterightdisable.png
│ │ │ │ │ ├── rotaterightenable.png
│ │ │ │ │ └── upload.png
│ │ │ └── zh-cn
│ │ │ │ ├── images
│ │ │ │ ├── copy.png
│ │ │ │ ├── localimage.png
│ │ │ │ ├── music.png
│ │ │ │ └── upload.png
│ │ │ │ └── zh-cn.js
│ │ ├── node
│ │ │ └── config.json
│ │ ├── php
│ │ │ ├── Uploader.class.php
│ │ │ ├── action_crawler.php
│ │ │ ├── action_list.php
│ │ │ ├── action_upload.php
│ │ │ └── controller.php
│ │ ├── themes
│ │ │ ├── default
│ │ │ │ ├── css
│ │ │ │ │ ├── ueditor.css
│ │ │ │ │ └── ueditor.min.css
│ │ │ │ ├── dialogbase.css
│ │ │ │ └── images
│ │ │ │ │ ├── anchor.gif
│ │ │ │ │ ├── arrow.png
│ │ │ │ │ ├── arrow_down.png
│ │ │ │ │ ├── arrow_up.png
│ │ │ │ │ ├── button-bg.gif
│ │ │ │ │ ├── cancelbutton.gif
│ │ │ │ │ ├── charts.png
│ │ │ │ │ ├── cursor_h.gif
│ │ │ │ │ ├── cursor_h.png
│ │ │ │ │ ├── cursor_v.gif
│ │ │ │ │ ├── cursor_v.png
│ │ │ │ │ ├── dialog-title-bg.png
│ │ │ │ │ ├── filescan.png
│ │ │ │ │ ├── highlighted.gif
│ │ │ │ │ ├── icons-all.gif
│ │ │ │ │ ├── icons.gif
│ │ │ │ │ ├── icons.png
│ │ │ │ │ ├── loaderror.png
│ │ │ │ │ ├── loading.gif
│ │ │ │ │ ├── lock.gif
│ │ │ │ │ ├── neweditor-tab-bg.png
│ │ │ │ │ ├── pagebreak.gif
│ │ │ │ │ ├── scale.png
│ │ │ │ │ ├── sortable.png
│ │ │ │ │ ├── spacer.gif
│ │ │ │ │ ├── sparator_v.png
│ │ │ │ │ ├── table-cell-align.png
│ │ │ │ │ ├── tangram-colorpicker.png
│ │ │ │ │ ├── toolbar_bg.png
│ │ │ │ │ ├── unhighlighted.gif
│ │ │ │ │ ├── upload.png
│ │ │ │ │ ├── videologo.gif
│ │ │ │ │ ├── word.gif
│ │ │ │ │ └── wordpaste.png
│ │ │ └── iframe.css
│ │ ├── third-party
│ │ │ ├── SyntaxHighlighter
│ │ │ │ ├── shCore.js
│ │ │ │ └── shCoreDefault.css
│ │ │ ├── codemirror
│ │ │ │ ├── codemirror.css
│ │ │ │ └── codemirror.js
│ │ │ ├── highcharts
│ │ │ │ ├── adapters
│ │ │ │ │ ├── mootools-adapter.js
│ │ │ │ │ ├── mootools-adapter.src.js
│ │ │ │ │ ├── prototype-adapter.js
│ │ │ │ │ ├── prototype-adapter.src.js
│ │ │ │ │ ├── standalone-framework.js
│ │ │ │ │ └── standalone-framework.src.js
│ │ │ │ ├── highcharts-more.js
│ │ │ │ ├── highcharts-more.src.js
│ │ │ │ ├── highcharts.js
│ │ │ │ ├── highcharts.src.js
│ │ │ │ ├── modules
│ │ │ │ │ ├── annotations.js
│ │ │ │ │ ├── annotations.src.js
│ │ │ │ │ ├── canvas-tools.js
│ │ │ │ │ ├── canvas-tools.src.js
│ │ │ │ │ ├── data.js
│ │ │ │ │ ├── data.src.js
│ │ │ │ │ ├── drilldown.js
│ │ │ │ │ ├── drilldown.src.js
│ │ │ │ │ ├── exporting.js
│ │ │ │ │ ├── exporting.src.js
│ │ │ │ │ ├── funnel.js
│ │ │ │ │ ├── funnel.src.js
│ │ │ │ │ ├── heatmap.js
│ │ │ │ │ ├── heatmap.src.js
│ │ │ │ │ ├── map.js
│ │ │ │ │ ├── map.src.js
│ │ │ │ │ ├── no-data-to-display.js
│ │ │ │ │ └── no-data-to-display.src.js
│ │ │ │ └── themes
│ │ │ │ │ ├── dark-blue.js
│ │ │ │ │ ├── dark-green.js
│ │ │ │ │ ├── gray.js
│ │ │ │ │ ├── grid.js
│ │ │ │ │ └── skies.js
│ │ │ ├── jquery-1.10.2.js
│ │ │ ├── jquery-1.10.2.min.js
│ │ │ ├── jquery-1.10.2.min.map
│ │ │ ├── snapscreen
│ │ │ │ └── UEditorSnapscreen.exe
│ │ │ ├── video-js
│ │ │ │ ├── font
│ │ │ │ │ ├── vjs.eot
│ │ │ │ │ ├── vjs.svg
│ │ │ │ │ ├── vjs.ttf
│ │ │ │ │ └── vjs.woff
│ │ │ │ ├── video-js.css
│ │ │ │ ├── video-js.min.css
│ │ │ │ ├── video-js.swf
│ │ │ │ ├── video.dev.js
│ │ │ │ └── video.js
│ │ │ ├── webuploader
│ │ │ │ ├── Uploader.swf
│ │ │ │ ├── webuploader.css
│ │ │ │ ├── webuploader.custom.js
│ │ │ │ ├── webuploader.custom.min.js
│ │ │ │ ├── webuploader.flashonly.js
│ │ │ │ ├── webuploader.flashonly.min.js
│ │ │ │ ├── webuploader.html5only.js
│ │ │ │ ├── webuploader.html5only.min.js
│ │ │ │ ├── webuploader.js
│ │ │ │ ├── webuploader.min.js
│ │ │ │ ├── webuploader.withoutimage.js
│ │ │ │ └── webuploader.withoutimage.min.js
│ │ │ └── zeroclipboard
│ │ │ │ ├── ZeroClipboard.js
│ │ │ │ ├── ZeroClipboard.min.js
│ │ │ │ └── ZeroClipboard.swf
│ │ ├── ueditor.all.js
│ │ ├── ueditor.all.min.js
│ │ ├── ueditor.config.js
│ │ ├── ueditor.configWx.js
│ │ ├── ueditor.parse.js
│ │ └── ueditor.parse.min.js
│ ├── uploadifive
│ │ ├── jquery.uploadifive.js
│ │ ├── jquery.uploadifive.min.js
│ │ └── uploadifive.css
│ ├── wysiwyg
│ │ ├── bootstrap-wysiwyg.js
│ │ └── jquery.hotkeys.js
│ └── x-editable
│ │ ├── bootstrap-editable.css
│ │ ├── bootstrap-editable.css~
│ │ └── bootstrap-editable.js
├── public
│ └── pc
│ │ ├── css
│ │ ├── base.min.css
│ │ └── design.css
│ │ └── image
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── bg1.png
│ │ ├── bg2.png
│ │ ├── bg3.png
│ │ ├── bg4.png
│ │ ├── bg5.png
│ │ ├── demo.png
│ │ ├── demo1.png
│ │ ├── demo2.png
│ │ ├── demo3.png
│ │ ├── demo4.png
│ │ ├── en.png
│ │ ├── logo.jpg
│ │ ├── nodejs.png
│ │ ├── npm.png
│ │ ├── sails.png
│ │ └── zh.png
└── robots.txt
├── config
├── autoreload.js
├── blueprints.js
├── bootstrap.js
├── connections.js
├── cors.js
├── csrf.js
├── custom
│ ├── email.js
│ ├── mysql.js
│ ├── redis.js
│ └── system.js
├── env
│ ├── development.js
│ └── production.js
├── globals.js
├── http.js
├── i18n.js
├── local.js
├── locales
│ ├── _README.md
│ ├── en.json
│ └── zh.json
├── log.js
├── models.js
├── policies.js
├── routes.js
├── session.js
├── sockets.js
└── views.js
├── docker-compose.yml
├── nodewk.sql
├── package.json
├── pay.jpg
├── tasks
├── README.md
├── config
│ ├── clean.js
│ ├── coffee.js
│ ├── concat.js
│ ├── copy.js
│ ├── cssmin.js
│ ├── jst.js
│ ├── less.js
│ ├── sails-linker.js
│ ├── sync.js
│ ├── uglify.js
│ └── watch.js
├── pipeline.js
└── register
│ ├── build.js
│ ├── buildProd.js
│ ├── compileAssets.js
│ ├── default.js
│ ├── linkAssets.js
│ ├── linkAssetsBuild.js
│ ├── linkAssetsBuildProd.js
│ ├── prod.js
│ └── syncAssets.js
└── views
├── error
├── 403.ejs
├── 404.ejs
└── 500.ejs
├── homepage.ejs
├── layouts
├── layout.ejs
├── login.ejs
├── private.ejs
├── public.ejs
└── public_wap.ejs
├── private
├── cms
│ ├── article
│ │ ├── add.ejs
│ │ ├── detail.ejs
│ │ ├── edit.ejs
│ │ ├── index.ejs
│ │ └── menu.ejs
│ ├── channel
│ │ ├── add.ejs
│ │ ├── child.ejs
│ │ ├── detail.ejs
│ │ ├── edit.ejs
│ │ ├── index.ejs
│ │ └── sort.ejs
│ ├── link
│ │ ├── add.ejs
│ │ ├── edit.ejs
│ │ └── index.ejs
│ ├── linkclass
│ │ ├── add.ejs
│ │ ├── edit.ejs
│ │ └── index.ejs
│ └── site
│ │ └── index.ejs
├── conf
│ ├── img
│ │ └── index.ejs
│ ├── shop
│ │ └── index.ejs
│ └── sms
│ │ └── index.ejs
├── img
│ └── image
│ │ └── index.ejs
├── index.ejs
├── login.ejs
├── shop
│ ├── area
│ │ ├── add.ejs
│ │ ├── child.ejs
│ │ ├── edit.ejs
│ │ ├── index.ejs
│ │ └── sort.ejs
│ ├── goods
│ │ ├── brand
│ │ │ ├── add.ejs
│ │ │ ├── edit.ejs
│ │ │ └── index.ejs
│ │ ├── class
│ │ │ ├── add.ejs
│ │ │ ├── child.ejs
│ │ │ ├── edit.ejs
│ │ │ ├── index.ejs
│ │ │ └── sort.ejs
│ │ ├── goods
│ │ │ ├── add.ejs
│ │ │ ├── edit.ejs
│ │ │ ├── index.ejs
│ │ │ └── spec.ejs
│ │ ├── spec
│ │ │ ├── add.ejs
│ │ │ ├── edit.ejs
│ │ │ └── index.ejs
│ │ └── type
│ │ │ ├── add.ejs
│ │ │ ├── edit.ejs
│ │ │ ├── index.ejs
│ │ │ ├── next.ejs
│ │ │ └── spec.ejs
│ └── member
│ │ ├── level
│ │ ├── add.ejs
│ │ ├── edit.ejs
│ │ └── index.ejs
│ │ └── member
│ │ ├── add.ejs
│ │ ├── detail.ejs
│ │ ├── edit.ejs
│ │ └── index.ejs
├── sys
│ ├── backup
│ │ └── index.ejs
│ ├── conf
│ │ ├── add.ejs
│ │ ├── edit.ejs
│ │ └── index.ejs
│ ├── ip
│ │ ├── add.ejs
│ │ ├── edit.ejs
│ │ └── index.ejs
│ ├── job
│ │ ├── edit.ejs
│ │ └── index.ejs
│ ├── log
│ │ └── index.ejs
│ ├── menu
│ │ ├── add.ejs
│ │ ├── child.ejs
│ │ ├── detail.ejs
│ │ ├── edit.ejs
│ │ ├── index.ejs
│ │ └── sort.ejs
│ ├── role
│ │ ├── add.ejs
│ │ ├── edit.ejs
│ │ ├── editMenu.ejs
│ │ ├── editUser.ejs
│ │ ├── index.ejs
│ │ ├── menu.ejs
│ │ └── selectUser.ejs
│ ├── unit
│ │ ├── add.ejs
│ │ ├── child.ejs
│ │ ├── detail.ejs
│ │ ├── edit.ejs
│ │ └── index.ejs
│ └── user
│ │ ├── add.ejs
│ │ ├── custom.ejs
│ │ ├── detail.ejs
│ │ ├── edit.ejs
│ │ ├── index.ejs
│ │ ├── menu.ejs
│ │ └── pass.ejs
└── wx
│ ├── config
│ ├── add.ejs
│ ├── edit.ejs
│ └── index.ejs
│ ├── menu
│ ├── add.ejs
│ ├── edit.ejs
│ ├── index.ejs
│ └── keyword.ejs
│ ├── msg
│ ├── mass
│ │ ├── add.ejs
│ │ ├── detail.ejs
│ │ ├── index.ejs
│ │ ├── news.ejs
│ │ ├── select.ejs
│ │ └── send.ejs
│ └── user
│ │ ├── index.ejs
│ │ └── reply.ejs
│ ├── news
│ ├── add.ejs
│ ├── edit.ejs
│ └── index.ejs
│ ├── reply
│ ├── add.ejs
│ ├── edit.ejs
│ ├── index.ejs
│ └── select.ejs
│ ├── sales
│ ├── info
│ │ ├── add.ejs
│ │ ├── edit.ejs
│ │ └── index.ejs
│ ├── manage
│ │ ├── add.ejs
│ │ ├── edit.ejs
│ │ └── index.ejs
│ └── result
│ │ └── index.ejs
│ ├── txt
│ ├── add.ejs
│ ├── edit.ejs
│ └── index.ejs
│ └── user
│ └── index.ejs
├── public
└── pc
│ ├── about.ejs
│ ├── buttom.ejs
│ ├── framework.ejs
│ ├── index.ejs
│ ├── nodeshop.ejs
│ └── top.ejs
└── test.ejs
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:6.2
2 | # Author
3 | MAINTAINER wizzer "wizzer@qq.com"
4 | ENV PORT 1337
5 | RUN apt-get update && apt-get install -y \
6 | imagemagick \
7 | --no-install-recommends && rm -rf /var/lib/apt/lists/*
8 | RUN mkdir -p /node/nodewk
9 | WORKDIR /node/nodewk
10 |
11 | RUN npm config set registry https://registry.npm.taobao.org
12 | RUN npm i node-gyp -g
13 | RUN npm i pm2 -g
14 | ADD api /node/nodewk/api
15 | ADD assets /node/nodewk/assets
16 | ADD config /node/nodewk/config
17 | ADD tasks /node/nodewk/tasks
18 | ADD views /node/nodewk/views
19 | ADD app.js /node/nodewk
20 | ADD Gruntfile.js /node/nodewk
21 | ADD package.json /node/nodewk
22 | RUN npm i
23 | EXPOSE ${PORT}
24 | ENV LANG C.UTF-8
25 | ENV TZ "Asia/Shanghai"
26 | VOLUME ["/node/nodewk/cert", "/node/nodewk/upload", "/node/nodewk/backup"]
27 | CMD [ "pm2", "start", "--no-daemon", "app.js" ]
28 |
29 |
--------------------------------------------------------------------------------
/api/common/FileUtil.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by wizzer on 2016/4/11.
3 | */
4 | var fs = require('fs');
5 | var moment = require("moment");
6 | module.exports = {
7 | geFileList: function (path) {
8 | var filesList = [];
9 | this.readFile(path, filesList);
10 | return filesList;
11 | },
12 | //遍历读取文件
13 | readFile: function (path, filesList) {
14 | var self=this;
15 | files = fs.readdirSync(path);//需要用到同步读取
16 | files.forEach(walk);
17 | function walk(file) {
18 | var states = fs.statSync(path + '/' + file);
19 | if (states.isDirectory()) {
20 | self.readFile(path + '/' + file, filesList);
21 | }
22 | else {
23 | //创建一个对象保存信息
24 | var obj = {};
25 | obj.size = states.size;//文件大小,以字节为单位
26 | obj.name = file;//文件名
27 | obj.path = path + '/' + file; //文件绝对路径
28 | obj.url=obj.path.replace(sails.config.appPath, '');
29 | obj.mtime= parseInt(moment(states.mtime).format('x'));
30 | obj.atime= parseInt(moment(states.atime).format('x'));
31 | filesList.push(obj);
32 | }
33 | }
34 | }
35 | };
36 |
--------------------------------------------------------------------------------
/api/controllers/TestController.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 9/9/15.
3 | */
4 | module.exports = {
5 | login: function (req, res) {
6 | return res.view('private/login.ejs',{layout: 'layouts/login'});
7 | }
8 | };
9 |
--------------------------------------------------------------------------------
/api/controllers/api/OauthController.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by wizzer on 2016/5/23.
3 | */
4 | var StringUtil = require('../../common/StringUtil');
5 | var moment = require('moment');
6 | var jwt = require('jwt-simple');
7 | module.exports = {
8 | token: function (req, res) {
9 | try {
10 | var client_id = req.body.client_id || '';
11 | var client_secret = req.body.client_secret || '';
12 | Api_token.findOne({client_id: client_id}).exec(function (e, o) {
13 | if (e||!o) {
14 | return res.json({code: 1, msg: 'client_id has error'});
15 | }
16 | if (o.disabled) {
17 | return res.json({code: 2, msg: 'client_id has disabled'});
18 | }
19 | if (client_secret != o.client_secret) {
20 | return res.json({code: 3, msg: 'client_secret has error'});
21 | }
22 | var expires = moment().add(1,'days').valueOf();
23 | var token = jwt.encode(
24 | {
25 | iss: o.id,
26 | exp: expires
27 | },
28 | sails.config.system.MyConfig.jwtTokenSecret||''
29 | );
30 | return res.json({code:0,msg:'success',data:{
31 | token : token,
32 | expires : expires,
33 | appid : o.id
34 | }});
35 | });
36 | } catch (err) {
37 | return res.json({code: 4, msg: 'params error'});
38 | }
39 | }
40 | };
41 |
--------------------------------------------------------------------------------
/api/controllers/api/TestController.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by wizzer on 2016/8/23.
3 | */
4 | var StringUtil = require('../../common/StringUtil');
5 | var moment = require('moment');
6 | module.exports = {
7 | sayHi: function (req, res) {
8 | return res.json({code: 0, msg: 'hi wizzer'});
9 | }
10 | };
--------------------------------------------------------------------------------
/api/controllers/api/oauth.json:
--------------------------------------------------------------------------------
1 | /**
2 | * @api {POST} /api/oauth/token 01.Token
3 | * @apiName Token
4 | * @apiGroup Oauth
5 | * @apiVersion 1.0.0
6 | * @apiDescription 获取Token
7 | * @apiPermission anyone
8 | *
9 | * @apiParam {string} client_id client_id
10 | * @apiParam {string} client_secret client_secret
11 | *
12 | * @apiParamExample {json} 示例
13 | * POST /api/oauth/token
14 | * {
15 | * "client_id": "client_id",
16 | * "client_secret": "client_secret"
17 | * }
18 | *
19 | * @apiSuccess (成功) {number} code 0
20 | * @apiSuccess (成功) {string} msg success
21 | * @apiSuccess (成功) {Object} data Token对象
22 | * @apiSuccess (成功) {string} data.token Token
23 | * @apiSuccess (成功) {number} data.expires 失效时间(24小时)请保存若失效重新获取
24 | * @apiSuccess (成功) {number} data.appid AppId
25 | * @apiSuccessExample {json} 示例
26 | * HTTP/1.1 200 OK
27 | * {
28 | * "code": 0,
29 | * "msg": "success",
30 | * "data": {
31 | * "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOjIsImV4cCI6MTQ2NDE1NjA2OTg3Nn0.4i_o7gCjCKvOImSi4peCMgCUrzpdgbtmvMECKf5wkqE",
32 | * "expires": 1464156069876,
33 | * "appid": 2
34 | * }
35 | * }
36 | *
37 | * @apiError (失败) {number} code 1:client_id不存在 2:client_id禁用 3:client_secret错误 4:参数错误
38 | * @apiError (失败) {string} msg 错误文字描述
39 | * @apiErrorExample {json} 示例
40 | * HTTP/1.1 200 OK
41 | * {
42 | * "code": 1
43 | * "msg": "client_id has error"
44 | * }
45 | */
46 |
--------------------------------------------------------------------------------
/api/controllers/open/ImageController.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 通过Img_image表ID读取图片文件
3 | * Created by Wizzer.cn on 1/18/16.
4 | */
5 | var moment = require("moment");
6 | module.exports = {
7 | /**
8 | * type: s 小图 m 中图 l 大图
9 | * @param req
10 | * @param res
11 | * @returns {*}
12 | */
13 | file: function (req, res) {
14 |
15 | var id=req.params.id||'';
16 | var type=req.query.type||'';
17 | if(id.indexOf('.')>0){
18 | id=id.substring(0,id.indexOf('.'));
19 | Img_image.findOne(id).exec(function(e,o){
20 | if(o){
21 | var modi=req.get('If-Modified-Since');
22 | var up=moment(o.updatedAt*1000).toDate().toUTCString();
23 | if(modi == up){//缓存
24 | return res.send(304);
25 | }
26 | var path=o.src;
27 | if(type=='s'&& o.s_src){
28 | path=o.s_src;
29 | }else if(type=='m'&& o.m_src){
30 | path=o.m_src;
31 | }else if(type=='l'&& o.l_src){
32 | path=o.l_src;
33 | }
34 | res.set('Last-Modified',up);
35 | return res.status(200).sendfile(sails.config.appPath+path);
36 | }else{
37 | return res.send(404,'not exist');
38 | }
39 | });
40 | }else{
41 | return res.send(404,'not exist');
42 | }
43 |
44 | }
45 | };
46 |
--------------------------------------------------------------------------------
/api/controllers/private/HomeController.js:
--------------------------------------------------------------------------------
1 | /**
2 | * IndexController
3 | *
4 | * @description :: Server-side logic for managing indices
5 | * @help :: See http://sailsjs.org/#!/documentation/concepts/Controllers
6 | */
7 | module.exports = {
8 | index: function (req, res) {
9 | var data=req.data;
10 | sails.log.debug('data::'+JSON.stringify(data));
11 | return res.view('private/index.ejs',data);
12 |
13 | }
14 | };
15 |
16 |
--------------------------------------------------------------------------------
/api/controllers/private/cms/SiteController.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 11/5/15.
3 | */
4 | module.exports = {
5 | index: function (req, res) {
6 | Cms_site.findOrCreate({id: 1}).exec(function (err, obj) {
7 | req.data.obj = obj;
8 | return res.view('private/cms/site/index', req.data);
9 | });
10 | },
11 | editDo: function (req, res) {
12 | var body = req.body;
13 | Cms_site.update({id: body.id}, body).exec(function (err, obj) {
14 | if (err)return res.json({code: 1, msg: sails.__('update.fail')});
15 | sails.config.system.SiteConfig=body;
16 | return res.json({code: 0, msg: sails.__('update.ok')});
17 | });
18 | }
19 | };
20 |
--------------------------------------------------------------------------------
/api/controllers/private/conf/ImgController.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 11/5/15.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | index: function (req, res) {
7 | Img_config.findOrCreate({id: 1}).exec(function (err, obj) {
8 | req.data.obj = obj;
9 | return res.view('private/conf/img/index', req.data);
10 | });
11 | },
12 | editDo: function (req, res) {
13 | var body = req.body;
14 | body.updatedAt=moment().format('X');
15 | Img_config.update({id: body.id}, body).exec(function (err, obj) {
16 | if (err)return res.json({code: 1, msg: sails.__('update.fail')});
17 | return res.json({code: 0, msg: sails.__('update.ok')});
18 | });
19 | }
20 | };
21 |
--------------------------------------------------------------------------------
/api/controllers/private/img/ImageController.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 1/18/16.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | index: function (req, res) {
7 | var id=req.query.id||'';
8 | var w=req.query.w||36;
9 | var h=req.query.w||36;
10 | var watermark=req.query.watermark||0;
11 | var type=req.query.type||'';//'' 默认文件路径,db :存数据库 shop:存数据库并生成大中小三图
12 | req.data.id=id;
13 | req.data.w=w;
14 | req.data.h=h;
15 | req.data.watermark=watermark;
16 | req.data.type=type;
17 | return res.view('private/img/image/index', req.data);
18 | }
19 | };
20 |
--------------------------------------------------------------------------------
/api/controllers/public/pc/IndexController.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 9/9/15.
3 | */
4 | module.exports = {
5 | index: function (req, res) {
6 | return res.view('public/pc/index.ejs',req.data);
7 | },
8 | framework:function(req,res){
9 | return res.view('public/pc/framework.ejs',req.data);
10 | },
11 | nodeshop:function(req,res){
12 | return res.view('public/pc/nodeshop.ejs',req.data);
13 | },
14 | about:function(req,res){
15 | return res.view('public/pc/about.ejs',req.data);
16 | }
17 | };
18 |
--------------------------------------------------------------------------------
/api/models/cms/Cms_article_content.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 11/5/15.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | schema: true,
7 | autoCreatedAt: false,
8 | autoUpdatedAt: false,
9 | attributes: {
10 | content: {
11 | type: 'text'
12 | },
13 | articleId: {
14 | model: 'Cms_article',
15 | index: true
16 | }
17 | }
18 | };
19 |
--------------------------------------------------------------------------------
/api/models/cms/Cms_link.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 11/5/15.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | schema: true,
7 | autoCreatedAt: false,
8 | autoUpdatedAt: false,
9 | attributes: {
10 | id: {
11 | type: 'integer',
12 | autoIncrement: true,
13 | primaryKey: true
14 | },
15 | name: {
16 | type: 'string',
17 | size: 100,
18 | required: true
19 | },
20 | type: {
21 | type: 'string',
22 | size: 20
23 | },
24 | picurl: {
25 | type: 'string'
26 | },
27 | url: {
28 | type: 'string'
29 | },
30 | target: {
31 | type: 'string'
32 | },
33 | createdBy: {
34 | type: 'integer'
35 | },
36 | createdAt: {
37 | type: 'integer',
38 | defaultsTo: function () {
39 | return moment().format('X');
40 | }
41 | },
42 | classId: {
43 | model: 'Cms_linkClass',
44 | index: true
45 | }
46 | }
47 | };
48 |
--------------------------------------------------------------------------------
/api/models/cms/Cms_linkClass.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 11/4/15.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | schema: true,
7 | autoCreatedAt: false,
8 | autoUpdatedAt: false,
9 | attributes: {
10 | id: {
11 | type: 'integer',
12 | autoIncrement: true,
13 | primaryKey: true
14 | },
15 | name: {
16 | type: 'string',
17 | size: 100,
18 | required: true,
19 | index:true
20 | },
21 | createdBy: {
22 | type: 'integer'
23 | },
24 | createdAt: {
25 | type: 'integer',
26 | defaultsTo: function () {
27 | return moment().format('X');
28 | }
29 | },
30 | links: {
31 | collection: 'Cms_link',
32 | via: 'classId'
33 | }
34 | },
35 | getLinkList:function(name,cb){
36 | Cms_linkClass.findOne({name:name})
37 | .populate('links', {limit:1,sort: {createdAt: 'desc'}}).exec(function (err, list) {
38 | return cb(list);
39 | });
40 | }
41 | };
42 |
--------------------------------------------------------------------------------
/api/models/img/Img_config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 11/4/15.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | schema: true,
7 | autoCreatedAt: false,
8 | autoUpdatedAt: false,
9 | attributes: {
10 | id: {
11 | type: 'string',
12 | primaryKey: true,
13 | defaultsTo: function () {
14 | return 1;
15 | }
16 | },
17 | s_width: {
18 | type: 'integer',
19 | defaultsTo: function () {
20 | return 0;
21 | }
22 | },
23 | s_height: {
24 | type: 'integer',
25 | defaultsTo: function () {
26 | return 0;
27 | }
28 | },
29 | m_width: {
30 | type: 'integer',
31 | defaultsTo: function () {
32 | return 0;
33 | }
34 | },
35 | m_height: {
36 | type: 'integer',
37 | defaultsTo: function () {
38 | return 0;
39 | }
40 | },
41 | wk_url: {
42 | type: 'string'
43 | },
44 | wk_type:{
45 | type: 'integer',
46 | defaultsTo: function () {
47 | return 0;
48 | }
49 | },
50 | wk_txt:{
51 | type: 'string'
52 | },
53 | updatedAt: {
54 | type: 'integer',
55 | defaultsTo: function () {
56 | return moment().format('X');
57 | }
58 | }
59 | }
60 | };
61 |
62 |
--------------------------------------------------------------------------------
/api/models/img/Img_image.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 11/4/15.
3 | */
4 | var moment = require('moment');
5 | var uuid = require('node-uuid');
6 | module.exports = {
7 | schema: true,
8 | autoCreatedAt: false,
9 | autoUpdatedAt: false,
10 | attributes: {
11 | id: {
12 | type: 'string',
13 | size:50,
14 | primaryKey: true,
15 | defaultsTo: function () {
16 | return uuid.v4().replace(new RegExp(/(-)/g), '');
17 | }
18 | },
19 | filename: {
20 | type: 'string'
21 | },
22 | src: {
23 | type: 'string'
24 | },
25 | url: {
26 | type: 'string'
27 | },
28 | m_src: {
29 | type: 'string'
30 | },
31 | s_src: {
32 | type: 'string'
33 | },
34 | width: {
35 | type: 'integer',
36 | defaultsTo: function () {
37 | return 0;
38 | }
39 | },
40 | height: {
41 | type: 'integer',
42 | defaultsTo: function () {
43 | return 0;
44 | }
45 | },
46 | watermark: {
47 | type: 'boolean',
48 | defaultsTo: function () {
49 | return false;
50 | }
51 | },
52 | updatedAt: {
53 | type: 'integer',
54 | defaultsTo: function () {
55 | return moment().format('X');
56 | }
57 | }
58 | }
59 | };
60 |
61 |
--------------------------------------------------------------------------------
/api/models/sys/Sys_backup.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 数据备份
3 | * Created by wizzer on 2016/4/20.
4 | */
5 | var moment = require('moment');
6 | module.exports = {
7 | schema: true,
8 | autoCreatedAt: false,
9 | autoUpdatedAt: false,
10 | attributes: {
11 | id: {
12 | type: 'integer',
13 | autoIncrement: true,
14 | primaryKey: true
15 | },
16 | //database 数据库备份 file数据文件备份 (排除临时文件夹)
17 | type: {
18 | type: 'string',
19 | enum: ['db','file'],
20 | size: 10,
21 | index:true
22 | },
23 | //物理路径
24 | path:{
25 | type:'string',
26 | size:255
27 | },
28 | //文件名
29 | name:{
30 | type:'string',
31 | size:255
32 | },
33 | //操作人ID
34 | createdBy: {
35 | model: 'Sys_user',
36 | index:true
37 | },
38 | createdAt:{
39 | type:'integer',
40 | index: true,
41 | defaultsTo:function(){
42 | return moment().format('X');
43 | }
44 | }
45 | }
46 | };
47 |
--------------------------------------------------------------------------------
/api/models/sys/Sys_config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 系统参数
3 | * Created by wizzer on 2015/9/6.
4 | */
5 | var moment = require('moment');
6 | module.exports = {
7 | schema: true,
8 | autoCreatedAt: false,
9 | autoUpdatedAt: false,
10 | attributes: {
11 | id: {
12 | type: 'integer',
13 | autoIncrement: true,
14 | primaryKey: true
15 | },
16 | config_key: {
17 | type: 'string',
18 | size: 100,
19 | required: true
20 | },
21 | config_val: {
22 | type: 'string',
23 | size: 100,
24 | required: true
25 | },
26 | createdAt:{
27 | type:'integer',
28 | index: true,
29 | defaultsTo:function(){
30 | return moment().format('X');
31 | }
32 | }
33 | }
34 | };
35 |
--------------------------------------------------------------------------------
/api/models/sys/Sys_ip.js:
--------------------------------------------------------------------------------
1 | /**
2 | * IP策略
3 | * Created by wizzer on 2016/4/22.
4 | */
5 | var moment = require('moment');
6 | module.exports = {
7 | schema: true,
8 | autoCreatedAt: false,
9 | autoUpdatedAt: false,
10 | attributes: {
11 | id: {
12 | type: 'integer',
13 | autoIncrement: true,
14 | primaryKey: true
15 | },
16 | ip: {
17 | type: 'string',
18 | size: 255
19 | },
20 | disabled: {
21 | type: 'boolean',
22 | defaultsTo: function () {
23 | return false;
24 | }
25 | },
26 | createdBy:{
27 | model: 'Sys_user'
28 | },
29 | createdAt: {
30 | type: 'integer',
31 | index: true,
32 | defaultsTo: function () {
33 | return moment().format('X');
34 | }
35 | }
36 | }
37 | };
38 |
--------------------------------------------------------------------------------
/api/models/sys/Sys_job.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 定时任务
3 | * Created by wizzer on 2016/4/20.
4 | */
5 | var moment = require('moment');
6 | module.exports = {
7 | schema: true,
8 | autoCreatedAt: false,
9 | autoUpdatedAt: false,
10 | attributes: {
11 | id: {
12 | type: 'integer',
13 | autoIncrement: true,
14 | primaryKey: true
15 | },
16 | name:{
17 | type:'string',
18 | size:50
19 | },
20 | cron:{
21 | type:'string',
22 | size:50
23 | },
24 | note:{
25 | type:'string',
26 | size:255
27 | },
28 | disabled: {
29 | type: 'boolean',
30 | defaultsTo: function () {
31 | return false;
32 | }
33 | },
34 | updateTxt: {
35 | type:'string',
36 | size:255
37 | },
38 | updateStatus: {
39 | type: 'boolean',
40 | defaultsTo: function () {
41 | return false;
42 | }
43 | },
44 | updateAt:{
45 | type:'integer',
46 | defaultsTo:function(){
47 | return 0;
48 | }
49 | }
50 | }
51 | };
52 |
--------------------------------------------------------------------------------
/api/models/sys/Sys_log.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 系统日志
3 | * Created by wizzer on 2015/9/6.
4 | */
5 | var moment = require('moment');
6 | var StringUtil = require('../../common/StringUtil');
7 | module.exports = {
8 | schema: true,
9 | autoCreatedAt: false,
10 | autoUpdatedAt: false,
11 | attributes: {
12 | id: {
13 | type: 'integer',
14 | autoIncrement: true,
15 | primaryKey: true
16 | },
17 | type: {
18 | type: 'string',
19 | size: 10
20 | },
21 | url:{
22 | type:'string',
23 | size:100
24 | },
25 | note:{
26 | type:'string',
27 | size:255
28 | },
29 | createdBy: {//操作人ID
30 | type: 'integer'
31 | },
32 | createdByName: {
33 | type: 'string',
34 | size: 50
35 | },
36 | createdIp:{
37 | type:'string',
38 | size:20
39 | },
40 | createdAt:{
41 | type:'integer',
42 | index: true,
43 | defaultsTo:function(){
44 | return moment().format('X');
45 | }
46 | }
47 | },
48 | /**
49 | * 记录日志
50 | * @param type
51 | * @param user
52 | * @param note
53 | * @param req
54 | */
55 | log:function(type,user,note,req){
56 | Sys_log.create({
57 | type: type, url: req.url, note: note,
58 | createdBy: user.id, createdByName: user.nickname, createdIp: StringUtil.getIp(req)
59 | }).exec(function (err) {
60 | });
61 | }
62 | };
63 |
--------------------------------------------------------------------------------
/api/models/sys/Sys_role.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 9/10/15.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | schema: true,
7 | autoCreatedAt: false,
8 | autoUpdatedAt: false,
9 | attributes: {
10 | id: {
11 | type: 'integer',
12 | autoIncrement: true,
13 | primaryKey: true
14 | },
15 | unitid: {
16 | model: 'Sys_unit'
17 | },
18 | name: {
19 | type: 'string',
20 | size: 20,
21 | maxLength: 20,
22 | required: true
23 | },
24 | code: {
25 | type: 'string',
26 | size: 50,
27 | maxLength: 50,
28 | required: true,
29 | unique: true
30 | },
31 | disabled: {
32 | type: 'boolean',
33 | defaultsTo: function () {
34 | return false;
35 | }
36 | },
37 | location: {
38 | type: 'integer',
39 | size: 11
40 | },
41 | createdBy: {
42 | type: 'integer'
43 | },
44 | createdAt: {
45 | type: 'integer',
46 | defaultsTo: function () {
47 | return moment().format('X');
48 | }
49 | },
50 | users: {
51 | collection: 'Sys_user',
52 | via: 'roles'
53 | //dominant: true
54 | },
55 | menus: {
56 | collection: 'Sys_menu',
57 | via: 'roles'
58 | }
59 | }
60 | };
61 |
--------------------------------------------------------------------------------
/api/models/wx/Wx_mass.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by wizzer on 2016/5/9.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | schema: true,
7 | autoCreatedAt: false,
8 | autoUpdatedAt: false,
9 | attributes: {
10 | id: {
11 | type: 'integer',
12 | autoIncrement: true,
13 | primaryKey: true
14 | },
15 | name: {//名称
16 | type: 'string',
17 | required: true
18 | },
19 | type: {//news 图文 text文字
20 | type: 'string',
21 | size: 20,
22 | required: true
23 | },
24 | media_id: {//图文消息media_id
25 | type: 'string'
26 | },
27 | content:{//type==text文字 type==news newsids
28 | type: 'string'
29 | },
30 | scope: {//all some
31 | type: 'string',
32 | size: 20
33 | },
34 | status:{//0 待发送 1 已发送 2 发送失败
35 | type:'integer'
36 | },
37 | createdBy: {
38 | type: 'integer'
39 | },
40 | createdAt: {
41 | type: 'integer',
42 | defaultsTo: function () {
43 | return moment().format('X');
44 | }
45 | },
46 | wxid: {
47 | model: 'Wx_config'
48 | }
49 | }
50 | };
51 |
--------------------------------------------------------------------------------
/api/models/wx/Wx_mass_news.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by wizzer on 2016/5/9.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | schema: true,
7 | autoCreatedAt: false,
8 | autoUpdatedAt: false,
9 | attributes: {
10 | id: {
11 | type: 'integer',
12 | autoIncrement: true,
13 | primaryKey: true
14 | },
15 | thumb_media_id:{//图文消息缩略图的media_id
16 | type: 'string',
17 | required: true
18 | },
19 | author:{//图文消息的作者
20 | type:'string',
21 | size:30
22 | },
23 | title:{//图文消息的标题
24 | type:'string',
25 | required: true
26 | },
27 | content_source_url:{//“阅读原文”
28 | type:'string'
29 | },
30 | content:{//具备微信支付权限的公众号,可以使用a标签,其他公众号不能使用
31 | type:'text',
32 | required: true
33 | },
34 | digest:{//图文消息的描述
35 | type:'text'
36 | },
37 | show_cover_pic:{//是否显示封面,1为显示,0为不显示
38 | type:'integer'
39 | },
40 | createdBy:{
41 | type: 'integer'
42 | },
43 | createdAt:{
44 | type:'integer',
45 | defaultsTo:function(){
46 | return moment().format('X');
47 | }
48 | },
49 | wxid: {
50 | model: 'Wx_config'
51 | }
52 | }
53 | };
54 |
--------------------------------------------------------------------------------
/api/models/wx/Wx_mass_send.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by wizzer on 2016/5/9.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | schema: true,
7 | autoCreatedAt: false,
8 | autoUpdatedAt: false,
9 | attributes: {
10 | id: {
11 | type: 'integer',
12 | autoIncrement: true,
13 | primaryKey: true
14 | },
15 | massId:{
16 | model:'Wx_mass'
17 | },
18 | receivers:{//openid列表,最多10000个
19 | type: 'text'
20 | },
21 | status:{//0 待发送 1 已发送 2 发送失败
22 | type:'integer'
23 | },
24 | msg_id:{
25 | type:'string',
26 | size:20
27 | },
28 | errcode:{
29 | type: 'string',
30 | size:20
31 | },
32 | errmsg:{
33 | type:'string'
34 | },
35 | createdBy: {
36 | type: 'integer'
37 | },
38 | createdAt: {
39 | type: 'integer',
40 | defaultsTo: function () {
41 | return moment().format('X');
42 | }
43 | },
44 | wxid: {
45 | model: 'Wx_config'
46 | }
47 | }
48 | };
49 |
--------------------------------------------------------------------------------
/api/models/wx/Wx_menu.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 10/28/15.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | schema: true,
7 | autoCreatedAt: false,
8 | autoUpdatedAt: false,
9 | attributes: {
10 | id: {
11 | type: 'integer',
12 | autoIncrement: true,
13 | primaryKey: true
14 | },
15 | parentId: {
16 | type: 'integer'
17 | },
18 | path: {
19 | type: 'string',
20 | size: 100
21 | },
22 | name: {
23 | type: 'string',
24 | size: 20,
25 | maxLength: 20,
26 | required: true
27 | },
28 | type: {
29 | type: 'string'
30 | },
31 | key: {
32 | type: 'string'
33 | },
34 | url: {
35 | type: 'string'
36 | },
37 | hasChildren: {
38 | type: 'boolean',
39 | defaultsTo: function () {
40 | return false;
41 | }
42 | },
43 | location: {
44 | type: 'integer',
45 | size: 11
46 | },
47 | createdBy:{
48 | type: 'integer'
49 | },
50 | createdAt:{
51 | type:'integer',
52 | defaultsTo:function(){
53 | return moment().format('X');
54 | }
55 | },
56 | wxid: {
57 | model: 'Wx_config'
58 | }
59 | }
60 | };
61 |
--------------------------------------------------------------------------------
/api/models/wx/Wx_msg_reply.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by wizzer on 2016/5/6.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | schema: true,
7 | autoCreatedAt: false,
8 | autoUpdatedAt: false,
9 | attributes: {
10 | id: {
11 | type: 'integer',
12 | autoIncrement: true,
13 | primaryKey: true
14 | },
15 | msgid:{
16 | model:'Wx_msg'
17 | },
18 | uid:{
19 | model:'Wx_user'
20 | },
21 | openid:{
22 | type: 'string',
23 | index: true,
24 | size: 50
25 | },
26 | type:{
27 | type: 'string',
28 | size: 20
29 | },
30 | content:{
31 | type:'text'
32 | },
33 | createdBy: {
34 | type: 'integer'
35 | },
36 | createdAt: {
37 | type: 'integer',
38 | defaultsTo: function () {
39 | return moment().format('X');
40 | }
41 | },
42 | wxid: {
43 | model: 'Wx_config'
44 | }
45 | }
46 | };
47 |
--------------------------------------------------------------------------------
/api/models/wx/Wx_news.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 10/27/15.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | schema: true,
7 | autoCreatedAt: false,
8 | autoUpdatedAt: false,
9 | attributes: {
10 | id: {
11 | type: 'integer',
12 | autoIncrement: true,
13 | primaryKey: true
14 | },
15 | title: {
16 | type: 'string',
17 | required: true
18 | },
19 | description: {
20 | type: 'string',
21 | required: true
22 | },
23 | picUrl: {
24 | type: 'string',
25 | required: true
26 | },
27 | url: {
28 | type: 'string',
29 | required: true
30 | },
31 | createdBy:{
32 | type: 'integer'
33 | },
34 | createdAt:{
35 | type:'integer',
36 | defaultsTo:function(){
37 | return moment().format('X');
38 | }
39 | }
40 | }
41 | };
42 |
--------------------------------------------------------------------------------
/api/models/wx/Wx_txt.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 10/27/15.
3 | */
4 | var moment = require('moment');
5 | module.exports = {
6 | schema: true,
7 | autoCreatedAt: false,
8 | autoUpdatedAt: false,
9 | attributes: {
10 | id: {
11 | type: 'integer',
12 | autoIncrement: true,
13 | primaryKey: true
14 | },
15 | title: {
16 | type: 'string',
17 | required: true
18 | },
19 | content: {
20 | type: 'string',
21 | size: 500,
22 | required: true
23 | },
24 | createdBy:{
25 | type: 'integer'
26 | },
27 | createdAt:{
28 | type:'integer',
29 | defaultsTo:function(){
30 | return moment().format('X');
31 | }
32 | }
33 | }
34 | };
35 |
--------------------------------------------------------------------------------
/api/policies/login.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 10/19/15.
3 | */
4 | var StringUtil = require('../common/StringUtil');
5 | module.exports = function (req, res, next) {
6 | var ip=StringUtil.getIp(req);
7 | var passed=false;
8 | sails.log.debug('ip::'+ip);
9 | Sys_ip.find({disabled:false}).exec(function(e,l){
10 | if(l&& l.length>0){
11 | l.forEach(function(o){
12 | if(o.ip.indexOf(':')>0){//ipv6
13 | if(ip== o.ip)
14 | passed=true;
15 | }else{
16 | if(ip== '::ffff:'+o.ip||ip== '::ffff:127.0.0.1'||ip== o.ip)
17 | passed=true;
18 | }
19 | });
20 | if(passed){
21 | return next();
22 | }else{
23 | return res.forbidden('IP受限');
24 | }
25 | }else{
26 | return next();
27 | }
28 | });
29 | };
30 |
--------------------------------------------------------------------------------
/api/policies/none.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by wizzer on 2016/5/23.
3 | */
4 | module.exports = function (req, res, next) {
5 | return next();
6 | };
7 |
--------------------------------------------------------------------------------
/api/policies/oauthAuth.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by wizzer on 2016/5/23.
3 | */
4 | var url = require('url');
5 | var jwt = require('jwt-simple');
6 | module.exports = function (req, res, next) {
7 | var token = (req.body && req.body.token) || req.query.token || req.headers["x-token"];
8 | if (token) {
9 | try {
10 | var decoded = jwt.decode(token, sails.config.system.MyConfig.jwtTokenSecret||'RrRO6ZNVLayReZD4KwaBQ7J3uM94Wk6D');
11 | if (decoded.exp <= Date.now()) {
12 | // Api_token.findOne({client_id})
13 |
14 | return res.json({code:1,msg:'token has expired'});
15 | }
16 | req.appid = decoded.iss;
17 | return next()
18 | } catch (err) {
19 | return res.json({code:2,msg:'token has error'});
20 | }
21 | } else {
22 | return res.json({code:3,msg:'token is Required'});
23 | }
24 | };
25 |
--------------------------------------------------------------------------------
/api/responses/ok.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 200 (OK) Response
3 | *
4 | * Usage:
5 | * return res.ok();
6 | * return res.ok(data);
7 | * return res.ok(data, 'auth/login');
8 | *
9 | * @param {Object} data
10 | * @param {String|Object} options
11 | * - pass string to render specified view
12 | */
13 |
14 | module.exports = function sendOK (data, options) {
15 |
16 | // Get access to `req`, `res`, & `sails`
17 | var req = this.req;
18 | var res = this.res;
19 | var sails = req._sails;
20 |
21 | sails.log.silly('res.ok() :: Sending 200 ("OK") response');
22 |
23 | // Set status code
24 | res.status(200);
25 |
26 | // If appropriate, serve data as JSON(P)
27 | if (req.wantsJSON) {
28 | return res.jsonx(data);
29 | }
30 |
31 | // If second argument is a string, we take that to mean it refers to a view.
32 | // If it was omitted, use an empty object (`{}`)
33 | options = (typeof options === 'string') ? { view: options } : options || {};
34 |
35 | // If a view was provided in options, serve it.
36 | // Otherwise try to guess an appropriate view, or if that doesn't
37 | // work, just send JSON.
38 | if (options.view) {
39 | return res.view(options.view, { data: data });
40 | }
41 |
42 | // If no second argument provided, try to serve the implied view,
43 | // but fall back to sending JSON(P) if no view can be inferred.
44 | else return res.guessView({ data: data }, function couldNotGuessView () {
45 | return res.jsonx(data);
46 | });
47 |
48 | };
49 |
--------------------------------------------------------------------------------
/api/services/EmailService.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 发送EMAIL服务
3 | * Created by wizzer on 2015/9/6.
4 | */
5 | var nodemailer = require("nodemailer");
6 | var smtpTransport = require('nodemailer-smtp-transport');
7 | module.exports = {
8 | sendEmail: function (options) {
9 | /**
10 | * 建立SMTP连接
11 | */
12 | var transporter= nodemailer.createTransport(smtpTransport({
13 | host: sails.config.email.HostName,
14 | secure: sails.config.email.SSLOnConnect,
15 | port: sails.config.email.SmtpPort,
16 | connectionTimeout:30*1000,
17 | auth: {
18 | user: sails.config.email.UserName,
19 | pass: sails.config.email.Password
20 | }
21 | }));
22 | var mailOptions = {
23 | from:sails.config.email.UserName,
24 | to: options.email, // 收件列表
25 | subject: options.title, // 标题
26 | html: options.html // html 内容
27 | };
28 | transporter.sendMail(mailOptions, function (error, response) {
29 | if (error) {
30 | console.log(error);
31 | } else {
32 | console.log("Message sent: ok");//response.message
33 | }
34 | transporter.close(); // 如果没用,关闭连接池
35 | });
36 | }
37 | };
38 |
--------------------------------------------------------------------------------
/api/services/RedisService.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Wizzer.cn on 3/9/16.
3 | */
4 | var redis = require("redis");
5 | var client = redis.createClient(sails.config.redis);
6 | client.on("error", function (err) {
7 | sails.log("Redis error::" + err);
8 | });
9 | module.exports = {
10 | set: function (key, val, time,cb) {
11 | client.set(key, val, function (err, reply){
12 | if (time && time > 0) {
13 | client.expire(key, time);//单位:秒
14 | }
15 | cb(err,reply);
16 | });
17 | },
18 | get: function (key,cb) {
19 | client.get(key, function (err, reply) {
20 | cb(err,reply);
21 | });
22 | }
23 | };
24 |
--------------------------------------------------------------------------------
/assets/bootstrap/fonts/glyphicons-halflings-regular (1).eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/bootstrap/fonts/glyphicons-halflings-regular (1).eot
--------------------------------------------------------------------------------
/assets/bootstrap/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/bootstrap/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/assets/bootstrap/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/bootstrap/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/assets/bootstrap/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/bootstrap/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/assets/css/fonts/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/css/fonts/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff
--------------------------------------------------------------------------------
/assets/css/fonts/EInbV5DfGHOiMmvb1Xr-hnhCUOGz7vYGh680lGh-uXM.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/css/fonts/EInbV5DfGHOiMmvb1Xr-hnhCUOGz7vYGh680lGh-uXM.woff
--------------------------------------------------------------------------------
/assets/css/fonts/MTP_ySUJH_bn48VBG8sNSnhCUOGz7vYGh680lGh-uXM.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/css/fonts/MTP_ySUJH_bn48VBG8sNSnhCUOGz7vYGh680lGh-uXM.woff
--------------------------------------------------------------------------------
/assets/css/fonts/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/css/fonts/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff
--------------------------------------------------------------------------------
/assets/css/fonts/css.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'Open Sans';
3 | font-style: normal;
4 | font-weight: 300;
5 | src: local('Open Sans Light'), local('OpenSans-Light'), url(DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff) format('woff');
6 | }
7 | @font-face {
8 | font-family: 'Open Sans';
9 | font-style: normal;
10 | font-weight: 400;
11 | src: local('Open Sans'), local('OpenSans'), url(cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff) format('woff');
12 | }
13 | @font-face {
14 | font-family: 'Open Sans';
15 | font-style: normal;
16 | font-weight: 600;
17 | src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(MTP_ySUJH_bn48VBG8sNSnhCUOGz7vYGh680lGh-uXM.woff) format('woff');
18 | }
19 | @font-face {
20 | font-family: 'Open Sans';
21 | font-style: normal;
22 | font-weight: 700;
23 | src: local('Open Sans Bold'), local('OpenSans-Bold'), url(k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff) format('woff');
24 | }
25 | @font-face {
26 | font-family: 'Open Sans';
27 | font-style: normal;
28 | font-weight: 800;
29 | src: local('Open Sans Extrabold'), local('OpenSans-Extrabold'), url(EInbV5DfGHOiMmvb1Xr-hnhCUOGz7vYGh680lGh-uXM.woff) format('woff');
30 | }
31 |
--------------------------------------------------------------------------------
/assets/css/fonts/font.css:
--------------------------------------------------------------------------------
1 | @import url(css.css);body{font-family:"Open Sans","Helvetica Neue","宋体",Helvetica,Arial,sans-serif;font-size:13px}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-weight:400}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6,.heading-font{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}
--------------------------------------------------------------------------------
/assets/css/fonts/k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/css/fonts/k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff
--------------------------------------------------------------------------------
/assets/css/importer.less:
--------------------------------------------------------------------------------
1 | /**
2 | * importer.less
3 | *
4 | * By default, new Sails projects are configured to compile this file
5 | * from LESS to CSS. Unlike CSS files, LESS files are not compiled and
6 | * included automatically unless they are imported below.
7 | *
8 | * The LESS files imported below are compiled and included in the order
9 | * they are listed. Mixins, variables, etc. should be imported first
10 | * so that they can be accessed by subsequent LESS stylesheets.
11 | *
12 | * (Just like the rest of the asset pipeline bundled in Sails, you can
13 | * always omit, customize, or replace this behavior with SASS, SCSS,
14 | * or any other Grunt tasks you like.)
15 | */
16 |
17 |
18 |
19 | // For example:
20 | //
21 | // @import 'variables/colors.less';
22 | // @import 'mixins/foo.less';
23 | // @import 'mixins/bar.less';
24 | // @import 'mixins/baz.less';
25 | //
26 | // @import 'styleguide.less';
27 | // @import 'pages/login.less';
28 | // @import 'pages/signup.less';
29 | //
30 | // etc.
31 |
--------------------------------------------------------------------------------
/assets/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/favicon.ico
--------------------------------------------------------------------------------
/assets/fonts/fontawesome-webfont (1).eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/fonts/fontawesome-webfont (1).eot
--------------------------------------------------------------------------------
/assets/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/assets/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/assets/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/assets/fonts/themify (1).eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/fonts/themify (1).eot
--------------------------------------------------------------------------------
/assets/fonts/themify.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/fonts/themify.eot
--------------------------------------------------------------------------------
/assets/fonts/themify.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/fonts/themify.ttf
--------------------------------------------------------------------------------
/assets/fonts/themify.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/fonts/themify.woff
--------------------------------------------------------------------------------
/assets/img/avatar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/avatar.jpg
--------------------------------------------------------------------------------
/assets/img/close.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/close.gif
--------------------------------------------------------------------------------
/assets/img/cover.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/cover.jpg
--------------------------------------------------------------------------------
/assets/img/empty.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/empty.bmp
--------------------------------------------------------------------------------
/assets/img/face1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/face1.jpg
--------------------------------------------------------------------------------
/assets/img/face3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/face3.jpg
--------------------------------------------------------------------------------
/assets/img/face4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/face4.jpg
--------------------------------------------------------------------------------
/assets/img/face5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/face5.jpg
--------------------------------------------------------------------------------
/assets/img/fishy4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/fishy4.png
--------------------------------------------------------------------------------
/assets/img/flags/cn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/flags/cn.png
--------------------------------------------------------------------------------
/assets/img/flags/es.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/flags/es.png
--------------------------------------------------------------------------------
/assets/img/flags/fr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/flags/fr.png
--------------------------------------------------------------------------------
/assets/img/flags/us.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/flags/us.png
--------------------------------------------------------------------------------
/assets/img/flags/za.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/flags/za.png
--------------------------------------------------------------------------------
/assets/img/image_devInTub.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/image_devInTub.png
--------------------------------------------------------------------------------
/assets/img/invoice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/invoice.png
--------------------------------------------------------------------------------
/assets/img/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/loading.gif
--------------------------------------------------------------------------------
/assets/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/logo.png
--------------------------------------------------------------------------------
/assets/img/man.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/man.png
--------------------------------------------------------------------------------
/assets/img/minimal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/minimal.png
--------------------------------------------------------------------------------
/assets/img/minimal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/minimal@2x.png
--------------------------------------------------------------------------------
/assets/img/panel/boxed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/panel/boxed.png
--------------------------------------------------------------------------------
/assets/img/panel/scroll.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/panel/scroll.png
--------------------------------------------------------------------------------
/assets/img/panel/small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/panel/small.png
--------------------------------------------------------------------------------
/assets/img/sago.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/sago.jpg
--------------------------------------------------------------------------------
/assets/img/sprite-skin-flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/img/sprite-skin-flat.png
--------------------------------------------------------------------------------
/assets/js/animated.js:
--------------------------------------------------------------------------------
1 | var demoAnimated=function(){function testAnim(x){$('.service > div').removeClass().addClass(x+' animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend',function(){$(this).removeClass();});}
2 | return{init:function(){$('.chosen').on('change',function(){var anim=$(this).val();testAnim(anim);});}};}();$(function(){"use strict";demoAnimated.init();});
--------------------------------------------------------------------------------
/assets/js/buttons.js:
--------------------------------------------------------------------------------
1 | var demoButtons=function(){return{init:function(){$(".loading-demo").on("click",function(){var btn=$(this);btn.button("loading");setTimeout(function(){btn.button("reset");},3000);});}};}();$(function(){"use strict";demoButtons.init();});
--------------------------------------------------------------------------------
/assets/js/catalog.js:
--------------------------------------------------------------------------------
1 | var catalog=function(){var container;function events(){$(document).on("click",".toggle-sidebar",function(e){e.preventDefault();e.stopPropagation();container.isotope('layout');});$(document).on("click",".view-options label",function(e){e.preventDefault();e.stopPropagation();if($(this).data("view")==="grid"){container.isotope('layout');}else if($(this).data("view")==="list"){container.isotope('layout');}});$(window).load(function(){container=$(".feed").isotope({resizable:false,itemSelector:".switch-item",layoutMode:"masonry"});$(".filter a").on("click",function(){var selector=$(this).attr("data-filter");$(".filter").find("li").removeClass("active");$(this).parent().addClass("active");container.isotope({filter:selector});return false;});});}
2 | return{init:function(){events();}};}();$(function(){"use strict";catalog.init();});
--------------------------------------------------------------------------------
/assets/js/datatables.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function () {
2 | $("head").append("");
3 | $("body").append("");
4 | $("body").append("");
5 | });
6 |
--------------------------------------------------------------------------------
/assets/js/date.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by root on 1/5/16.
3 | */
4 | // 对Date的扩展,将 Date 转化为指定格式的String
5 | // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
6 | // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
7 | // 例子:
8 | // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
9 | // (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
10 | Date.prototype.format = function(fmt)
11 | {
12 | var o = {
13 | "M+" : this.getMonth()+1, //月份
14 | "d+" : this.getDate(), //日
15 | "h+" : this.getHours(), //小时
16 | "m+" : this.getMinutes(), //分
17 | "s+" : this.getSeconds(), //秒
18 | "q+" : Math.floor((this.getMonth()+3)/3), //季度
19 | "S" : this.getMilliseconds() //毫秒
20 | };
21 | if(/(y+)/.test(fmt))
22 | fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
23 | for(var k in o)
24 | if(new RegExp("("+ k +")").test(fmt))
25 | fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
26 | return fmt;
27 | }
28 |
--------------------------------------------------------------------------------
/assets/js/demo-mock.js:
--------------------------------------------------------------------------------
1 | $(function(){$.mockjaxSettings.responseTime=500;$.mockjax({url:'/post',response:function(settings){log(settings,this);}});$.mockjax({url:'/error',status:400,statusText:'Bad Request',response:function(settings){this.responseText='Please input correct value';log(settings,this);}});$.mockjax({url:'/status',status:500,response:function(settings){this.responseText='Internal Server Error';log(settings,this);}});$.mockjax({url:'/groups',response:function(settings){this.responseText=[{value:0,text:'Guest'},{value:1,text:'Service'},{value:2,text:'Customer'},{value:3,text:'Operator'},{value:4,text:'Support'},{value:5,text:'Admin'}];log(settings,this);}});function log(settings,response){var s=[],str;s.push(settings.type.toUpperCase()+' url = "'+ settings.url+'"');for(var a in settings.data){if(settings.data[a]&&typeof settings.data[a]==='object'){str=[];for(var j in settings.data[a]){str.push(j+': "'+settings.data[a][j]+'"');}
2 | str='{ '+str.join(', ')+' }';}else{str='"'+settings.data[a]+'"';}
3 | s.push(a+' = '+ str);}
4 | s.push('RESPONSE: status = '+ response.status);if(response.responseText){if($.isArray(response.responseText)){s.push('[');$.each(response.responseText,function(i,v){s.push('{value: '+ v.value+', text: "'+v.text+'"}');});s.push(']');}else{s.push($.trim(response.responseText));}}
5 | s.push('--------------------------------------\n');$('#console').val(s.join('\n')+ $('#console').val());}});
--------------------------------------------------------------------------------
/assets/js/editor.js:
--------------------------------------------------------------------------------
1 | var editableContent=function(){return{init:function(){var editor=new MediumEditor(".editable",{buttonLabels:"fontawesome"});}};}();$(function(){"use strict";editableContent.init();});
--------------------------------------------------------------------------------
/assets/js/form-custom.js:
--------------------------------------------------------------------------------
1 | var demoCustomForm=function(){return{init:function(){var elems=Array.prototype.slice.call(document.querySelectorAll('.js-switch'));var blue=document.querySelector('.js-switch-blue');var switchery=new Switchery(blue,{color:'#17c3e5'});var pink=document.querySelector('.js-switch-pink');var switchery=new Switchery(pink,{color:'#ff7791',disabled:true});var green=document.querySelector('.js-switch-green');var switchery=new Switchery(green,{color:'#2dcb73'});var red=document.querySelector('.js-switch-red');var switchery=new Switchery(red,{color:'#FF604F'});var secondary=document.querySelector('.js-switch-secondary');var switchery=new Switchery(secondary,{color:'#FFB244',secondaryColor:'#ff8787'});$('.categorized').tagsinput({tagClass:function(item){switch(item.continent){case'Europe':return'label label-primary';case'America':return'label label-danger';case'Australia':return'label label-success';case'Africa':return'label label-color';case'Asia':return'label label-warning';}},itemValue:'value',itemText:'text'});$('.categorized').tagsinput('add',{"value":1,"text":"Amsterdam","continent":"Europe"});$('.categorized').tagsinput('add',{"value":4,"text":"Washington","continent":"America"});$('.categorized').tagsinput('add',{"value":7,"text":"Sydney","continent":"Australia"});$('.categorized').tagsinput('add',{"value":10,"text":"Beijing","continent":"Asia"});$('.categorized').tagsinput('add',{"value":13,"text":"Cairo","continent":"Africa"});}};}();$(function(){"use strict";demoCustomForm.init();});
--------------------------------------------------------------------------------
/assets/js/form-masks.js:
--------------------------------------------------------------------------------
1 | var demoFormMasks=function(){function plugins(){$.mask.definitions['~']="[+-]";$("#date").mask("99/99/9999");$("#phone").mask("(999) 999-9999");$("#phoneExt").mask("(999) 999-9999? x99999");$("#iphone").mask("+33 999 999 999");$("#tin").mask("99-9999999");$("#ssn").mask("999-99-9999");$("#product").mask("a*-999-a999",{placeholder:" "});$("#eyescript").mask("~9.99 ~9.99 999");$("#po").mask("PO: aaa-999-***");$("#pct").mask("99%");$("#phoneAutoclearFalse").mask("(999) 999-9999",{autoclear:false});$("#phoneExtAutoclearFalse").mask("(999) 999-9999? x99999",{autoclear:false});$("input").blur(function(){$("#info").html("Unmasked value: "+ $(this).mask());}).dblclick(function(){$(this).unmask();});}
2 | return{init:function(){plugins();}};}();$(function(){"use strict";demoFormMasks.init();});
--------------------------------------------------------------------------------
/assets/js/form-wizard.js:
--------------------------------------------------------------------------------
1 | var demoFormWizard=function(){return{init:function(){$("#stepy").stepy({backLabel:"Previous Step",nextLabel:"Next Step",errorImage:true,block:true,validate:true});$('#stepy').validate({errorPlacement:function(error){$('#stepy .stepy-errors').append(error);},rules:{'email':'required'},messages:{'email':{required:'email address is required!'}}});}};}();$(function(){"use strict";demoFormWizard.init();});
--------------------------------------------------------------------------------
/assets/js/form-wysiwyg.js:
--------------------------------------------------------------------------------
1 | var wysiwygEditor=function(){function initToolbarBootstrapBindings(){var fonts=['Serif','Sans','Arial','Arial Black','Courier','Courier New','Comic Sans MS','Helvetica','Impact','Lucida Grande','Lucida Sans','Tahoma','Times','Times New Roman','Verdana'],fontTarget=$('[title=Font]').siblings('.dropdown-menu');$.each(fonts,function(idx,fontName){fontTarget.append($('
'+ fontName+''));});$('a[title]').tooltip({container:'body'});$('.dropdown-menu input').click(function(){return false;}).change(function(){$(this).parent('.dropdown-menu').siblings('.dropdown-toggle').dropdown('toggle');}).keydown('esc',function(){this.value='';$(this).change();});$('[data-role=magic-overlay]').each(function(){var overlay=$(this),target=$(overlay.data('target'));overlay.css('opacity',0).css('position','absolute').offset(target.offset()).width(target.outerWidth()).height(target.outerHeight());});if("onwebkitspeechchange"in document.createElement("input")){var editorOffset=$('#editor').offset();}else{$('#voiceBtn').hide();}}
2 | function showErrorAlert(reason,detail){var msg='';if(reason==='unsupported-file-type'){msg="Unsupported format "+ detail;}else{console.log("error uploading file",reason,detail);}
3 | $(' '+'File upload error '+ msg+'
').prependTo('#alerts');}
4 | function plugins(){initToolbarBootstrapBindings();$('#editor').wysiwyg({fileUploadError:showErrorAlert});}
5 | return{init:function(){plugins();}};}();$(function(){"use strict";wysiwygEditor.init();});
--------------------------------------------------------------------------------
/assets/js/form.js:
--------------------------------------------------------------------------------
1 | var myForm = function() {
2 | return {
3 | init : function() {
4 | try{
5 | //开关
6 | var elems = Array.prototype.slice.call(document
7 | .querySelectorAll(".js-switch"));
8 | var blues = $(".js-switch-blue");
9 | $.each(blues, function(i,blue){
10 | var switchery = new Switchery(blue, {
11 | color : "#1582dc"
12 | });
13 | });
14 | var pinks = $(".js-switch-pink");
15 | $.each(pinks, function(i,pink){
16 | var switchery = new Switchery(pink, {
17 | color : "#ff7791",
18 | disabled : true
19 | });
20 | });
21 |
22 | var greens = $(".js-switch-green");
23 | $.each(greens, function(i,green){
24 | var switchery = new Switchery(green, {
25 | color : "#15db81"
26 | });
27 | });
28 |
29 | var reds = $(".js-switch-red");
30 | $.each(reds, function(i, red){
31 | var switchery = new Switchery(red, {
32 | color : "#FF604F"
33 | });
34 | });
35 |
36 | var secondarys = $(".js-switch-secondary");
37 | $.each(secondarys, function(i,secondary){
38 | var switchery = new Switchery(secondary, {
39 | color : "#FFB244",
40 | secondaryColor : "#ff8787"
41 | });
42 | });
43 |
44 |
45 | }catch(e){
46 |
47 | }
48 | }
49 | }
50 | }();
51 |
--------------------------------------------------------------------------------
/assets/js/gallery.js:
--------------------------------------------------------------------------------
1 | var appGallery=function(){function events(){$(".portfolio-ajax").addClass("loading");$(window).on("load",layoutItems);$(window).on("resize",layoutItems);$(document).on("click touchstart",".toggle-sidebar",function(){layoutItems();});$(".superbox").imagesLoaded().always(function(){$(".superbox").fadeIn();$(".portfolio-ajax").removeClass("loading");}).done(function(){$(".gallery-loader").addClass("hide");$(".superbox").removeClass("hide");layoutItems();});}
2 | function layoutItems(){initLayout();}
3 | function initLayout(){var portfolioWidth=getWidth();$(".superbox").find(".superbox-list").each(function(){$(this).css({width:portfolioWidth+"px"});});}
4 | function getWidth(){var wi=$(".superbox").width(),col=Math.floor(wi/1);if(wi>1024){col=Math.floor(wi/5);}else if(wi>767){col=Math.floor(wi/4);}else if(wi>480){col=Math.floor(wi/2);}else if(wi>320){col=Math.floor(wi/1);}
5 | return col;}
6 | function superbox(){$('.superbox').SuperBox();}
7 | return{init:function(){events();superbox();}};}();$(function(){"use strict";appGallery.init();});
--------------------------------------------------------------------------------
/assets/js/general.js:
--------------------------------------------------------------------------------
1 | var general=function(){return{init:function(){$("[data-toggle=tooltip]").tooltip();$("[data-toggle=popover]").popover().click(function(e){e.preventDefault();});}};}();$(function(){"use strict";general.init();});
--------------------------------------------------------------------------------
/assets/js/maps.js:
--------------------------------------------------------------------------------
1 | var googlemap=function(){var map;return{init:function(){map=new GMaps({div:"#map",lat:-12.043333,lng:-77.028333});map.addMarker({lat:-12.043333,lng:-77.03,title:"Lima",details:{database_id:42,author:"HPNeo"},click:function(e){if(console.log){console.log(e);}
2 | alert("You clicked on this marker");}});map.addMarker({lat:-12.042,lng:-77.028333,title:"Marker with InfoWindow",infoWindow:{content:"HTML Content
"}});}};}();$(function(){"use strict";googlemap.init();});
--------------------------------------------------------------------------------
/assets/js/offscreen.js:
--------------------------------------------------------------------------------
1 | var offscreen=function(){var container=$(".app"),canvasDirection,direction,rapidClick=false;function hide(){container.removeClass("move-left move-right");canvasDirection="";setTimeout(function(){container.removeClass("offscreen");rapidClick=false;},300);}
2 | function toggle(direction){if(direction!==undefined&&direction==="rtl"){container.addClass("offscreen move-right").removeClass("move-left");canvasDirection="rtl";}else{container.addClass("offscreen move-left").removeClass("move-right");canvasDirection="ltr";}}
3 | function fixSlimScroll(){if(!$.browser.mobile&&!sublime.checkBreakout()){if(canvasDirection==="ltr"){if($(".offscreen-left").find(".slimScrollDiv").length!==0){$(".offscreen-left").find(".main-navigation, .slimscroll").slimScroll({height:'auto'});}}
4 | if(canvasDirection==="rtl"){if($(".offscreen-right").find(".slimScrollDiv").length!==0){$(".offscreen-right").find(".main-navigation, .slimscroll").slimScroll({height:'auto'});}}}}
5 | function events(){$("[data-toggle=offscreen]").on("click",function(e){e.preventDefault();e.stopPropagation();direction=$(this).data("move");if(direction===canvasDirection){hide();return;}
6 | if(rapidClick){return;}
7 | rapidClick=true;toggle(direction);fixSlimScroll();});$(".exit-offscreen").on("click",function(e){e.preventDefault();e.stopPropagation();hide();});}
8 | return{hide:hide,init:function(){events();}};}();$(function(){"use strict";offscreen.init();});
--------------------------------------------------------------------------------
/assets/js/pickers.js:
--------------------------------------------------------------------------------
1 | var demoFormPickers=function(){var contentStyle=$('.main-content')[0].style;function plugins(){$(".datepicker").datepicker();$(".timepicker").timepicker();$(".current-time").on("click",function(){$(".timepicker").timepicker("setTime",new Date());});$(".color-picker").colorpicker();$(".background-color").colorpicker().on("changeColor",function(ev){contentStyle.backgroundColor=ev.color.toHex();});$('#reservationtime').daterangepicker({timePicker:true,timePickerIncrement:30,format:'MM/DD/YYYY h:mm A'});$('#colorpalette1').colorPalette().on('selectColor',function(e){$('#selected-color1').val(e.color);});}
2 | return{init:function(){plugins();}};}();$(function(){"use strict";demoFormPickers.init();});
--------------------------------------------------------------------------------
/assets/js/select.js:
--------------------------------------------------------------------------------
1 | var _Select = {
2 | init : function(){
3 | //引入必要的样式+JS文件
4 | $("head").append("");
5 | $("body").append("");
6 | }
7 | }
8 | $(document).ready(function () {
9 | _Select.init();
10 | });
11 |
--------------------------------------------------------------------------------
/assets/js/sortable.js:
--------------------------------------------------------------------------------
1 | var demoSortableLists=function(){function events(){$(document).on("click","#nestable-menu",function(e){var target=$(e.target),action=target.data("action");if(action==="expand-all"){$(".dd").nestable("expandAll");}
2 | if(action==="collapse-all"){$(".dd").nestable("collapseAll");}});}
3 | function updateOutput(e){var list=e.length?e:$(e.target),output=list.data("output");if(window.JSON){output.text(window.JSON.stringify(list.nestable("serialize")));}else{output.text("JSON browser support required for this demo.");}}
4 | function plugins(){$("#nestable").nestable({group:1}).on("change",updateOutput);$("#nestable2").nestable({group:1}).on("change",updateOutput);updateOutput($("#nestable").data("output",$("#nestable-output")));updateOutput($("#nestable2").data("output",$("#nestable2-output")));$("#nestable3").nestable();}
5 | return{init:function(){events();plugins();}};}();$(function(){"use strict";demoSortableLists.init();});
--------------------------------------------------------------------------------
/assets/js/stepy.js:
--------------------------------------------------------------------------------
1 | var _Stepy = {
2 | init : function(){
3 | //引入必要的样式+JS文件
4 | $("body").append("");
5 | }
6 | }
7 | $(document).ready(function () {
8 | _Stepy.init();
9 | });
10 |
--------------------------------------------------------------------------------
/assets/js/tour.js:
--------------------------------------------------------------------------------
1 | var tour=function(){return{init:function(){var enjoyhint_instance=new EnjoyHint({});var enjoyhint_script_steps=[{selector:'.off-right',event:'click',description:'This is your user menu. Click to show options'},{selector:'#options',event_type:'next',description:'Your sub menu pops up here. Click next to continue'},{selector:'#main-nav',event_type:'next',description:'This is your main sidebar navigation. Click next'},{selector:'#secondary-nav',event_type:'next',description:'and finally this is your secondary navigation.'},{selector:'.navbar-brand',event_type:'next',description:'Want to see the tour again? Just reload your browser.'}];enjoyhint_instance.setScript(enjoyhint_script_steps);if($(window).width()>767){enjoyhint_instance.runScript();}else{$(".wrapper").text("View tour no higher viewport");}}};}();$(function(){"use strict";tour.init();});
--------------------------------------------------------------------------------
/assets/js/validator.js:
--------------------------------------------------------------------------------
1 | var Validator = {
2 | init : function(){
3 | //引入必要的样式+JS文件
4 | $("body").append("");
5 | $("body").append("");
6 | }
7 | };
8 | $(document).ready(function () {
9 | Validator.init();
10 | });
11 |
--------------------------------------------------------------------------------
/assets/js/vector.js:
--------------------------------------------------------------------------------
1 | var vectormap=function(){return{init:function(){$('#map').vectorMap({map:'world_mill_en',scaleColors:['#C8EEFF','#0071A4'],normalizeFunction:'polynomial',hoverOpacity:0.7,hoverColor:false,zoomOnScroll:false,regionStyle:{initial:{fill:'#9f9f9f',"fill-opacity":0.9,stroke:'#fff',},hover:{"fill-opacity":0.7},selected:{fill:'#1A94E0'}},markerStyle:{initial:{fill:'#e04a1a',stroke:'#FF604F',"fill-opacity":0.5,"stroke-width":1,"stroke-opacity":0.4,},hover:{stroke:'#C54638',"stroke-width":2},selected:{fill:'#C54638'},},backgroundColor:'#f1f4f9',markers:[{latLng:[41.90,12.45],name:'Vatican City'},{latLng:[43.73,7.41],name:'Monaco'},{latLng:[-0.52,166.93],name:'Nauru'},{latLng:[-8.51,179.21],name:'Tuvalu'},{latLng:[43.93,12.46],name:'San Marino'},{latLng:[47.14,9.52],name:'Liechtenstein'},{latLng:[7.11,171.06],name:'Marshall Islands'},{latLng:[17.3,-62.73],name:'Saint Kitts and Nevis'},{latLng:[3.2,73.22],name:'Maldives'},{latLng:[35.88,14.5],name:'Malta'},{latLng:[12.05,-61.75],name:'Grenada'},{latLng:[13.16,-61.23],name:'Saint Vincent and the Grenadines'},{latLng:[13.16,-59.55],name:'Barbados'},{latLng:[17.11,-61.85],name:'Antigua and Barbuda'},{latLng:[-4.61,55.45],name:'Seychelles'},{latLng:[7.35,134.46],name:'Palau'},{latLng:[42.5,1.51],name:'Andorra'},{latLng:[14.01,-60.98],name:'Saint Lucia'},{latLng:[6.91,158.18],name:'Federated States of Micronesia'},{latLng:[1.3,103.8],name:'Singapore'},{latLng:[1.46,173.03],name:'Kiribati'},{latLng:[-21.13,-175.2],name:'Tonga'},{latLng:[15.3,-61.38],name:'Dominica'},{latLng:[-20.2,57.5],name:'Mauritius'},{latLng:[26.02,50.55],name:'Bahrain'},{latLng:[0.33,6.73],name:'São Tomé and Príncipe'},]});}};}();$(function(){"use strict";vectormap.init();});
--------------------------------------------------------------------------------
/assets/plugins/address/address.css:
--------------------------------------------------------------------------------
1 | .editable-address{display:block;margin-bottom:5px;}.editable-address span{width:70px;display:inline-block;}
--------------------------------------------------------------------------------
/assets/plugins/appear/jquery.appear.js:
--------------------------------------------------------------------------------
1 | (function($){var selectors=[];var check_binded=false;var check_lock=false;var defaults={interval:250,force_process:false};var $window=$(window);var $prior_appeared;function process(){check_lock=false;for(var index=0;index=window_top&&top-($element.data('appear-top-offset')||0)<=window_top+ $window.height()&&left+ $element.width()>=window_left&&left-($element.data('appear-left-offset')||0)<=window_left+ $window.width()){return true;}else{return false;}};$.fn.extend({appear:function(options){var opts=$.extend({},defaults,options||{});var selector=this.selector||this;if(!check_binded){var on_check=function(){if(check_lock){return;}
4 | check_lock=true;setTimeout(process,opts.interval);};$(window).scroll(on_check).resize(on_check);on_check();check_binded=true;}
5 | if(opts.force_process){setTimeout(process,opts.interval);}
6 | selectors.push(selector);return $(selector);}});$.extend({force_appear:function(){if(check_binded){process();return true;}
7 | return false;}});})(jQuery);
--------------------------------------------------------------------------------
/assets/plugins/bootstrap-colorpalette/bootstrap-colorpalette.css:
--------------------------------------------------------------------------------
1 | .bootstrap-colorpalette{padding-left:4px;padding-right:4px;white-space:normal;line-height:1;}.bootstrap-colorpalette div{line-height:0;}.bootstrap-colorpalette .btn-color{width:17px;height:17px;border:1px solid #fff;margin:0;padding:0;}.bootstrap-colorpalette .btn-color:hover{border:1px solid #000;}
--------------------------------------------------------------------------------
/assets/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css:
--------------------------------------------------------------------------------
1 | .bootstrap-tagsinput{background-color:#fff;border:1px solid #ccc;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);display:inline-block;padding:4px 6px;margin-bottom:10px;color:#555;vertical-align:middle;border-radius:4px;max-width:100%;line-height:22px;}.bootstrap-tagsinput input{border:none;box-shadow:none;outline:none;background-color:transparent;padding:0;margin:0;width:auto!important;max-width:inherit;}.bootstrap-tagsinput input:focus{border:none;box-shadow:none;}.bootstrap-tagsinput .tag{margin-right:2px;color:white;}.bootstrap-tagsinput .tag [data-role="remove"]{margin-left:8px;cursor:pointer;}.bootstrap-tagsinput .tag [data-role="remove"]:after{content:"x";padding:0px 2px;}.bootstrap-tagsinput .tag [data-role="remove"]:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);}.bootstrap-tagsinput .tag [data-role="remove"]:hover:active{box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}
--------------------------------------------------------------------------------
/assets/plugins/chosen/chosen-sprite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/chosen/chosen-sprite.png
--------------------------------------------------------------------------------
/assets/plugins/chosen/chosen-sprite@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/chosen/chosen-sprite@2x.png
--------------------------------------------------------------------------------
/assets/plugins/colorpicker/img/alpha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/colorpicker/img/alpha.png
--------------------------------------------------------------------------------
/assets/plugins/colorpicker/img/hue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/colorpicker/img/hue.png
--------------------------------------------------------------------------------
/assets/plugins/colorpicker/img/saturation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/colorpicker/img/saturation.png
--------------------------------------------------------------------------------
/assets/plugins/count-to/jquery.countTo.js:
--------------------------------------------------------------------------------
1 | (function($){$.fn.countTo=function(options){options=options||{};return $(this).each(function(){var settings=$.extend({},$.fn.countTo.defaults,{from:$(this).data('from'),to:$(this).data('to'),speed:$(this).data('speed'),refreshInterval:$(this).data('refresh-interval'),decimals:$(this).data('decimals')},options);var loops=Math.ceil(settings.speed/settings.refreshInterval),increment=(settings.to- settings.from)/loops;var self=this,$self=$(this),loopCount=0,value=settings.from,data=$self.data('countTo')||{};$self.data('countTo',data);if(data.interval){clearInterval(data.interval);}
2 | data.interval=setInterval(updateTimer,settings.refreshInterval);render(value);function updateTimer(){value+=increment;loopCount++;render(value);if(typeof(settings.onUpdate)=='function'){settings.onUpdate.call(self,value);}
3 | if(loopCount>=loops){$self.removeData('countTo');clearInterval(data.interval);value=settings.to;if(typeof(settings.onComplete)=='function'){settings.onComplete.call(self,value);}}}
4 | function render(value){var formattedValue=settings.formatter.call(self,value,settings);$self.text(formattedValue);}});};$.fn.countTo.defaults={from:0,to:0,speed:1000,refreshInterval:100,decimals:0,formatter:formatter,onUpdate:null,onComplete:null};function formatter(value,settings){return value.toFixed(settings.decimals);}}(jQuery));
--------------------------------------------------------------------------------
/assets/plugins/datatables/cn.json:
--------------------------------------------------------------------------------
1 | {
2 | "sProcessing": "处理中...",
3 | "sLengthMenu": "显示 _MENU_ 条结果",
4 | "sZeroRecords": "没有匹配结果",
5 | "sInfo": "显示第 _START_ 至 _END_ 条结果,共 _TOTAL_ 条",
6 | "sInfoEmpty": "显示第 0 至 0 条结果,共 0 条",
7 | "sInfoFiltered": "(每页显示 _MAX_ 条)",
8 | "sInfoPostFix": "",
9 | "sSearch": "搜索:",
10 | "sUrl": "",
11 | "sEmptyTable": "表中数据为空",
12 | "sLoadingRecords": "载入中...",
13 | "sInfoThousands": ",",
14 | "oPaginate": {
15 | "sFirst": "首页",
16 | "sPrevious": "上页",
17 | "sNext": "下页",
18 | "sLast": "末页"
19 | },
20 | "oAria": {
21 | "sSortAscending": ": 以升序排列此列",
22 | "sSortDescending": ": 以降序排列此列"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/assets/plugins/datepicker/bootstrap-datetimepicker.min.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/datepicker/bootstrap-datetimepicker.min.css
--------------------------------------------------------------------------------
/assets/plugins/datepicker/locales/bootstrap-datetimepicker.zh-CN.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Simplified Chinese translation for bootstrap-datetimepicker
3 | * Yuan Cheung
4 | */
5 | ;(function($){
6 | $.fn.datetimepicker.dates['zh-CN'] = {
7 | days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"],
8 | daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"],
9 | daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"],
10 | months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
11 | monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
12 | today: "今天",
13 | suffix: [],
14 | meridiem: ["上午", "下午"]
15 | };
16 | }(jQuery));
17 |
--------------------------------------------------------------------------------
/assets/plugins/datepicker/locales/bootstrap-datetimepicker.zh-TW.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Traditional Chinese translation for bootstrap-datetimepicker
3 | * Rung-Sheng Jang
4 | */
5 | ;(function($){
6 | $.fn.datetimepicker.dates['zh-TW'] = {
7 | days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"],
8 | daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"],
9 | daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"],
10 | months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
11 | monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
12 | today: "今天",
13 | suffix: [],
14 | meridiem: ["上午", "下午"]
15 | };
16 | }(jQuery));
17 |
--------------------------------------------------------------------------------
/assets/plugins/dropzone/images/spritemap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/dropzone/images/spritemap.png
--------------------------------------------------------------------------------
/assets/plugins/dropzone/images/spritemap@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/dropzone/images/spritemap@2x.png
--------------------------------------------------------------------------------
/assets/plugins/emoji/emoji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/emoji/emoji.png
--------------------------------------------------------------------------------
/assets/plugins/enjoyhint/Casino_Hand/casino_hand-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/enjoyhint/Casino_Hand/casino_hand-webfont.eot
--------------------------------------------------------------------------------
/assets/plugins/enjoyhint/Casino_Hand/casino_hand-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/enjoyhint/Casino_Hand/casino_hand-webfont.ttf
--------------------------------------------------------------------------------
/assets/plugins/enjoyhint/Casino_Hand/casino_hand-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/enjoyhint/Casino_Hand/casino_hand-webfont.woff
--------------------------------------------------------------------------------
/assets/plugins/ion.rangeSlider/ion.rangeSlider.skinFlat.css:
--------------------------------------------------------------------------------
1 | .irs-line-mid,.irs-line-left,.irs-line-right,.irs-diapason,.irs-slider{background:url(../img/sprite-skin-flat.png) repeat-x;}.irs{height:40px;}.irs-with-grid{height:60px;}.irs-line{height:12px;top:25px;}.irs-line-left{height:12px;background-position:0 -30px;}.irs-line-mid{height:12px;background-position:0 0;}.irs-line-right{height:12px;background-position:100% -30px;}.irs-diapason{height:12px;top:25px;background-position:0 -60px;}.irs-slider{width:16px;height:18px;top:22px;background-position:0 -90px;}#irs-active-slider,.irs-slider:hover{background-position:0 -120px;}.irs-min,.irs-max{color:#999;font-size:10px;line-height:1.333;text-shadow:none;top:0;padding:1px 3px;background:#e1e4e9;border-radius:4px;}.irs-from,.irs-to,.irs-single{color:#fff;font-size:10px;line-height:1.333;text-shadow:none;padding:1px 5px;background:#ed5565;border-radius:4px;}.irs-from:after,.irs-to:after,.irs-single:after{position:absolute;display:block;content:"";bottom:-6px;left:50%;width:0;height:0;margin-left:-3px;overflow:hidden;border:3px solid transparent;border-top-color:#ed5565;}.irs-grid-pol{background:#e1e4e9;}.irs-grid-text{color:#999;}.irs-disabled{}
--------------------------------------------------------------------------------
/assets/plugins/jstree/themes/default/32px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/jstree/themes/default/32px.png
--------------------------------------------------------------------------------
/assets/plugins/jstree/themes/default/40px.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/jstree/themes/default/40px.png
--------------------------------------------------------------------------------
/assets/plugins/jstree/themes/default/throbber.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/jstree/themes/default/throbber.gif
--------------------------------------------------------------------------------
/assets/plugins/jvectormap/jquery-jvectormap-1.2.2.css:
--------------------------------------------------------------------------------
1 | .jvectormap-label{position:absolute;display:none;border:solid 1px #CDCDCD;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#292929;color:white;font-family:sans-serif,Verdana;font-size:smaller;padding:3px;}.jvectormap-zoomin,.jvectormap-zoomout{position:absolute;left:10px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#292929;padding:3px;color:white;width:10px;height:10px;cursor:pointer;line-height:10px;text-align:center;}.jvectormap-zoomin{top:10px;}.jvectormap-zoomout{top:30px;}
--------------------------------------------------------------------------------
/assets/plugins/responsive-tables/responsive-tables.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function(){var switched=false;var updateTables=function(){if(($(window).width()<767)&&!switched){switched=true;$("table.responsive").each(function(i,element){splitTable($(element));});return true;}
2 | else if(switched&&($(window).width()>767)){switched=false;$("table.responsive").each(function(i,element){unsplitTable($(element));});}};$(window).load(updateTables);$(window).on("redraw",function(){switched=false;updateTables();});$(window).on("resize",updateTables);function splitTable(original)
3 | {original.wrap("");var copy=original.clone();copy.find("td:not(:first-child), th:not(:first-child)").css("display","none");copy.removeClass("responsive");original.closest(".table-wrapper").append(copy);copy.wrap("");original.wrap("");setCellHeights(original,copy);}
4 | function unsplitTable(original){original.closest(".table-wrapper").find(".pinned").remove();original.unwrap();original.unwrap();}
5 | function setCellHeights(original,copy){var tr=original.find('tr'),tr_copy=copy.find('tr'),heights=[];tr.each(function(index){var self=$(this),tx=self.find('th, td');tx.each(function(){var height=$(this).outerHeight(true);heights[index]=heights[index]||0;if(height>heights[index])heights[index]=height;});});tr_copy.each(function(index){$(this).height(heights[index]);});}});
--------------------------------------------------------------------------------
/assets/plugins/responsive-tables/theme.css:
--------------------------------------------------------------------------------
1 | @media only screen and (max-width: 767px) {table.responsive{}.pinned{position:absolute;left:0;top:0;background:#fff;width:35%;overflow:hidden;overflow-x:scroll;}.pinned table{border-right:none;border-left:none;width:100%;}.pinned table th,.pinned table td{white-space:nowrap;}.pinned td:last-child{border-bottom:0;}div.table-wrapper{position:relative;overflow:hidden;}div.table-wrapper div.scrollable{margin-left:35%;}div.table-wrapper div.scrollable{overflow:scroll;overflow-y:hidden;}div.table-wrapper tr{height:inherit!important;}table.responsive td,table.responsive th{white-space:nowrap;overflow:hidden;}table.responsive th:first-child,table.responsive td:first-child,table.responsive td:first-child,table.responsive.pinned td{display:none;}}
--------------------------------------------------------------------------------
/assets/plugins/select2/select2-spinner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/select2/select2-spinner.gif
--------------------------------------------------------------------------------
/assets/plugins/select2/select2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/select2/select2.png
--------------------------------------------------------------------------------
/assets/plugins/select2/select2x2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/select2/select2x2.png
--------------------------------------------------------------------------------
/assets/plugins/stepy/img/alert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/stepy/img/alert.png
--------------------------------------------------------------------------------
/assets/plugins/stepy/jquery.stepy.css:
--------------------------------------------------------------------------------
1 | .stepy-header{list-style:none;padding:0;margin:0;clear:both;display:inline-block;width:100%;border-radius:4px;margin-bottom:15px}.stepy-header li{cursor:pointer;float:left;padding:10px 15px;background:#fff;border-radius:4px;margin:0 15px 0 0}.stepy-header li div{font-weight:700;font-size:16px;line-height:1}.stepy-header li.stepy-active div{color:#2f89c1;cursor:auto}.stepy-header li span{color:#CCC;font-size:11px}.stepy-header li.stepy-active span{color:#BBB}.stepy-header li.stepy-error div{color:#ff604f}.stepy-step{background:#fff;padding:15px;clear:both;border-radius:4px}.stepy-step legend{border:0;width:auto;margin-bottom:0}.stepy-navigator{height:33px;margin-top:20px}.button-back{float:left}.button-next,.stepy-navigator input[type="submit"]{float:right}.button-back,.button-next,.stepy-navigator input[type="submit"]{border:1px solid #CCC;color:#7f0055;cursor:pointer;font:1.2em verdana;padding:7px 15px 8px;text-decoration:none;-khtml-border-radius:4px;-moz-border-radius:4px;-opera-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.stepy-navigator input[type="submit"]{background-color:transparent;border-color:#CCC;margin-bottom:0;padding:7px 15px 24px;width:90px}.button-back:hover,.button-next:hover,.stepy-navigator input[type="submit"]:hover{border-color:#BBB;color:#B07}.stepy-errors{margin-top:-45px}.stepy-errors label.error{background:url('img/alert.png') no-repeat 0 1px;color:#ff604f;margin-left:15px;padding-left:30px}
--------------------------------------------------------------------------------
/assets/plugins/superbox/superbox.min.js:
--------------------------------------------------------------------------------
1 | /*
2 | SuperBox v1.0.0
3 | by Todd Motto: http://www.toddmotto.com
4 | Latest version: https://github.com/toddmotto/superbox
5 |
6 | Copyright 2013 Todd Motto
7 | Licensed under the MIT license
8 | http://www.opensource.org/licenses/mit-license.php
9 |
10 | SuperBox, the lightbox reimagined. Fully responsive HTML5 image galleries.
11 | */
12 | ;(function(e){e.fn.SuperBox=function(t){var n=e('');var r=e('
');var i=e('');n.append(r).append(i);return this.each(function(){e(".superbox-list").click(function(){var t=e(this).find(".superbox-img");var i=t.data("img");r.attr("src",i);if(e(".superbox-current-img").css("opacity")==0){e(".superbox-current-img").animate({opacity:1})}if(e(this).next().hasClass("superbox-show")){n.toggle()}else{n.insertAfter(this).css("display","block")}e("html, body").animate({scrollTop:n.position().top-t.width()},"medium")});e(".superbox").on("click",".superbox-close",function(){e(".superbox-current-img").animate({opacity:0},200,function(){e(".superbox-show").slideUp()})})})}})(jQuery);
--------------------------------------------------------------------------------
/assets/plugins/table-sortable/theme.css:
--------------------------------------------------------------------------------
1 | table[data-sortable] th:not([data-sortable="false"]){-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none;cursor:pointer;}table[data-sortable] th:after{content:"";visibility:hidden;display:inline-block;vertical-align:inherit;height:0;width:0;border-width:5px;border-style:solid;border-color:transparent;margin-right:1px;margin-left:10px;float:right;}table[data-sortable] th[data-sorted="true"]:after{visibility:visible;}table[data-sortable] th[data-sorted-direction="descending"]:after{border-top-color:inherit;margin-top:8px;}table[data-sortable] th[data-sorted-direction="ascending"]:after{border-bottom-color:inherit;margin-top:3px;}table[data-sortable].sortable-theme-bootstrap{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333333;background:white;}table[data-sortable].sortable-theme-bootstrap thead th{border-bottom:2px solid #e0e0e0;}table[data-sortable].sortable-theme-bootstrap tbody td{border-top:1px solid #e0e0e0;}table[data-sortable].sortable-theme-bootstrap th[data-sorted="true"]{color:#3a87ad;background:#d9edf7;border-bottom-color:#bce8f1;}table[data-sortable].sortable-theme-bootstrap th[data-sorted="true"][data-sorted-direction="descending"]:after{border-top-color:#3a87ad;}table[data-sortable].sortable-theme-bootstrap th[data-sorted="true"][data-sorted-direction="ascending"]:after{border-bottom-color:#3a87ad;}table[data-sortable].sortable-theme-bootstrap.sortable-theme-bootstrap-striped tbody>tr:nth-child(odd)>td{background-color:#f9f9f9;}
--------------------------------------------------------------------------------
/assets/plugins/timepicker/jquery.timepicker.css:
--------------------------------------------------------------------------------
1 | .ui-timepicker-wrapper{overflow-y:auto;height:150px;width:6.5em;background:#fff;border:1px solid #ddd;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);outline:none;z-index:10001;margin:0;}.ui-timepicker-wrapper.ui-timepicker-with-duration{width:13em;}.ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-30,.ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-60{width:11em;}.ui-timepicker-list{margin:0;padding:0;list-style:none;}.ui-timepicker-duration{margin-left:5px;color:#888;}.ui-timepicker-list:hover .ui-timepicker-duration{color:#888;}.ui-timepicker-list li{padding:3px 0 3px 5px;cursor:pointer;white-space:nowrap;color:#000;list-style:none;margin:0;}.ui-timepicker-list:hover .ui-timepicker-selected{background:#fff;color:#000;}li.ui-timepicker-selected,.ui-timepicker-list li:hover,.ui-timepicker-list .ui-timepicker-selected:hover{background:#1980EC;color:#fff;}li.ui-timepicker-selected .ui-timepicker-duration,.ui-timepicker-list li:hover .ui-timepicker-duration{color:#ccc;}.ui-timepicker-list li.ui-timepicker-disabled,.ui-timepicker-list li.ui-timepicker-disabled:hover,.ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled{color:#888;cursor:default;}.ui-timepicker-list li.ui-timepicker-disabled:hover,.ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled{background:#f2f2f2;}
--------------------------------------------------------------------------------
/assets/plugins/typeaheadjs/lib/typeahead.js-bootstrap.css:
--------------------------------------------------------------------------------
1 | .twitter-typeahead .tt-query,.twitter-typeahead .tt-hint{margin-bottom:0;}.tt-dropdown-menu{min-width:160px;margin-top:2px;padding:5px 0;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}.tt-suggestion{display:block;padding:3px 20px;}.tt-suggestion.tt-is-under-cursor{color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top,#0088cc,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#0088cc),to(#0077b3));background-image:-webkit-linear-gradient(top,#0088cc,#0077b3);background-image:-o-linear-gradient(top,#0088cc,#0077b3);background-image:linear-gradient(to bottom,#0088cc,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.tt-suggestion.tt-is-under-cursor a{color:#fff;}.tt-suggestion p{margin:0;}
--------------------------------------------------------------------------------
/assets/plugins/typeaheadjs/typeaheadjs.js:
--------------------------------------------------------------------------------
1 | (function($){"use strict";var Constructor=function(options){this.init('typeaheadjs',options,Constructor.defaults);};$.fn.editableutils.inherit(Constructor,$.fn.editabletypes.text);$.extend(Constructor.prototype,{render:function(){this.renderClear();this.setClass();this.setAttr('placeholder');this.$input.typeahead(this.options.typeahead);if($.fn.editableform.engine==='bs3'){if(this.$input.hasClass('input-sm')){this.$input.siblings('input.tt-hint').addClass('input-sm');}
2 | if(this.$input.hasClass('input-lg')){this.$input.siblings('input.tt-hint').addClass('input-lg');}}}});Constructor.defaults=$.extend({},$.fn.editabletypes.list.defaults,{tpl:'',typeahead:null,clear:true});$.fn.editabletypes.typeaheadjs=Constructor;}(window.jQuery));
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_chm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_chm.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_default.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_doc.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_doc.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_exe.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_exe.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_jpg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_jpg.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_mp3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_mp3.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_mv.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_mv.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_pdf.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_pdf.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_ppt.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_ppt.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_psd.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_psd.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_rar.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_rar.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_txt.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_txt.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_xls.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/fileTypeImages/icon_xls.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/images/alignicon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/images/alignicon.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/images/alignicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/images/alignicon.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/images/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/images/bg.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/images/file-icons.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/images/file-icons.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/images/file-icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/images/file-icons.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/images/icons.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/images/icons.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/images/icons.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/images/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/images/image.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/images/progress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/images/progress.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/images/success.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/images/success.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/attachment/images/success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/attachment/images/success.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/background/images/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/background/images/bg.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/background/images/success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/background/images/success.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/charts/images/charts0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/charts/images/charts0.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/charts/images/charts1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/charts/images/charts1.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/charts/images/charts2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/charts/images/charts2.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/charts/images/charts3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/charts/images/charts3.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/charts/images/charts4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/charts/images/charts4.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/charts/images/charts5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/charts/images/charts5.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/emotion/images/0.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/emotion/images/0.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/emotion/images/bface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/emotion/images/bface.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/emotion/images/cface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/emotion/images/cface.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/emotion/images/fface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/emotion/images/fface.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/emotion/images/jxface2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/emotion/images/jxface2.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/emotion/images/neweditor-tab-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/emotion/images/neweditor-tab-bg.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/emotion/images/tface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/emotion/images/tface.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/emotion/images/wface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/emotion/images/wface.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/emotion/images/yface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/emotion/images/yface.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/help/help.css:
--------------------------------------------------------------------------------
1 | .wrapper{width: 370px;margin: 10px auto;zoom: 1;}
2 | .tabbody{height: 360px;}
3 | .tabbody .panel{width:100%;height: 360px;position: absolute;background: #fff;}
4 | .tabbody .panel h1{font-size:26px;margin: 5px 0 0 5px;}
5 | .tabbody .panel p{font-size:12px;margin: 5px 0 0 5px;}
6 | .tabbody table{width:90%;line-height: 20px;margin: 5px 0 0 5px;;}
7 | .tabbody table thead{font-weight: bold;line-height: 25px;}
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/image/images/alignicon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/image/images/alignicon.jpg
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/image/images/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/image/images/bg.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/image/images/icons.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/image/images/icons.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/image/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/image/images/icons.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/image/images/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/image/images/image.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/image/images/progress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/image/images/progress.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/image/images/success.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/image/images/success.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/image/images/success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/image/images/success.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/music/music.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 插入音乐
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 |
21 |
22 |
31 |
32 |
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/preview/preview.html:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
40 |
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/addimg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/addimg.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/brush.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/brush.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/delimg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/delimg.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/delimgH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/delimgH.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/empty.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/emptyH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/emptyH.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/eraser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/eraser.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/redo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/redo.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/redoH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/redoH.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/scale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/scale.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/scaleH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/scaleH.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/size.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/size.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/undo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/undo.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/scrawl/images/undoH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/scrawl/images/undoH.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/spechars/spechars.html:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
14 |
15 |
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/table/dragicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/table/dragicon.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/table/edittable.css:
--------------------------------------------------------------------------------
1 | body{
2 | overflow: hidden;
3 | width: 540px;
4 | }
5 | .wrapper {
6 | margin: 10px auto 0;
7 | font-size: 12px;
8 | overflow: hidden;
9 | width: 520px;
10 | height: 315px;
11 | }
12 |
13 | .clear {
14 | clear: both;
15 | }
16 |
17 | .wrapper .left {
18 | float: left;
19 | margin-left: 10px;;
20 | }
21 |
22 | .wrapper .right {
23 | float: right;
24 | border-left: 2px dotted #EDEDED;
25 | padding-left: 15px;
26 | }
27 |
28 | .section {
29 | margin-bottom: 15px;
30 | width: 240px;
31 | overflow: hidden;
32 | }
33 |
34 | .section h3 {
35 | font-weight: bold;
36 | padding: 5px 0;
37 | margin-bottom: 10px;
38 | border-bottom: 1px solid #EDEDED;
39 | font-size: 12px;
40 | }
41 |
42 | .section ul {
43 | list-style: none;
44 | overflow: hidden;
45 | clear: both;
46 |
47 | }
48 |
49 | .section li {
50 | float: left;
51 | width: 120px;;
52 | }
53 |
54 | .section .tone {
55 | width: 80px;;
56 | }
57 |
58 | .section .preview {
59 | width: 220px;
60 | }
61 |
62 | .section .preview table {
63 | text-align: center;
64 | vertical-align: middle;
65 | color: #666;
66 | }
67 |
68 | .section .preview caption {
69 | font-weight: bold;
70 | }
71 |
72 | .section .preview td {
73 | border-width: 1px;
74 | border-style: solid;
75 | height: 22px;
76 | }
77 |
78 | .section .preview th {
79 | border-style: solid;
80 | border-color: #DDD;
81 | border-width: 2px 1px 1px 1px;
82 | height: 22px;
83 | background-color: #F7F7F7;
84 | }
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/table/edittip.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 表格删除提示
5 |
6 |
17 |
18 |
19 |
27 |
32 |
33 |
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/template/images/bg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/template/images/bg.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/template/images/pre0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/template/images/pre0.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/template/images/pre1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/template/images/pre1.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/template/images/pre2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/template/images/pre2.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/template/images/pre3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/template/images/pre3.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/template/images/pre4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/template/images/pre4.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/template/template.css:
--------------------------------------------------------------------------------
1 | .wrap{ padding: 5px;font-size: 14px;}
2 | .left{width:425px;float: left;}
3 | .right{width:160px;border: 1px solid #ccc;float: right;padding: 5px;margin-right: 5px;}
4 | .right .pre{height: 332px;overflow-y: auto;}
5 | .right .preitem{border: white 1px solid;margin: 5px 0;padding: 2px 0;}
6 | .right .preitem:hover{background-color: lemonChiffon;cursor: pointer;border: #ccc 1px solid;}
7 | .right .preitem img{display: block;margin: 0 auto;width:100px;}
8 | .clear{clear: both;}
9 | .top{height:26px;line-height: 26px;padding: 5px;}
10 | .bottom{height:320px;width:100%;margin: 0 auto;}
11 | .transparent{ background: url("images/bg.gif") repeat;}
12 | .bottom table tr td{border:1px dashed #ccc;}
13 | #colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;}
14 | .border_style1{padding:2px;border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;}
15 | p{margin: 5px 0}
16 | table{clear:both;margin-bottom:10px;border-collapse:collapse;word-break:break-all;}
17 | li{clear:both}
18 | ol{padding-left:40px; }
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/template/template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/video/images/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/video/images/bg.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/video/images/center_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/video/images/center_focus.jpg
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/video/images/file-icons.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/video/images/file-icons.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/video/images/file-icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/video/images/file-icons.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/video/images/icons.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/video/images/icons.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/video/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/video/images/icons.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/video/images/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/video/images/image.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/video/images/left_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/video/images/left_focus.jpg
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/video/images/none_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/video/images/none_focus.jpg
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/video/images/progress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/video/images/progress.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/video/images/right_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/video/images/right_focus.jpg
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/video/images/success.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/video/images/success.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/video/images/success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/video/images/success.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/wordimage/fClipboard_ueditor.swf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/wordimage/fClipboard_ueditor.swf
--------------------------------------------------------------------------------
/assets/plugins/ueditor/dialogs/wordimage/imageUploader.swf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/dialogs/wordimage/imageUploader.swf
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/addimage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/addimage.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/alldeletebtnhoverskin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/alldeletebtnhoverskin.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/alldeletebtnupskin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/alldeletebtnupskin.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/background.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/button.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/copy.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/deletedisable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/deletedisable.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/deleteenable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/deleteenable.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/listbackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/listbackground.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/localimage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/localimage.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/music.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/rotateleftdisable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/rotateleftdisable.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/rotateleftenable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/rotateleftenable.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/rotaterightdisable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/rotaterightdisable.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/rotaterightenable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/rotaterightenable.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/en/images/upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/en/images/upload.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/zh-cn/images/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/zh-cn/images/copy.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/zh-cn/images/localimage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/zh-cn/images/localimage.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/zh-cn/images/music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/zh-cn/images/music.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/lang/zh-cn/images/upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/lang/zh-cn/images/upload.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/php/action_crawler.php:
--------------------------------------------------------------------------------
1 | $CONFIG['catcherPathFormat'],
14 | "maxSize" => $CONFIG['catcherMaxSize'],
15 | "allowFiles" => $CONFIG['catcherAllowFiles'],
16 | "oriName" => "remote.png"
17 | );
18 | $fieldName = $CONFIG['catcherFieldName'];
19 |
20 | /* 抓取远程图片 */
21 | $list = array();
22 | if (isset($_POST[$fieldName])) {
23 | $source = $_POST[$fieldName];
24 | } else {
25 | $source = $_GET[$fieldName];
26 | }
27 | foreach ($source as $imgUrl) {
28 | $item = new Uploader($imgUrl, $config, "remote");
29 | $info = $item->getFileInfo();
30 | array_push($list, array(
31 | "state" => $info["state"],
32 | "url" => $info["url"],
33 | "size" => $info["size"],
34 | "title" => htmlspecialchars($info["title"]),
35 | "original" => htmlspecialchars($info["original"]),
36 | "source" => htmlspecialchars($imgUrl)
37 | ));
38 | }
39 |
40 | /* 返回抓取数据 */
41 | return json_encode(array(
42 | 'state'=> count($list) ? 'SUCCESS':'ERROR',
43 | 'list'=> $list
44 | ));
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/anchor.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/anchor.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/arrow.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/arrow_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/arrow_down.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/arrow_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/arrow_up.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/button-bg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/button-bg.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/cancelbutton.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/cancelbutton.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/charts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/charts.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/cursor_h.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/cursor_h.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/cursor_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/cursor_h.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/cursor_v.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/cursor_v.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/cursor_v.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/cursor_v.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/dialog-title-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/dialog-title-bg.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/filescan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/filescan.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/highlighted.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/highlighted.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/icons-all.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/icons-all.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/icons.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/icons.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/icons.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/loaderror.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/loaderror.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/loading.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/lock.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/lock.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/neweditor-tab-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/neweditor-tab-bg.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/pagebreak.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/pagebreak.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/scale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/scale.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/sortable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/sortable.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/spacer.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/spacer.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/sparator_v.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/sparator_v.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/table-cell-align.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/table-cell-align.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/tangram-colorpicker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/tangram-colorpicker.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/toolbar_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/toolbar_bg.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/unhighlighted.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/unhighlighted.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/upload.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/videologo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/videologo.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/word.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/word.gif
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/default/images/wordpaste.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/themes/default/images/wordpaste.png
--------------------------------------------------------------------------------
/assets/plugins/ueditor/themes/iframe.css:
--------------------------------------------------------------------------------
1 | /*可以在这里添加你自己的css*/
2 |
--------------------------------------------------------------------------------
/assets/plugins/ueditor/third-party/highcharts/modules/heatmap.js:
--------------------------------------------------------------------------------
1 | (function(b){var k=b.seriesTypes,l=b.each;k.heatmap=b.extendClass(k.map,{colorKey:"z",useMapGeometry:!1,pointArrayMap:["y","z"],translate:function(){var c=this,b=c.options,i=Number.MAX_VALUE,j=Number.MIN_VALUE;c.generatePoints();l(c.data,function(a){var e=a.x,f=a.y,d=a.z,g=(b.colsize||1)/2,h=(b.rowsize||1)/2;a.path=["M",e-g,f-h,"L",e+g,f-h,"L",e+g,f+h,"L",e-g,f+h,"Z"];a.shapeType="path";a.shapeArgs={d:c.translatePath(a.path)};typeof d==="number"&&(d>j?j=d:d dataMax) {
39 | dataMax = value;
40 | } else if (value < dataMin) {
41 | dataMin = value;
42 | }
43 | }
44 | });
45 |
46 | series.translateColors(dataMin, dataMax);
47 | },
48 |
49 | getBox: function () {}
50 |
51 | });
52 |
53 | }(Highcharts));
54 |
--------------------------------------------------------------------------------
/assets/plugins/ueditor/third-party/highcharts/modules/no-data-to-display.js:
--------------------------------------------------------------------------------
1 | /*
2 | Highcharts JS v3.0.6 (2013-10-04)
3 | Plugin for displaying a message when there is no data visible in chart.
4 |
5 | (c) 2010-2013 Highsoft AS
6 | Author: Øystein 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"}};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=function(){return this.dataMax!==
11 | 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()&&!a[b].options.isInternal)return!0;
12 | return!1};e.callbacks.push(function(a){c.addEvent(a,"load",g);c.addEvent(a,"redraw",g)})})(Highcharts);
13 |
--------------------------------------------------------------------------------
/assets/plugins/ueditor/third-party/snapscreen/UEditorSnapscreen.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/third-party/snapscreen/UEditorSnapscreen.exe
--------------------------------------------------------------------------------
/assets/plugins/ueditor/third-party/video-js/font/vjs.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/third-party/video-js/font/vjs.eot
--------------------------------------------------------------------------------
/assets/plugins/ueditor/third-party/video-js/font/vjs.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/third-party/video-js/font/vjs.ttf
--------------------------------------------------------------------------------
/assets/plugins/ueditor/third-party/video-js/font/vjs.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/third-party/video-js/font/vjs.woff
--------------------------------------------------------------------------------
/assets/plugins/ueditor/third-party/video-js/video-js.swf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/third-party/video-js/video-js.swf
--------------------------------------------------------------------------------
/assets/plugins/ueditor/third-party/webuploader/Uploader.swf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/third-party/webuploader/Uploader.swf
--------------------------------------------------------------------------------
/assets/plugins/ueditor/third-party/webuploader/webuploader.css:
--------------------------------------------------------------------------------
1 | .webuploader-container {
2 | position: relative;
3 | }
4 | .webuploader-element-invisible {
5 | position: absolute !important;
6 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
7 | clip: rect(1px,1px,1px,1px);
8 | }
9 | .webuploader-pick {
10 | position: relative;
11 | display: inline-block;
12 | cursor: pointer;
13 | background: #00b7ee;
14 | padding: 10px 15px;
15 | color: #fff;
16 | text-align: center;
17 | border-radius: 3px;
18 | overflow: hidden;
19 | }
20 | .webuploader-pick-hover {
21 | background: #00a2d4;
22 | }
23 |
24 | .webuploader-pick-disable {
25 | opacity: 0.6;
26 | pointer-events:none;
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/assets/plugins/ueditor/third-party/zeroclipboard/ZeroClipboard.swf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/plugins/ueditor/third-party/zeroclipboard/ZeroClipboard.swf
--------------------------------------------------------------------------------
/assets/public/pc/image/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/1.png
--------------------------------------------------------------------------------
/assets/public/pc/image/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/2.png
--------------------------------------------------------------------------------
/assets/public/pc/image/bg1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/bg1.png
--------------------------------------------------------------------------------
/assets/public/pc/image/bg2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/bg2.png
--------------------------------------------------------------------------------
/assets/public/pc/image/bg3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/bg3.png
--------------------------------------------------------------------------------
/assets/public/pc/image/bg4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/bg4.png
--------------------------------------------------------------------------------
/assets/public/pc/image/bg5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/bg5.png
--------------------------------------------------------------------------------
/assets/public/pc/image/demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/demo.png
--------------------------------------------------------------------------------
/assets/public/pc/image/demo1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/demo1.png
--------------------------------------------------------------------------------
/assets/public/pc/image/demo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/demo2.png
--------------------------------------------------------------------------------
/assets/public/pc/image/demo3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/demo3.png
--------------------------------------------------------------------------------
/assets/public/pc/image/demo4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/demo4.png
--------------------------------------------------------------------------------
/assets/public/pc/image/en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/en.png
--------------------------------------------------------------------------------
/assets/public/pc/image/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/logo.jpg
--------------------------------------------------------------------------------
/assets/public/pc/image/nodejs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/nodejs.png
--------------------------------------------------------------------------------
/assets/public/pc/image/npm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/npm.png
--------------------------------------------------------------------------------
/assets/public/pc/image/sails.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/sails.png
--------------------------------------------------------------------------------
/assets/public/pc/image/zh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/assets/public/pc/image/zh.png
--------------------------------------------------------------------------------
/assets/robots.txt:
--------------------------------------------------------------------------------
1 | # The robots.txt file is used to control how search engines index your live URLs.
2 | # See http://www.robotstxt.org/wc/norobots.html for more information.
3 |
4 |
5 |
6 | # To prevent search engines from seeing the site altogether, uncomment the next two lines:
7 | # User-Agent: *
8 | # Disallow: /
9 |
--------------------------------------------------------------------------------
/config/autoreload.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by root on 2/1/16.
3 | */
4 | module.exports.autoreload = {
5 | active: false,
6 | usePolling: false,
7 | dirs: [
8 | "api/common",
9 | "api/policies",
10 | "api/models",
11 | "api/controllers",
12 | "api/services",
13 | "config"
14 | ],
15 | ignored: [
16 | // Ignore all files with .ts extension
17 | "**.ts"
18 | ]
19 | };
20 |
--------------------------------------------------------------------------------
/config/custom/email.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by wizzer on 2015/9/6.
3 | */
4 | module.exports.email = {
5 | /**
6 | * 若是QQ邮箱,需设置邮箱独立密码
7 | */
8 | HostName: 'smtp.qq.com',
9 | SmtpPort: 465,
10 | UserName: 'wizzer@qq.com',
11 | Password: 'xxxxx',
12 | SSLOnConnect: true,
13 | From: '11624317@qq.com'
14 | };
15 |
--------------------------------------------------------------------------------
/config/custom/mysql.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by root on 20/4/16.
3 | */
4 | module.exports.mysql = {
5 | host: '127.0.0.1',
6 | user: 'root',
7 | password: 'root',
8 | database: 'nodewk',
9 | pool: true,
10 | connectionLimit: 50,
11 | waitForConnections: true
12 | };
13 |
--------------------------------------------------------------------------------
/config/custom/redis.js:
--------------------------------------------------------------------------------
1 | /**
2 | * auth_pass Redis连接密码
3 | * Created by root on 9/17/15.
4 | */
5 | module.exports.redis = {
6 | host: '127.0.0.1',
7 | port: 6379,
8 | auth_pass: ''
9 | };
10 |
--------------------------------------------------------------------------------
/config/custom/system.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by wizzer on 2015/9/6.
3 | */
4 | module.exports.system = {
5 | AppBase:'',
6 | AppName:'NodeWk',
7 | AppDomain:'www.nodeshop.cn',
8 | AppIp:'127.0.0.1',
9 | AppShrotName:'NodeWk',
10 | AppCopyright:'Wizzer.cn',
11 | UploadPath:'/upload',
12 | MyConfig:{},
13 | SiteConfig:{}
14 | };
15 |
--------------------------------------------------------------------------------
/config/env/development.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Development environment settings
3 | *
4 | * This file can include shared settings for a development team,
5 | * such as API keys or remote database passwords. If you're using
6 | * a version control solution for your Sails app, this file will
7 | * be committed to your repository unless you add it to your .gitignore
8 | * file. If your repository will be publicly viewable, don't add
9 | * any private information to this file!
10 | *
11 | */
12 |
13 | module.exports = {
14 |
15 | /***************************************************************************
16 | * Set the default database connection for models in the development *
17 | * environment (see config/connections.js and config/models.js ) *
18 | ***************************************************************************/
19 |
20 | models: {
21 | connection: 'someMysqlServer'
22 | },
23 | port: 80,
24 | log: {
25 | level: 'verbose'
26 | }
27 | };
28 |
--------------------------------------------------------------------------------
/config/env/production.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Production environment settings
3 | *
4 | * This file can include shared settings for a production environment,
5 | * such as API keys or remote database passwords. If you're using
6 | * a version control solution for your Sails app, this file will
7 | * be committed to your repository unless you add it to your .gitignore
8 | * file. If your repository will be publicly viewable, don't add
9 | * any private information to this file!
10 | *
11 | */
12 |
13 | module.exports = {
14 |
15 | /***************************************************************************
16 | * Set the default database connection for models in the production *
17 | * environment (see config/connections.js and config/models.js ) *
18 | ***************************************************************************/
19 |
20 | models: {
21 | connection: 'someMysqlServer'
22 | },
23 |
24 | /***************************************************************************
25 | * Set the port in the production environment to 80 *
26 | ***************************************************************************/
27 |
28 | port: 80,
29 |
30 | /***************************************************************************
31 | * Set the log level in production environment to "silent" *
32 | ***************************************************************************/
33 | log: {
34 | level: 'error'
35 | }
36 |
37 | };
38 |
--------------------------------------------------------------------------------
/config/locales/_README.md:
--------------------------------------------------------------------------------
1 | # Internationalization / Localization Settings
2 |
3 | > Also see the official docs on internationalization/localization:
4 | > http://links.sailsjs.org/docs/config/locales
5 |
6 | ## Locales
7 | All locale files live under `config/locales`. Here is where you can add translations
8 | as JSON key-value pairs. The name of the file should match the language that you are supporting, which allows for automatic language detection based on request headers.
9 |
10 | Here is an example locale stringfile for the Spanish language (`config/locales/es.json`):
11 | ```json
12 | {
13 | "Hello!": "Hola!",
14 | "Hello %s, how are you today?": "¿Hola %s, como estas?",
15 | }
16 | ```
17 | ## Usage
18 | Locales can be accessed in controllers/policies through `res.i18n()`, or in views through the `__(key)` or `i18n(key)` functions.
19 | Remember that the keys are case sensitive and require exact key matches, e.g.
20 |
21 | ```ejs
22 | <%= __('Welcome to PencilPals!') %>
23 | <%= i18n('Hello %s, how are you today?', 'Pencil Maven') %>
24 | <%= i18n('That\'s right-- you can use either i18n() or __()') %>
25 | ```
26 |
27 | ## Configuration
28 | Localization/internationalization config can be found in `config/i18n.js`, from where you can set your supported locales.
29 |
--------------------------------------------------------------------------------
/config/log.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Built-in Log Configuration
3 | * (sails.config.log)
4 | *
5 | * Configure the log level for your app, as well as the transport
6 | * (Underneath the covers, Sails uses Winston for logging, which
7 | * allows for some pretty neat custom transports/adapters for log messages)
8 | *
9 | * For more information on the Sails logger, check out:
10 | * http://sailsjs.org/#!/documentation/concepts/Logging
11 | */
12 |
13 | module.exports.log = {
14 |
15 | /***************************************************************************
16 | * *
17 | * Valid `level` configs: i.e. the minimum log level to capture with *
18 | * sails.log.*() *
19 | * *
20 | * The order of precedence for log levels from lowest to highest is: *
21 | * silly, verbose, info, debug, warn, error *
22 | * *
23 | * You may also set the level to "silent" to suppress all logs. *
24 | * *
25 | ***************************************************************************/
26 |
27 | level: 'verbose'
28 |
29 | };
30 |
--------------------------------------------------------------------------------
/config/models.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Default model configuration
3 | * (sails.config.models)
4 | *
5 | * Unless you override them, the following properties will be included
6 | * in each of your models.
7 | *
8 | * For more info on Sails models, see:
9 | * http://sailsjs.org/#!/documentation/concepts/ORM
10 | */
11 |
12 | module.exports.models = {
13 |
14 | /***************************************************************************
15 | * *
16 | * Your app's default connection. i.e. the name of one of your app's *
17 | * connections (see `config/connections.js`) *
18 | * *
19 | ***************************************************************************/
20 | connection: 'someMysqlServer',
21 |
22 | /***************************************************************************
23 | * *
24 | * How and whether Sails will attempt to automatically rebuild the *
25 | * tables/collections/etc. in your schema. *
26 | * *
27 | * See http://sailsjs.org/#!/documentation/concepts/ORM/model-settings.html *
28 | * *
29 | ***************************************************************************/
30 | migrate: 'safe'//safe:不创建表结构 alter:无则创建有则不 drop:重新创建
31 |
32 | };
33 |
--------------------------------------------------------------------------------
/config/policies.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Policy Mappings
3 | * (sails.config.policies)
4 | *
5 | * Policies are simple functions which run **before** your controllers.
6 | * You can apply one or more policies to a given controller, or protect
7 | * its actions individually.
8 | *
9 | * Any policy file (e.g. `api/policies/authenticated.js`) can be accessed
10 | * below by its filename, minus the extension, (e.g. "authenticated")
11 | *
12 | * For more information on how policies work, see:
13 | * http://sailsjs.org/#!/documentation/concepts/Policies
14 | *
15 | * For more information on configuring policies, check out:
16 | * http://sailsjs.org/#!/documentation/reference/sails.config/sails.config.policies.html
17 | */
18 |
19 |
20 | module.exports.policies = {
21 |
22 | /***************************************************************************
23 | * *
24 | * Default policy for all controllers and actions (`true` allows public *
25 | * access) *
26 | * *
27 | ***************************************************************************/
28 | 'private/LoginController': {
29 | 'login':'login',
30 | 'doLogin':'login',
31 | 'captcha':'login',
32 | 'logout':'login'
33 | },
34 | 'api/OauthController': 'none',
35 | 'api/TestController': 'oauthAuth',
36 | '*': 'sessionAuth'
37 | };
38 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | redis:
2 | image: redis
3 | db:
4 | image: mariadb:5.5
5 | environment:
6 | "MYSQL_ROOT_PASSWORD": "root"
7 | "MYSQL_DATABASE": "nodewk"
8 | command: "mysqld --character-set-server=utf8"
9 | ports:
10 | - "127.0.0.1:3306:3306"
11 | volumes:
12 | - "/node/nodewk/db:/var/lib/mysql"
13 | web:
14 | image: wizzer/nodewk
15 | links:
16 | - redis
17 | - db
18 | environment:
19 | "MYSQL_HOST": "db"
20 | "MYSQL_USER": "root"
21 | "MYSQL_PASSWORD": "root"
22 | "MYSQL_DATABASE": "nodewk"
23 | "MYSQL_LIMIT": 150
24 | "REDIS_HOST": "redis"
25 | "REDIS_PASS": ""
26 | "LOG_LEVEL": "verbose"
27 | "LOG_SQL": "false"
28 | "PORT": 1337
29 | "NODE_ENV": "production"
30 | command: "pm2 start /node/nodewk/app.js --no-daemon"
31 | ports:
32 | - "1337:1337"
33 | volumes:
34 | - "/node/nodewk/cert:/node/nodewk/cert"
35 | - "/node/nodewk/upload:/node/nodewk/upload"
36 | - "/node/nodewk/backup:/node/nodewk/backup"
37 |
--------------------------------------------------------------------------------
/pay.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wizzercn/NodeWk/5a294bb120d2c0712bfc0bf9f46f2f16cd10c656/pay.jpg
--------------------------------------------------------------------------------
/tasks/config/clean.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Clean files and folders.
3 | *
4 | * ---------------------------------------------------------------
5 | *
6 | * This grunt task is configured to clean out the contents in the .tmp/public of your
7 | * sails project.
8 | *
9 | * For usage docs see:
10 | * https://github.com/gruntjs/grunt-contrib-clean
11 | */
12 | module.exports = function(grunt) {
13 |
14 | grunt.config.set('clean', {
15 | dev: ['.tmp/public/**','.tmp/uploads/**'],
16 | build: ['www']
17 | });
18 |
19 | grunt.loadNpmTasks('grunt-contrib-clean');
20 | };
21 |
--------------------------------------------------------------------------------
/tasks/config/coffee.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Compile CoffeeScript files to JavaScript.
3 | *
4 | * ---------------------------------------------------------------
5 | *
6 | * Compiles coffeeScript files from `assest/js` into Javascript and places them into
7 | * `.tmp/public/js` directory.
8 | *
9 | * For usage docs see:
10 | * https://github.com/gruntjs/grunt-contrib-coffee
11 | */
12 | module.exports = function(grunt) {
13 |
14 | grunt.config.set('coffee', {
15 | dev: {
16 | options: {
17 | bare: true,
18 | sourceMap: true,
19 | sourceRoot: './'
20 | },
21 | files: [{
22 | expand: true,
23 | cwd: 'assets/js/',
24 | src: ['**/*.coffee'],
25 | dest: '.tmp/public/js/',
26 | ext: '.js'
27 | }, {
28 | expand: true,
29 | cwd: 'assets/js/',
30 | src: ['**/*.coffee'],
31 | dest: '.tmp/public/js/',
32 | ext: '.js'
33 | }]
34 | }
35 | });
36 |
37 | grunt.loadNpmTasks('grunt-contrib-coffee');
38 | };
39 |
--------------------------------------------------------------------------------
/tasks/config/concat.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Concatenate files.
3 | *
4 | * ---------------------------------------------------------------
5 | *
6 | * Concatenates files javascript and css from a defined array. Creates concatenated files in
7 | * .tmp/public/contact directory
8 | * [concat](https://github.com/gruntjs/grunt-contrib-concat)
9 | *
10 | * For usage docs see:
11 | * https://github.com/gruntjs/grunt-contrib-concat
12 | */
13 | module.exports = function(grunt) {
14 |
15 | grunt.config.set('concat', {
16 | js: {
17 | src: require('../pipeline').jsFilesToInject,
18 | dest: '.tmp/public/concat/production.js'
19 | },
20 | css: {
21 | src: require('../pipeline').cssFilesToInject,
22 | dest: '.tmp/public/concat/production.css'
23 | }
24 | });
25 |
26 | grunt.loadNpmTasks('grunt-contrib-concat');
27 | };
28 |
--------------------------------------------------------------------------------
/tasks/config/copy.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copy files and folders.
3 | *
4 | * ---------------------------------------------------------------
5 | *
6 | * # dev task config
7 | * Copies all directories and files, exept coffescript and less fiels, from the sails
8 | * assets folder into the .tmp/public directory.
9 | *
10 | * # build task config
11 | * Copies all directories nd files from the .tmp/public directory into a www directory.
12 | *
13 | * For usage docs see:
14 | * https://github.com/gruntjs/grunt-contrib-copy
15 | */
16 | module.exports = function(grunt) {
17 |
18 | grunt.config.set('copy', {
19 | dev: {
20 | files: [{
21 | expand: true,
22 | cwd: './assets',
23 | src: ['**/*.!(coffee|less)'],
24 | dest: '.tmp/public'
25 | }]
26 | },
27 | build: {
28 | files: [{
29 | expand: true,
30 | cwd: '.tmp/public',
31 | src: ['**/*'],
32 | dest: 'www'
33 | }]
34 | }
35 | });
36 |
37 | grunt.loadNpmTasks('grunt-contrib-copy');
38 | };
39 |
--------------------------------------------------------------------------------
/tasks/config/cssmin.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Compress CSS files.
3 | *
4 | * ---------------------------------------------------------------
5 | *
6 | * Minifies css files and places them into .tmp/public/min directory.
7 | *
8 | * For usage docs see:
9 | * https://github.com/gruntjs/grunt-contrib-cssmin
10 | */
11 | module.exports = function(grunt) {
12 |
13 | grunt.config.set('cssmin', {
14 | dist: {
15 | src: ['assets/css/main.css'],
16 | dest: '.tmp/public/css/main.css'
17 | }
18 | });
19 |
20 | grunt.loadNpmTasks('grunt-contrib-cssmin');
21 | };
22 |
--------------------------------------------------------------------------------
/tasks/config/jst.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Precompiles Underscore templates to a `.jst` file.
3 | *
4 | * ---------------------------------------------------------------
5 | *
6 | * (i.e. basically it takes HTML files and turns them into tiny little
7 | * javascript functions that you pass data to and return HTML. This can
8 | * speed up template rendering on the client, and reduce bandwidth usage.)
9 | *
10 | * For usage docs see:
11 | * https://github.com/gruntjs/grunt-contrib-jst
12 | *
13 | */
14 |
15 | module.exports = function(grunt) {
16 |
17 | grunt.config.set('jst', {
18 | dev: {
19 |
20 | // To use other sorts of templates, specify a regexp like the example below:
21 | // options: {
22 | // templateSettings: {
23 | // interpolate: /\{\{(.+?)\}\}/g
24 | // }
25 | // },
26 |
27 | // Note that the interpolate setting above is simply an example of overwriting lodash's
28 | // default interpolation. If you want to parse templates with the default _.template behavior
29 | // (i.e. using ), there's no need to overwrite `templateSettings.interpolate`.
30 |
31 |
32 | files: {
33 | // e.g.
34 | // 'relative/path/from/gruntfile/to/compiled/template/destination' : ['relative/path/to/sourcefiles/**/*.html']
35 | '.tmp/public/jst.js': require('../pipeline').templateFilesToInject
36 | }
37 | }
38 | });
39 |
40 | grunt.loadNpmTasks('grunt-contrib-jst');
41 | };
42 |
--------------------------------------------------------------------------------
/tasks/config/less.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Compiles LESS files into CSS.
3 | *
4 | * ---------------------------------------------------------------
5 | *
6 | * Only the `assets/styles/importer.less` is compiled.
7 | * This allows you to control the ordering yourself, i.e. import your
8 | * dependencies, mixins, variables, resets, etc. before other stylesheets)
9 | *
10 | * For usage docs see:
11 | * https://github.com/gruntjs/grunt-contrib-less
12 | */
13 | module.exports = function(grunt) {
14 |
15 | grunt.config.set('less', {
16 | dev: {
17 | files: [{
18 | expand: true,
19 | cwd: 'assets/styles/',
20 | src: ['importer.less'],
21 | dest: '.tmp/public/styles/',
22 | ext: '.css'
23 | }]
24 | }
25 | });
26 |
27 | grunt.loadNpmTasks('grunt-contrib-less');
28 | };
29 |
--------------------------------------------------------------------------------
/tasks/config/sync.js:
--------------------------------------------------------------------------------
1 | /**
2 | * A grunt task to keep directories in sync. It is very similar to grunt-contrib-copy
3 | * but tries to copy only those files that has actually changed.
4 | *
5 | * ---------------------------------------------------------------
6 | *
7 | * Synchronize files from the `assets` folder to `.tmp/public`,
8 | * smashing anything that's already there.
9 | *
10 | * For usage docs see:
11 | * https://github.com/tomusdrw/grunt-sync
12 | *
13 | */
14 | module.exports = function(grunt) {
15 |
16 | grunt.config.set('sync', {
17 | dev: {
18 | files: [{
19 | cwd: './assets',
20 | src: ['**/*.!(coffee)'],
21 | dest: '.tmp/public'
22 | }]
23 | }
24 | });
25 |
26 | grunt.loadNpmTasks('grunt-sync');
27 | };
28 |
--------------------------------------------------------------------------------
/tasks/config/uglify.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Minify files with UglifyJS.
3 | *
4 | * ---------------------------------------------------------------
5 | *
6 | * Minifies client-side javascript `assets`.
7 | *
8 | * For usage docs see:
9 | * https://github.com/gruntjs/grunt-contrib-uglify
10 | *
11 | */
12 | module.exports = function(grunt) {
13 |
14 | grunt.config.set('uglify', {
15 | dist: {
16 | src: ['.tmp/public/concat/production.js'],
17 | dest: '.tmp/public/min/production.min.js'
18 | }
19 | });
20 |
21 | grunt.loadNpmTasks('grunt-contrib-uglify');
22 | };
23 |
--------------------------------------------------------------------------------
/tasks/config/watch.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Run predefined tasks whenever watched file patterns are added, changed or deleted.
3 | *
4 | * ---------------------------------------------------------------
5 | *
6 | * Watch for changes on
7 | * - files in the `assets` folder
8 | * - the `tasks/pipeline.js` file
9 | * and re-run the appropriate tasks.
10 | *
11 | * For usage docs see:
12 | * https://github.com/gruntjs/grunt-contrib-watch
13 | *
14 | */
15 | module.exports = function(grunt) {
16 |
17 | grunt.config.set('watch', {
18 | api: {
19 |
20 | // API files to watch:
21 | files: ['api/**/*', '!**/node_modules/**']
22 | },
23 | assets: {
24 |
25 | // Assets to watch:
26 | files: ['assets/**/*', 'tasks/pipeline.js', '!**/node_modules/**'],
27 |
28 | // When assets are changed:
29 | tasks: ['syncAssets' , 'linkAssets']
30 | }
31 | });
32 |
33 | grunt.loadNpmTasks('grunt-contrib-watch');
34 | };
35 |
--------------------------------------------------------------------------------
/tasks/register/build.js:
--------------------------------------------------------------------------------
1 | module.exports = function (grunt) {
2 | grunt.registerTask('build', [
3 | 'compileAssets',
4 | 'linkAssetsBuild',
5 | 'clean:build',
6 | 'copy:build'
7 | ]);
8 | };
9 |
--------------------------------------------------------------------------------
/tasks/register/buildProd.js:
--------------------------------------------------------------------------------
1 | module.exports = function (grunt) {
2 | grunt.registerTask('buildProd', [
3 | 'compileAssets',
4 | 'concat',
5 | 'uglify',
6 | 'cssmin',
7 | 'linkAssetsBuildProd',
8 | 'clean:build',
9 | 'copy:build'
10 | ]);
11 | };
12 |
--------------------------------------------------------------------------------
/tasks/register/compileAssets.js:
--------------------------------------------------------------------------------
1 | module.exports = function (grunt) {
2 | grunt.registerTask('compileAssets', [
3 | 'clean:dev',
4 | 'jst:dev',
5 | 'less:dev',
6 | 'copy:dev',
7 | 'coffee:dev'
8 | ]);
9 | };
10 |
--------------------------------------------------------------------------------
/tasks/register/default.js:
--------------------------------------------------------------------------------
1 | module.exports = function (grunt) {
2 | grunt.registerTask('default', ['compileAssets', 'linkAssets', 'watch']);
3 | };
4 |
--------------------------------------------------------------------------------
/tasks/register/linkAssets.js:
--------------------------------------------------------------------------------
1 | module.exports = function (grunt) {
2 | grunt.registerTask('linkAssets', [
3 | 'sails-linker:devJs',
4 | 'sails-linker:devStyles',
5 | 'sails-linker:devTpl',
6 | 'sails-linker:devJsJade',
7 | 'sails-linker:devStylesJade',
8 | 'sails-linker:devTplJade'
9 | ]);
10 | };
11 |
--------------------------------------------------------------------------------
/tasks/register/linkAssetsBuild.js:
--------------------------------------------------------------------------------
1 | module.exports = function (grunt) {
2 | grunt.registerTask('linkAssetsBuild', [
3 | 'sails-linker:devJsRelative',
4 | 'sails-linker:devStylesRelative',
5 | 'sails-linker:devTpl',
6 | 'sails-linker:devJsRelativeJade',
7 | 'sails-linker:devStylesRelativeJade',
8 | 'sails-linker:devTplJade'
9 | ]);
10 | };
11 |
--------------------------------------------------------------------------------
/tasks/register/linkAssetsBuildProd.js:
--------------------------------------------------------------------------------
1 | module.exports = function (grunt) {
2 | grunt.registerTask('linkAssetsBuildProd', [
3 | 'sails-linker:prodJsRelative',
4 | 'sails-linker:prodStylesRelative',
5 | 'sails-linker:devTpl',
6 | 'sails-linker:prodJsRelativeJade',
7 | 'sails-linker:prodStylesRelativeJade',
8 | 'sails-linker:devTplJade'
9 | ]);
10 | };
11 |
--------------------------------------------------------------------------------
/tasks/register/prod.js:
--------------------------------------------------------------------------------
1 | module.exports = function (grunt) {
2 | grunt.registerTask('prod', [
3 | 'compileAssets',
4 | 'concat',
5 | 'uglify',
6 | 'cssmin',
7 | 'sails-linker:prodJs',
8 | 'sails-linker:prodStyles',
9 | 'sails-linker:devTpl',
10 | 'sails-linker:prodJsJade',
11 | 'sails-linker:prodStylesJade',
12 | 'sails-linker:devTplJade'
13 | ]);
14 | };
15 |
--------------------------------------------------------------------------------
/tasks/register/syncAssets.js:
--------------------------------------------------------------------------------
1 | module.exports = function (grunt) {
2 | grunt.registerTask('syncAssets', [
3 | 'jst:dev',
4 | 'less:dev',
5 | 'sync:dev',
6 | 'coffee:dev'
7 | ]);
8 | };
9 |
--------------------------------------------------------------------------------
/views/layouts/layout.ejs:
--------------------------------------------------------------------------------
1 | <%//Ajax加载的子页面布局%>
2 | <%- body %>
3 |
--------------------------------------------------------------------------------
/views/layouts/login.ejs:
--------------------------------------------------------------------------------
1 | <%//后台登陆页页面布局%>
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | <%=sails.config.system.AppName%>
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
24 |
25 |
26 |
27 |
28 |
29 | <%- body %>
30 |
31 |
32 |
33 |
34 | <%if('zh'==lang){%>
35 |
36 | <%}%>
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/views/layouts/public.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | <%=sails.__({phrase: 'sitename', locale:res.locale})%>
7 | <%if(sails.config.system.SiteConfig.seo_keywords){%><%}%>
8 | <%if(sails.config.system.SiteConfig.seo_description){%><%}%>
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | <%- body %>
18 |
19 |
20 |
--------------------------------------------------------------------------------
/views/layouts/public_wap.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | <%=siteTitle||sails.config.system.SiteConfig.site_name||''%>
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
18 |
19 |
20 | <%- body %>
21 |
22 |
23 |
--------------------------------------------------------------------------------
/views/private/cms/article/detail.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
<%= obj.title||'' %>
8 |
<%= obj.author||'' %> <%=moment(obj.publishAt*1000).format('YYYY-MM-DD HH:mm:ss')%> <%=obj.client%>
9 |
10 |
11 |
12 | <%-typeof obj.contentId!='undefined'?obj.contentId.content:"" %>
13 |
14 |
15 |
16 |
17 |
18 |
21 |
--------------------------------------------------------------------------------
/views/private/cms/channel/child.ejs:
--------------------------------------------------------------------------------
1 | <% unit.forEach(function(obj){
2 | %>
3 |
4 |
5 | <%-obj.name%>
6 | |
7 | <%-obj.url||''%> |
8 | <%if(obj.homepage){%>是<%}else{%>否<%}%> |
9 | <%if(!obj.disabled){%><%}else{%><%}%> |
10 |
11 |
12 |
16 |
27 |
28 | |
29 |
30 | <%
31 | }); %>
32 |
--------------------------------------------------------------------------------
/views/private/cms/channel/detail.ejs:
--------------------------------------------------------------------------------
1 |
34 |
37 |
--------------------------------------------------------------------------------
/views/private/index.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 | 1.0
7 |
8 | -
9 | 版本特性
10 | 集成系统、微信、CMS等模块
11 | 集成Email服务
12 | 集成定时任务
13 | 使用Ejs模板引擎
14 | 采用Bootsrtap+Pjax
15 | 源码地址
16 | https://github.com/Wizzercn/NodeWk
17 |
18 | 捐助 | 合作
19 | 支付宝:wizzer@qq.com
20 | 微 信:wizzer
21 |
22 | -
23 | 使用说明
24 |
25 | -
26 | 搭建Node.js运行环境
27 | 安装必备组件yum install ImageMagick-c++.x86_64
28 | 创建空的数据库,使用nodewk.sql还原数据库
29 | 修改数据库连接及redis /config/custom/mysql.js /config/custom/redis.js
30 | npm i 安装(hiredis报错不影响运行)
31 | 用户名:superadmin 密码:1
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/views/private/shop/area/child.ejs:
--------------------------------------------------------------------------------
1 | <% unit.forEach(function(obj){
2 | %>
3 |
4 |
5 | <%-obj.name%>
6 | |
7 | <%if(!obj.disabled){%><%}else{%><%}%> |
8 |
9 |
10 |
14 |
24 |
25 | |
26 |
27 | <%
28 | }); %>
29 |
--------------------------------------------------------------------------------
/views/private/shop/goods/class/child.ejs:
--------------------------------------------------------------------------------
1 | <% unit.forEach(function(obj){
2 | %>
3 |
4 |
5 | <%-obj.name%>
6 | |
7 | <%if(obj.typeid){%>[<%=obj.typeid.name%>]<%}else{%>[通用商品]<%}%> |
8 | <%if(!obj.disabled){%><%}else{%><%}%> |
9 | <%if(obj.is_index){%><%}else{%><%}%> |
10 |
11 |
12 |
16 |
25 |
26 | |
27 |
28 | <%
29 | }); %>
30 |
--------------------------------------------------------------------------------
/views/private/shop/member/member/detail.ejs:
--------------------------------------------------------------------------------
1 |
31 |
34 |
--------------------------------------------------------------------------------
/views/private/sys/menu/child.ejs:
--------------------------------------------------------------------------------
1 | <% unit.forEach(function(obj){
2 | %>
3 |
4 |
5 | <%-obj.name%>
6 | |
7 | <%-obj.url||''%> |
8 | <%-obj.permission||''%> |
9 | <%if(!obj.disabled){%><%}else{%><%}%> |
10 |
11 |
12 |
16 |
27 |
28 | |
29 |
30 | <%
31 | }); %>
32 |
--------------------------------------------------------------------------------
/views/private/sys/menu/detail.ejs:
--------------------------------------------------------------------------------
1 |
34 |
37 |
--------------------------------------------------------------------------------
/views/private/sys/unit/child.ejs:
--------------------------------------------------------------------------------
1 | <% unit.forEach(function(obj){
2 | %>
3 |
4 |
5 | <%-obj.name%>
6 | |
7 | <%-obj.address%> |
8 | <%-obj.mobile%> |
9 | <%-obj.tel%> |
10 |
11 |
12 |
16 |
25 |
26 | |
27 |
28 | <%
29 | }); %>
30 |
--------------------------------------------------------------------------------
/views/private/sys/unit/detail.ejs:
--------------------------------------------------------------------------------
1 |
31 |
34 |
--------------------------------------------------------------------------------
/views/public/pc/about.ejs:
--------------------------------------------------------------------------------
1 | <%include top.ejs%>
2 |
3 |
4 |
5 |
6 |
7 | <%-sails.__({phrase: 'shop_2_note', locale:res.locale})%>
8 |
9 |
10 |
11 |
12 |
13 |
14 | <%include buttom.ejs%>
--------------------------------------------------------------------------------
/views/public/pc/buttom.ejs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/views/public/pc/framework.ejs:
--------------------------------------------------------------------------------
1 | <%include top.ejs%>
2 |
3 |
4 |
7 |
8 |
9 |
10 | <%-sails.__({phrase: 'framework_note', locale:res.locale})%>
11 |
12 |
13 |
20 |
21 |
22 |
23 |
24 |
27 |
28 |
29 |
30 | <%-sails.__({phrase: 'code_note', locale:res.locale})%>
31 |
32 |
33 |
40 |
41 |
42 |
43 | <%include buttom.ejs%>
--------------------------------------------------------------------------------
/views/public/pc/index.ejs:
--------------------------------------------------------------------------------
1 | <%include top.ejs%>
2 |
8 | <%
9 | var num=parseInt(5*Math.random())+1;
10 | console.log(num);
11 | %>
12 |
15 |
16 |
17 | <%-sails.__({phrase: 'experts', locale:res.locale})%>
18 |
19 |
20 | -
21 |
22 |
23 | -
24 |
25 |
26 | -
27 |
28 |
29 |
30 |
31 | <%include buttom.ejs%>
--------------------------------------------------------------------------------
/views/public/pc/nodeshop.ejs:
--------------------------------------------------------------------------------
1 | <%include top.ejs%>
2 |
3 |
4 |
5 |
6 | <%-sails.__({phrase: 'shop_1_note', locale:res.locale})%>
7 |
8 |
9 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | <%include buttom.ejs%>
--------------------------------------------------------------------------------
/views/public/pc/top.ejs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/views/test.ejs:
--------------------------------------------------------------------------------
1 |
2 | aaaaa
3 |
23 |
--------------------------------------------------------------------------------