Showing preview only (7,385K chars total). Download the full file or copy to clipboard to get everything.
Repository: liyaopinner/mxonline_resources
Branch: master
Commit: 47f7a752349a
Files: 519
Total size: 6.8 MB
Directory structure:
gitextract_93jukfxm/
├── .gitignore
├── DjangoUeditor/
│ ├── __init__.py
│ ├── commands.py
│ ├── forms.py
│ ├── models.py
│ ├── readme.md
│ ├── settings.py
│ ├── static/
│ │ └── ueditor/
│ │ ├── _examples/
│ │ │ ├── addCustomizeButton.js
│ │ │ ├── addCustomizeCombox.js
│ │ │ ├── addCustomizeDialog.js
│ │ │ ├── charts.html
│ │ │ ├── completeDemo.html
│ │ │ ├── customPluginDemo.html
│ │ │ ├── customToolbarDemo.html
│ │ │ ├── customizeDialogPage.html
│ │ │ ├── customizeToolbarUIDemo.html
│ │ │ ├── editor_api.js
│ │ │ ├── filterRuleDemo.html
│ │ │ ├── highlightDemo.html
│ │ │ ├── index.html
│ │ │ ├── jqueryCompleteDemo.html
│ │ │ ├── jqueryValidation.html
│ │ │ ├── multiDemo.html
│ │ │ ├── multiEditorWithOneInstance.html
│ │ │ ├── renderInTable.html
│ │ │ ├── resetDemo.html
│ │ │ ├── sectiondemo.html
│ │ │ ├── server/
│ │ │ │ ├── getContent.ashx
│ │ │ │ ├── getContent.asp
│ │ │ │ ├── getContent.jsp
│ │ │ │ └── getContent.php
│ │ │ ├── setWidthHeightDemo.html
│ │ │ ├── simpleDemo.html
│ │ │ ├── sortableDemo.html
│ │ │ ├── submitFormDemo.html
│ │ │ ├── textareaDemo.html
│ │ │ └── uparsedemo.html
│ │ ├── dialogs/
│ │ │ ├── anchor/
│ │ │ │ └── anchor.html
│ │ │ ├── attachment/
│ │ │ │ ├── attachment.css
│ │ │ │ ├── attachment.html
│ │ │ │ └── attachment.js
│ │ │ ├── background/
│ │ │ │ ├── background.css
│ │ │ │ ├── background.html
│ │ │ │ └── background.js
│ │ │ ├── charts/
│ │ │ │ ├── chart.config.js
│ │ │ │ ├── charts.css
│ │ │ │ ├── charts.html
│ │ │ │ └── charts.js
│ │ │ ├── emotion/
│ │ │ │ ├── emotion.css
│ │ │ │ ├── emotion.html
│ │ │ │ └── emotion.js
│ │ │ ├── gmap/
│ │ │ │ └── gmap.html
│ │ │ ├── help/
│ │ │ │ ├── help.css
│ │ │ │ ├── help.html
│ │ │ │ └── help.js
│ │ │ ├── image/
│ │ │ │ ├── image.css
│ │ │ │ ├── image.html
│ │ │ │ └── image.js
│ │ │ ├── insertframe/
│ │ │ │ └── insertframe.html
│ │ │ ├── internal.js
│ │ │ ├── link/
│ │ │ │ └── link.html
│ │ │ ├── map/
│ │ │ │ ├── map.html
│ │ │ │ └── show.html
│ │ │ ├── music/
│ │ │ │ ├── music.css
│ │ │ │ ├── music.html
│ │ │ │ └── music.js
│ │ │ ├── preview/
│ │ │ │ └── preview.html
│ │ │ ├── scrawl/
│ │ │ │ ├── scrawl.css
│ │ │ │ ├── scrawl.html
│ │ │ │ └── scrawl.js
│ │ │ ├── searchreplace/
│ │ │ │ ├── searchreplace.html
│ │ │ │ └── searchreplace.js
│ │ │ ├── snapscreen/
│ │ │ │ └── snapscreen.html
│ │ │ ├── spechars/
│ │ │ │ ├── spechars.html
│ │ │ │ └── spechars.js
│ │ │ ├── table/
│ │ │ │ ├── edittable.css
│ │ │ │ ├── edittable.html
│ │ │ │ ├── edittable.js
│ │ │ │ ├── edittd.html
│ │ │ │ └── edittip.html
│ │ │ ├── template/
│ │ │ │ ├── config.js
│ │ │ │ ├── template.css
│ │ │ │ ├── template.html
│ │ │ │ └── template.js
│ │ │ ├── video/
│ │ │ │ ├── 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
│ │ │ └── zh-cn/
│ │ │ └── zh-cn.js
│ │ ├── php/
│ │ │ ├── Uploader.class.php
│ │ │ ├── action_crawler.php
│ │ │ ├── action_list.php
│ │ │ ├── action_upload.php
│ │ │ ├── config.json
│ │ │ └── controller.php
│ │ ├── themes/
│ │ │ ├── default/
│ │ │ │ ├── css/
│ │ │ │ │ └── ueditor.css
│ │ │ │ └── dialogbase.css
│ │ │ └── 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
│ │ │ ├── video-js/
│ │ │ │ ├── video-js.css
│ │ │ │ ├── video-js.swf
│ │ │ │ ├── video.dev.js
│ │ │ │ └── video.js
│ │ │ ├── webuploader/
│ │ │ │ ├── Uploader.swf
│ │ │ │ ├── webuploader.css
│ │ │ │ ├── webuploader.custom.js
│ │ │ │ ├── webuploader.flashonly.js
│ │ │ │ ├── webuploader.html5only.js
│ │ │ │ ├── webuploader.js
│ │ │ │ └── webuploader.withoutimage.js
│ │ │ └── zeroclipboard/
│ │ │ ├── ZeroClipboard.js
│ │ │ └── ZeroClipboard.swf
│ │ ├── ueditor.all.js
│ │ ├── ueditor.config.js
│ │ └── ueditor.parse.js
│ ├── templates/
│ │ ├── ueditor.html
│ │ └── ueditor_old.html
│ ├── test_try.py
│ ├── urls.py
│ ├── utils.py
│ ├── views.py
│ └── widgets.py
├── README.md
├── course-play.html
├── mysqlclient-1.3.13-cp36-cp36m-win32.whl
├── mysqlclient-1.3.13-cp36-cp36m-win_amd64.whl
├── requirements.txt
├── xadmin/
│ ├── .tx/
│ │ └── config
│ ├── __init__.py
│ ├── adminx.py
│ ├── apps.py
│ ├── filters.py
│ ├── forms.py
│ ├── layout.py
│ ├── locale/
│ │ ├── de_DE/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ ├── django.po
│ │ │ ├── djangojs.mo
│ │ │ └── djangojs.po
│ │ ├── en/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ ├── django.po
│ │ │ ├── djangojs.mo
│ │ │ └── djangojs.po
│ │ ├── es_MX/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ ├── django.po
│ │ │ ├── djangojs.mo
│ │ │ └── djangojs.po
│ │ ├── eu/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ ├── django.po
│ │ │ ├── djangojs.mo
│ │ │ └── djangojs.po
│ │ ├── id_ID/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ ├── django.po
│ │ │ ├── djangojs.mo
│ │ │ └── djangojs.po
│ │ ├── ja/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ ├── django.po
│ │ │ ├── djangojs.mo
│ │ │ └── djangojs.po
│ │ ├── lt/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ ├── django.po
│ │ │ ├── djangojs.mo
│ │ │ └── djangojs.po
│ │ ├── nl_NL/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ ├── django.po
│ │ │ ├── djangojs.mo
│ │ │ └── djangojs.po
│ │ ├── pl/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ ├── django.po
│ │ │ ├── djangojs.mo
│ │ │ └── djangojs.po
│ │ ├── pt_BR/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ ├── django.po
│ │ │ ├── djangojs.mo
│ │ │ └── djangojs.po
│ │ ├── ru_RU/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ ├── django.po
│ │ │ ├── djangojs.mo
│ │ │ └── djangojs.po
│ │ └── zh_Hans/
│ │ └── LC_MESSAGES/
│ │ ├── django.mo
│ │ ├── django.po
│ │ ├── djangojs.mo
│ │ └── djangojs.po
│ ├── migrations/
│ │ ├── 0001_initial.py
│ │ ├── 0002_log.py
│ │ ├── 0003_auto_20160715_0100.py
│ │ └── __init__.py
│ ├── models.py
│ ├── plugins/
│ │ ├── __init__.py
│ │ ├── actions.py
│ │ ├── aggregation.py
│ │ ├── ajax.py
│ │ ├── auth.py
│ │ ├── batch.py
│ │ ├── bookmark.py
│ │ ├── chart.py
│ │ ├── comments.py
│ │ ├── details.py
│ │ ├── editable.py
│ │ ├── excel.py
│ │ ├── export.py
│ │ ├── filters.py
│ │ ├── images.py
│ │ ├── importexport.py
│ │ ├── inline.py
│ │ ├── language.py
│ │ ├── layout.py
│ │ ├── mobile.py
│ │ ├── multiselect.py
│ │ ├── passwords.py
│ │ ├── portal.py
│ │ ├── quickfilter.py
│ │ ├── quickform.py
│ │ ├── refresh.py
│ │ ├── relate.py
│ │ ├── relfield.py
│ │ ├── sitemenu.py
│ │ ├── sortablelist.py
│ │ ├── themes.py
│ │ ├── topnav.py
│ │ ├── ueditor.py
│ │ ├── utils.py
│ │ ├── wizard.py
│ │ └── xversion.py
│ ├── sites.py
│ ├── static/
│ │ └── xadmin/
│ │ ├── component.json
│ │ ├── css/
│ │ │ ├── themes/
│ │ │ │ ├── bootstrap-theme.css
│ │ │ │ └── bootstrap-xadmin.css
│ │ │ ├── xadmin.form.css
│ │ │ ├── xadmin.main.css
│ │ │ ├── xadmin.mobile.css
│ │ │ ├── xadmin.page.dashboard.css
│ │ │ ├── xadmin.plugin.aggregation.css
│ │ │ ├── xadmin.plugin.formset.css
│ │ │ ├── xadmin.plugin.importexport.css
│ │ │ ├── xadmin.plugin.quickfilter.css
│ │ │ ├── xadmin.plugins.css
│ │ │ ├── xadmin.responsive.css
│ │ │ ├── xadmin.widget.editable.css
│ │ │ └── xadmin.widget.select-transfer.css
│ │ ├── js/
│ │ │ ├── xadmin.main.js
│ │ │ ├── xadmin.page.dashboard.js
│ │ │ ├── xadmin.page.form.js
│ │ │ ├── xadmin.page.list.js
│ │ │ ├── xadmin.plugin.actions.js
│ │ │ ├── xadmin.plugin.batch.js
│ │ │ ├── xadmin.plugin.bookmark.js
│ │ │ ├── xadmin.plugin.charts.js
│ │ │ ├── xadmin.plugin.details.js
│ │ │ ├── xadmin.plugin.editable.js
│ │ │ ├── xadmin.plugin.filters.js
│ │ │ ├── xadmin.plugin.formset.js
│ │ │ ├── xadmin.plugin.importexport.js
│ │ │ ├── xadmin.plugin.portal.js
│ │ │ ├── xadmin.plugin.quick-form.js
│ │ │ ├── xadmin.plugin.quickfilter.js
│ │ │ ├── xadmin.plugin.refresh.js
│ │ │ ├── xadmin.plugin.revision.js
│ │ │ ├── xadmin.plugin.sortablelist.js
│ │ │ ├── xadmin.plugin.themes.js
│ │ │ ├── xadmin.responsive.js
│ │ │ ├── xadmin.widget.datetime.js
│ │ │ ├── xadmin.widget.multiselect.js
│ │ │ ├── xadmin.widget.select-transfer.js
│ │ │ └── xadmin.widget.select.js
│ │ └── vendor/
│ │ ├── autotype/
│ │ │ └── index.js
│ │ ├── bootstrap/
│ │ │ ├── css/
│ │ │ │ └── bootstrap.css
│ │ │ └── js/
│ │ │ └── bootstrap.js
│ │ ├── bootstrap-clockpicker/
│ │ │ ├── bootstrap-clockpicker.css
│ │ │ └── bootstrap-clockpicker.js
│ │ ├── bootstrap-datepicker/
│ │ │ ├── css/
│ │ │ │ └── datepicker.css
│ │ │ └── js/
│ │ │ ├── bootstrap-datepicker.js
│ │ │ └── locales/
│ │ │ ├── bootstrap-datepicker.bg.js
│ │ │ ├── bootstrap-datepicker.ca.js
│ │ │ ├── bootstrap-datepicker.cs.js
│ │ │ ├── bootstrap-datepicker.da.js
│ │ │ ├── bootstrap-datepicker.de.js
│ │ │ ├── bootstrap-datepicker.el.js
│ │ │ ├── bootstrap-datepicker.es.js
│ │ │ ├── bootstrap-datepicker.fi.js
│ │ │ ├── bootstrap-datepicker.fr.js
│ │ │ ├── bootstrap-datepicker.he.js
│ │ │ ├── bootstrap-datepicker.hr.js
│ │ │ ├── bootstrap-datepicker.hu.js
│ │ │ ├── bootstrap-datepicker.id.js
│ │ │ ├── bootstrap-datepicker.is.js
│ │ │ ├── bootstrap-datepicker.it.js
│ │ │ ├── bootstrap-datepicker.ja.js
│ │ │ ├── bootstrap-datepicker.kr.js
│ │ │ ├── bootstrap-datepicker.lt.js
│ │ │ ├── bootstrap-datepicker.lv.js
│ │ │ ├── bootstrap-datepicker.ms.js
│ │ │ ├── bootstrap-datepicker.nb.js
│ │ │ ├── bootstrap-datepicker.nl.js
│ │ │ ├── bootstrap-datepicker.pl.js
│ │ │ ├── bootstrap-datepicker.pt-BR.js
│ │ │ ├── bootstrap-datepicker.pt.js
│ │ │ ├── bootstrap-datepicker.ro.js
│ │ │ ├── bootstrap-datepicker.rs-latin.js
│ │ │ ├── bootstrap-datepicker.rs.js
│ │ │ ├── bootstrap-datepicker.ru.js
│ │ │ ├── bootstrap-datepicker.sk.js
│ │ │ ├── bootstrap-datepicker.sl.js
│ │ │ ├── bootstrap-datepicker.sv.js
│ │ │ ├── bootstrap-datepicker.sw.js
│ │ │ ├── bootstrap-datepicker.th.js
│ │ │ ├── bootstrap-datepicker.tr.js
│ │ │ ├── bootstrap-datepicker.uk.js
│ │ │ ├── bootstrap-datepicker.zh-CN.js
│ │ │ └── bootstrap-datepicker.zh-TW.js
│ │ ├── bootstrap-image-gallery/
│ │ │ ├── css/
│ │ │ │ └── bootstrap-image-gallery.css
│ │ │ └── js/
│ │ │ └── bootstrap-image-gallery.js
│ │ ├── bootstrap-modal/
│ │ │ ├── css/
│ │ │ │ └── bootstrap-modal.css
│ │ │ └── js/
│ │ │ ├── bootstrap-modal.js
│ │ │ └── bootstrap-modalmanager.js
│ │ ├── bootstrap-multiselect/
│ │ │ ├── css/
│ │ │ │ └── bootstrap-multiselect.css
│ │ │ └── js/
│ │ │ └── bootstrap-multiselect.js
│ │ ├── bootstrap-timepicker/
│ │ │ ├── css/
│ │ │ │ └── bootstrap-timepicker.css
│ │ │ └── js/
│ │ │ └── bootstrap-timepicker.js
│ │ ├── flot/
│ │ │ ├── excanvas.js
│ │ │ ├── jquery.colorhelpers.js
│ │ │ ├── jquery.flot.aggregate.js
│ │ │ ├── jquery.flot.canvas.js
│ │ │ ├── jquery.flot.categories.js
│ │ │ ├── jquery.flot.crosshair.js
│ │ │ ├── jquery.flot.errorbars.js
│ │ │ ├── jquery.flot.fillbetween.js
│ │ │ ├── jquery.flot.image.js
│ │ │ ├── jquery.flot.js
│ │ │ ├── jquery.flot.navigate.js
│ │ │ ├── jquery.flot.pie.js
│ │ │ ├── jquery.flot.resize.js
│ │ │ ├── jquery.flot.selection.js
│ │ │ ├── jquery.flot.stack.js
│ │ │ ├── jquery.flot.symbol.js
│ │ │ ├── jquery.flot.threshold.js
│ │ │ └── jquery.flot.time.js
│ │ ├── font-awesome/
│ │ │ ├── css/
│ │ │ │ └── font-awesome.css
│ │ │ └── fonts/
│ │ │ └── FontAwesome.otf
│ │ ├── jquery/
│ │ │ └── jquery.js
│ │ ├── jquery-ui/
│ │ │ ├── jquery.ui.core.js
│ │ │ ├── jquery.ui.effect.js
│ │ │ ├── jquery.ui.mouse.js
│ │ │ ├── jquery.ui.sortable.js
│ │ │ └── jquery.ui.widget.js
│ │ ├── load-image/
│ │ │ └── load-image.js
│ │ ├── select2/
│ │ │ ├── select2.css
│ │ │ ├── select2.js
│ │ │ ├── select2_locale_de.js
│ │ │ ├── select2_locale_en.js
│ │ │ ├── select2_locale_es.js
│ │ │ ├── select2_locale_eu.js
│ │ │ ├── select2_locale_fr.js
│ │ │ ├── select2_locale_hr.js
│ │ │ ├── select2_locale_hu.js
│ │ │ ├── select2_locale_it.js
│ │ │ ├── select2_locale_nl.js
│ │ │ ├── select2_locale_pt-BR.js
│ │ │ ├── select2_locale_pt-PT.js
│ │ │ ├── select2_locale_ro.js
│ │ │ ├── select2_locale_ru.js
│ │ │ ├── select2_locale_sk.js
│ │ │ ├── select2_locale_sv.js
│ │ │ ├── select2_locale_tr.js
│ │ │ ├── select2_locale_ua.js
│ │ │ ├── select2_locale_zh-CN.js
│ │ │ └── select2_locale_zh-hans.js
│ │ ├── selectize/
│ │ │ ├── selectize.bootstrap2.css
│ │ │ ├── selectize.bootstrap3.css
│ │ │ ├── selectize.css
│ │ │ ├── selectize.default.css
│ │ │ ├── selectize.js
│ │ │ └── selectize.legacy.css
│ │ └── snapjs/
│ │ ├── snap.css
│ │ └── snap.js
│ ├── templates/
│ │ └── xadmin/
│ │ ├── 404.html
│ │ ├── 500.html
│ │ ├── auth/
│ │ │ ├── password_reset/
│ │ │ │ ├── complete.html
│ │ │ │ ├── confirm.html
│ │ │ │ ├── done.html
│ │ │ │ ├── email.html
│ │ │ │ └── form.html
│ │ │ └── user/
│ │ │ ├── add_form.html
│ │ │ └── change_password.html
│ │ ├── base.html
│ │ ├── base_site.html
│ │ ├── blocks/
│ │ │ ├── comm.top.setlang.html
│ │ │ ├── comm.top.theme.html
│ │ │ ├── comm.top.topnav.html
│ │ │ ├── modal_list.left_navbar.quickfilter.html
│ │ │ ├── model_form.before_fieldsets.wizard.html
│ │ │ ├── model_form.submit_line.wizard.html
│ │ │ ├── model_list.nav_form.search_form.html
│ │ │ ├── model_list.nav_menu.bookmarks.html
│ │ │ ├── model_list.nav_menu.filters.html
│ │ │ ├── model_list.results_bottom.actions.html
│ │ │ ├── model_list.results_top.charts.html
│ │ │ ├── model_list.results_top.date_hierarchy.html
│ │ │ ├── model_list.top_toolbar.exports.html
│ │ │ ├── model_list.top_toolbar.importexport.export.html
│ │ │ ├── model_list.top_toolbar.importexport.import.html
│ │ │ ├── model_list.top_toolbar.layouts.html
│ │ │ ├── model_list.top_toolbar.refresh.html
│ │ │ └── model_list.top_toolbar.saveorder.html
│ │ ├── edit_inline/
│ │ │ ├── accordion.html
│ │ │ ├── base.html
│ │ │ ├── blank.html
│ │ │ ├── one.html
│ │ │ ├── stacked.html
│ │ │ ├── tab.html
│ │ │ └── tabular.html
│ │ ├── excel/
│ │ │ └── model_list.top_toolbar.import.html
│ │ ├── filters/
│ │ │ ├── char.html
│ │ │ ├── checklist.html
│ │ │ ├── date.html
│ │ │ ├── fk_search.html
│ │ │ ├── list.html
│ │ │ ├── number.html
│ │ │ ├── quickfilter.html
│ │ │ └── rel.html
│ │ ├── forms/
│ │ │ └── transfer.html
│ │ ├── grids/
│ │ │ └── thumbnails.html
│ │ ├── import_export/
│ │ │ ├── export_action.html
│ │ │ └── import.html
│ │ ├── includes/
│ │ │ ├── box.html
│ │ │ ├── pagination.html
│ │ │ ├── sitemenu_accordion.html
│ │ │ ├── sitemenu_default.html
│ │ │ ├── submit_line.html
│ │ │ ├── toggle_back.html
│ │ │ └── toggle_menu.html
│ │ ├── layout/
│ │ │ ├── field_value.html
│ │ │ ├── field_value_td.html
│ │ │ ├── fieldset.html
│ │ │ ├── input_group.html
│ │ │ └── td-field.html
│ │ ├── views/
│ │ │ ├── app_index.html
│ │ │ ├── batch_change_form.html
│ │ │ ├── dashboard.html
│ │ │ ├── form.html
│ │ │ ├── invalid_setup.html
│ │ │ ├── logged_out.html
│ │ │ ├── login.html
│ │ │ ├── model_dashboard.html
│ │ │ ├── model_delete_confirm.html
│ │ │ ├── model_delete_selected_confirm.html
│ │ │ ├── model_detail.html
│ │ │ ├── model_form.html
│ │ │ ├── model_history.html
│ │ │ ├── model_list.html
│ │ │ ├── quick_detail.html
│ │ │ ├── quick_form.html
│ │ │ ├── recover_form.html
│ │ │ ├── recover_list.html
│ │ │ ├── revision_diff.html
│ │ │ └── revision_form.html
│ │ └── widgets/
│ │ ├── addform.html
│ │ ├── base.html
│ │ ├── chart.html
│ │ ├── list.html
│ │ └── qbutton.html
│ ├── templatetags/
│ │ ├── __init__.py
│ │ └── xadmin_tags.py
│ ├── util.py
│ ├── vendors.py
│ ├── views/
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── dashboard.py
│ │ ├── delete.py
│ │ ├── detail.py
│ │ ├── edit.py
│ │ ├── form.py
│ │ ├── list.py
│ │ └── website.py
│ └── widgets.py
└── zhihu.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
*.pyc
.idea
================================================
FILE: DjangoUeditor/__init__.py
================================================
================================================
FILE: DjangoUeditor/commands.py
================================================
# coding:utf-8
try:
# python3
from urllib.request import urljoin as urljoin
except:
# python2
from urllib import basejoin as urljoin
from . import settings as USettings
class UEditorEventHandler(object):
"""用来处理UEditor的事件侦听"""
def on_selectionchange(self):
return ""
def on_contentchange(self):
return ""
def render(self, editorID):
jscode = """
%(editor)s.addListener('%(event)s', function () {
%(event_code)s
});"""
event_codes = []
# 列出所有on_打头的方法,然后在ueditor中进行侦听
events = filter(lambda x: x[0:3] == "on_", dir(self))
for event in events:
try:
event_code = getattr(self, event)()
if event_code:
event_code = event_code % {"editor": editorID}
event_codes.append(
jscode % {
"editor": editorID,
"event": event[
3:],
"event_code": event_code})
except:
pass
if len(event_codes) == 0:
return ""
else:
return "\n".join(event_codes)
class UEditorCommand(object):
"""
为前端增加按钮,下拉等扩展,
"""
def __init__(self, **kwargs):
self.uiName = kwargs.pop("uiName", "")
self.index = kwargs.pop("index", 0)
self.title = kwargs.pop("title", self.uiName)
self.ajax_url = kwargs.pop("ajax_url", "")
def render_ui(self, editor):
"""" 创建ueditor的ui扩展对象的js代码,如button,combo等 """
raise NotImplementedError
def render_ajax_command(self):
""""生成通过ajax调用后端命令的前端ajax代码"""
if not self.ajax_url:
return ""
return u"""
UE.ajax.request( '%(ajax_url)s', {
data: {
name: 'ueditor'
},
onsuccess: function ( xhr ) {%(ajax_success)s},
onerror: function ( xhr ){ %(ajax_error)s }
});
""" % {
"ajax_url": self.ajax_url,
"ajax_success": self.onExecuteAjaxCommand("success"),
"ajax_error": self.onExecuteAjaxCommand("error")
}
def render_command(self):
"""" 返回注册命令的js定义 """
cmd = self.onExecuteCommand()
ajax_cmd = self.render_ajax_command()
queryvalue_command = self.onExecuteQueryvalueCommand()
cmds = []
if cmd or ajax_cmd:
cmds.append(u"""execCommand: function() {
%(exec_cmd)s
%(exec_ajax_cmd)s
}
""" % {"exec_cmd": cmd, "exec_ajax_cmd": ajax_cmd},)
if queryvalue_command:
cmds.append(u"""queryCommandValue:function(){
%s
}""" % queryvalue_command)
if len(cmds) > 0:
return u"""
editor.registerCommand(uiName, {
%s
});
""" % ",".join(cmds)
else:
return ""
def render(self, editorID):
return u"""
UE.registerUI("%(uiName)s", function(editor, uiName) {
%(registerCommand)s
%(uiObject)s
},%(index)s,"%(editor)s");
""" % {
"registerCommand": self.render_command(),
"uiName": self.uiName,
"uiObject": self.render_ui(editorID),
"index": self.index,
"editor": editorID
}
def onExecuteCommand(self):
""" 返回执行Command时的js代码 """
return ""
def onExecuteAjaxCommand(self, state):
""" 返回执行Command时发起Ajax调用成功与失败的js代码 """
return ""
def onExecuteQueryvalueCommand(self):
"""" 返回执行QueryvalueCommand时的js代码 """
return ""
class UEditorButtonCommand(UEditorCommand):
def __init__(self, **kwargs):
self.icon = kwargs.pop("icon", "")
super(UEditorButtonCommand, self).__init__(**kwargs)
def onClick(self):
""""按钮单击js代码,默认执行uiName命令,默认会调用Command """
return """
editor.execCommand(uiName);
"""
def render_ui(self, editorID):
""" 创建button的js代码: """
return """
var btn = new UE.ui.Button({
name: uiName,
title: "%(title)s",
cssRules: "background-image:url('%(icon)s')!important;",
onclick: function() {
%(onclick)s
}
});
return btn
""" % {
"icon": urljoin(USettings.gSettings.MEDIA_URL, self.icon),
"onclick": self.onClick(),
"title": self.title
}
class UEditorComboCommand(UEditorCommand):
def __init__(self, **kwargs):
self.items = kwargs.pop("items", [])
self.initValue = kwargs.pop("initValue", "")
super(UEditorComboCommand, self).__init__(**kwargs)
def get_items(self):
return self.items
def onSelect(self):
return ""
def render_ui(self, editorID):
""" 创建combo的js代码: """
return """
var combox = new UE.ui.Combox({
editor:editor,
items:%(items)s,
onselect:function (t, index) {
%(onselect)s
},
title:'%(title)s',
initValue:'%(initValue)s'
});
return combox;
""" % {
"title": self.title,
"items": str(self.get_items()),
"onselect": self.onSelect(),
"initValue": self.initValue
}
class UEditorDialogCommand(UEditorCommand):
pass
================================================
FILE: DjangoUeditor/forms.py
================================================
# coding: utf-8
from django import forms
from widgets import UEditorWidget
from DjangoUeditor.models import UEditorField as ModelUEditorField
class UEditorField(forms.CharField):
def __init__(
self,
label,
width=600,
height=300,
toolbars="full",
imagePath="",
filePath="",
upload_settings={},
settings={},
command=None,
event_handler=None,
*args,
**kwargs):
uSettings = locals().copy()
del uSettings["self"], uSettings[
"label"], uSettings["args"], uSettings["kwargs"]
kwargs["widget"] = UEditorWidget(attrs=uSettings)
kwargs["label"] = label
super(UEditorField, self).__init__(*args, **kwargs)
# def UpdateUploadPath(model_form, model_inst=None):
# """ 遍历model字段,如果是UEditorField则需要重新计算路径 """
# if model_inst is not None:
# try:
# for field in model_inst._meta.fields:
# if isinstance(field, ModelUEditorField):
# model_form.__getitem__(
# field.name).field.widget.recalc_path(model_inst)
# except:
# pass
# 修改前
def UpdateUploadPath(model_form, model_inst=None):
""" 遍历model字段,如果是UEditorField则需要重新计算路径 """
if not model_inst:
try:
for field in model_inst._meta.fields:
if isinstance(field, ModelUEditorField):
model_form.__getitem__(
field.name).field.widget.recalc_path(model_inst)
except:
pass
class UEditorModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(UEditorModelForm, self).__init__(*args, **kwargs)
try:
if "instance" in kwargs:
UpdateUploadPath(self, kwargs["instance"])
else:
UpdateUploadPath(self, None)
except Exception:
pass
================================================
FILE: DjangoUeditor/models.py
================================================
# coding: utf-8
from django.db import models
from django.contrib.admin import widgets as admin_widgets
from .widgets import UEditorWidget, AdminUEditorWidget
class UEditorField(models.TextField):
"""
百度HTML编辑器字段,初始化时,可以提供以下参数
initial:初始内容
toolbars:提供工具按钮列表,取值为列表,如['bold', 'italic'],取值为:mini,normal,full,代表小,一般,全部
imagePath:图片上传的路径,如"images/",实现上传到"{{MEDIA_ROOT}}/images"文件夹
filePath:附件上传的路径,如"files/",实现上传到"{{MEDIA_ROOT}}/files"文件夹
"""
def __init__(
self,
verbose_name=None,
width=600,
height=300,
toolbars="full",
imagePath="",
filePath="",
upload_settings={},
settings={},
command=None,
event_handler=None,
**kwargs):
self.ueditor_settings = locals().copy()
kwargs["verbose_name"] = verbose_name
del self.ueditor_settings["self"], self.ueditor_settings[
"kwargs"], self.ueditor_settings["verbose_name"]
super(UEditorField, self).__init__(**kwargs)
def formfield(self, **kwargs):
defaults = {'widget': UEditorWidget(attrs=self.ueditor_settings)}
defaults.update(kwargs)
if defaults['widget'] == admin_widgets.AdminTextareaWidget:
defaults['widget'] = AdminUEditorWidget(
attrs=self.ueditor_settings)
return super(UEditorField, self).formfield(**defaults)
# 以下支持south
try:
from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^DjangoUeditor\.models\.UEditorField"])
except:
pass
================================================
FILE: DjangoUeditor/readme.md
================================================
本模块帮助在Django应用中集成百度Ueditor HTML编辑器,Django是Python世界最有影响力的web框架。
Ueditor HTML编辑器是百度开源的在线HTML编辑器,功能非常强大,像表格可以直接拖动调整单元格大小等。
本仓库是fork自:https://github.com/zhangfisher/DjangoUeditor
主要是因为发现原来的代码是基于python 2的语法,而我自己已经在用python 3.5了,有几个不兼容,所以想修改成python 3的语法
给用python 3的朋友们抛砖引玉一下
============
###[2015-10-05] Version: 1.9.144
###* 语法的不同点,我自己试了一下,主要是下面两方面需要改动
##1. import
从同个文件夹下import,原代码是这样写的:import settings as USettings
但是在python 3中,应该写成:from . import settings as USettings
即from module import xxx
参考:[python 3文档](https://docs.python.org/3/tutorial/modules.html#intra-package-references)
##2. Exception
原代码这样写:
```python
try:
...
except Exception, E:
print(E.message)
```
但在python 3中应该用as:
```python
try:
...
except Exception as E:
print(E.message)
```
参考:[python3文档](https://docs.python.org/3/tutorial/errors.html#handling-exceptions)
##3. dict已经没有has_key属性了
原代码这样写:
```python
if self._upload_settings.has_key("filePathFormat"):
uSettings['filePathFormat'] = calc_path(self._upload_settings['filePathFormat'], model_inst)
```
但在python 3中dict没有了has_key属性,所以应该换成get方法来判断:
```python
if self._upload_settings.get("filePathFormat", None):
uSettings['filePathFormat'] = calc_path(self._upload_settings['filePathFormat'], model_inst)
```
---------------------------------------
使用方法
============
##1、安装方法
* 将github整个源码包下载下来
git clone https://github.com/cooljacket/DjangoUeditor
* 然后,假设你的python安装目录是PYTHON_ROOT(我的是D:\soft\py3.5),直接复制DjangoUeditor文件夹到PYTHON_ROOT\Lib\site-packages\下就好了,比如我的就是D:\soft\py3.5\Lib\site-packages\
* 之所以不使用原来的setup.py来安装,是因为我发现,用它的setup脚本会改动代码成原来的样子,也没去深究为什么,最后发现只需要直接复制过去就好了,而且卸载也很方便,直接删除就好了,没有什么依赖项和设置!
##2、在Django中安装DjangoUeditor
在INSTALL_APPS里面增加DjangoUeditor app,如下:
INSTALLED_APPS = (
#........
'DjangoUeditor',
)
##3、配置urls
url(r'^ueditor/',include('DjangoUeditor.urls' )),
##4、在models中的使用
```python
from DjangoUeditor.models import UEditorField
class Blog(models.Model):
Name=models.CharField(,max_length=100,blank=True)
Content=UEditorField(u'内容 ',width=600, height=300, toolbars="full", imagePath="", filePath="", upload_settings={"imageMaxSize":1204000},
settings={},command=None,event_handler=myEventHander(),blank=True)
```
*说明*
UEditorField继承自models.TextField,因此你可以直接将model里面定义的models.TextField直接改成UEditorField即可。
定义UEditorField时除了可以直接传入models.TextFieldUEditorField提供的参数外,还可以传入UEditorField提供的额外的参数
来控制UEditorField的外观、上传路径等。
UEditorField的参数如下:
* *width,height* :编辑器的宽度和高度,以像素为单位。
* *toolbars* :配置你想显示的工具栏,取值为mini,normal,full,代表小,一般,全部。如果默认的工具栏的按钮数量不符合您的要求,您可以在settings里面配置自己的显示按钮。参见后面介绍。
* *imagePath* :图片上传后保存的路径,如"images/",实现上传到"{{MEDIA_ROOT}}/images"文件夹。
注意:如果imagePath值只设置文件夹,则未尾要有"/"
imagePath可以按python字符串格式化:如"images/%(basename)s_%(datetime)s.%(extname)s"。这样如果上传test.png,则文件会
被保存为"{{MEDIA_ROOT}}/images/test_20140625122399.png"。
imagePath中可以使用的变量有:
* time :上传时的时间,datetime.datetime.now().strftime("%H%M%S")
* date :上传时的日期,datetime.datetime.now().strftime("%Y%m%d")
* datetime :上传时的时间和日期,datetime.datetime.now().strftime("%Y%m%d%H%M%S")
* year : 年
* month : 月
* day : 日
* rnd : 三位随机数,random.randrange(100,999)
* basename : 上传的文件名称,不包括扩展名
* extname : 上传的文件扩展名
* filename : 上传的文件名全称
* *filePath* : 附件上传后保存的路径,设置规则与imagePath一样。
* *upload_settings* : 字典值,
例:upload_settings={
imagePathFormat:"images/%(basename)s_%(datetime)s.%(extname)s",
imageMaxSize:323232
fileManagerListPath:"files"
}
* upload_settings的内容就是ueditor/php/config.json里面的配置内容,因此,你可以去看config.json或者官方文档内容来决定
该如何配置upload_settings,基本上就是用来配置上传的路径、允许上传的文件扩展名、最大上传的文件大小之类的。
* 上面的imagePath和filePath被单独提取出来配置,原因是因为这两个参数是最常使用到的,imagePath就相当于upload_settings里面的
imagePathFormat,filePath就相当于upload_settings里面的filePathFormat。
* 您upload_settings里面设置了imagePathFormat,也可以在UeditorField里面设置imagePath,效果是一样的。但是如果两者均设置,
则imagePath优先级更高。
* 涂鸦文件、截图、远程抓图、图片库的xxxxPathFormat如果没有配置,默认等于imagePath.
* 远程文件库的xxxxPathFormat如果没有配置,默认等于filePath.
* *settings* : 字典值,配置项与ueditor/ueditor.config.js里面的配置项一致。
* *command* : 可以为Ueditor新增一个按钮、下拉框、对话框,例:
Description = UEditorField(u'描述', blank=True, toolbars="full", imagePath="cool/", settings={"a": 1},
command=[myBtn(uiName="mybtn1", icon="d.png", title=u"1摸我", ajax_url="/ajaxcmd/"),
myCombo(uiName="myCombo3",title=u"ccc",initValue="aaa")
])
以上代码可以会Ueditor增加一个按钮和一个下拉框。command是一个UEditorCommand的实例列表。如果你要在Ueditor的工具栏上增加一个
自定义按钮,方法如下:
from DjangoUeditor.commands import UEditorButtonCommand,UEditorComboCommand
#定义自己的按钮命令类
class myBtn(UEditorButtonCommand):
def onClick(self):
return u"""
alert("爽!"); //这里可以写自己的js代码
editor.execCommand(uiName);
"""
def onExecuteAjaxCommand(self,state):
""" 默认在command代码里面加入一段ajax代码,如果指定了ajax_url和重载本方法,则在单点按钮后
会调用ajax_url.本方法重载是可选的。
"""
if state=="success":
return u"""
alert("后面比较爽!"+xhr.responseText);//这里可以写ajax成功调用的js代码
"""
if state=="error":
return u"""
alert("讨厌,摸哪里去了!"+xhr.responseText);//这里可以写ajax错误调用的js代码
"""
UEditorButtonCommand有初始化参数:
uiName:按钮名称
title:按钮提示信息
index:按钮显示的位置索引
ajax_url:单击时调用的ajax url
UEditorComboCommand可以在Ueditor上增加一个下拉框
UEditorDialogCommand可以在Ueditor上增加一个对话框,一般与UEditorButtonCommand配合使用。暂未实现
* *event_handler* : 用来为Ueditor实例绑定事件侦听,比较当选择区改变时将按钮状态置为禁止。
from DjangoUeditor.commands import UEditorEventHandler
class myEventHander(UEditorEventHandler):
def on_selectionchange(self):
return """
function getButton(btnName){
var items=%(editor)s.ui.toolbars[0].items;
for(item in items){
if(items[item].name==btnName){
return items[item];
}
}
}
var btn=getButton("mybtn1");
var selRanage=id_Description.selection.getRange()
btn.setDisabled(selRanage.startOffset == selRanage.endOffset);
"""
我们可以继承UEditorEventHandler创建自己的事件侦听类,例如上面myEventHander,然后在myEventHander中
增加on_eventname的方法,在里面返回侦听该event的js代码。例如上例on_selectionchange,就会在前端js中
生成id_Description.addListener('selectionchange', function () {.......});
如果要侦听contentchange事件,就在myEventHander中增加一个on_contentchange方法,然后在该方法中返回js代码。
##5、在表单中使用非常简单,与常规的form字段没什么差别,如下:
```python
class TestUeditorModelForm(forms.ModelForm):
class Meta:
model=Blog
```
***********************************
如果不是用ModelForm,可以有两种方法使用:
1: 使用forms.UEditorField
```python
from DjangoUeditor.forms import UEditorField
class TestUEditorForm(forms.Form):
Description=UEditorField("描述",initial="abc",width=600,height=800)
```
2: widgets.UEditorWidget
```python
from DjangoUeditor.widgets import UEditorWidget
class TestUEditorForm(forms.Form):
Content=forms.CharField(label="内容",widget=UEditorWidget(width=800,height=500, imagePath='aa', filePath='bb',toolbars={}))
```
widgets.UEditorWidget和forms.UEditorField的输入参数与上述models.UEditorField一样。
说明 关于第一种方法,需要在代码中建立相应的类(比如就在views.py中),并且需要在views.py渲染视图的时候返回到模板(template)中,对于上面的代码,具体使用可能如下(在views.py中):
```python
from DjangoUeditor.forms import UEditorField class TestUEditorForm(forms.Form):
Description=UEditorField("描述",initial="abc",width=600,height=800)
def edit_description_view(request):
form = TestUEditorForm()
return render(request,'edit-description.htm',{"form": form})
```
而在edit-description.htm这个模板(template)里面,只需要在模板相应位置输出form即可:
```html
<div class="edit-area">
{{ form }}
</div>
```
##6、Settings配置
在Django的Settings可以配置以下参数:
```
UEDITOR_SETTINGS={
"config":{
#这里放ueditor.config.js里面的配置项.......
},
"upload":{
#这里放php/config.json里面的配置项.......
}
}
```
##7、在模板里面:
```html
<head>
......
{{ form.media }} #这一句会将所需要的CSS和JS加进来。
......
</head>
```
注:运行collectstatic命令,将所依赖的css,js之类的文件复制到{{STATIC_ROOT}}文件夹里面。
##8、高级运用:
****************
动态指定imagePathFormat等文件路径
****************
这几个路径文件用于保存上传的图片或附件,您可以直接指定路径,如:
UEditorField('内容',imagePath="uploadimg/")
则图片会被上传到"{{MEDIA_ROOT}}/uploadimg"文件夹,也可以指定为一个函数,如:
```python
def getImagePath(model_instance=None):
return "abc/"
```
UEditorField('内容',imagePath=getImagePath)
则图片会被上传到"{{MEDIA_ROOT}}/abc"文件夹。
****************
使上传路径(如imagePathFormat)与Model实例字段值相关
****************
在有些情况下,我们可能想让上传的文件路径是由当前Model实例字值组名而成,比如:
```python
class Blog(Models.Model):
Name=models.CharField('姓名',max_length=100,blank=True)
Description=UEditorField('描述',blank=True,imagePath=getUploadPath,toolbars="full")
```
id | Name | Description
------------------------------------
1 | Tom | ...........
2 | Jack | ...........
我们想让第一条记录上传的图片或附件上传到"{{MEDIA_ROOT}}/Tom"文件夹,第2条记录则上传到"{{MEDIA_ROOT}}/Jack"文件夹。
该怎么做呢,很简单。
```python
def getUploadPath(model_instance=None):
return "%s/" % model_instance.Name
```
在Model里面这样定义:
Description=UEditorField('描述',blank=True,imagePath=getUploadPath,toolbars="full")
这上面model_instance就是当前model的实例对象。
还需要这样定义表单对象:
n
```python
from DjangoUeditor.forms import UEditorModelForm
class UEditorTestModelForm(UEditorModelForm):
class Meta:
model=Blog
```
特别注意:
**表单对象必须是继承自UEditorModelForm,否则您会发现model_instance总会是None。
**同时在Admin管理界面中,此特性无效,model_instance总会是None。
**在新建表单中,model_instance由于还没有保存到数据库,所以如果访问model_instance.pk可能是空的。因为您需要在getUploadPath处理这种情况
##9、其他事项:
**本程序版本号采用a.b.ccc,其中a.b是本程序的号,ccc是ueditor的版本号,如1.2.122,1.2是DjangoUeditor的版本号,122指Ueditor 1.2.2.
**本程序安装包里面已经包括了Ueditor,不需要再额外安装。
**目前暂时不支持ueditor的插件
**别忘记了运行collectstatic命令,该命令可以将ueditor的所有文件复制到{{STATIC_ROOT}}文件夹里面
**Django默认开启了CSRF中间件,因此如果你的表单没有加入{% csrf_token %},那么当您上传文件和图片时会失败
================================================
FILE: DjangoUeditor/settings.py
================================================
# coding:utf-8
from django.conf import settings as gSettings # 全局设置
# 工具栏样式,可以添加任意多的模式
TOOLBARS_SETTINGS = {"besttome": [['source',
'undo',
'redo',
'bold',
'italic',
'underline',
'forecolor',
'backcolor',
'superscript',
'subscript',
"justifyleft",
"justifycenter",
"justifyright",
"insertorderedlist",
"insertunorderedlist",
"blockquote",
'formatmatch',
"removeformat",
'autotypeset',
'inserttable',
"pasteplain",
"wordimage",
"searchreplace",
"map",
"preview",
"fullscreen"],
['insertcode',
'paragraph',
"fontfamily",
"fontsize",
'link',
'unlink',
'insertimage',
'insertvideo',
'attachment',
'emotion',
"date",
"time"]],
"mini": [['source',
'|',
'undo',
'redo',
'|',
'bold',
'italic',
'underline',
'formatmatch',
'autotypeset',
'|',
'forecolor',
'backcolor',
'|',
'link',
'unlink',
'|',
'simpleupload',
'attachment']],
"normal": [['source',
'|',
'undo',
'redo',
'|',
'bold',
'italic',
'underline',
'removeformat',
'formatmatch',
'autotypeset',
'|',
'forecolor',
'backcolor',
'|',
'link',
'unlink',
'|',
'simpleupload',
'emotion',
'attachment',
'|',
'inserttable',
'deletetable',
'insertparagraphbeforetable',
'insertrow',
'deleterow',
'insertcol',
'deletecol',
'mergecells',
'mergeright',
'mergedown',
'splittocells',
'splittorows',
'splittocols']]}
# 默认的Ueditor设置,请参见ueditor.config.js
UEditorSettings = {
"toolbars": TOOLBARS_SETTINGS["normal"],
"autoFloatEnabled": False,
# 默认保存上传文件的命名方式
"defaultPathFormat": "%(basename)s_%(datetime)s_%(rnd)s.%(extname)s"
}
# 请参阅php文件夹里面的config.json进行配置
UEditorUploadSettings = {
# 上传图片配置项
"imageActionName": "uploadimage", # 执行上传图片的action名称
"imageMaxSize": 10485760, # 上传大小限制,单位B,10M
"imageFieldName": "upfile", # * 提交的图片表单名称 */
"imageUrlPrefix": "",
"imagePathFormat": "",
"imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], # 上传图片格式显示
# 涂鸦图片上传配置项 */
"scrawlActionName": "uploadscrawl", # 执行上传涂鸦的action名称 */
"scrawlFieldName": "upfile", # 提交的图片表单名称 */
"scrawlMaxSize": 10485760, # 上传大小限制,单位B 10M
"scrawlUrlPrefix": "",
"scrawlPathFormat": "",
# 截图工具上传 */
"snapscreenActionName": "uploadimage", # 执行上传截图的action名称 */
"snapscreenPathFormat": "",
"snapscreenUrlPrefix": "",
# 抓取远程图片配置 */
"catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
"catcherPathFormat": "",
"catcherActionName": "catchimage", # 执行抓取远程图片的action名称 */
"catcherFieldName": "source", # 提交的图片列表表单名称 */
"catcherMaxSize": 10485760, # 上传大小限制,单位B */
# 抓取图片格式显示 */
"catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"],
"catcherUrlPrefix": "",
# 上传视频配置 */
"videoActionName": "uploadvideo", # 执行上传视频的action名称 */
"videoPathFormat": "",
"videoFieldName": "upfile", # 提交的视频表单名称 */
"videoMaxSize": 102400000, # 上传大小限制,单位B,默认100MB */
"videoUrlPrefix": "",
"videoAllowFiles": [
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], # 上传视频格式显示 */
# 上传文件配置 */
"fileActionName": "uploadfile", # controller里,执行上传视频的action名称 */
"filePathFormat": "",
"fileFieldName": "upfile", # 提交的文件表单名称 */
"fileMaxSize": 204800000, # 上传大小限制,单位B,200MB */
"fileUrlPrefix": "", # 文件访问路径前缀 */
"fileAllowFiles": [
".png", ".jpg", ".jpeg", ".gif", ".bmp",
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
], # 上传文件格式显示 */
# 列出指定目录下的图片 */
"imageManagerActionName": "listimage", # 执行图片管理的action名称 */
"imageManagerListPath": "",
"imageManagerListSize": 30, # 每次列出文件数量 */
# 列出的文件类型 */
"imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"],
"imageManagerUrlPrefix": "", # 图片访问路径前缀 */
# 列出指定目录下的文件 */
"fileManagerActionName": "listfile", # 执行文件管理的action名称 */
"fileManagerListPath": "",
"fileManagerUrlPrefix": "",
"fileManagerListSize": 30, # 每次列出文件数量 */
"fileManagerAllowFiles": [
".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tif", ".psd"
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml",
".exe", ".com", ".dll", ".msi"
] # 列出的文件类型 */
}
# 修改前的
# 更新配置:从用户配置文件settings.py重新读入配置UEDITOR_SETTINGS,覆盖默认
# def UpdateUserSettings():
# UserSettings = getattr(gSettings, "UEDITOR_SETTINGS", {}).copy()
# if UserSettings.get("config", None):
# UEditorSettings.update(UserSettings["config"])
# if UserSettings.get("upload", None):
# UEditorUploadSettings.update(UserSettings["upload"])
def UpdateUserSettings():
UserSettings = getattr(gSettings, "UEDITOR_SETTINGS", {}).copy()
if "config" in UserSettings:
UEditorSettings.update(UserSettings["config"])
if "upload" in UserSettings:
UEditorUploadSettings.update(UserSettings["upload"])
# 读取用户Settings文件并覆盖默认配置
UpdateUserSettings()
# 修改前的
# 取得配置项参数
# def GetUeditorSettings(key, default=None):
# if UEditorSettings.get(key, None):
# return UEditorSettings[key]
# else:
# return default
def GetUeditorSettings(key, default=None):
if key in UEditorSettings:
return UEditorSettings[key]
else:
return default
================================================
FILE: DjangoUeditor/static/ueditor/_examples/addCustomizeButton.js
================================================
UE.registerUI('button',function(editor,uiName){
//注册按钮执行时的command命令,使用命令默认就会带有回退操作
editor.registerCommand(uiName,{
execCommand:function(){
alert('execCommand:' + uiName)
}
});
//创建一个button
var btn = new UE.ui.Button({
//按钮的名字
name:uiName,
//提示
title:uiName,
//需要添加的额外样式,指定icon图标,这里默认使用一个重复的icon
cssRules :'background-position: -500px 0;',
//点击时执行的命令
onclick:function () {
//这里可以不用执行命令,做你自己的操作也可
editor.execCommand(uiName);
}
});
//当点到编辑内容上时,按钮要做的状态反射
editor.addListener('selectionchange', function () {
var state = editor.queryCommandState(uiName);
if (state == -1) {
btn.setDisabled(true);
btn.setChecked(false);
} else {
btn.setDisabled(false);
btn.setChecked(state);
}
});
//因为你是添加button,所以需要返回这个button
return btn;
}/*index 指定添加到工具栏上的那个位置,默认时追加到最后,editorId 指定这个UI是那个编辑器实例上的,默认是页面上所有的编辑器都会添加这个按钮*/);
================================================
FILE: DjangoUeditor/static/ueditor/_examples/addCustomizeCombox.js
================================================
UE.registerUI('combox',function(editor,uiName){
//注册按钮执行时的command命令,用uiName作为command名字,使用命令默认就会带有回退操作
editor.registerCommand(uiName,{
execCommand:function(cmdName,value){
//这里借用fontsize的命令
this.execCommand('fontsize',value + 'px')
},
queryCommandValue:function(){
//这里借用fontsize的查询命令
return this.queryCommandValue('fontsize')
}
});
//创建下拉菜单中的键值对,这里我用字体大小作为例子
var items = [];
for(var i= 0,ci;ci=[10, 11, 12, 14, 16, 18, 20, 24, 36][i++];){
items.push({
//显示的条目
label:'字体:' + ci + 'px',
//选中条目后的返回值
value:ci,
//针对每个条目进行特殊的渲染
renderLabelHtml:function () {
//这个是希望每个条目的字体是不同的
return '<div class="edui-label %%-label" style="line-height:2;font-size:' +
this.value + 'px;">' + (this.label || '') + '</div>';
}
});
}
//创建下来框
var combox = new UE.ui.Combox({
//需要指定当前的编辑器实例
editor:editor,
//添加条目
items:items,
//当选中时要做的事情
onselect:function (t, index) {
//拿到选中条目的值
editor.execCommand(uiName, this.items[index].value);
},
//提示
title:uiName,
//当编辑器没有焦点时,combox默认显示的内容
initValue:uiName
});
editor.addListener('selectionchange', function (type, causeByUi, uiReady) {
if (!uiReady) {
var state = editor.queryCommandState(uiName);
if (state == -1) {
combox.setDisabled(true);
} else {
combox.setDisabled(false);
var value = editor.queryCommandValue(uiName);
if(!value){
combox.setValue(uiName);
return;
}
//ie下从源码模式切换回来时,字体会带单引号,而且会有逗号
value && (value = value.replace(/['"]/g, '').split(',')[0]);
combox.setValue(value);
}
}
});
return combox;
},2/*index 指定添加到工具栏上的那个位置,默认时追加到最后,editorId 指定这个UI是那个编辑器实例上的,默认是页面上所有的编辑器都会添加这个按钮*/);
================================================
FILE: DjangoUeditor/static/ueditor/_examples/addCustomizeDialog.js
================================================
UE.registerUI('dialog',function(editor,uiName){
//创建dialog
var dialog = new UE.ui.Dialog({
//指定弹出层中页面的路径,这里只能支持页面,因为跟addCustomizeDialog.js相同目录,所以无需加路径
iframeUrl:'customizeDialogPage.html',
//需要指定当前的编辑器实例
editor:editor,
//指定dialog的名字
name:uiName,
//dialog的标题
title:"这是个测试浮层",
//指定dialog的外围样式
cssRules:"width:600px;height:300px;",
//如果给出了buttons就代表dialog有确定和取消
buttons:[
{
className:'edui-okbutton',
label:'确定',
onclick:function () {
dialog.close(true);
}
},
{
className:'edui-cancelbutton',
label:'取消',
onclick:function () {
dialog.close(false);
}
}
]});
//参考addCustomizeButton.js
var btn = new UE.ui.Button({
name:'dialogbutton' + uiName,
title:'dialogbutton' + uiName,
//需要添加的额外样式,指定icon图标,这里默认使用一个重复的icon
cssRules :'background-position: -500px 0;',
onclick:function () {
//渲染dialog
dialog.render();
dialog.open();
}
});
return btn;
}/*index 指定添加到工具栏上的那个位置,默认时追加到最后,editorId 指定这个UI是那个编辑器实例上的,默认是页面上所有的编辑器都会添加这个按钮*/);
================================================
FILE: DjangoUeditor/static/ueditor/_examples/charts.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<title>图表demo</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败-->
<!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文-->
<script type="text/javascript" charset="utf-8" src="../lang/zh-cn/zh-cn.js"></script>
<style type="text/css">
.clear {
clear: both;
}
</style>
</head>
<body>
<div>
<script id="editor" type="text/plain" style="width:1024px;height:500px;">
<h1>测试图表请点击表格, 然后点击工具栏上的“图表”按钮</h1>
<table data-chart="title:2012北京房价趋势图;subTitle:;xTitle:月份;yTitle:金额(元);suffix:元;tip:;dataFormat:1;chartType:0">
<tbody>
<tr>
<th width="90"><br></th>
<th width="90">1月</th>
<th width="90">2月</th>
<th width="90">3月</th>
<th width="90">4月</th>
<th width="90">5月</th>
<th width="90">6月</th>
<th width="90">7月</th>
<th width="90">8月</th>
<th width="90">9月</th>
<th width="91">10月</th>
<th>11月</th>
<th>12月</th>
</tr>
<tr>
<th valign="null" width="90">2012</th>
<td valign="top" width="55">24593</td>
<td valign="top" width="55">24308</td>
<td valign="top" width="55">24932</td>
<td valign="top" width="55">25413</td>
<td valign="top" width="55">25588</td>
<td valign="top" width="55">25948</td>
<td valign="top" width="55">26579</td>
<td valign="top" width="55">27199</td>
<td valign="top" width="55">28392</td>
<td valign="top" width="55">29071</td>
<td valign="top" width="55">29522</td>
<td valign="top" width="55">30158</td>
</tr>
</tbody>
</table>
</script>
</div>
<script type="text/javascript">
//实例化编辑器
var ue = UE.getEditor('editor', {
toolbars: [
[
'charts', 'preview'
]
]
});
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/completeDemo.html
================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>完整demo</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"> </script>
<!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败-->
<!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文-->
<script type="text/javascript" charset="utf-8" src="../lang/zh-cn/zh-cn.js"></script>
<style type="text/css">
div{
width:100%;
}
</style>
</head>
<body>
<div>
<h1>完整demo</h1>
<script id="editor" type="text/plain" style="width:1024px;height:500px;"></script>
</div>
<div id="btns">
<div>
<button onclick="getAllHtml()">获得整个html的内容</button>
<button onclick="getContent()">获得内容</button>
<button onclick="setContent()">写入内容</button>
<button onclick="setContent(true)">追加内容</button>
<button onclick="getContentTxt()">获得纯文本</button>
<button onclick="getPlainTxt()">获得带格式的纯文本</button>
<button onclick="hasContent()">判断是否有内容</button>
<button onclick="setFocus()">使编辑器获得焦点</button>
<button onmousedown="isFocus(event)">编辑器是否获得焦点</button>
<button onmousedown="setblur(event)" >编辑器失去焦点</button>
</div>
<div>
<button onclick="getText()">获得当前选中的文本</button>
<button onclick="insertHtml()">插入给定的内容</button>
<button id="enable" onclick="setEnabled()">可以编辑</button>
<button onclick="setDisabled()">不可编辑</button>
<button onclick=" UE.getEditor('editor').setHide()">隐藏编辑器</button>
<button onclick=" UE.getEditor('editor').setShow()">显示编辑器</button>
<button onclick=" UE.getEditor('editor').setHeight(300)">设置高度为300默认关闭了自动长高</button>
</div>
<div>
<button onclick="getLocalData()" >获取草稿箱内容</button>
<button onclick="clearLocalData()" >清空草稿箱</button>
</div>
</div>
<div>
<button onclick="createEditor()">
创建编辑器</button>
<button onclick="deleteEditor()">
删除编辑器</button>
</div>
<script type="text/javascript">
//实例化编辑器
//建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例
var ue = UE.getEditor('editor');
function isFocus(e){
alert(UE.getEditor('editor').isFocus());
UE.dom.domUtils.preventDefault(e)
}
function setblur(e){
UE.getEditor('editor').blur();
UE.dom.domUtils.preventDefault(e)
}
function insertHtml() {
var value = prompt('插入html代码', '');
UE.getEditor('editor').execCommand('insertHtml', value)
}
function createEditor() {
enableBtn();
UE.getEditor('editor');
}
function getAllHtml() {
alert(UE.getEditor('editor').getAllHtml())
}
function getContent() {
var arr = [];
arr.push("使用editor.getContent()方法可以获得编辑器的内容");
arr.push("内容为:");
arr.push(UE.getEditor('editor').getContent());
alert(arr.join("\n"));
}
function getPlainTxt() {
var arr = [];
arr.push("使用editor.getPlainTxt()方法可以获得编辑器的带格式的纯文本内容");
arr.push("内容为:");
arr.push(UE.getEditor('editor').getPlainTxt());
alert(arr.join('\n'))
}
function setContent(isAppendTo) {
var arr = [];
arr.push("使用editor.setContent('欢迎使用ueditor')方法可以设置编辑器的内容");
UE.getEditor('editor').setContent('欢迎使用ueditor', isAppendTo);
alert(arr.join("\n"));
}
function setDisabled() {
UE.getEditor('editor').setDisabled('fullscreen');
disableBtn("enable");
}
function setEnabled() {
UE.getEditor('editor').setEnabled();
enableBtn();
}
function getText() {
//当你点击按钮时编辑区域已经失去了焦点,如果直接用getText将不会得到内容,所以要在选回来,然后取得内容
var range = UE.getEditor('editor').selection.getRange();
range.select();
var txt = UE.getEditor('editor').selection.getText();
alert(txt)
}
function getContentTxt() {
var arr = [];
arr.push("使用editor.getContentTxt()方法可以获得编辑器的纯文本内容");
arr.push("编辑器的纯文本内容为:");
arr.push(UE.getEditor('editor').getContentTxt());
alert(arr.join("\n"));
}
function hasContent() {
var arr = [];
arr.push("使用editor.hasContents()方法判断编辑器里是否有内容");
arr.push("判断结果为:");
arr.push(UE.getEditor('editor').hasContents());
alert(arr.join("\n"));
}
function setFocus() {
UE.getEditor('editor').focus();
}
function deleteEditor() {
disableBtn();
UE.getEditor('editor').destroy();
}
function disableBtn(str) {
var div = document.getElementById('btns');
var btns = UE.dom.domUtils.getElementsByTagName(div, "button");
for (var i = 0, btn; btn = btns[i++];) {
if (btn.id == str) {
UE.dom.domUtils.removeAttributes(btn, ["disabled"]);
} else {
btn.setAttribute("disabled", "true");
}
}
}
function enableBtn() {
var div = document.getElementById('btns');
var btns = UE.dom.domUtils.getElementsByTagName(div, "button");
for (var i = 0, btn; btn = btns[i++];) {
UE.dom.domUtils.removeAttributes(btn, ["disabled"]);
}
}
function getLocalData () {
alert(UE.getEditor('editor').execCommand( "getlocaldata" ));
}
function clearLocalData () {
UE.getEditor('editor').execCommand( "clearlocaldata" );
alert("已清空草稿箱")
}
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/customPluginDemo.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title></title>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
</head>
<body>
<h1>UEditor自定义插件</h1>
<!--style给定宽度可以影响编辑器的最终宽度-->
<script type="text/plain" id="myEditor">
<p><img src="http://ueditor.baidu.com/website/images/banner-dl.png" alt=""></p>
<p>插件描述:选中图片,在其上单击,会改变图片的边框!</p>
</script>
<script type="text/javascript">
//创建一个在选中的图片单击时添加边框的插件,其实质就是在baidu.editor.plugins塞进一个闭包
UE.plugins["addborder"] = function () {
var me = this;
//创建一个改变图片边框的命令
me.commands["addborder"] = {
execCommand:function () {
//获取当前选区
var range = me.selection.getRange();
//选区没闭合的情况下操作
if ( !range.collapsed ) {
//图片判断
var img = range.getClosedNode();
if ( img && img.tagName == "IMG" ) {
//点击切换图片边框
img.style.border = img.style.borderWidth == "5px"?"1px":"5px solid red";
}
}
}
};
//注册一个触发命令的事件,同学们可以在任意地放绑定触发此命令的事件
me.addListener( 'click', function () {
setTimeout(function(){
me.execCommand( "addborder" );
})
} );
};
var editor_a = UE.getEditor('myEditor' );
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/customToolbarDemo.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title></title>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<style type="text/css">
#editor {
border: 1px solid #CCC;
width: 1000px
}
#editor_toolbar_box {
background: #F0F0EE;
padding: 2px;
}
#editor_iframe_holder {
border-top: 1px solid #CCC;
border-bottom: 1px solid #CCC;
}
</style>
</head>
<body>
<h1>UEditor自定义toolbar</h1>
<div id="editor">
<div id="editor_toolbar_box">
<div id="editor_toolbar">
<input id="bold" type="button" value="加粗" onclick="myeditor.execCommand('bold')" style="height:24px;line-height:20px"/>
<input id="italic" type="button" value="加斜" onclick="myeditor.execCommand('italic')" style="height:24px;line-height:20px"/>
<select id="fontfamily" onchange="myeditor.execCommand('fontfamily',this.value)">
<option value="宋体,simsun">宋体</option>
<option value="楷体,楷体_gb2312,simkai">楷体</option>
<option value="隶书,simli">隶书</option>
<option value="黑体,simhei">黑体</option>
<option value="andale mono,times">andale mono</option>
<option value="arial,helvetica,sans-serif">arial</option>
<option value="arial black,avant garde">arial black</option>
<option value="comic sans ms,sans-serif">comic sans ms</option>
</select>
<select id="fontsize" onchange="myeditor.execCommand('fontsize',this.value)">
<option value="10pt">10pt</option>
<option value="11pt">11pt</option>
<option value="12pt">12pt</option>
<option value="14pt">14pt</option>
<option value="16pt">16pt</option>
<option value="18pt">18pt</option>
<option value="20pt">20pt</option>
<option value="22pt">22pt</option>
<option value="24pt">24pt</option>
<option value="36pt">36pt</option>
</select>
<input type="button" value="插入html" onclick="insert()" style="height:24px;line-height:20px"/>
<input type="button" value="清除格式" onclick="myeditor.execCommand('removeformat')" style="height:24px;line-height:20px"/>
<input type="button" value="获得编辑器内容" onclick="alert(myeditor.getContent())" style="height:24px;line-height:20px"/>
<input type="button" value="获得编辑器纯文本内容" onclick="alert(myeditor.getContentTxt())" style="height:24px;line-height:20px"/>
</div>
</div>
<div id="editor_iframe_holder" ></div>
</div>
<script type="text/javascript" charset="utf-8">
function $G(id){
return document.getElementById(id);
}
//实例化一个不带ui的编辑器,注意此处的实例化对象是baidu.editor下的Editor,而非baidu.editor.ui下的Editor
var myeditor = UE.getEditor('editor_iframe_holder',{
toolbars:[[]],
initialContent: '初始化内容',//初始化编辑器的内容
initialFrameHeight: 200
});
//给编辑器增加一个选中改变的事件,用来判断所选内容以及状态
myeditor.addListener('selectionchange', function (){
var cmdName = ['bold','italic'],//命令列表
fontName = ['fontfamily','fontsize'];//字体设置下拉框列表,此处选择其中两个
//查询每个命令当前的状态,并设置对应状态样式
var i =-1;
while(i++ < cmdName.length-1){
var state = myeditor.queryCommandState(cmdName[i]);
$G(cmdName[i]).style.color = state == 1?"red":"";
}
//依据当前光标所在的字体改变下拉列表的选中值
i = -1;
while(i++<fontName.length-1){
var fstate = myeditor.queryCommandValue(fontName[i]).toLowerCase();
var fselect = $G(fontName[i]);
for(var j= 0;j<fselect.options.length;j++){
if(fselect.options[j].value.toLowerCase().indexOf(fstate.split(",")[0])!=-1){
fselect.options[j].selected = "true";
}
}
}
});
//插入文本
function insert(){
var insertTxt = "插入的文本";
insertTxt = prompt("插入的内容",insertTxt);
insertTxt&&myeditor.execCommand("inserthtml",insertTxt);
}
function execUnderline(cmd){
myeditor.execCommand(cmd);
}
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/customizeDialogPage.html
================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<div class="content">
<h1>测试页面</h1>
</div>
<!--页面中一定要引入internal.js为了能直接使用当前打开dialog的实例变量-->
<!--internal.js默认是放到dialogs目录下的-->
<script type="text/javascript" src="../dialogs/internal.js"></script>
<script>
//可以直接使用以下全局变量
//当前打开dialog的实例变量
alert('editor: '+editor);
//一些常用工具
alert('domUtils: '+domUtils);
alert('utils: '+utils);
alert('browser: '+browser);
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/customizeToolbarUIDemo.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<title>完整demo</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"> </script>
<!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败-->
<!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文-->
<script type="text/javascript" charset="utf-8" src="../lang/zh-cn/zh-cn.js"></script>
<!--添加按钮-->
<script type="text/javascript" charset="utf-8" src="addCustomizeButton.js"></script>
<!--添加下拉菜单-->
<script type="text/javascript" charset="utf-8" src="addCustomizeCombox.js"></script>
<!--添加弹出层-->
<script type="text/javascript" charset="utf-8" src="addCustomizeDialog.js"></script>
<style type="text/css">
.clear {
clear: both;
}
div{
width:100%;
}
</style>
</head>
<body>
<div>
<h1>二次开发demo</h1>
<script id="editor" type="text/plain" style="width:1024px;height:500px;"></script>
</div>
</body>
<script type="text/javascript">
//实例化编辑器
//建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例
UE.getEditor('editor',{
//清空了工具栏
toolbars:[[]]
})
</script>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/editor_api.js
================================================
/**
* 开发版本的文件导入
*/
(function (){
var paths = [
'editor.js',
'core/browser.js',
'core/utils.js',
'core/EventBase.js',
'core/dtd.js',
'core/domUtils.js',
'core/Range.js',
'core/Selection.js',
'core/Editor.js',
'core/Editor.defaultoptions.js',
'core/loadconfig.js',
'core/ajax.js',
'core/filterword.js',
'core/node.js',
'core/htmlparser.js',
'core/filternode.js',
'core/plugin.js',
'core/keymap.js',
'core/localstorage.js',
'plugins/defaultfilter.js',
'plugins/inserthtml.js',
'plugins/autotypeset.js',
'plugins/autosubmit.js',
'plugins/background.js',
'plugins/image.js',
'plugins/justify.js',
'plugins/font.js',
'plugins/link.js',
'plugins/iframe.js',
'plugins/scrawl.js',
'plugins/removeformat.js',
'plugins/blockquote.js',
'plugins/convertcase.js',
'plugins/indent.js',
'plugins/print.js',
'plugins/preview.js',
'plugins/selectall.js',
'plugins/paragraph.js',
'plugins/directionality.js',
'plugins/horizontal.js',
'plugins/time.js',
'plugins/rowspacing.js',
'plugins/lineheight.js',
'plugins/insertcode.js',
'plugins/cleardoc.js',
'plugins/anchor.js',
'plugins/wordcount.js',
'plugins/pagebreak.js',
'plugins/wordimage.js',
'plugins/dragdrop.js',
'plugins/undo.js',
'plugins/copy.js',
'plugins/paste.js',
'plugins/puretxtpaste.js',
'plugins/list.js',
'plugins/source.js',
'plugins/enterkey.js',
'plugins/keystrokes.js',
'plugins/fiximgclick.js',
'plugins/autolink.js',
'plugins/autoheight.js',
'plugins/autofloat.js',
'plugins/video.js',
'plugins/table.core.js',
'plugins/table.cmds.js',
'plugins/table.action.js',
'plugins/table.sort.js',
'plugins/contextmenu.js',
'plugins/shortcutmenu.js',
'plugins/basestyle.js',
'plugins/elementpath.js',
'plugins/formatmatch.js',
'plugins/searchreplace.js',
'plugins/customstyle.js',
'plugins/catchremoteimage.js',
'plugins/snapscreen.js',
'plugins/insertparagraph.js',
'plugins/webapp.js',
'plugins/template.js',
'plugins/music.js',
'plugins/autoupload.js',
'plugins/autosave.js',
'plugins/charts.js',
'plugins/section.js',
'plugins/simpleupload.js',
'plugins/serverparam.js',
'plugins/insertfile.js',
'ui/ui.js',
'ui/uiutils.js',
'ui/uibase.js',
'ui/separator.js',
'ui/mask.js',
'ui/popup.js',
'ui/colorpicker.js',
'ui/tablepicker.js',
'ui/stateful.js',
'ui/button.js',
'ui/splitbutton.js',
'ui/colorbutton.js',
'ui/tablebutton.js',
'ui/autotypesetpicker.js',
'ui/autotypesetbutton.js',
'ui/cellalignpicker.js',
'ui/pastepicker.js',
'ui/toolbar.js',
'ui/menu.js',
'ui/combox.js',
'ui/dialog.js',
'ui/menubutton.js',
'ui/multiMenu.js',
'ui/shortcutmenu.js',
'ui/breakline.js',
'ui/message.js',
'adapter/editorui.js',
'adapter/editor.js',
'adapter/message.js',
'adapter/autosave.js'
],
baseURL = '../_src/';
for (var i=0,pi;pi = paths[i++];) {
document.write('<script type="text/javascript" src="'+ baseURL + pi +'"></script>');
}
})();
================================================
FILE: DjangoUeditor/static/ueditor/_examples/filterRuleDemo.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<title>过滤规则定制化</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<style type="text/css">
.clear {
clear: both;
}
</style>
</head>
<body>
<p>尝试粘贴内容近来,这里边不能粘贴任何inline的样式,不能有iframe,style,script,embed等标签,表格不能嵌套</p>
<div>
<script id="editor" type="text/plain" style="width:500px;height:500px"></script>
</div>
</body>
<script type="text/javascript">
UE.getEditor('editor', {
filterRules: function () {
return{
span:function(node){
if(/Wingdings|Symbol/.test(node.getStyle('font-family'))){
return true;
}else{
node.parentNode.removeChild(node,true)
}
},
p: function(node){
var listTag;
if(node.getAttr('class') == 'MsoListParagraph'){
listTag = 'MsoListParagraph'
}
node.setAttr();
if(listTag){
node.setAttr('class','MsoListParagraph')
}
if(!node.firstChild()){
node.innerHTML(UE.browser.ie ? ' ' : '<br>')
}
},
div: function (node) {
var tmpNode, p = UE.uNode.createElement('p');
while (tmpNode = node.firstChild()) {
if (tmpNode.type == 'text' || !UE.dom.dtd.$block[tmpNode.tagName]) {
p.appendChild(tmpNode);
} else {
if (p.firstChild()) {
node.parentNode.insertBefore(p, node);
p = UE.uNode.createElement('p');
} else {
node.parentNode.insertBefore(tmpNode, node);
}
}
}
if (p.firstChild()) {
node.parentNode.insertBefore(p, node);
}
node.parentNode.removeChild(node);
},
//$:{}表示不保留任何属性
br: {$: {}},
// a: function (node) {
// if(!node.firstChild()){
// node.parentNode.removeChild(node);
// return;
// }
// node.setAttr();
// node.setAttr('href', '#')
// },
// strong: {$: {}},
// b:function(node){
// node.tagName = 'strong'
// },
// i:function(node){
// node.tagName = 'em'
// },
// em: {$: {}},
// img: function (node) {
// var src = node.getAttr('src');
// node.setAttr();
// node.setAttr({'src':src})
// },
ol:{$: {}},
ul: {$: {}},
dl:function(node){
node.tagName = 'ul';
node.setAttr()
},
dt:function(node){
node.tagName = 'li';
node.setAttr()
},
dd:function(node){
node.tagName = 'li';
node.setAttr()
},
li: function (node) {
var className = node.getAttr('class');
if (!className || !/list\-/.test(className)) {
node.setAttr()
}
var tmpNodes = node.getNodesByTagName('ol ul');
UE.utils.each(tmpNodes,function(n){
node.parentNode.insertAfter(n,node);
})
},
table: function (node) {
UE.utils.each(node.getNodesByTagName('table'), function (t) {
UE.utils.each(t.getNodesByTagName('tr'), function (tr) {
var p = UE.uNode.createElement('p'), child, html = [];
while (child = tr.firstChild()) {
html.push(child.innerHTML());
tr.removeChild(child);
}
p.innerHTML(html.join(' '));
t.parentNode.insertBefore(p, t);
})
t.parentNode.removeChild(t)
});
var val = node.getAttr('width');
node.setAttr();
if (val) {
node.setAttr('width', val);
}
},
tbody: {$: {}},
caption: {$: {}},
th: {$: {}},
td: {$: {valign: 1, align: 1,rowspan:1,colspan:1,width:1,height:1}},
tr: {$: {}},
h3: {$: {}},
h2: {$: {}},
//黑名单,以下标签及其子节点都会被过滤掉
'-': 'script style meta iframe embed object'
}
}()
});
</script>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/highlightDemo.html
================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title></title>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<!--加入高亮的js和css文件,如果你的编辑器和展示也是一个页面那么高亮的js可以不加载-->
<script type="text/javascript" charset="utf-8" src="../third-party/SyntaxHighlighter/shCore.js"></script>
<link rel="stylesheet" type="text/css" href="../third-party/SyntaxHighlighter/shCoreDefault.css"/>
</head>
<body>
<h1>代码高亮演示</h1>
<h2>获得编辑器实例</h2>
<div style="width:200px">
<pre class="brush:js;toolbar:false;">
UE.getEditor('myEditor');
</pre>
</div>
<!--style给定宽度可以影响编辑器的最终宽度-->
<script type="text/plain" id="myEditor" style="width:500px">
<h3>实例化编辑器</h3>
<pre class="brush:js;toolbar:false;">
UE.getEditor('myEditor');
</pre>
</script>
<script type="text/javascript">
//为了在编辑器之外能展示高亮代码
SyntaxHighlighter.highlight();
UE.getEditor('myEditor');
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/index.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
h3{
color:#630000;
}
ul li{
margin: 10px;
}
a:link,a:active,a:visited{
color: #0000EE;
}
a{
text-decoration: none;
}
</style>
</head>
<body>
<h2>UEditor各种实例演示</h2>
<h3>基础示例</h3>
<ul>
<li>
<a href="simpleDemo.html" target="_self">简单示例</a><br/>
使用基础的按钮实现简单的功能
</li>
</ul>
<h3>应用展示</h3>
<ul>
<li>
<a href="submitFormDemo.html" target="_self">表单应用</a><br/>
编辑器的内容通过表单提交到后台
</li>
<li>
<a href="resetDemo.html" target="_self">重置编辑器</a><br/>
将编辑器的内部变量清空,重置。
</li>
<li>
<a href="textareaDemo.html" target="_self">文本域渲染编辑器</a><br/>
将编辑器渲染到文本域,并且将文本域的内容放到编辑器的初始化内容里
</li>
</ul>
<h3>二次开发</h3>
<ul>
<li>
<a style="color:red;" href="customizeToolbarUIDemo.html" target="_self">二次开发例子</a><br/>
添加自定义的普通按钮、下拉菜单按钮、对话框按钮
</li>
<li>
<a href="customToolbarDemo.html" target="_self">自定义Toolbar</a><br/>
用自己的皮肤,设计自己的编辑器
</li>
<li>
<a href="customPluginDemo.html" target="_self">自定义插件</a><br/>
在编辑器的基础上开发自己的插件
</li>
</ul>
<h3>高级案例</h3>
<ul>
<li>
<a href="completeDemo.html" target="_self">完整示例</a><br/>
编辑器的完整功能
</li>
<li>
<a href="charts.html" target="_self" >图表示例</a><br/>
图表功能
</li>
<li>
<a href="sortableDemo.html" target="_self" >表格排序示例</a><br/>
编辑表格,并设置排序后可在展示区域点击排序
</li>
<li>
<a href="sectionDemo.html" target="_self" >目录大纲示例</a><br/>
获取编辑内容的目录大纲,并通过操作目录,更新编辑器内容
</li>
<li>
<a href="multiDemo.html" target="_self">多编辑器实例</a><br/>
一个页面实例化多个编辑器,互不影响
</li>
<li>
<a href="renderInTable.html" target="_self">在表格中渲染编辑器</a><br/>
表格中渲染编辑器
</li>
<li>
<a href="jqueryCompleteDemo.html" target="_self">jquery</a><br/>
jquery中使用编辑器
</li>
<li>
<a href="jqueryValidation.html" target="_self">jqueryValidation</a><br/>
编辑器在jqueryValidation中验证
</li>
<li>
<a href="uparsedemo.html" target="_self">展示页面uparse.js解析</a><br/>
通过调用uparse.js在展示页面中自动解析编辑内容
</li>
<li>
<a href="filterRuleDemo.html" target="_self">过滤规则定制化</a><br/>
通过配置filterRules可以定制黑白名单,过滤和转换你要的标签和属性
</li>
<li>
<a href="setWidthHeightDemo.html" target="_self">设置宽高</a><br/>
设置宽高的demo页面
</li>
<li>
<a href="multiEditorWithOneInstance.html" target="_self">多个编辑区使用一个编辑器实例</a><br/>
多个编辑区使用一个编辑器实例
</li>
</ul>
<script type="text/javascript">
var href = location.href;
if(href.indexOf("http") != 0 ){
alert("您当前尚未将UEditor部署到服务器环境,部分浏览器下所有弹出框功能的使用会受到限制!");
}
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/jqueryCompleteDemo.html
================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>使用jquery的完整demo</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js" charset=""></script>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script>
$(function(){
var ue = UE.getEditor('myEditor');
$('#btn').click(function(){
//手动提交需要手动同步编辑器数据
ue.sync();
$('#form')[0].submit();
});
//--自动切换提交地址----
var version = ue.options.serverUrl || ue.options.imageUrl || "php",
form=$('#form')[0];
if(version.match(/php/)){
form.action="./server/getContent.php";
}else if(version.match(/net/)){
form.action="./server/getContent.ashx";
}else if(version.match(/jsp/)){
form.action="./server/getContent.jsp";
}else if(version.match(/asp/)){
form.action="./server/getContent.asp";
}
})
</script>
</head>
<body>
<form id="form" method="post" target="_blank">
<script type="text/plain" id="myEditor" name="myEditor">
<p>欢迎使用UEditor!</p>
</script>
<input type="button" id="btn" value="提交数据">
</form>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/jqueryValidation.html
================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Ueditor在jquery validation下的验证</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script>
$(function(){
UE.getEditor('content');
var validator = $("#myform").submit(function() {
UE.getEditor('content').sync();
}).validate({
ignore: "",
rules: {
title: "required",
content: "required"
},
errorPlacement: function(label, element) {
label.insertAfter(element.is("textarea") ? element.next() : element);
}
});
validator.focusInvalid = function() {
if( this.settings.focusInvalid ) {
try {
var toFocus = $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []);
if (toFocus.is("textarea")) {
UE.getEditor('content').focus()
} else {
toFocus.filter(":visible").focus();
}
} catch(e) {
}
}
}
})
</script>
</head>
<body>
<form id="myform" action="">
<h3>Ueditor在jquery validation下的验证</h3>
<label>其他内容</label>
<input name="title" />
<br/>
<label>编辑器</label>
<textarea id="content" name="content" rows="15" cols="80" style="width: 80%"></textarea>
<br />
<input type="submit" name="save" value="Submit" />
</form>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/multiDemo.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title></title>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
</head>
<body>
<h1>UEditor多实例</h1>
<!--style给定宽度可以影响编辑器的最终宽度-->
<script type="text/plain" id="myEditor1" style="margin-bottom:100px;">
</script>
<script type="text/plain" id="myEditor2" style="margin-bottom:100px;">
<p>这里我可以写一些输入提示</p>
</script>
<script type="text/plain" id="myEditor3" style="margin-bottom:100px;">
</script>
<script type="text/javascript">
UE.getEditor('myEditor1', {
theme:"default", //皮肤
lang:'zh-cn' //语言
});
UE.getEditor('myEditor2', {
autoClearinitialContent:true, //focus时自动清空初始化时的内容
wordCount:false, //关闭字数统计
elementPathEnabled:false//关闭elementPath
});
UE.getEditor('myEditor3', {
//toolbars:[['FullScreen', 'Source', 'Undo', 'Redo','Bold']],//这里可以选择自己需要的工具按钮名称,此处仅选择如下五个
lang:"en"
//更多其他参数,请参考ueditor.config.js中的配置项
});
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/multiEditorWithOneInstance.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title></title>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js"></script>
<style>
table{margin-bottom:10px;border-collapse:collapse;display:table;border:1px dashed #ddd}
#test td{padding:5px;border: 1px solid #DDD;}
</style>
</head>
<body>
<h1>UEditor多编辑区域一个编辑器实例</h1>
<table id="test">
<tr>
<td width="10%">
编辑区域一
</td>
<td class="content" id="content1"><script id="editor1" type="text/plain" style="width:1024px;height:200px;">内容1</script></td>
</tr>
<tr>
<td>
编辑区域二
</td>
<td class="content" id="content2">内容2</td>
</tr>
<tr>
<td>
编辑区域三
</td>
<td class="content" id="content3">内容3</td>
</tr>
</table>
<script type="text/javascript">
var ue = UE.getEditor('editor1');
ue.ready(function(){
//阻止工具栏的点击向上冒泡
$(this.container).click(function(e){
e.stopPropagation()
})
});
$('.content').click(function(e){
var $target = $(this);
var content = $target.html();
var currentParnet = ue.container.parentNode.parentNode;
var currentContent = ue.getContent();
$target.html('');
$target.append(ue.container.parentNode);
ue.reset();
setTimeout(function(){
ue.setContent(content);
},200)
$(currentParnet).html(currentContent);
})
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/renderInTable.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<title>表格内实例化编辑器实例</title>
</head>
<body>
<div style="height: 100px"></div>
<div id="div" style="border: 1px solid #fff">
<table border="1">
<caption>表格标题</caption>
<tr><th>标题</th><th>内容</th></tr>
<!--编辑器实例化到表格内部时,请在对应的单元格上明确标注宽度值(百分数或者直接数均可),否则有可能在工具栏浮动等功能状态下出现移位-->
<tr>
<td>中国</td><td width="100%"><textarea id="editor"></textarea></td>
</tr>
</table>
</div>
<script type="text/javascript">
UE.getEditor('editor');
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/resetDemo.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>重置编辑器</title>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<style type="text/css">
#simple {
width: 1000px;
border: 1px solid #ddd;
}
</style>
</head>
<body>
<h2>重置编辑器和销毁编辑器示例</h2>
<div class="content" id="simple"></div>
<p><input type="button" onclick="simple()" value="重置编辑器内部参数"><span id="txt"></span></p>
<p><input id="destroy" type="button" onclick="destroy()" value="销毁编辑器"></p>
<script type="text/javascript" charset="utf-8">
var editor = UE.getEditor('simple');
function simple() {
if(editor){
editor.setContent("编辑器内部变量已经被重置!");
editor.reset();
}
}
function destroy(){
editor.destroy();
editor = null;
clearInterval(timer);
var button = document.getElementById("destroy");
button.value = "重新渲染";
button.onclick = function(){
editor = UE.getEditor('simple');
this.value="销毁编辑器";
this.onclick = destroy;
timer = setInterval( setMsg, 100 );
}
}
function setMsg() {
if(editor && editor.undoManger){
document.getElementById( "txt" ).innerHTML = "编辑器当前保存了 <span style='color: red'> " + editor.undoManger.list.length + " </span>次操作";
}
}
var timer = setInterval( setMsg, 100 );
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/sectiondemo.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<title>目录大纲demo</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<script type="text/javascript" charset="utf-8" src="../lang/zh-cn/zh-cn.js"></script>
<script type="text/javascript" charset="utf-8" src="../third-party/jquery-1.10.2.min.js"></script>
<style>
#directionContainer ul{
margin:0px;
padding: 0px 0px 0px 20px;
}
.main{
width:1024px;
}
.left{
width:250px;
height: 50px;
float:left;
margin-right:4px;
}
.right{
width:730px;
float:left;
}
#directionWrapper{
padding:15px 7px;
width:234px;
border:1px solid #CCC;
}
.directionTitle{
font-weight: bold;
font-size: 14px;
padding-bottom:3px;
border-bottom: 1px dashed #ccc;
}
.sectionItem{
height:20px;
padding: 4px;
}
.sectionItem span{
*zoom:1;
display:inline-block;
}
.itemTitle{
_float:left;
}
.selectIcon,.deleteIcon,.moveUp,.moveDown{
float:right;
color:red;
font-size:0px;
line-height: 20px;
height:20px;
text-align: center;
cursor: pointer;
}
.selectIcon,.moveUp,.moveDown{
width:14px;
font-size:10px;
}
.selectIcon:hover,.moveUp:hover,.moveDown:hover{
text-decoration: underline;
}
.deleteIcon{
width:20px;
margin-left:3px;
background: url(../themes/default/images/icons-all.gif) 0 -89px;
}
.fixTop{
position: fixed;
top: -1px;
}
</style>
</head>
<body>
<div class="main">
<h1>目录大纲demo</h1>
<div class="left">
<div id="directionWrapper">
<div class="directionTitle">目录:</div>
<div id="directionContainer"></div>
</div>
</div>
<div class="right">
<script id="editor" type="text/plain" style="width:730px;height:500px;">
<p style="text-indent: 2em;"><strong>UEditor</strong>是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量、可定制、用户体验优秀等特点。开源基于BSD协议,所有源代码在协议允许范围内可自由修改和使用。百度UEditor的推出,可以帮助不少网站开者在开发富文本编辑器所遇到的难题,节约开发者因开发富文本编辑器所需要的大量时间,有效降低了企业的开发成本。</p><h2>特点 </h2><p>UEditor在设计上采用了经典的分层架构设计理念,尽量做到功能层次之间的轻度耦合。具体来讲,整个系统分为了核心层、命令插件层和UI层这样三个低耦合的层次。</p><h2 index="3"> 应用领域 </h2> <h3 index="3_1"> 百度产品线 </h3><p>百度百科、百度空间、百度经验、百度旅游、百度知道、百度贴吧、百度新知</p><h3 index="3_2"> 其他公司产品 </h3><p>麦库记事、网易lofter</p><h2 index="4"> 更新记录 </h2> <h3 index="4_3"> 1.2.6.1版本 </h3> <h4> 新增功能 </h4> <ul class=" list-paddingleft-2" style="list-style-type: disc;"> <li> <p>查找替换支持正则表达式</p></li><li><p>增加类似word中的快捷菜单,默认关闭</p></li><li><p>针对默认过滤回转换div为p标签,提供了配置开关allowDivTransToP,默认为true</p></li><li><p>工具栏支持指定位置折行,'|'表示分割符,'||'表示折行</p></li> </ul> <h4> 优化修复 </h4> <ul class=" list-paddingleft-2" style="list-style-type: disc;"> <li> <p>修复了ie67下初始化宽高给定百分比</p></li><li><p>修复了在ie下删除分割线后光标定位的问题</p></li><li><p>提供了手动加载语言文件,避免ie下有时会因语言文件加载失败导致编辑器加载失败,提示"not import language file"的错误</p></li><li><p>优化了编辑器初始化时获得contentWindow可能不存在的情况</p></li><li><p>优化了编辑器加载自定义样式的问题,默认initialStyle传入的css样式优先级最高,其次是指定的外部css文件</p></li><li><p>表格操作功能升级,优化了对表格的拖拉及双击操作,并且支持IE6+浏览器</p></li><li><p>修复编辑器在禁用状态下仍然可以拖动表格边框的bug</p></li><li><p>修复了分割线不能删除的问题</p></li><li><p>修复了初始化内容过多时,编辑器不自动长高,要点击编辑器才会长高的问题</p></li><li><p>优化了添加字符边框的展示效果,避免出现重叠的问题</p></li><li><p>修复下拉菜单超出屏幕的bug</p></li><li><p>修复table属性初始化时table布局错误的bug</p></li><li><p>优化了选择工具栏上下拉菜单类型的操作命令时,选区会有闪动的问题</p></li><li><p>优化了关于swfupload的一个xss漏洞</p></li><li><p>优化了对于ie9,10的支持</p></li> </ul> <h3 index="4_5"> 1.2.5版本 </h3> <h4> 新增功能 </h4> <ul class=" list-paddingleft-2" style="list-style-type: disc;"> <li><p>table整体重构</p></li><li><p> table支持插入表头和标题</p></li><li><p> table支持拷贝</p></li><li><p> table支持任意调整宽高</p></li><li><p> ...</p></li> </ul> <h3 index="4_6"> 1.2.4版本 </h3> <h4> 新增功能 </h4> <ul class=" list-paddingleft-2" style="list-style-type: disc;"> <li><p>官网新增API文档</p></li><li><p> CSS按照UI结构进行了模块化拆分</p></li><li><p> 新增皮肤切换功能,并提供一套新皮肤(可通过配置项theme来设置)</p></li><li><p> ...</p></li> </ul> <h2 index="5"> 正式版 </h2> <h3 index="5_11"> 新增功能 </h3> <ul class=" list-paddingleft-2" style="list-style-type: disc;"> <li> <p>新增了编辑器路径的设置,可以不用手动设置路径,自动识别相关路径,解决路径设置繁琐的问题</p></li><li><p>重写了过滤粘贴机制,采用黑白名单,可以书写符合自己需求的过滤规则,可以完全定义标签的属性,甚至是style上的某个属性及其数值</p></li><li><p>数据同步改为失去焦点就执行,可以不再使用sync方法手动同步数据</p></li><li><p>改使用closure的压缩工具</p></li><li><p>表格支持排序和隔行显示</p></li><li><p>优化了undo/redo操作</p></li><li><p>优化了ui界面</p></li><li><p>添加了字体边框</p></li> </ul> <h3 index="5_12"> 优化修复 </h3> <ul class=" list-paddingleft-2" style="list-style-type: disc;"> <li> <p>优化了拖拽机制,处理浮动图片拖拽不能跟指定的某行对齐</p></li><li><p>优化了backspace/del键的操作</p></li><li><p>重写了插入代码功能,插入代码编写支持tab和回车键</p></li><li><p>列表粘贴优化,模仿word的列表粘贴</p></li><li><p>修复jsp后台8080端口,截屏插件返回错误的问题</p></li><li><p>修复firefox下编辑状态切换的问题</p></li><li><p>修复查找替换报错</p></li><li><p>修复表格新增行后宽度丢失问题</p></li><li><p>修复表格底纹和表格排序多语言配置遗漏</p></li><li><p>解决右键,粘贴,对话框内容报错</p></li><li><p>修复设置单元格颜色问题</p></li><li><p>优化大字号下的显示问题</p></li><li><p>解决IE下表格粘贴失效问题</p></li><li><p>修复选中内容设置成代码,出现多余字符的问题</p></li><li><p>修复从word粘贴内容到编辑器,过滤失效的问题</p></li><li><p>修复光标闭合,多次点击字符边框按钮,会出现多余的字符“font”的问题</p></li><li><p>修复字符边框效果错误的问题</p></li> <li><p>以及其他的一些问题.</p></li> </ul><p><br/></p>
</script>
</div>
</div>
</body>
<script type="text/javascript">
//实例化编辑器
var ue = UE.getEditor('editor');
ue.ready(function(){
ue.addListener('updateSections', resetHandler);
});
var resetHandler = function(){
var dirmap = {}, dir = ue.execCommand('getsections');
// 更新目录树
$('#directionContainer').html(traversal(dir) || null);
// 删除章节按钮
$('.deleteIcon').click(function(e){
var $target = $(this),
address = $target.parent().attr('data-address');
ue.execCommand('deletesection', dirmap[address]);
});
// 选中章节按钮
$('.selectIcon').click(function(e){
var $target = $(this),
address = $target.parent().attr('data-address');
ue.execCommand('selectsection', dirmap[address], true);
});
// 章节上移
$('.moveUp,.moveDown').click(function(e){
var $target = $(this),
address = $target.parent().attr('data-address'),
moveUp = $target.hasClass('moveUp') ? true:false;
if($target.hasClass('moveUp')) {
ue.execCommand('movesection', dirmap[address], dirmap[address].previousSection);
} else {
ue.execCommand('movesection', dirmap[address], dirmap[address].nextSection, true);
}
});
// 页面网上滚动时,让目录固定在顶部
$(window).scroll(function(e) {
if($('.left').offset().top < (document.body.scrollTop||document.documentElement.scrollTop)) {
$('#directionWrapper').addClass('fixTop');
} else {
$('#directionWrapper').removeClass('fixTop');
}
});
function traversal(section) {
var $list, $item, $itemContent, child, childList;
if(section.children.length) {
$list = $('<ul>');
for(var i = 0; i< section.children.length; i++) {
child = section.children[i];
//设置目录节点内容标签
var title = getSubStr(child['title'], 18);
$itemContent = $('<div class="sectionItem"></div>').html($('<span class="itemTitle">' + title + '</span>'));
$itemContent.attr('data-address', child['startAddress'].join(','));
$itemContent.append($('<span class="deleteIcon">删</span>' +
'<span class="selectIcon">选</span>' +
'<span class="moveUp">↑</span>' +
'<span class="moveDown">↓</span>'));
dirmap[child['startAddress'].join(',')] = child;
//设置目录节点容器标签
$item = $('<li>');
$item.append($itemContent);
//继续遍历子节点
if($item.children.length) {
childList = traversal(child);
childList && $item.append(childList);
}
$list.append($item);
}
}
return $list;
}
}
function getSubStr(s,l){
var i=0,len=0;
for(i;i<s.length;i++){
if(s.charAt(i).match(/[^\x00-\xff]/g)!=null){
len+=2;
}else{
len++;
}
if(len>l){ break; }
}return s.substr(0,i);
};
</script>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/server/getContent.ashx
================================================
<%@ WebHandler Language="C#" Class="getContent" %>
/**
* Created by visual studio 2010
* User: xuheng
* Date: 12-3-6
* Time: 下午21:23
* To get the value of editor and output the value .
*/
using System;
using System.Web;
public class getContent : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/html";
//获取数据
string content = context.Server.HtmlEncode(context.Request.Form["myEditor"]);
//存入数据库或者其他操作
//-------------
//显示
context.Response.Write("<script src='../ueditor.parse.js' type='text/javascript'></script>");
context.Response.Write(
"<script>uParse('.content',{"+
"'rootPath': '../'"+
"})"+
"</script>");
context.Response.Write("Content of First Editor: ");
context.Response.Write("<div class='content'>" + context.Server.HtmlDecode(content) + "</div>");
}
public bool IsReusable {
get {
return false;
}
}
}
================================================
FILE: DjangoUeditor/static/ueditor/_examples/server/getContent.asp
================================================
<% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script src="../../ueditor.parse.js" type="text/javascript"></script>
<script>
uParse('.content',{
'rootPath': '../'
})
</script>
<%
Dim content
content = Request.Form("myEditor")
Response.Write("第1个编辑器的值")
Response.Write("<div class='content'>" + content + "</div>")
%>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/server/getContent.jsp
================================================
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script src="../../ueditor.parse.js" type="text/javascript"></script>
<script>
uParse('.content',{
'rootPath': '../'
})
</script>
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String content = request.getParameter("myEditor");
response.getWriter().print("第1个编辑器的值");
response.getWriter().print("<div class='content'>"+content+"</div>");
%>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/server/getContent.php
================================================
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script src="../../ueditor.parse.js" type="text/javascript"></script>
<script>
uParse('.content',{
'rootPath': '../'
})
</script>
<?php
//获取数据
error_reporting(E_ERROR|E_WARNING);
$content = htmlspecialchars(stripslashes($_POST['myEditor']));
//存入数据库或者其他操作
//显示
echo "第1个编辑器的值";
echo "<div class='content'>".htmlspecialchars_decode($content)."</div>";
================================================
FILE: DjangoUeditor/static/ueditor/_examples/setWidthHeightDemo.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title></title>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败-->
<script type="text/javascript" charset="utf-8" src="../lang/zh-cn/zh-cn.js"></script>
</head>
<body>
<h1>UEditor设置宽高demo</h1>
<h2><span style="color:red">这里的宽高都只是编辑区域的宽高,不包括工具栏的高度和状态栏的高度</span></h2>
<h2>容器给定编辑器的宽高</h2>
<script type="text/plain" id="myEditor" style="width:500px;height:500px"></script>
<div style="clear:both"></div>
<h2>初始化时给定编辑器的宽高</h2>
<script type="text/plain" id="myEditor1" ></script>
<h2>没有工具栏的编辑器</h2>
<div id="myEditor2" style="width:700px;height:300px;border:1px solid #ccc"></div>
<script type="text/javascript">
//根据容器的宽高
//容器给定高度
UE.getEditor('myEditor');
UE.getEditor('myEditor1',{
initialFrameWidth : 600,
initialFrameHeight: 600
});
var noToolbar = new UE.Editor();
noToolbar.render('myEditor2',{
autoFloatEnabled : false
})
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/simpleDemo.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title></title>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
</head>
<body>
<h1>UEditor简单功能</h1>
<!--style给定宽度可以影响编辑器的最终宽度-->
<script type="text/plain" id="myEditor">
<p>这里我可以写一些输入提示</p>
</script>
<script type="text/javascript">
UE.getEditor('myEditor',{
//这里可以选择自己需要的工具按钮名称,此处仅选择如下五个
toolbars:[['FullScreen', 'Source', 'Undo', 'Redo','Bold','test']],
//focus时自动清空初始化时的内容
autoClearinitialContent:true,
//关闭字数统计
wordCount:false,
//关闭elementPath
elementPathEnabled:false,
//默认的编辑区域高度
initialFrameHeight:300
//更多其他参数,请参考ueditor.config.js中的配置项
})
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/sortableDemo.html
================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script src="../ueditor.parse.js" type="text/javascript"></script>
<title></title>
</head>
<body>
<h1>表格排序演示</h1>
<p>
<p>
<strong>默认排序方法有五种:</strong><br/>
reversecurrent : 逆序当前<br/>
orderbyasc : 按ASCII字符升序<br/>
reversebyasc : 按ASCII字符降序<br/>
orderbynum : 按数值大小升序<br/>
reversebynum : 按数值大小降序
</p>
<p>
<span style="font-size: 14px; color: rgb(127, 127, 127);">表格data-sort-type属性值为reversebynum,<span style="color:#ff511a; font-weight: bold;">按照数值大小降序排序</span>,点击第一行的单元格进行排序。</span>
</p>
<div id="content1" class="content">
<table data-sort="sortEnabled" width="992" class="sortEnabled" data-sort-type="reversebynum">
<tbody>
<tr class="firstRow"> <td width="165">343</td> <td width="165">352</td> <td width="165">323</td> <td width="165">234</td> <td width="165">379</td> <td width="166">782</td> </tr>
<tr> <td width="165">341</td> <td width="165">163</td> <td width="165">422</td> <td width="165">234</td> <td width="165">725</td> <td width="166">833</td> </tr>
<tr> <td width="165">221</td> <td width="165">456</td> <td width="165">335</td> <td width="165">423</td> <td width="165">445</td> <td width="166">793</td> </tr>
<tr> <td width="165">112</td> <td width="165">277</td> <td width="165">563</td> <td width="165">423</td> <td width="165">932</td> <td width="166">425</td> </tr>
<tr> <td width="165">587</td> <td width="165">175</td> <td width="165">159</td> <td width="165">734</td> <td width="165">582</td> <td width="166">458</td> </tr>
</tbody>
</table>
</div>
<p>
<br />
</p>
<p>
<span style="font-size: 14px; color: rgb(127, 127, 127);">自定义排序,<span style="color:#ff511a; font-weight: bold;">按照个位数排序</span>,点击第一行的单元格进行排序。</span>
</p>
<div id="content2" class="content">
<table data-sort="sortEnabled" width="992" class="sortEnabled">
<tbody>
<tr class="firstRow"> <td width="165">343</td> <td width="165">352</td> <td width="165">323</td> <td width="165">234</td> <td width="165">379</td> <td width="166">782</td> </tr>
<tr> <td width="165">341</td> <td width="165">163</td> <td width="165">422</td> <td width="165">234</td> <td width="165">725</td> <td width="166">833</td> </tr>
<tr> <td width="165">221</td> <td width="165">456</td> <td width="165">335</td> <td width="165">423</td> <td width="165">445</td> <td width="166">793</td> </tr>
<tr> <td width="165">112</td> <td width="165">277</td> <td width="165">563</td> <td width="165">423</td> <td width="165">932</td> <td width="166">425</td> </tr>
<tr> <td width="165">587</td> <td width="165">175</td> <td width="165">159</td> <td width="165">734</td> <td width="165">582</td> <td width="166">458</td> </tr>
</tbody>
</table>
</div>
<script>
// 语法
// uParse(selector,[option])
/*
selector支持
id,class,tagName
*/
/*
目前支持的参数
option:
highlightJsUrl 代码高亮相关js的路径 如果展示有代码高亮,必须给定该属性
highlightCssUrl 代码高亮相关css的路径 如果展示有代码高亮,必须给定该属性
liiconpath 自定义列表样式的图标路径,可以不给定,默认'http://bs.baidu.com/listicon/',
listDefaultPaddingLeft : 自定义列表样式的左边宽度 默认'20',
customRule 可以传入你自己的处理规则函数,函数第一个参数是容器节点
*/
uParse('#content1',{
rootPath : '../'
})
uParse('#content2',{
rootPath : '../',
tableSortCompareFn: function(td1, td2){
var value1 = td1.innerText||td1.textContent,
value2 = td2.innerText||td2.textContent;
return parseInt(value1) % 10 > parseInt(value2) % 10;
}
})
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/submitFormDemo.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title></title>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<style type="text/css">
body{
font-size:14px;
}
</style>
</head>
<body>
<h2>UEditor提交示例</h2>
<form id="form" method="post" target="_blank">
<script type="text/plain" id="myEditor" name="myEditor">
<p>欢迎使用UEditor!</p>
</script>
<input type="submit" value="通过input的submit提交">
</form>
<p>
从1.2.6开始,会自动同步数据无需再手动调用sync方法
<button onclick="document.getElementById('form').submit()">通过js调用submit提交</button>
</p>
<script type="text/javascript">
var editor_a = UE.getEditor('myEditor',{initialFrameHeight:500});
//--自动切换提交地址----
var doc=document,
version = editor_a.options.serverUrl || editor_a.options.imageUrl || "php",
form=doc.getElementById("form");
if(version.match(/php/)){
form.action="./server/getContent.php";
}else if(version.match(/net/)){
form.action="./server/getContent.ashx";
}else if(version.match(/jsp/)){
form.action="./server/getContent.jsp";
}else if(version.match(/asp/)){
form.action="./server/getContent.asp";
}
//-----
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/textareaDemo.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title></title>
<script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="editor_api.js"></script>
<style type="text/css">
#myEditor{
width: 500px;
height: 300px;
}
</style>
</head>
<body>
<h1>文本域渲染编辑器</h1>
<!--style给定宽度可以影响编辑器的最终宽度-->
<textarea id="myEditor">这里是原始的textarea中的内容,可以从数据中读取</textarea>
<br/>
<input type="button" onclick="render()" value="渲染编辑器">
<script type="text/javascript">
//渲染编辑器
function render(){
UE.getEditor('myEditor')
}
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/_examples/uparsedemo.html
================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script src="../ueditor.parse.js"></script>
<title></title>
</head>
<body>
<h1>解析编辑的内容</h1>
<div class="content" style="width:200px">
<ol class="custom_cn2 list-paddingleft-1"><li class="list-cn-3-1 list-cn2-paddingleft-1"><p>这里可以书写,编辑器的初始内容</p></li></ol><ul class="custom_dash list-paddingleft-1"><li class="list-dash list-dash-paddingleft"><p>sdfas</p></li></ul><ol class="custom_cn2 list-paddingleft-1"><ol style="list-style-type: decimal; " class=" list-paddingleft-3"><li><p>dfas</p></li></ol><li class="list-cn-3-1 list-cn2-paddingleft-1"><p>dfa</p></li><ol style="list-style-type: decimal; " class=" list-paddingleft-3"><li><p>sdfadf</p></li></ol></ol>
<p>
这里可以书写,编辑器的初始内容
</p>
<p>
<video class="video-js vjs-default-skin" data-setup="{}" controls preload="none" width="640" height="264"
src="http://video-js.zencoder.com/oceans-clip.mp4"
poster="http://video-js.zencoder.com/oceans-clip.png">
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4' />
</video>
</p>
<pre class="brush:js;toolbar:false;">
moveToBookmark:function (bookmark) {
var start = bookmark.id ? this.document.getElementById(bookmark.start) : bookmark.start,
end = bookmark.end && bookmark.id ? this.document.getElementById(bookmark.end) : bookmark.end;
this.setStartBefore(start);
domUtils.remove(start);
if (end) {
this.setEndBefore(end);
domUtils.remove(end);
} else {
this.collapse(true);
}
return this;
},
</pre>
<ol class="custom_cn2 list-paddingleft-1">
<li class="list-cn-3-1 list-cn2-paddingleft-1">
<p>
dfasdf
</p>
</li>
<li class="list-cn-3-2 list-cn2-paddingleft-1">
<p>
asd
</p>
</li>
<li class="list-cn-3-3 list-cn2-paddingleft-1">
<p>
fa
</p>
</li>
<li class="list-cn-3-4 list-cn2-paddingleft-1">
<p>
sdfa
</p>
</li>
<li class="list-cn-3-5 list-cn2-paddingleft-1">
<p>
sdfa
</p>
</li>
</ol>
</div>
<div id="content" class="content">
<table width="960">
<caption>
sdf<br />
</caption>
<tbody>
<tr>
<th valign="null">
sdf<br />
</th>
<th valign="null">
sdf<br />
</th>
<th valign="null">
<br />
</th>
<th valign="null">
<br />
</th>
<th valign="null">
<br />
</th>
<th valign="null">
<br />
</th>
<th valign="null">
<br />
</th>
</tr>
<tr>
<td width="116" valign="top">
<br />
</td>
<td width="116" valign="top">
<br />
</td>
<td width="116" valign="top">
<br />
</td>
<td width="116" valign="top">
<br />
</td>
<td width="116" valign="top">
<br />
</td>
<td width="116" valign="top">
<br />
</td>
<td width="116" valign="top">
<br />
</td>
</tr>
<tr>
<td width="116" valign="top">
<br />
</td>
<td width="116" valign="top">
<br />
</td>
<td width="116" valign="top">
<br />
</td>
<td width="116" valign="top">
<br />
</td>
<td width="116" valign="top">
<br />
</td>
<td width="116" valign="top">
<br />
</td>
<td width="116" valign="top">
<br />
</td>
</tr>
</tbody>
</table>
</div>
<div class="content_background">
<h1>
UEditor
</h1>
<h2>
简介
</h2>
<p>
UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量、可定制、用户体验优秀等特点。开源基于BSD协议,所有源代码在协议允许范围内可自由修改和使用。百度UEditor的推出,可以帮助不少网站开者在开发富文本编辑器所遇到的难题,节约开发者因开发富文本编辑器所需要的大量时间,有效降低了企业的开发成本。
</p>
<h2>
特点<br/>
</h2>
<p>
1、核心层提供了编辑器底层的一些方法和概念,如DOM树操作、Selection、Range等。
</p>
<p>
2、在核心层之上覆盖的是命令插件层。之所以叫命令插件层,是因为UEditor中所有的功能型实现都是通过这一层中的命令和插件来完成的,并且各个命令和插件之间基本互不耦合——使用者需要使用哪个功能就导入哪个功能对应的命令或者插件文件,完全不用考虑另外那些杂七杂八的JS文件(极少数插件除外,关于这些插件下文会整理出一个依赖列表来供同学们参考)。
</p>
<p>
理论上来讲,所有的命令都是可以用插件来代替的,但是依然将两者分开的主要原因是命令都是一些静态的方法,无需随editor实例初始化,从而优化了编辑器的性能。而插件随编辑器的初始化而初始化,性能上会有少许的影响,但相比命令而言,插件能够完成更加复杂的功能。其中最主要的一个特点是在插件内部既可以为编辑器注册命令,也可以为编辑器绑定监听事件。这个特点使得为编辑器添加任何功能都可以在插件中独立完成。
</p>
<p>
3、在命令插件层之上则是UI层。UEditor的UI设计与核心层和命令插件层几乎完全解耦,简单的几个配置就可以为编辑器在界面上添加额外的UI元素和功能,具体的配置下面将会深入阐述。
</p>
<p>
<br/>
</p>
<p style="display:none;" data-background="background-repeat:no-repeat;background-position:center center;background-color:#C3D69B;background-image:url(http://www.baidu.com/img/bdlogo.gif);">
<br/>
</p>
</div>
<script>
// 语法
// uParse(selector,[option])
/*
selector支持
id,class,tagName
*/
/*
目前支持的参数
option:
highlightJsUrl 代码高亮相关js的路径 如果展示有代码高亮,必须给定该属性
highlightCssUrl 代码高亮相关css的路径 如果展示有代码高亮,必须给定该属性
liiconpath 自定义列表样式的图标路径,可以不给定,默认'http://bs.baidu.com/listicon/',
listDefaultPaddingLeft : 自定义列表样式的左边宽度 默认'20',
customRule 可以传入你自己的处理规则函数,函数第一个参数是容器节点
*/
uParse('.content',{
rootPath : '../'
})
uParse('.content_background',{
rootPath : '../'
})
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/dialogs/anchor/anchor.html
================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
*{color: #838383;margin: 0;padding: 0}
html,body {font-size: 12px;overflow: hidden; }
.content{padding:5px 0 0 15px;}
input{width:210px;height:21px;line-height:21px;margin-left: 4px;}
</style>
</head>
<body>
<div class="content">
<span><var id="lang_input_anchorName"></var></span><input id="anchorName" value="" />
</div>
<script type="text/javascript" src="../internal.js"></script>
<script type="text/javascript">
var anchorInput = $G('anchorName'),
node = editor.selection.getRange().getClosedNode();
if(node && node.tagName == 'IMG' && (node = node.getAttribute('anchorname'))){
anchorInput.value = node;
}
anchorInput.onkeydown = function(evt){
evt = evt || window.event;
if(evt.keyCode == 13){
editor.execCommand('anchor', anchorInput.value);
dialog.close();
domUtils.preventDefault(evt)
}
};
dialog.onok = function (){
editor.execCommand('anchor', anchorInput.value);
dialog.close();
};
$focus(anchorInput);
</script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/dialogs/attachment/attachment.css
================================================
@charset "utf-8";
/* dialog样式 */
.wrapper {
zoom: 1;
width: 630px;
*width: 626px;
height: 380px;
margin: 0 auto;
padding: 10px;
position: relative;
font-family: sans-serif;
}
/*tab样式框大小*/
.tabhead {
float:left;
}
.tabbody {
width: 100%;
height: 346px;
position: relative;
clear: both;
}
.tabbody .panel {
position: absolute;
width: 0;
height: 0;
background: #fff;
overflow: hidden;
display: none;
}
.tabbody .panel.focus {
width: 100%;
height: 346px;
display: block;
}
/* 上传附件 */
.tabbody #upload.panel {
width: 0;
height: 0;
overflow: hidden;
position: absolute !important;
clip: rect(1px, 1px, 1px, 1px);
background: #fff;
display: block;
}
.tabbody #upload.panel.focus {
width: 100%;
height: 346px;
display: block;
clip: auto;
}
#upload .queueList {
margin: 0;
width: 100%;
height: 100%;
position: absolute;
overflow: hidden;
}
#upload p {
margin: 0;
}
.element-invisible {
width: 0 !important;
height: 0 !important;
border: 0;
padding: 0;
margin: 0;
overflow: hidden;
position: absolute !important;
clip: rect(1px, 1px, 1px, 1px);
}
#upload .placeholder {
margin: 10px;
border: 2px dashed #e6e6e6;
*border: 0px dashed #e6e6e6;
height: 172px;
padding-top: 150px;
text-align: center;
background: url(./images/image.png) center 70px no-repeat;
color: #cccccc;
font-size: 18px;
position: relative;
top:0;
*top: 10px;
}
#upload .placeholder .webuploader-pick {
font-size: 18px;
background: #00b7ee;
border-radius: 3px;
line-height: 44px;
padding: 0 30px;
*width: 120px;
color: #fff;
display: inline-block;
margin: 0 auto 20px auto;
cursor: pointer;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
}
#upload .placeholder .webuploader-pick-hover {
background: #00a2d4;
}
#filePickerContainer {
text-align: center;
}
#upload .placeholder .flashTip {
color: #666666;
font-size: 12px;
position: absolute;
width: 100%;
text-align: center;
bottom: 20px;
}
#upload .placeholder .flashTip a {
color: #0785d1;
text-decoration: none;
}
#upload .placeholder .flashTip a:hover {
text-decoration: underline;
}
#upload .placeholder.webuploader-dnd-over {
border-color: #999999;
}
#upload .filelist {
list-style: none;
margin: 0;
padding: 0;
overflow-x: hidden;
overflow-y: auto;
position: relative;
height: 300px;
}
#upload .filelist:after {
content: '';
display: block;
width: 0;
height: 0;
overflow: hidden;
clear: both;
}
#upload .filelist li {
width: 113px;
height: 113px;
background: url(./images/bg.png);
text-align: center;
margin: 9px 0 0 9px;
*margin: 6px 0 0 6px;
position: relative;
display: block;
float: left;
overflow: hidden;
font-size: 12px;
}
#upload .filelist li p.log {
position: relative;
top: -45px;
}
#upload .filelist li p.title {
position: absolute;
top: 0;
left: 0;
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
top: 5px;
text-indent: 5px;
text-align: left;
}
#upload .filelist li p.progress {
position: absolute;
width: 100%;
bottom: 0;
left: 0;
height: 8px;
overflow: hidden;
z-index: 50;
margin: 0;
border-radius: 0;
background: none;
-webkit-box-shadow: 0 0 0;
}
#upload .filelist li p.progress span {
display: none;
overflow: hidden;
width: 0;
height: 100%;
background: #1483d8 url(./images/progress.png) repeat-x;
-webit-transition: width 200ms linear;
-moz-transition: width 200ms linear;
-o-transition: width 200ms linear;
-ms-transition: width 200ms linear;
transition: width 200ms linear;
-webkit-animation: progressmove 2s linear infinite;
-moz-animation: progressmove 2s linear infinite;
-o-animation: progressmove 2s linear infinite;
-ms-animation: progressmove 2s linear infinite;
animation: progressmove 2s linear infinite;
-webkit-transform: translateZ(0);
}
@-webkit-keyframes progressmove {
0% {
background-position: 0 0;
}
100% {
background-position: 17px 0;
}
}
@-moz-keyframes progressmove {
0% {
background-position: 0 0;
}
100% {
background-position: 17px 0;
}
}
@keyframes progressmove {
0% {
background-position: 0 0;
}
100% {
background-position: 17px 0;
}
}
#upload .filelist li p.imgWrap {
position: relative;
z-index: 2;
line-height: 113px;
vertical-align: middle;
overflow: hidden;
width: 113px;
height: 113px;
-webkit-transform-origin: 50% 50%;
-moz-transform-origin: 50% 50%;
-o-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
transform-origin: 50% 50%;
-webit-transition: 200ms ease-out;
-moz-transition: 200ms ease-out;
-o-transition: 200ms ease-out;
-ms-transition: 200ms ease-out;
transition: 200ms ease-out;
}
#upload .filelist li p.imgWrap.notimage {
margin-top: 0;
width: 111px;
height: 111px;
border: 1px #eeeeee solid;
}
#upload .filelist li p.imgWrap.notimage i.file-preview {
margin-top: 15px;
}
#upload .filelist li img {
width: 100%;
}
#upload .filelist li p.error {
background: #f43838;
color: #fff;
position: absolute;
bottom: 0;
left: 0;
height: 28px;
line-height: 28px;
width: 100%;
z-index: 100;
display:none;
}
#upload .filelist li .success {
display: block;
position: absolute;
left: 0;
bottom: 0;
height: 40px;
width: 100%;
z-index: 200;
background: url(./images/success.png) no-repeat right bottom;
background-image: url(./images/success.gif) \9;
}
#upload .filelist li.filePickerBlock {
width: 113px;
height: 113px;
background: url(./images/image.png) no-repeat center 12px;
border: 1px solid #eeeeee;
border-radius: 0;
}
#upload .filelist li.filePickerBlock div.webuploader-pick {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
opacity: 0;
background: none;
font-size: 0;
}
#upload .filelist div.file-panel {
position: absolute;
height: 0;
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#80000000', endColorstr='#80000000') \0;
background: rgba(0, 0, 0, 0.5);
width: 100%;
top: 0;
left: 0;
overflow: hidden;
z-index: 300;
}
#upload .filelist div.file-panel span {
width: 24px;
height: 24px;
display: inline;
float: right;
text-indent: -9999px;
overflow: hidden;
background: url(./images/icons.png) no-repeat;
background: url(./images/icons.gif) no-repeat \9;
margin: 5px 1px 1px;
cursor: pointer;
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#upload .filelist div.file-panel span.rotateLeft {
display:none;
background-position: 0 -24px;
}
#upload .filelist div.file-panel span.rotateLeft:hover {
background-position: 0 0;
}
#upload .filelist div.file-panel span.rotateRight {
display:none;
background-position: -24px -24px;
}
#upload .filelist div.file-panel span.rotateRight:hover {
background-position: -24px 0;
}
#upload .filelist div.file-panel span.cancel {
background-position: -48px -24px;
}
#upload .filelist div.file-panel span.cancel:hover {
background-position: -48px 0;
}
#upload .statusBar {
height: 45px;
border-bottom: 1px solid #dadada;
margin: 0 10px;
padding: 0;
line-height: 45px;
vertical-align: middle;
position: relative;
}
#upload .statusBar .progress {
border: 1px solid #1483d8;
width: 198px;
background: #fff;
height: 18px;
position: absolute;
top: 12px;
display: none;
text-align: center;
line-height: 18px;
color: #6dbfff;
margin: 0 10px 0 0;
}
#upload .statusBar .progress span.percentage {
width: 0;
height: 100%;
left: 0;
top: 0;
background: #1483d8;
position: absolute;
}
#upload .statusBar .progress span.text {
position: relative;
z-index: 10;
}
#upload .statusBar .info {
display: inline-block;
font-size: 14px;
color: #666666;
}
#upload .statusBar .btns {
position: absolute;
top: 7px;
right: 0;
line-height: 30px;
}
#filePickerBtn {
display: inline-block;
float: left;
}
#upload .statusBar .btns .webuploader-pick,
#upload .statusBar .btns .uploadBtn,
#upload .statusBar .btns .uploadBtn.state-uploading,
#upload .statusBar .btns .uploadBtn.state-paused {
background: #ffffff;
border: 1px solid #cfcfcf;
color: #565656;
padding: 0 18px;
display: inline-block;
border-radius: 3px;
margin-left: 10px;
cursor: pointer;
font-size: 14px;
float: left;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#upload .statusBar .btns .webuploader-pick-hover,
#upload .statusBar .btns .uploadBtn:hover,
#upload .statusBar .btns .uploadBtn.state-uploading:hover,
#upload .statusBar .btns .uploadBtn.state-paused:hover {
background: #f0f0f0;
}
#upload .statusBar .btns .uploadBtn,
#upload .statusBar .btns .uploadBtn.state-paused{
background: #00b7ee;
color: #fff;
border-color: transparent;
}
#upload .statusBar .btns .uploadBtn:hover,
#upload .statusBar .btns .uploadBtn.state-paused:hover{
background: #00a2d4;
}
#upload .statusBar .btns .uploadBtn.disabled {
pointer-events: none;
filter:alpha(opacity=60);
-moz-opacity:0.6;
-khtml-opacity: 0.6;
opacity: 0.6;
}
/* 图片管理样式 */
#online {
width: 100%;
height: 336px;
padding: 10px 0 0 0;
}
#online #fileList{
width: 100%;
height: 100%;
overflow-x: hidden;
overflow-y: auto;
position: relative;
}
#online ul {
display: block;
list-style: none;
margin: 0;
padding: 0;
}
#online li {
float: left;
display: block;
list-style: none;
padding: 0;
width: 113px;
height: 113px;
margin: 0 0 9px 9px;
*margin: 0 0 6px 6px;
background-color: #eee;
overflow: hidden;
cursor: pointer;
position: relative;
}
#online li.clearFloat {
float: none;
clear: both;
display: block;
width:0;
height:0;
margin: 0;
padding: 0;
}
#online li img {
cursor: pointer;
}
#online li div.file-wrapper {
cursor: pointer;
position: absolute;
display: block;
width: 111px;
height: 111px;
border: 1px solid #eee;
background: url("./images/bg.png") repeat;
}
#online li div span.file-title{
display: block;
padding: 0 3px;
margin: 3px 0 0 0;
font-size: 12px;
height: 13px;
color: #555555;
text-align: center;
width: 107px;
white-space: nowrap;
word-break: break-all;
overflow: hidden;
text-overflow: ellipsis;
}
#online li .icon {
cursor: pointer;
width: 113px;
height: 113px;
position: absolute;
top: 0;
left: 0;
z-index: 2;
border: 0;
background-repeat: no-repeat;
}
#online li .icon:hover {
width: 107px;
height: 107px;
border: 3px solid #1094fa;
}
#online li.selected .icon {
background-image: url(images/success.png);
background-image: url(images/success.gif) \9;
background-position: 75px 75px;
}
#online li.selected .icon:hover {
width: 107px;
height: 107px;
border: 3px solid #1094fa;
background-position: 72px 72px;
}
/* 在线文件的文件预览图标 */
i.file-preview {
display: block;
margin: 10px auto;
width: 70px;
height: 70px;
background-image: url("./images/file-icons.png");
background-image: url("./images/file-icons.gif") \9;
background-position: -140px center;
background-repeat: no-repeat;
}
i.file-preview.file-type-dir{
background-position: 0 center;
}
i.file-preview.file-type-file{
background-position: -140px center;
}
i.file-preview.file-type-filelist{
background-position: -210px center;
}
i.file-preview.file-type-zip,
i.file-preview.file-type-rar,
i.file-preview.file-type-7z,
i.file-preview.file-type-tar,
i.file-preview.file-type-gz,
i.file-preview.file-type-bz2{
background-position: -280px center;
}
i.file-preview.file-type-xls,
i.file-preview.file-type-xlsx{
background-position: -350px center;
}
i.file-preview.file-type-doc,
i.file-preview.file-type-docx{
background-position: -420px center;
}
i.file-preview.file-type-ppt,
i.file-preview.file-type-pptx{
background-position: -490px center;
}
i.file-preview.file-type-vsd{
background-position: -560px center;
}
i.file-preview.file-type-pdf{
background-position: -630px center;
}
i.file-preview.file-type-txt,
i.file-preview.file-type-md,
i.file-preview.file-type-json,
i.file-preview.file-type-htm,
i.file-preview.file-type-xml,
i.file-preview.file-type-html,
i.file-preview.file-type-js,
i.file-preview.file-type-css,
i.file-preview.file-type-php,
i.file-preview.file-type-jsp,
i.file-preview.file-type-asp{
background-position: -700px center;
}
i.file-preview.file-type-apk{
background-position: -770px center;
}
i.file-preview.file-type-exe{
background-position: -840px center;
}
i.file-preview.file-type-ipa{
background-position: -910px center;
}
i.file-preview.file-type-mp4,
i.file-preview.file-type-swf,
i.file-preview.file-type-mkv,
i.file-preview.file-type-avi,
i.file-preview.file-type-flv,
i.file-preview.file-type-mov,
i.file-preview.file-type-mpg,
i.file-preview.file-type-mpeg,
i.file-preview.file-type-ogv,
i.file-preview.file-type-webm,
i.file-preview.file-type-rm,
i.file-preview.file-type-rmvb{
background-position: -980px center;
}
i.file-preview.file-type-ogg,
i.file-preview.file-type-wav,
i.file-preview.file-type-wmv,
i.file-preview.file-type-mid,
i.file-preview.file-type-mp3{
background-position: -1050px center;
}
i.file-preview.file-type-jpg,
i.file-preview.file-type-jpeg,
i.file-preview.file-type-gif,
i.file-preview.file-type-bmp,
i.file-preview.file-type-png,
i.file-preview.file-type-psd{
background-position: -140px center;
}
================================================
FILE: DjangoUeditor/static/ueditor/dialogs/attachment/attachment.html
================================================
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>ueditor图片对话框</title>
<script type="text/javascript" src="../internal.js"></script>
<!-- jquery -->
<script type="text/javascript" src="../../third-party/jquery-1.10.2.min.js"></script>
<!-- webuploader -->
<script src="../../third-party/webuploader/webuploader.min.js"></script>
<link rel="stylesheet" type="text/css" href="../../third-party/webuploader/webuploader.css">
<!-- attachment dialog -->
<link rel="stylesheet" href="attachment.css" type="text/css" />
</head>
<body>
<div class="wrapper">
<div id="tabhead" class="tabhead">
<span class="tab focus" data-content-id="upload"><var id="lang_tab_upload"></var></span>
<span class="tab" data-content-id="online"><var id="lang_tab_online"></var></span>
</div>
<div id="tabbody" class="tabbody">
<!-- 上传图片 -->
<div id="upload" class="panel focus">
<div id="queueList" class="queueList">
<div class="statusBar element-invisible">
<div class="progress">
<span class="text">0%</span>
<span class="percentage"></span>
</div><div class="info"></div>
<div class="btns">
<div id="filePickerBtn"></div>
<div class="uploadBtn"><var id="lang_start_upload"></var></div>
</div>
</div>
<div id="dndArea" class="placeholder">
<div class="filePickerContainer">
<div id="filePickerReady"></div>
</div>
</div>
<ul class="filelist element-invisible">
<li id="filePickerBlock" class="filePickerBlock"></li>
</ul>
</div>
</div>
<!-- 在线图片 -->
<div id="online" class="panel">
<div id="fileList"><var id="lang_imgLoading"></var></div>
</div>
</div>
</div>
<script type="text/javascript" src="attachment.js"></script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/dialogs/attachment/attachment.js
================================================
/**
* User: Jinqn
* Date: 14-04-08
* Time: 下午16:34
* 上传图片对话框逻辑代码,包括tab: 远程图片/上传图片/在线图片/搜索图片
*/
(function () {
var uploadFile,
onlineFile;
window.onload = function () {
initTabs();
initButtons();
};
/* 初始化tab标签 */
function initTabs() {
var tabs = $G('tabhead').children;
for (var i = 0; i < tabs.length; i++) {
domUtils.on(tabs[i], "click", function (e) {
var target = e.target || e.srcElement;
setTabFocus(target.getAttribute('data-content-id'));
});
}
setTabFocus('upload');
}
/* 初始化tabbody */
function setTabFocus(id) {
if(!id) return;
var i, bodyId, tabs = $G('tabhead').children;
for (i = 0; i < tabs.length; i++) {
bodyId = tabs[i].getAttribute('data-content-id')
if (bodyId == id) {
domUtils.addClass(tabs[i], 'focus');
domUtils.addClass($G(bodyId), 'focus');
} else {
domUtils.removeClasses(tabs[i], 'focus');
domUtils.removeClasses($G(bodyId), 'focus');
}
}
switch (id) {
case 'upload':
uploadFile = uploadFile || new UploadFile('queueList');
break;
case 'online':
onlineFile = onlineFile || new OnlineFile('fileList');
break;
}
}
/* 初始化onok事件 */
function initButtons() {
dialog.onok = function () {
var list = [], id, tabs = $G('tabhead').children;
for (var i = 0; i < tabs.length; i++) {
if (domUtils.hasClass(tabs[i], 'focus')) {
id = tabs[i].getAttribute('data-content-id');
break;
}
}
switch (id) {
case 'upload':
list = uploadFile.getInsertList();
var count = uploadFile.getQueueCount();
if (count) {
$('.info', '#queueList').html('<span style="color:red;">' + '还有2个未上传文件'.replace(/[\d]/, count) + '</span>');
return false;
}
break;
case 'online':
list = onlineFile.getInsertList();
break;
}
editor.execCommand('insertfile', list);
};
}
/* 上传附件 */
function UploadFile(target) {
this.$wrap = target.constructor == String ? $('#' + target) : $(target);
this.init();
}
UploadFile.prototype = {
init: function () {
this.fileList = [];
this.initContainer();
this.initUploader();
},
initContainer: function () {
this.$queue = this.$wrap.find('.filelist');
},
/* 初始化容器 */
initUploader: function () {
var _this = this,
$ = jQuery, // just in case. Make sure it's not an other libaray.
$wrap = _this.$wrap,
// 图片容器
$queue = $wrap.find('.filelist'),
// 状态栏,包括进度和控制按钮
$statusBar = $wrap.find('.statusBar'),
// 文件总体选择信息。
$info = $statusBar.find('.info'),
// 上传按钮
$upload = $wrap.find('.uploadBtn'),
// 上传按钮
$filePickerBtn = $wrap.find('.filePickerBtn'),
// 上传按钮
$filePickerBlock = $wrap.find('.filePickerBlock'),
// 没选择文件之前的内容。
$placeHolder = $wrap.find('.placeholder'),
// 总体进度条
$progress = $statusBar.find('.progress').hide(),
// 添加的文件数量
fileCount = 0,
// 添加的文件总大小
fileSize = 0,
// 优化retina, 在retina下这个值是2
ratio = window.devicePixelRatio || 1,
// 缩略图大小
thumbnailWidth = 113 * ratio,
thumbnailHeight = 113 * ratio,
// 可能有pedding, ready, uploading, confirm, done.
state = '',
// 所有文件的进度信息,key为file id
percentages = {},
supportTransition = (function () {
var s = document.createElement('p').style,
r = 'transition' in s ||
'WebkitTransition' in s ||
'MozTransition' in s ||
'msTransition' in s ||
'OTransition' in s;
s = null;
return r;
})(),
// WebUploader实例
uploader,
actionUrl = editor.getActionUrl(editor.getOpt('fileActionName')),
fileMaxSize = editor.getOpt('fileMaxSize'),
acceptExtensions = (editor.getOpt('fileAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, '');;
if (!WebUploader.Uploader.support()) {
$('#filePickerReady').after($('<div>').html(lang.errorNotSupport)).hide();
return;
} else if (!editor.getOpt('fileActionName')) {
$('#filePickerReady').after($('<div>').html(lang.errorLoadConfig)).hide();
return;
}
uploader = _this.uploader = WebUploader.create({
pick: {
id: '#filePickerReady',
label: lang.uploadSelectFile
},
swf: '../../third-party/webuploader/Uploader.swf',
server: actionUrl,
fileVal: editor.getOpt('fileFieldName'),
duplicate: true,
fileSingleSizeLimit: fileMaxSize,
compress: false
});
uploader.addButton({
id: '#filePickerBlock'
});
uploader.addButton({
id: '#filePickerBtn',
label: lang.uploadAddFile
});
setState('pedding');
// 当有文件添加进来时执行,负责view的创建
function addFile(file) {
var $li = $('<li id="' + file.id + '">' +
'<p class="title">' + file.name + '</p>' +
'<p class="imgWrap"></p>' +
'<p class="progress"><span></span></p>' +
'</li>'),
$btns = $('<div class="file-panel">' +
'<span class="cancel">' + lang.uploadDelete + '</span>' +
'<span class="rotateRight">' + lang.uploadTurnRight + '</span>' +
'<span class="rotateLeft">' + lang.uploadTurnLeft + '</span></div>').appendTo($li),
$prgress = $li.find('p.progress span'),
$wrap = $li.find('p.imgWrap'),
$info = $('<p class="error"></p>').hide().appendTo($li),
showError = function (code) {
switch (code) {
case 'exceed_size':
text = lang.errorExceedSize;
break;
case 'interrupt':
text = lang.errorInterrupt;
break;
case 'http':
text = lang.errorHttp;
break;
case 'not_allow_type':
text = lang.errorFileType;
break;
default:
text = lang.errorUploadRetry;
break;
}
$info.text(text).show();
};
if (file.getStatus() === 'invalid') {
showError(file.statusText);
} else {
$wrap.text(lang.uploadPreview);
if ('|png|jpg|jpeg|bmp|gif|'.indexOf('|'+file.ext.toLowerCase()+'|') == -1) {
$wrap.empty().addClass('notimage').append('<i class="file-preview file-type-' + file.ext.toLowerCase() + '"></i>' +
'<span class="file-title" title="' + file.name + '">' + file.name + '</span>');
} else {
if (browser.ie && browser.version <= 7) {
$wrap.text(lang.uploadNoPreview);
} else {
uploader.makeThumb(file, function (error, src) {
if (error || !src) {
$wrap.text(lang.uploadNoPreview);
} else {
var $img = $('<img src="' + src + '">');
$wrap.empty().append($img);
$img.on('error', function () {
$wrap.text(lang.uploadNoPreview);
});
}
}, thumbnailWidth, thumbnailHeight);
}
}
percentages[ file.id ] = [ file.size, 0 ];
file.rotation = 0;
/* 检查文件格式 */
if (!file.ext || acceptExtensions.indexOf(file.ext.toLowerCase()) == -1) {
showError('not_allow_type');
uploader.removeFile(file);
}
}
file.on('statuschange', function (cur, prev) {
if (prev === 'progress') {
$prgress.hide().width(0);
} else if (prev === 'queued') {
$li.off('mouseenter mouseleave');
$btns.remove();
}
// 成功
if (cur === 'error' || cur === 'invalid') {
showError(file.statusText);
percentages[ file.id ][ 1 ] = 1;
} else if (cur === 'interrupt') {
showError('interrupt');
} else if (cur === 'queued') {
percentages[ file.id ][ 1 ] = 0;
} else if (cur === 'progress') {
$info.hide();
$prgress.css('display', 'block');
} else if (cur === 'complete') {
}
$li.removeClass('state-' + prev).addClass('state-' + cur);
});
$li.on('mouseenter', function () {
$btns.stop().animate({height: 30});
});
$li.on('mouseleave', function () {
$btns.stop().animate({height: 0});
});
$btns.on('click', 'span', function () {
var index = $(this).index(),
deg;
switch (index) {
case 0:
uploader.removeFile(file);
return;
case 1:
file.rotation += 90;
break;
case 2:
file.rotation -= 90;
break;
}
if (supportTransition) {
deg = 'rotate(' + file.rotation + 'deg)';
$wrap.css({
'-webkit-transform': deg,
'-mos-transform': deg,
'-o-transform': deg,
'transform': deg
});
} else {
$wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')');
}
});
$li.insertBefore($filePickerBlock);
}
// 负责view的销毁
function removeFile(file) {
var $li = $('#' + file.id);
delete percentages[ file.id ];
updateTotalProgress();
$li.off().find('.file-panel').off().end().remove();
}
function updateTotalProgress() {
var loaded = 0,
total = 0,
spans = $progress.children(),
percent;
$.each(percentages, function (k, v) {
total += v[ 0 ];
loaded += v[ 0 ] * v[ 1 ];
});
percent = total ? loaded / total : 0;
spans.eq(0).text(Math.round(percent * 100) + '%');
spans.eq(1).css('width', Math.round(percent * 100) + '%');
updateStatus();
}
function setState(val, files) {
if (val != state) {
var stats = uploader.getStats();
$upload.removeClass('state-' + state);
$upload.addClass('state-' + val);
switch (val) {
/* 未选择文件 */
case 'pedding':
$queue.addClass('element-invisible');
$statusBar.addClass('element-invisible');
$placeHolder.removeClass('element-invisible');
$progress.hide(); $info.hide();
uploader.refresh();
break;
/* 可以开始上传 */
case 'ready':
$placeHolder.addClass('element-invisible');
$queue.removeClass('element-invisible');
$statusBar.removeClass('element-invisible');
$progress.hide(); $info.show();
$upload.text(lang.uploadStart);
uploader.refresh();
break;
/* 上传中 */
case 'uploading':
$progress.show(); $info.hide();
$upload.text(lang.uploadPause);
break;
/* 暂停上传 */
case 'paused':
$progress.show(); $info.hide();
$upload.text(lang.uploadContinue);
break;
case 'confirm':
$progress.show(); $info.hide();
$upload.text(lang.uploadStart);
stats = uploader.getStats();
if (stats.successNum && !stats.uploadFailNum) {
setState('finish');
return;
}
break;
case 'finish':
$progress.hide(); $info.show();
if (stats.uploadFailNum) {
$upload.text(lang.uploadRetry);
} else {
$upload.text(lang.uploadStart);
}
break;
}
state = val;
updateStatus();
}
if (!_this.getQueueCount()) {
$upload.addClass('disabled')
} else {
$upload.removeClass('disabled')
}
}
function updateStatus() {
var text = '', stats;
if (state === 'ready') {
text = lang.updateStatusReady.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize));
} else if (state === 'confirm') {
stats = uploader.getStats();
if (stats.uploadFailNum) {
text = lang.updateStatusConfirm.replace('_', stats.successNum).replace('_', stats.successNum);
}
} else {
stats = uploader.getStats();
text = lang.updateStatusFinish.replace('_', fileCount).
replace('_KB', WebUploader.formatSize(fileSize)).
replace('_', stats.successNum);
if (stats.uploadFailNum) {
text += lang.updateStatusError.replace('_', stats.uploadFailNum);
}
}
$info.html(text);
}
uploader.on('fileQueued', function (file) {
fileCount++;
fileSize += file.size;
if (fileCount === 1) {
$placeHolder.addClass('element-invisible');
$statusBar.show();
}
addFile(file);
});
uploader.on('fileDequeued', function (file) {
fileCount--;
fileSize -= file.size;
removeFile(file);
updateTotalProgress();
});
uploader.on('filesQueued', function (file) {
if (!uploader.isInProgress() && (state == 'pedding' || state == 'finish' || state == 'confirm' || state == 'ready')) {
setState('ready');
}
updateTotalProgress();
});
uploader.on('all', function (type, files) {
switch (type) {
case 'uploadFinished':
setState('confirm', files);
break;
case 'startUpload':
/* 添加额外的GET参数 */
var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '',
url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + 'encode=utf-8&' + params);
uploader.option('server', url);
setState('uploading', files);
break;
case 'stopUpload':
setState('paused', files);
break;
}
});
uploader.on('uploadBeforeSend', function (file, data, header) {
//这里可以通过data对象添加POST参数
header['X_Requested_With'] = 'XMLHttpRequest';
});
uploader.on('uploadProgress', function (file, percentage) {
var $li = $('#' + file.id),
$percent = $li.find('.progress span');
$percent.css('width', percentage * 100 + '%');
percentages[ file.id ][ 1 ] = percentage;
updateTotalProgress();
});
uploader.on('uploadSuccess', function (file, ret) {
var $file = $('#' + file.id);
try {
var responseText = (ret._raw || ret),
json = utils.str2json(responseText);
if (json.state == 'SUCCESS') {
_this.fileList.push(json);
$file.append('<span class="success"></span>');
} else {
$file.find('.error').text(json.state).show();
}
} catch (e) {
$file.find('.error').text(lang.errorServerUpload).show();
}
});
uploader.on('uploadError', function (file, code) {
});
uploader.on('error', function (code, file) {
if (code == 'Q_TYPE_DENIED' || code == 'F_EXCEED_SIZE') {
addFile(file);
}
});
uploader.on('uploadComplete', function (file, ret) {
});
$upload.on('click', function () {
if ($(this).hasClass('disabled')) {
return false;
}
if (state === 'ready') {
uploader.upload();
} else if (state === 'paused') {
uploader.upload();
} else if (state === 'uploading') {
uploader.stop();
}
});
$upload.addClass('state-' + state);
updateTotalProgress();
},
getQueueCount: function () {
var file, i, status, readyFile = 0, files = this.uploader.getFiles();
for (i = 0; file = files[i++]; ) {
status = file.getStatus();
if (status == 'queued' || status == 'uploading' || status == 'progress') readyFile++;
}
return readyFile;
},
getInsertList: function () {
var i, link, data, list = [],
prefix = editor.getOpt('fileUrlPrefix');
for (i = 0; i < this.fileList.length; i++) {
data = this.fileList[i];
link = data.url;
list.push({
title: data.original || link.substr(link.lastIndexOf('/') + 1),
url: prefix + link
});
}
return list;
}
};
/* 在线附件 */
function OnlineFile(target) {
this.container = utils.isString(target) ? document.getElementById(target) : target;
this.init();
}
OnlineFile.prototype = {
init: function () {
this.initContainer();
this.initEvents();
this.initData();
},
/* 初始化容器 */
initContainer: function () {
this.container.innerHTML = '';
this.list = document.createElement('ul');
this.clearFloat = document.createElement('li');
domUtils.addClass(this.list, 'list');
domUtils.addClass(this.clearFloat, 'clearFloat');
this.list.appendChild(this.clearFloat);
this.container.appendChild(this.list);
},
/* 初始化滚动事件,滚动到地步自动拉取数据 */
initEvents: function () {
var _this = this;
/* 滚动拉取图片 */
domUtils.on($G('fileList'), 'scroll', function(e){
var panel = this;
if (panel.scrollHeight - (panel.offsetHeight + panel.scrollTop) < 10) {
_this.getFileData();
}
});
/* 选中图片 */
domUtils.on(this.list, 'click', function (e) {
var target = e.target || e.srcElement,
li = target.parentNode;
if (li.tagName.toLowerCase() == 'li') {
if (domUtils.hasClass(li, 'selected')) {
domUtils.removeClasses(li, 'selected');
} else {
domUtils.addClass(li, 'selected');
}
}
});
},
/* 初始化第一次的数据 */
initData: function () {
/* 拉取数据需要使用的值 */
this.state = 0;
this.listSize = editor.getOpt('fileManagerListSize');
this.listIndex = 0;
this.listEnd = false;
/* 第一次拉取数据 */
this.getFileData();
},
/* 向后台拉取图片列表数据 */
getFileData: function () {
var _this = this;
if(!_this.listEnd && !this.isLoadingData) {
this.isLoadingData = true;
ajax.request(editor.getActionUrl(editor.getOpt('fileManagerActionName')), {
timeout: 100000,
data: utils.extend({
start: this.listIndex,
size: this.listSize
}, editor.queryCommandValue('serverparam')),
method: 'get',
onsuccess: function (r) {
try {
var json = eval('(' + r.responseText + ')');
if (json.state == 'SUCCESS') {
_this.pushData(json.list);
_this.listIndex = parseInt(json.start) + parseInt(json.list.length);
if(_this.listIndex >= json.total) {
_this.listEnd = true;
}
_this.isLoadingData = false;
}
} catch (e) {
if(r.responseText.indexOf('ue_separate_ue') != -1) {
var list = r.responseText.split(r.responseText);
_this.pushData(list);
_this.listIndex = parseInt(list.length);
_this.listEnd = true;
_this.isLoadingData = false;
}
}
},
onerror: function () {
_this.isLoadingData = false;
}
});
}
},
/* 添加图片到列表界面上 */
pushData: function (list) {
var i, item, img, filetype, preview, icon, _this = this,
urlPrefix = editor.getOpt('fileManagerUrlPrefix');
for (i = 0; i < list.length; i++) {
if(list[i] && list[i].url) {
item = document.createElement('li');
icon = document.createElement('span');
filetype = list[i].url.substr(list[i].url.lastIndexOf('.') + 1);
if ( "png|jpg|jpeg|gif|bmp".indexOf(filetype) != -1 ) {
preview = document.createElement('img');
domUtils.on(preview, 'load', (function(image){
return function(){
_this.scale(image, image.parentNode.offsetWidth, image.parentNode.offsetHeight);
};
})(preview));
preview.width = 113;
preview.setAttribute('src', urlPrefix + list[i].url + (list[i].url.indexOf('?') == -1 ? '?noCache=':'&noCache=') + (+new Date()).toString(36) );
} else {
var ic = document.createElement('i'),
textSpan = document.createElement('span');
textSpan.innerHTML = list[i].url.substr(list[i].url.lastIndexOf('/') + 1);
preview = document.createElement('div');
preview.appendChild(ic);
preview.appendChild(textSpan);
domUtils.addClass(preview, 'file-wrapper');
domUtils.addClass(textSpan, 'file-title');
domUtils.addClass(ic, 'file-type-' + filetype);
domUtils.addClass(ic, 'file-preview');
}
domUtils.addClass(icon, 'icon');
item.setAttribute('data-url', urlPrefix + list[i].url);
if (list[i].original) {
item.setAttribute('data-title', list[i].original);
}
item.appendChild(preview);
item.appendChild(icon);
this.list.insertBefore(item, this.clearFloat);
}
}
},
/* 改变图片大小 */
scale: function (img, w, h, type) {
var ow = img.width,
oh = img.height;
if (type == 'justify') {
if (ow >= oh) {
img.width = w;
img.height = h * oh / ow;
img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px';
} else {
img.width = w * ow / oh;
img.height = h;
img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px';
}
} else {
if (ow >= oh) {
img.width = w * ow / oh;
img.height = h;
img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px';
} else {
img.width = w;
img.height = h * oh / ow;
img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px';
}
}
},
getInsertList: function () {
var i, lis = this.list.children, list = [];
for (i = 0; i < lis.length; i++) {
if (domUtils.hasClass(lis[i], 'selected')) {
var url = lis[i].getAttribute('data-url');
var title = lis[i].getAttribute('data-title') || url.substr(url.lastIndexOf('/') + 1);
list.push({
title: title,
url: url
});
}
}
return list;
}
};
})();
================================================
FILE: DjangoUeditor/static/ueditor/dialogs/background/background.css
================================================
.wrapper{ width: 424px;margin: 10px auto; zoom:1;position: relative}
.tabbody{height:225px;}
.tabbody .panel { position: absolute;width:100%; height:100%;background: #fff; display: none;}
.tabbody .focus { display: block;}
body{font-size: 12px;color: #888;overflow: hidden;}
input,label{vertical-align:middle}
.clear{clear: both;}
.pl{padding-left: 18px;padding-left: 23px\9;}
#imageList {width: 420px;height: 215px;margin-top: 10px;overflow: hidden;overflow-y: auto;}
#imageList div {float: left;width: 100px;height: 95px;margin: 5px 10px;}
#imageList img {cursor: pointer;border: 2px solid white;}
.bgarea{margin: 10px;padding: 5px;height: 84%;border: 1px solid #A8A297;}
.content div{margin: 10px 0 10px 5px;}
.content .iptradio{margin: 0px 5px 5px 0px;}
.txt{width:280px;}
.wrapcolor{height: 19px;}
div.color{float: left;margin: 0;}
#colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;margin: 0;float: left;}
div.alignment,#custom{margin-left: 23px;margin-left: 28px\9;}
#custom input{height: 15px;min-height: 15px;width:20px;}
#repeatType{width:100px;}
/* 图片管理样式 */
#imgManager {
width: 100%;
height: 225px;
}
#imgManager #imageList{
width: 100%;
overflow-x: hidden;
overflow-y: auto;
}
#imgManager ul {
display: block;
list-style: none;
margin: 0;
padding: 0;
}
#imgManager li {
float: left;
display: block;
list-style: none;
padding: 0;
width: 113px;
height: 113px;
margin: 9px 0 0 19px;
background-color: #eee;
overflow: hidden;
cursor: pointer;
position: relative;
}
#imgManager li.clearFloat {
float: none;
clear: both;
display: block;
width:0;
height:0;
margin: 0;
padding: 0;
}
#imgManager li img {
cursor: pointer;
}
#imgManager li .icon {
cursor: pointer;
width: 113px;
height: 113px;
position: absolute;
top: 0;
left: 0;
z-index: 2;
border: 0;
background-repeat: no-repeat;
}
#imgManager li .icon:hover {
width: 107px;
height: 107px;
border: 3px solid #1094fa;
}
#imgManager li.selected .icon {
background-image: url(images/success.png);
background-position: 75px 75px;
}
#imgManager li.selected .icon:hover {
width: 107px;
height: 107px;
border: 3px solid #1094fa;
background-position: 72px 72px;
}
================================================
FILE: DjangoUeditor/static/ueditor/dialogs/background/background.html
================================================
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript" src="../internal.js"></script>
<link rel="stylesheet" type="text/css" href="background.css">
</head>
<body>
<div id="bg_container" class="wrapper">
<div id="tabHeads" class="tabhead">
<span class="focus" data-content-id="normal"><var id="lang_background_normal"></var></span>
<span class="" data-content-id="imgManager"><var id="lang_background_local"></var></span>
</div>
<div id="tabBodys" class="tabbody">
<div id="normal" class="panel focus">
<fieldset class="bgarea">
<legend><var id="lang_background_set"></var></legend>
<div class="content">
<div>
<label><input id="nocolorRadio" class="iptradio" type="radio" name="t" value="none" checked="checked"><var id="lang_background_none"></var></label>
<label><input id="coloredRadio" class="iptradio" type="radio" name="t" value="color"><var id="lang_background_colored"></var></label>
</div>
<div class="wrapcolor pl">
<div class="color">
<var id="lang_background_color"></var>:
</div>
<div id="colorPicker"></div>
<div class="clear"></div>
</div>
<div class="wrapcolor pl">
<label><var id="lang_background_netimg"></var>:</label><input class="txt" type="text" id="url">
</div>
<div id="alignment" class="alignment">
<var id="lang_background_align"></var>:<select id="repeatType">
<option value="center"></option>
<option value="repeat-x"></option>
<option value="repeat-y"></option>
<option value="repeat"></option>
<option value="self"></option>
</select>
</div>
<div id="custom" >
<var id="lang_background_position"></var>:x:<input type="text" size="1" id="x" maxlength="4" value="0">px y:<input type="text" size="1" id="y" maxlength="4" value="0">px
</div>
</div>
</fieldset>
</div>
<div id="imgManager" class="panel">
<div id="imageList" style=""></div>
</div>
</div>
</div>
<script type="text/javascript" src="background.js"></script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/dialogs/background/background.js
================================================
(function () {
var onlineImage,
backupStyle = editor.queryCommandValue('background');
window.onload = function () {
initTabs();
initColorSelector();
};
/* 初始化tab标签 */
function initTabs(){
var tabs = $G('tabHeads').children;
for (var i = 0; i < tabs.length; i++) {
domUtils.on(tabs[i], "click", function (e) {
var target = e.target || e.srcElement;
for (var j = 0; j < tabs.length; j++) {
if(tabs[j] == target){
tabs[j].className = "focus";
var contentId = tabs[j].getAttribute('data-content-id');
$G(contentId).style.display = "block";
if(contentId == 'imgManager') {
initImagePanel();
}
}else {
tabs[j].className = "";
$G(tabs[j].getAttribute('data-content-id')).style.display = "none";
}
}
});
}
}
/* 初始化颜色设置 */
function initColorSelector () {
var obj = editor.queryCommandValue('background');
if (obj) {
var color = obj['background-color'],
repeat = obj['background-repeat'] || 'repeat',
image = obj['background-image'] || '',
position = obj['background-position'] || 'center center',
pos = position.split(' '),
x = parseInt(pos[0]) || 0,
y = parseInt(pos[1]) || 0;
if(repeat == 'no-repeat' && (x || y)) repeat = 'self';
image = image.match(/url[\s]*\(([^\)]*)\)/);
image = image ? image[1]:'';
updateFormState('colored', color, image, repeat, x, y);
} else {
updateFormState();
}
var updateHandler = function () {
updateFormState();
updateBackground();
}
domUtils.on($G('nocolorRadio'), 'click', updateBackground);
domUtils.on($G('coloredRadio'), 'click', updateHandler);
domUtils.on($G('url'), 'keyup', function(){
if($G('url').value && $G('alignment').style.display == "none") {
utils.each($G('repeatType').children, function(item){
item.selected = ('repeat' == item.getAttribute('value') ? 'selected':false);
});
}
updateHandler();
});
domUtils.on($G('repeatType'), 'change', updateHandler);
domUtils.on($G('x'), 'keyup', updateBackground);
domUtils.on($G('y'), 'keyup', updateBackground);
initColorPicker();
}
/* 初始化颜色选择器 */
function initColorPicker() {
var me = editor,
cp = $G("colorPicker");
/* 生成颜色选择器ui对象 */
var popup = new UE.ui.Popup({
content: new UE.ui.ColorPicker({
noColorText: me.getLang("clearColor"),
editor: me,
onpickcolor: function (t, color) {
updateFormState('colored', color);
updateBackground();
UE.ui.Popup.postHide();
},
onpicknocolor: function (t, color) {
updateFormState('colored', 'transparent');
updateBackground();
UE.ui.Popup.postHide();
}
}),
editor: me,
onhide: function () {
}
});
/* 设置颜色选择器 */
domUtils.on(cp, "click", function () {
popup.showAnchor(this);
});
domUtils.on(document, 'mousedown', function (evt) {
var el = evt.target || evt.srcElement;
UE.ui.Popup.postHide(el);
});
domUtils.on(window, 'scroll', function () {
UE.ui.Popup.postHide();
});
}
/* 初始化在线图片列表 */
function initImagePanel() {
onlineImage = onlineImage || new OnlineImage('imageList');
}
/* 更新背景色设置面板 */
function updateFormState (radio, color, url, align, x, y) {
var nocolorRadio = $G('nocolorRadio'),
coloredRadio = $G('coloredRadio');
if(radio) {
nocolorRadio.checked = (radio == 'colored' ? false:'checked');
coloredRadio.checked = (radio == 'colored' ? 'checked':false);
}
if(color) {
domUtils.setStyle($G("colorPicker"), "background-color", color);
}
if(url && /^\//.test(url)) {
var a = document.createElement('a');
a.href = url;
browser.ie && (a.href = a.href);
url = browser.ie ? a.href:(a.protocol + '//' + a.host + a.pathname + a.search + a.hash);
}
if(url || url === '') {
$G('url').value = url;
}
if(align) {
utils.each($G('repeatType').children, function(item){
item.selected = (align == item.getAttribute('value') ? 'selected':false);
});
}
if(x || y) {
$G('x').value = parseInt(x) || 0;
$G('y').value = parseInt(y) || 0;
}
$G('alignment').style.display = coloredRadio.checked && $G('url').value ? '':'none';
$G('custom').style.display = coloredRadio.checked && $G('url').value && $G('repeatType').value == 'self' ? '':'none';
}
/* 更新背景颜色 */
function updateBackground () {
if ($G('coloredRadio').checked) {
var color = domUtils.getStyle($G("colorPicker"), "background-color"),
bgimg = $G("url").value,
align = $G("repeatType").value,
backgroundObj = {
"background-repeat": "no-repeat",
"background-position": "center center"
};
if (color) backgroundObj["background-color"] = color;
if (bgimg) backgroundObj["background-image"] = 'url(' + bgimg + ')';
if (align == 'self') {
backgroundObj["background-position"] = $G("x").value + "px " + $G("y").value + "px";
} else if (align == 'repeat-x' || align == 'repeat-y' || align == 'repeat') {
backgroundObj["background-repeat"] = align;
}
editor.execCommand('background', backgroundObj);
} else {
editor.execCommand('background', null);
}
}
/* 在线图片 */
function OnlineImage(target) {
this.container = utils.isString(target) ? document.getElementById(target) : target;
this.init();
}
OnlineImage.prototype = {
init: function () {
this.reset();
this.initEvents();
},
/* 初始化容器 */
initContainer: function () {
this.container.innerHTML = '';
this.list = document.createElement('ul');
this.clearFloat = document.createElement('li');
domUtils.addClass(this.list, 'list');
domUtils.addClass(this.clearFloat, 'clearFloat');
this.list.id = 'imageListUl';
this.list.appendChild(this.clearFloat);
this.container.appendChild(this.list);
},
/* 初始化滚动事件,滚动到地步自动拉取数据 */
initEvents: function () {
var _this = this;
/* 滚动拉取图片 */
domUtils.on($G('imageList'), 'scroll', function(e){
var panel = this;
if (panel.scrollHeight - (panel.offsetHeight + panel.scrollTop) < 10) {
_this.getImageData();
}
});
/* 选中图片 */
domUtils.on(this.container, 'click', function (e) {
var target = e.target || e.srcElement,
li = target.parentNode,
nodes = $G('imageListUl').childNodes;
if (li.tagName.toLowerCase() == 'li') {
updateFormState('nocolor', null, '');
for (var i = 0, node; node = nodes[i++];) {
if (node == li && !domUtils.hasClass(node, 'selected')) {
domUtils.addClass(node, 'selected');
updateFormState('colored', null, li.firstChild.getAttribute("_src"), 'repeat');
} else {
domUtils.removeClasses(node, 'selected');
}
}
updateBackground();
}
});
},
/* 初始化第一次的数据 */
initData: function () {
/* 拉取数据需要使用的值 */
this.state = 0;
this.listSize = editor.getOpt('imageManagerListSize');
this.listIndex = 0;
this.listEnd = false;
/* 第一次拉取数据 */
this.getImageData();
},
/* 重置界面 */
reset: function() {
this.initContainer();
this.initData();
},
/* 向后台拉取图片列表数据 */
getImageData: function () {
var _this = this;
if(!_this.listEnd && !this.isLoadingData) {
this.isLoadingData = true;
var url = editor.getActionUrl(editor.getOpt('imageManagerActionName')),
isJsonp = utils.isCrossDomainUrl(url);
ajax.request(url, {
'timeout': 100000,
'dataType': isJsonp ? 'jsonp':'',
'data': utils.extend({
start: this.listIndex,
size: this.listSize
}, editor.queryCommandValue('serverparam')),
'method': 'get',
'onsuccess': function (r) {
try {
var json = isJsonp ? r:eval('(' + r.responseText + ')');
if (json.state == 'SUCCESS') {
_this.pushData(json.list);
_this.listIndex = parseInt(json.start) + parseInt(json.list.length);
if(_this.listIndex >= json.total) {
_this.listEnd = true;
}
_this.isLoadingData = false;
}
} catch (e) {
if(r.responseText.indexOf('ue_separate_ue') != -1) {
var list = r.responseText.split(r.responseText);
_this.pushData(list);
_this.listIndex = parseInt(list.length);
_this.listEnd = true;
_this.isLoadingData = false;
}
}
},
'onerror': function () {
_this.isLoadingData = false;
}
});
}
},
/* 添加图片到列表界面上 */
pushData: function (list) {
var i, item, img, icon, _this = this,
urlPrefix = editor.getOpt('imageManagerUrlPrefix');
for (i = 0; i < list.length; i++) {
if(list[i] && list[i].url) {
item = document.createElement('li');
img = document.createElement('img');
icon = document.createElement('span');
domUtils.on(img, 'load', (function(image){
return function(){
_this.scale(image, image.parentNode.offsetWidth, image.parentNode.offsetHeight);
}
})(img));
img.width = 113;
img.setAttribute('src', urlPrefix + list[i].url + (list[i].url.indexOf('?') == -1 ? '?noCache=':'&noCache=') + (+new Date()).toString(36) );
img.setAttribute('_src', urlPrefix + list[i].url);
domUtils.addClass(icon, 'icon');
item.appendChild(img);
item.appendChild(icon);
this.list.insertBefore(item, this.clearFloat);
}
}
},
/* 改变图片大小 */
scale: function (img, w, h, type) {
var ow = img.width,
oh = img.height;
if (type == 'justify') {
if (ow >= oh) {
img.width = w;
img.height = h * oh / ow;
img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px';
} else {
img.width = w * ow / oh;
img.height = h;
img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px';
}
} else {
if (ow >= oh) {
img.width = w * ow / oh;
img.height = h;
img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px';
} else {
img.width = w;
img.height = h * oh / ow;
img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px';
}
}
},
getInsertList: function () {
var i, lis = this.list.children, list = [], align = getAlign();
for (i = 0; i < lis.length; i++) {
if (domUtils.hasClass(lis[i], 'selected')) {
var img = lis[i].firstChild,
src = img.getAttribute('_src');
list.push({
src: src,
_src: src,
floatStyle: align
});
}
}
return list;
}
};
dialog.onok = function () {
updateBackground();
editor.fireEvent('saveScene');
};
dialog.oncancel = function () {
editor.execCommand('background', backupStyle);
};
})();
================================================
FILE: DjangoUeditor/static/ueditor/dialogs/charts/chart.config.js
================================================
/*
* 图表配置文件
* */
//不同类型的配置
var typeConfig = [
{
chart: {
type: 'line'
},
plotOptions: {
line: {
dataLabels: {
enabled: false
},
enableMouseTracking: true
}
}
}, {
chart: {
type: 'line'
},
plotOptions: {
line: {
dataLabels: {
enabled: true
},
enableMouseTracking: false
}
}
}, {
chart: {
type: 'area'
}
}, {
chart: {
type: 'bar'
}
}, {
chart: {
type: 'column'
}
}, {
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
color: '#000000',
connectorColor: '#000000',
formatter: function() {
return '<b>'+ this.point.name +'</b>: '+ ( Math.round( this.point.percentage*100 ) / 100 ) +' %';
}
}
}
}
}
];
================================================
FILE: DjangoUeditor/static/ueditor/dialogs/charts/charts.css
================================================
html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow-x: hidden;
}
.main {
width: 100%;
overflow: hidden;
}
.table-view {
height: 100%;
float: left;
margin: 20px;
width: 40%;
}
.table-view .table-container {
width: 100%;
margin-bottom: 50px;
overflow: scroll;
}
.table-view th {
padding: 5px 10px;
background-color: #F7F7F7;
}
.table-view td {
width: 50px;
text-align: center;
padding:0;
}
.table-container input {
width: 40px;
padding: 5px;
border: none;
outline: none;
}
.table-view caption {
font-size: 18px;
text-align: left;
}
.charts-view {
/*margin-left: 49%!important;*/
width: 50%;
margin-left: 49%;
height: 400px;
}
.charts-container {
border-left: 1px solid #c3c3c3;
}
.charts-format fieldset {
padding-left: 20px;
margin-bottom: 50px;
}
.charts-format legend {
padding-left: 10px;
padding-right: 10px;
}
.format-item-container {
padding: 20px;
}
.format-item-container label {
display: block;
margin: 10px 0;
}
.charts-format .data-item {
border: 1px solid black;
outline: none;
padding: 2px 3px;
}
/* 图表类型 */
.charts-type {
margin-top: 50px;
height: 300px;
}
.scroll-view {
border: 1px solid #c3c3c3;
border-left: none;
border-right: none;
overflow: hidden;
}
.scroll-container {
margin: 20px;
width: 100%;
overflow: hidden;
}
.scroll-bed {
width: 10000px;
_margin-top: 20px;
-webkit-transition: margin-left .5s ease;
-moz-transition: margin-left .5s ease;
transition: margin-left .5s ease;
}
.view-box {
display: inline-block;
*display: inline;
*zoom: 1;
margin-right: 20px;
border: 2px solid white;
line-height: 0;
overflow: hidden;
cursor: pointer;
}
.view-box img {
border: 1px solid #cecece;
}
.view-box.selected {
border-color: #7274A7;
}
.button-container {
margin-bottom: 20px;
text-align: center;
}
.button-container a {
display: inline-block;
width: 100px;
height: 25px;
line-height: 25px;
border: 1px solid #c2ccd1;
margin-right: 30px;
text-decoration: none;
color: black;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 2px;
}
.button-container a:HOVER {
background: #fcfcfc;
}
.button-container a:ACTIVE {
border-top-color: #c2ccd1;
box-shadow:inset 0 5px 4px -4px rgba(49, 49, 64, 0.1);
}
.edui-charts-not-data {
height: 100px;
line-height: 100px;
text-align: center;
}
================================================
FILE: DjangoUeditor/static/ueditor/dialogs/charts/charts.html
================================================
<!DOCTYPE html>
<html>
<head>
<title>chart</title>
<meta chartset="utf-8">
<link rel="stylesheet" type="text/css" href="charts.css">
<script type="text/javascript" src="../internal.js"></script>
</head>
<body>
<div class="main">
<div class="table-view">
<h3><var id="lang_data_source"></var></h3>
<div id="tableContainer" class="table-container"></div>
<h3><var id="lang_chart_format"></var></h3>
<form name="data-form">
<div class="charts-format">
<fieldset>
<legend><var id="lang_data_align"></var></legend>
<div class="format-item-container">
<label>
<input type="radio" class="format-ctrl not-pie-item" name="charts-format" value="1" checked="checked">
<var id="lang_chart_align_same"></var>
</label>
<label>
<input type="radio" class="format-ctrl not-pie-item" name="charts-format" value="-1">
<var id="lang_chart_align_reverse"></var>
</label>
<br>
</div>
</fieldset>
<fieldset>
<legend><var id="lang_chart_title"></var></legend>
<div class="format-item-container">
<label>
<var id="lang_chart_main_title"></var><input type="text" name="title" class="data-item">
</label>
<label>
<var id="lang_chart_sub_title"></var><input type="text" name="sub-title" class="data-item not-pie-item">
</label>
<label>
<var id="lang_chart_x_title"></var><input type="text" name="x-title" class="data-item not-pie-item">
</label>
<label>
<var id="lang_chart_y_title"></var><input type="text" name="y-title" class="data-item not-pie-item">
</label>
</div>
</fieldset>
<fieldset>
<legend><var id="lang_chart_tip"></var></legend>
<div class="format-item-container">
<label>
<var id="lang_cahrt_tip_prefix"></var>
<input type="text" id="tipInput" name="tip" class="data-item" disabled="disabled">
</label>
<p><var id="lang_cahrt_tip_description"></var></p>
</div>
</fieldset>
<fieldset>
<legend><var id="lang_chart_data_unit"></var></legend>
<div class="format-item-container">
<label><var id="lang_chart_data_unit_title"></var><input type="text" name="unit" class="data-item"></label>
<p><var id="lang_chart_data_unit_description"></var></p>
</div>
</fieldset>
</div>
</form>
</div>
<div class="charts-view">
<div id="chartsContainer" class="charts-container"></div>
<div id="chartsType" class="charts-type">
<h3><var id="lang_chart_type"></var></h3>
<div class="scroll-view">
<div class="scroll-container">
<div id="scrollBed" class="scroll-bed"></div>
</div>
<div id="buttonContainer" class="button-container">
<a href="#" data-title="prev"><var id="lang_prev_btn"></var></a>
<a href="#" data-title="next"><var id="lang_next_btn"></var></a>
</div>
</div>
</div>
</div>
</div>
<script src="../../third-party/jquery-1.10.2.min.js"></script>
<script src="../../third-party/highcharts/highcharts.js"></script>
<script src="chart.config.js"></script>
<script src="charts.js"></script>
</body>
</html>
================================================
FILE: DjangoUeditor/static/ueditor/dialogs/charts/charts.js
================================================
/*
* 图片转换对话框脚本
**/
var tableData = [],
//编辑器页面table
editorTable = null,
chartsConfig = window.typeConfig,
resizeTimer = null,
//初始默认图表类型
currentChartType = 0;
window.onload = function () {
editorTable = domUtils.findParentByTagName( editor.selection.getRange().startContainer, 'table', true);
//未找到表格, 显示错误页面
if ( !editorTable ) {
document.body.innerHTML = "<div class='edui-charts-not-data'>未找到数据</div>";
return;
}
//初始化图表类型选择
initChartsTypeView();
renderTable( editorTable );
initEvent();
initUserConfig( editorTable.getAttribute( "data-chart" ) );
$( "#scrollBed .view-box:eq("+ currentChartType +")" ).trigger( "click" );
updateViewType( currentChartType );
dialog.addListener( "resize", function () {
if ( resizeTimer != null ) {
window.clearTimeout( resizeTimer );
}
resizeTimer = window.setTimeout( function () {
resizeTimer = null;
renderCharts();
}, 500 );
} );
};
function initChartsTypeView () {
var contents = [];
for ( var i = 0, len = chartsConfig.length; i<len; i++ ) {
contents.push( '<div class="view-box" data-chart-type="'+ i +'"><img width="300" src="images/charts'+ i +'.png"></div>' );
}
$( "#scrollBed" ).html( contents.join( "" ) );
}
//渲染table, 以便用户修改数据
function renderTable ( table ) {
var tableHtml = [];
//构造数据
for ( var i = 0, row; row = table.rows[ i ]; i++ ) {
tableData[ i ] = [];
tableHtml[ i ] = [];
for ( var j = 0, cell; cell = row.cells[ j ]; j++ ) {
var value = getCellValue( cell );
if ( i > 0 && j > 0 ) {
value = +value;
}
if ( i === 0 || j === 0 ) {
tableHtml[ i ].push( '<th>'+ value +'</th>' );
} else {
tableHtml[ i ].push( '<td><input type="text" class="data-item" value="'+ value +'"></td>' );
}
tableData[ i ][ j ] = value;
}
tableHtml[ i ] = tableHtml[ i ].join( "" );
}
//draw 表格
$( "#tableContainer" ).html( '<table id="showTable" border="1"><tbody><tr>'+ tableHtml.join( "</tr><tr>" ) +'</tr></tbody></table>' );
}
/*
* 根据表格已有的图表属性初始化当前图表属性
*/
function initUserConfig ( config ) {
var parsedConfig = {};
if ( !config ) {
return;
}
config = config.split( ";" );
$.each( config, function ( index, item ) {
item = item.split( ":" );
parsedConfig[ item[ 0 ] ] = item[ 1 ];
} );
setUserConfig( parsedConfig );
}
function initEvent () {
var cacheValue = null,
//图表类型数
typeViewCount = chartsConfig.length- 1,
$chartsTypeViewBox = $( '#scrollBed .view-box' );
$( ".charts-format" ).delegate( ".format-ctrl", "change", function () {
renderCharts();
} )
$( ".table-view" ).delegate( ".data-item", "focus", function () {
cacheValue = this.value;
} ).delegate( ".data-item", "blur", function () {
if ( this.value !== cacheValue ) {
renderCharts();
}
cacheValue = null;
} );
$( "#buttonContainer" ).delegate( "a", "click", function (e) {
e.preventDefault();
if ( this.getAttribute( "data-title" ) === 'prev' ) {
if ( currentChartType > 0 ) {
currentChartType--;
updateViewType( currentChartType );
}
} else {
if ( currentChartType < typeViewCount ) {
currentChartType++;
updateViewType( currentChartType );
}
}
} );
//图表类型变化
$( '#scrollBed' ).delegate( ".view-box", "click", function (e) {
var index = $( this ).attr( "data-chart-type" );
$chartsTypeViewBox.removeClass( "selected" );
$( $chartsTypeViewBox[ index ] ).addClass( "selected" );
currentChartType = index | 0;
//饼图, 禁用部分配置
if ( currentChartType === chartsConfig.length - 1 ) {
disableNotPieConfig();
//启用完整配置
} else {
enableNotPieConfig();
}
renderCharts();
} );
}
function renderCharts () {
var data = collectData();
$('#chartsContainer').highcharts( $.extend( {}, chartsConfig[ currentChartType ], {
credits: {
enabled: false
},
exporting: {
enabled: false
},
title: {
text: data.title,
x: -20 //center
},
subtitle: {
text: data.subTitle,
x: -20
},
xAxis: {
title: {
text: data.xTitle
},
categories: data.categories
},
yAxis: {
title: {
text: data.yTitle
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
enabled: true,
valueSuffix: data.suffix
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 1
},
series: data.series
} ));
}
function updateViewType ( index ) {
$( "#scrollBed" ).css( 'marginLeft', -index*324+'px' );
}
function collectData () {
var form = document.forms[ 'data-form' ],
data = null;
if ( currentChartType !== chartsConfig.length - 1 ) {
data = getSeriesAndCategories();
$.extend( data, getUserConfig() );
//饼图数据格式
} else {
data = getSeriesForPieChart();
data.title = form[ 'title' ].value;
data.suffix = form[ 'unit' ].value;
}
return data;
}
/**
* 获取用户配置信息
*/
function getUserConfig () {
var form = document.forms[ 'data-form' ],
info = {
title: form[ 'title' ].value,
subTitle: form[ 'sub-title' ].value,
xTitle: form[ 'x-title' ].value,
yTitle: form[ 'y-title' ].value,
suffix: form[ 'unit' ].value,
//数据对齐方式
tableDataFormat: getTableDataFormat (),
//饼图提示文字
tip: $( "#tipInput" ).val()
};
return info;
}
function setUserConfig ( config ) {
var form = document.forms[ 'data-form' ];
config.title && ( form[ 'title' ].value = config.title );
config.subTitle && ( form[ 'sub-title' ].value = config.subTitle );
config.xTitle && ( form[ 'x-title' ].value = config.xTitle );
config.yTitle && ( form[ 'y-title' ].value = config.yTitle );
config.suffix && ( form[ 'unit' ].value = config.suffix );
config.dataFormat == "-1" && ( form[ 'charts-format' ][ 1 ].checked = true );
config.tip && ( form[ 'tip' ].value = config.tip );
currentChartType = config.chartType || 0;
}
function getSeriesAndCategories () {
var form = document.forms[ 'data-form' ],
series = [],
categories = [],
tmp = [],
tableData = getTableData();
//反转数据
if ( getTableDataFormat() === "-1" ) {
for ( var i = 0, len = tableData.length; i < len; i++ ) {
for ( var j = 0, jlen = tableData[ i ].length; j < jlen; j++ ) {
if ( !tmp[ j ] ) {
tmp[ j ] = [];
}
tmp[ j ][ i ] = tableData[ i ][ j ];
}
}
tableData = tmp;
}
categories = tableData[0].slice( 1 );
for ( var i = 1, data; data = tableData[ i ]; i++ ) {
series.push( {
name: data[ 0 ],
data: data.slice( 1 )
} );
}
return {
series: series,
categories: categories
};
}
/*
* 获取数据源数据对齐方式
*/
function getTableDataFormat () {
var form = document.forms[ 'data-form' ],
items = form['charts-format'];
return items[ 0 ].checked ? items[ 0 ].value : items[ 1 ].value;
}
/*
* 禁用非饼图类型的配置项
*/
function disableNotPieConfig() {
updateConfigItem( 'disable' );
}
/*
* 启用非饼图类型的配置项
*/
function enableNotPieConfig() {
updateConfigItem( 'enable' );
}
function updateConfigItem ( value ) {
var table = $( "#showTable" )[ 0 ],
isDisable = value === 'disable' ? true : false;
//table中的input处理
for ( var i = 2 , row; row = table.rows[ i ]; i++ ) {
for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) {
$( "input", cell ).attr( "disabled", isDisable );
}
}
//其他项处理
$( "input.not-pie-item" ).attr( "disabled", isDisable );
$( "#tipInput" ).attr( "disabled", !isDisable )
}
/*
* 获取饼图数据
* 饼图的数据只取第一行的
**/
function getSeriesForPieChart () {
var series = {
type: 'pie',
name: $("#tipInput").val(),
data: []
},
tableData = getTableData();
for ( var j = 1, jlen = tableData[ 0 ].length; j < jlen; j++ ) {
var title = tableData[ 0 ][ j ],
val = tableData[ 1 ][ j ];
series.data.push( [ title, val ] );
}
return {
series: [ series ]
};
}
function getTableData () {
var table = document.getElementById( "showTable" ),
xCount = table.rows[0].cells.length - 1,
values = getTableInputValue();
for ( var i = 0, value; value = values[ i ]; i++ ) {
tableData[ Math.floor( i / xCount ) + 1 ][ i % xCount + 1 ] = values[ i ];
}
return tableData;
}
function getTableInputValue () {
var table = document.getElementById( "showTable" ),
inputs = table.getElementsByTagName( "input" ),
values = [];
for ( var i = 0, input; input = inputs[ i ]; i++ ) {
values.push( input.value | 0 );
}
return values;
}
function getCellValue ( cell ) {
var value = utils.trim( ( cell.innerText || cell.textContent || '' ) );
return value.replace( new RegExp( UE.dom.domUtils.fillChar, 'g' ), '' ).replace( /^\s+|\s+$/g, '' );
}
//dialog确认事件
dialog.onok = function () {
//收集信息
var form = document.forms[ 'data-form' ],
info = getUserConfig();
//添加图表类型
info.chartType = currentChartType;
//同步表格数据到编辑器
syncTableData();
//执行图表命令
editor.execCommand( 'charts', info );
};
/*
* 同步图表编辑视图的表格数据到编辑器里的原始表格
*/
function syncTableData () {
var tableData = getTableData();
for ( var i = 1, row; row = editorTable.rows[ i ]; i++ ) {
for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) {
cell.innerHTML = tableData[ i ] [ j ];
}
}
}
================================================
FILE: DjangoUeditor/static/ueditor/dialogs/emotion/emotion.css
================================================
.jd img{
background:transparent url(images/jxface2.gif?v=1.1) no-repeat scroll left top;
cursor:pointer;width:35px;height:35px;display:block;
}
.pp img{
background:transparent url(images/fface.gif?v=1.1) no-repeat scroll left top;
cursor:pointer;width:25px;height:25px;display:block;
}
.ldw img{
background:transparent url(images/wface.gif?v=1.1) no-repeat scroll left top;
cursor:pointer;width:35px;height:35px;display:block;
}
.tsj img{
background:transparent url(images/tface.gif?v=1.1) no-repeat scroll left top;
cursor:pointer;width:35px;height:35px;display:block;
}
.cat img{
background:transparent url(images/cface.gif?v=1.1) no-repeat scroll left top;
cursor:pointer;width:35px;height:35px;display:block;
}
.bb img{
background:transparent url(images/bface.gif?v=1.1) no-repeat scroll left top;
cursor:pointer;width:35px;height:35px;display:block;
}
.youa img{
background:transparent url(images/yface.gif?v=1.1) no-repeat scroll left top;
cursor:pointer;width:35px;height:35px;display:block;
}
.smileytable td {height: 37px;}
#tabPanel{margin-left:5px;overflow: hidden;}
#tabContent {float:left;background:#FFFFFF;}
#tabContent div{display: none;width:480px;overflow:hidden;}
#tabIconReview.show{left:17px;display:block;}
.menuFocus{background:#ACCD3C;}
.menuDefault{background:#FFFFFF;}
#tabIconReview{position:absolute;left:406px;left:398px \9;top:41px;z-index:65533;width:90px;height:76px;}
img.review{width:90px;height:76px;border:2px solid #9cb945;background:#FFFFFF;background-position:center;background-repeat:no-repeat;}
.wrapper .tabbody{position:relative;float:left;clear:both;padding:10px;width: 95%;}
.tabbody table{width: 100%;}
.tabbody td{border:1px solid #BAC498;}
.tabbody td span{display: block;zoom:1;padding:0 4px;}
================================================
FILE: DjangoUeditor/static/ueditor/dialogs/emotion/emotion.html
================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="robots" content="noindex, nofollow"/>
<script type="text/javascript" src="../internal.js"></script>
<link rel="stylesheet" type="text/css" href="emotion.css">
</head>
<body>
<div id="tabPanel" class="wrapper">
<div id="tabHeads" class="tabhead">
<span><var id="lang_input_choice"></var></span>
<span><var id="lang_input_Tuzki"></var></span>
<span><var id="lang_input_lvdouwa"></var></span>
<span><var id="lang_input_BOBO"></var></span>
<span><var id="lang_input_babyCat"></var></span>
<span><var id="lang_input_bubble"></var></span>
<span><var id="lang_input_youa"></var></span>
</div>
<div id="tabBodys" class="tabbody">
<div id="tab0"></div>
<div id="tab1"></div>
<div id="tab2"></div>
<div id="tab3"></div>
<div id="tab4"></div>
<div id="tab5"></div>
<div id="tab6"></div>
</div>
</div>
<div id="tabIconReview">
<img id='faceReview' class='review' src="../../themes/default/images/spacer.gif"/>
</div>
<script type="text/javascript" src="emotion.js"></script>
<script type="text/javascript">
var emotion = {
tabNum:7, //切换面板数量
SmilmgName:{ tab0:['j_00', 84], tab1:['t_00', 40], tab2:['w_00', 52], tab3:['B_00', 63], tab4:['C_00', 20], tab5:['i_f', 50], tab6:['y_00', 40] }, //图片前缀名
imageFolders:{ tab0:'jx2/', tab1:'tsj/', tab2:'ldw/', tab3:'bobo/', tab4:'babycat/', tab5:'face/', tab6:'youa/'}, //图片对应文件夹路径
imageCss:{tab0:'jd', tab1:'tsj', tab2:'ldw', tab3:'bb', tab4:'cat', tab5:'pp', tab6:'youa'}, //图片css类名
imageCssOffset:{tab0:35, tab1:35, tab2:35, tab3:35, tab4:35, tab5:25, tab6:35}, //图片偏移
SmileyInfor:{
tab0:['Kiss', 'Love', 'Yeah', '啊!', '背扭', '顶', '抖胸', '88', '汗', '瞌睡', '鲁拉', '拍砖', '揉脸', '生日快乐', '大笑', '瀑布汗~', '惊讶', '臭美', '傻笑', '抛媚眼', '发怒', '打酱油', '俯卧撑', '气愤', '?', '吻', '怒', '胜利', 'HI', 'KISS', '不说', '不要', '扯花', '大心', '顶', '大惊', '飞吻', '鬼脸', '害羞', '口水', '狂哭', '来', '发财了', '吃西瓜', '套牢', '害羞', '庆祝', '我来了', '敲打', '晕了', '胜利', '臭美', '被打了', '贪吃', '迎接', '酷', '微笑', '亲吻', '调皮', '惊恐', '耍酷', '发火', '害羞', '汗水', '大哭', '', '加油', '困', '你NB', '晕倒', '开心', '偷笑', '大哭', '滴汗', '叹气', '超赞', '??', '飞吻', '天使', '撒花', '生气', '被砸', '吓傻', '随意吐'],
tab1:['Kiss', 'Love', 'Yeah', '啊!', '背扭', '顶', '抖胸', '88', '汗', '瞌睡', '鲁拉', '拍砖', '揉脸', '生日快乐', '摊手', '睡觉', '瘫坐', '无聊', '星星闪', '旋转', '也不行', '郁闷', '正Music', '抓墙', '撞墙至死', '歪头', '戳眼', '飘过', '互相拍砖', '砍死你', '扔桌子', '少林寺', '什么?', '转头', '我爱牛奶', '我踢', '摇晃', '晕厥', '在笼子里', '震荡'],
tab2:['大笑', '瀑布汗~', '惊讶', '臭美', '傻笑', '抛媚眼', '发怒', '我错了', 'money', '气愤', '挑逗', '吻', '怒', '胜利', '委屈', '受伤', '说啥呢?', '闭嘴', '不', '逗你玩儿', '飞吻', '眩晕', '魔法', '我来了', '睡了', '我打', '闭嘴', '打', '打晕了', '刷牙', '爆揍', '炸弹', '倒立', '刮胡子', '邪恶的笑', '不要不要', '爱恋中', '放大仔细看', '偷窥', '超高兴', '晕', '松口气', '我跑', '享受', '修养', '哭', '汗', '啊~', '热烈欢迎', '打酱油', '俯卧撑', '?'],
tab3:['HI', 'KISS', '不说', '不要', '扯花', '大心', '顶', '大惊', '飞吻', '鬼脸', '害羞', '口水', '狂哭', '来', '泪眼', '流泪', '生气', '吐舌', '喜欢', '旋转', '再见', '抓狂', '汗', '鄙视', '拜', '吐血', '嘘', '打人', '蹦跳', '变脸', '扯肉', '吃To', '吃花', '吹泡泡糖', '大变身', '飞天舞', '回眸', '可怜', '猛抽', '泡泡', '苹果', '亲', '', '骚舞', '烧香', '睡', '套娃娃', '捅捅', '舞倒', '西红柿', '爱慕', '摇', '摇摆', '杂耍', '招财', '被殴', '被球闷', '大惊', '理想', '欧打', '呕吐', '碎', '吐痰'],
tab4:['发财了', '吃西瓜', '套牢', '害羞', '庆祝', '我来了', '敲打', '晕了', '胜利', '臭美', '被打了', '贪吃', '迎接', '酷', '顶', '幸运', '爱心', '躲', '送花', '选择'],
tab5:['微笑', '亲吻', '调皮', '惊讶', '耍酷', '发火', '害羞', '汗水', '大哭', '得意', '鄙视', '困', '夸奖', '晕倒', '疑问', '媒婆', '狂吐', '青蛙', '发愁', '亲吻', '', '爱心', '心碎', '玫瑰', '礼物', '哭', '奸笑', '可爱', '得意', '呲牙', '暴汗', '楚楚可怜', '困', '哭', '生气', '惊讶',
gitextract_93jukfxm/ ├── .gitignore ├── DjangoUeditor/ │ ├── __init__.py │ ├── commands.py │ ├── forms.py │ ├── models.py │ ├── readme.md │ ├── settings.py │ ├── static/ │ │ └── ueditor/ │ │ ├── _examples/ │ │ │ ├── addCustomizeButton.js │ │ │ ├── addCustomizeCombox.js │ │ │ ├── addCustomizeDialog.js │ │ │ ├── charts.html │ │ │ ├── completeDemo.html │ │ │ ├── customPluginDemo.html │ │ │ ├── customToolbarDemo.html │ │ │ ├── customizeDialogPage.html │ │ │ ├── customizeToolbarUIDemo.html │ │ │ ├── editor_api.js │ │ │ ├── filterRuleDemo.html │ │ │ ├── highlightDemo.html │ │ │ ├── index.html │ │ │ ├── jqueryCompleteDemo.html │ │ │ ├── jqueryValidation.html │ │ │ ├── multiDemo.html │ │ │ ├── multiEditorWithOneInstance.html │ │ │ ├── renderInTable.html │ │ │ ├── resetDemo.html │ │ │ ├── sectiondemo.html │ │ │ ├── server/ │ │ │ │ ├── getContent.ashx │ │ │ │ ├── getContent.asp │ │ │ │ ├── getContent.jsp │ │ │ │ └── getContent.php │ │ │ ├── setWidthHeightDemo.html │ │ │ ├── simpleDemo.html │ │ │ ├── sortableDemo.html │ │ │ ├── submitFormDemo.html │ │ │ ├── textareaDemo.html │ │ │ └── uparsedemo.html │ │ ├── dialogs/ │ │ │ ├── anchor/ │ │ │ │ └── anchor.html │ │ │ ├── attachment/ │ │ │ │ ├── attachment.css │ │ │ │ ├── attachment.html │ │ │ │ └── attachment.js │ │ │ ├── background/ │ │ │ │ ├── background.css │ │ │ │ ├── background.html │ │ │ │ └── background.js │ │ │ ├── charts/ │ │ │ │ ├── chart.config.js │ │ │ │ ├── charts.css │ │ │ │ ├── charts.html │ │ │ │ └── charts.js │ │ │ ├── emotion/ │ │ │ │ ├── emotion.css │ │ │ │ ├── emotion.html │ │ │ │ └── emotion.js │ │ │ ├── gmap/ │ │ │ │ └── gmap.html │ │ │ ├── help/ │ │ │ │ ├── help.css │ │ │ │ ├── help.html │ │ │ │ └── help.js │ │ │ ├── image/ │ │ │ │ ├── image.css │ │ │ │ ├── image.html │ │ │ │ └── image.js │ │ │ ├── insertframe/ │ │ │ │ └── insertframe.html │ │ │ ├── internal.js │ │ │ ├── link/ │ │ │ │ └── link.html │ │ │ ├── map/ │ │ │ │ ├── map.html │ │ │ │ └── show.html │ │ │ ├── music/ │ │ │ │ ├── music.css │ │ │ │ ├── music.html │ │ │ │ └── music.js │ │ │ ├── preview/ │ │ │ │ └── preview.html │ │ │ ├── scrawl/ │ │ │ │ ├── scrawl.css │ │ │ │ ├── scrawl.html │ │ │ │ └── scrawl.js │ │ │ ├── searchreplace/ │ │ │ │ ├── searchreplace.html │ │ │ │ └── searchreplace.js │ │ │ ├── snapscreen/ │ │ │ │ └── snapscreen.html │ │ │ ├── spechars/ │ │ │ │ ├── spechars.html │ │ │ │ └── spechars.js │ │ │ ├── table/ │ │ │ │ ├── edittable.css │ │ │ │ ├── edittable.html │ │ │ │ ├── edittable.js │ │ │ │ ├── edittd.html │ │ │ │ └── edittip.html │ │ │ ├── template/ │ │ │ │ ├── config.js │ │ │ │ ├── template.css │ │ │ │ ├── template.html │ │ │ │ └── template.js │ │ │ ├── video/ │ │ │ │ ├── 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 │ │ │ └── zh-cn/ │ │ │ └── zh-cn.js │ │ ├── php/ │ │ │ ├── Uploader.class.php │ │ │ ├── action_crawler.php │ │ │ ├── action_list.php │ │ │ ├── action_upload.php │ │ │ ├── config.json │ │ │ └── controller.php │ │ ├── themes/ │ │ │ ├── default/ │ │ │ │ ├── css/ │ │ │ │ │ └── ueditor.css │ │ │ │ └── dialogbase.css │ │ │ └── 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 │ │ │ ├── video-js/ │ │ │ │ ├── video-js.css │ │ │ │ ├── video-js.swf │ │ │ │ ├── video.dev.js │ │ │ │ └── video.js │ │ │ ├── webuploader/ │ │ │ │ ├── Uploader.swf │ │ │ │ ├── webuploader.css │ │ │ │ ├── webuploader.custom.js │ │ │ │ ├── webuploader.flashonly.js │ │ │ │ ├── webuploader.html5only.js │ │ │ │ ├── webuploader.js │ │ │ │ └── webuploader.withoutimage.js │ │ │ └── zeroclipboard/ │ │ │ ├── ZeroClipboard.js │ │ │ └── ZeroClipboard.swf │ │ ├── ueditor.all.js │ │ ├── ueditor.config.js │ │ └── ueditor.parse.js │ ├── templates/ │ │ ├── ueditor.html │ │ └── ueditor_old.html │ ├── test_try.py │ ├── urls.py │ ├── utils.py │ ├── views.py │ └── widgets.py ├── README.md ├── course-play.html ├── mysqlclient-1.3.13-cp36-cp36m-win32.whl ├── mysqlclient-1.3.13-cp36-cp36m-win_amd64.whl ├── requirements.txt ├── xadmin/ │ ├── .tx/ │ │ └── config │ ├── __init__.py │ ├── adminx.py │ ├── apps.py │ ├── filters.py │ ├── forms.py │ ├── layout.py │ ├── locale/ │ │ ├── de_DE/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ ├── django.po │ │ │ ├── djangojs.mo │ │ │ └── djangojs.po │ │ ├── en/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ ├── django.po │ │ │ ├── djangojs.mo │ │ │ └── djangojs.po │ │ ├── es_MX/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ ├── django.po │ │ │ ├── djangojs.mo │ │ │ └── djangojs.po │ │ ├── eu/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ ├── django.po │ │ │ ├── djangojs.mo │ │ │ └── djangojs.po │ │ ├── id_ID/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ ├── django.po │ │ │ ├── djangojs.mo │ │ │ └── djangojs.po │ │ ├── ja/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ ├── django.po │ │ │ ├── djangojs.mo │ │ │ └── djangojs.po │ │ ├── lt/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ ├── django.po │ │ │ ├── djangojs.mo │ │ │ └── djangojs.po │ │ ├── nl_NL/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ ├── django.po │ │ │ ├── djangojs.mo │ │ │ └── djangojs.po │ │ ├── pl/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ ├── django.po │ │ │ ├── djangojs.mo │ │ │ └── djangojs.po │ │ ├── pt_BR/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ ├── django.po │ │ │ ├── djangojs.mo │ │ │ └── djangojs.po │ │ ├── ru_RU/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ ├── django.po │ │ │ ├── djangojs.mo │ │ │ └── djangojs.po │ │ └── zh_Hans/ │ │ └── LC_MESSAGES/ │ │ ├── django.mo │ │ ├── django.po │ │ ├── djangojs.mo │ │ └── djangojs.po │ ├── migrations/ │ │ ├── 0001_initial.py │ │ ├── 0002_log.py │ │ ├── 0003_auto_20160715_0100.py │ │ └── __init__.py │ ├── models.py │ ├── plugins/ │ │ ├── __init__.py │ │ ├── actions.py │ │ ├── aggregation.py │ │ ├── ajax.py │ │ ├── auth.py │ │ ├── batch.py │ │ ├── bookmark.py │ │ ├── chart.py │ │ ├── comments.py │ │ ├── details.py │ │ ├── editable.py │ │ ├── excel.py │ │ ├── export.py │ │ ├── filters.py │ │ ├── images.py │ │ ├── importexport.py │ │ ├── inline.py │ │ ├── language.py │ │ ├── layout.py │ │ ├── mobile.py │ │ ├── multiselect.py │ │ ├── passwords.py │ │ ├── portal.py │ │ ├── quickfilter.py │ │ ├── quickform.py │ │ ├── refresh.py │ │ ├── relate.py │ │ ├── relfield.py │ │ ├── sitemenu.py │ │ ├── sortablelist.py │ │ ├── themes.py │ │ ├── topnav.py │ │ ├── ueditor.py │ │ ├── utils.py │ │ ├── wizard.py │ │ └── xversion.py │ ├── sites.py │ ├── static/ │ │ └── xadmin/ │ │ ├── component.json │ │ ├── css/ │ │ │ ├── themes/ │ │ │ │ ├── bootstrap-theme.css │ │ │ │ └── bootstrap-xadmin.css │ │ │ ├── xadmin.form.css │ │ │ ├── xadmin.main.css │ │ │ ├── xadmin.mobile.css │ │ │ ├── xadmin.page.dashboard.css │ │ │ ├── xadmin.plugin.aggregation.css │ │ │ ├── xadmin.plugin.formset.css │ │ │ ├── xadmin.plugin.importexport.css │ │ │ ├── xadmin.plugin.quickfilter.css │ │ │ ├── xadmin.plugins.css │ │ │ ├── xadmin.responsive.css │ │ │ ├── xadmin.widget.editable.css │ │ │ └── xadmin.widget.select-transfer.css │ │ ├── js/ │ │ │ ├── xadmin.main.js │ │ │ ├── xadmin.page.dashboard.js │ │ │ ├── xadmin.page.form.js │ │ │ ├── xadmin.page.list.js │ │ │ ├── xadmin.plugin.actions.js │ │ │ ├── xadmin.plugin.batch.js │ │ │ ├── xadmin.plugin.bookmark.js │ │ │ ├── xadmin.plugin.charts.js │ │ │ ├── xadmin.plugin.details.js │ │ │ ├── xadmin.plugin.editable.js │ │ │ ├── xadmin.plugin.filters.js │ │ │ ├── xadmin.plugin.formset.js │ │ │ ├── xadmin.plugin.importexport.js │ │ │ ├── xadmin.plugin.portal.js │ │ │ ├── xadmin.plugin.quick-form.js │ │ │ ├── xadmin.plugin.quickfilter.js │ │ │ ├── xadmin.plugin.refresh.js │ │ │ ├── xadmin.plugin.revision.js │ │ │ ├── xadmin.plugin.sortablelist.js │ │ │ ├── xadmin.plugin.themes.js │ │ │ ├── xadmin.responsive.js │ │ │ ├── xadmin.widget.datetime.js │ │ │ ├── xadmin.widget.multiselect.js │ │ │ ├── xadmin.widget.select-transfer.js │ │ │ └── xadmin.widget.select.js │ │ └── vendor/ │ │ ├── autotype/ │ │ │ └── index.js │ │ ├── bootstrap/ │ │ │ ├── css/ │ │ │ │ └── bootstrap.css │ │ │ └── js/ │ │ │ └── bootstrap.js │ │ ├── bootstrap-clockpicker/ │ │ │ ├── bootstrap-clockpicker.css │ │ │ └── bootstrap-clockpicker.js │ │ ├── bootstrap-datepicker/ │ │ │ ├── css/ │ │ │ │ └── datepicker.css │ │ │ └── js/ │ │ │ ├── bootstrap-datepicker.js │ │ │ └── locales/ │ │ │ ├── bootstrap-datepicker.bg.js │ │ │ ├── bootstrap-datepicker.ca.js │ │ │ ├── bootstrap-datepicker.cs.js │ │ │ ├── bootstrap-datepicker.da.js │ │ │ ├── bootstrap-datepicker.de.js │ │ │ ├── bootstrap-datepicker.el.js │ │ │ ├── bootstrap-datepicker.es.js │ │ │ ├── bootstrap-datepicker.fi.js │ │ │ ├── bootstrap-datepicker.fr.js │ │ │ ├── bootstrap-datepicker.he.js │ │ │ ├── bootstrap-datepicker.hr.js │ │ │ ├── bootstrap-datepicker.hu.js │ │ │ ├── bootstrap-datepicker.id.js │ │ │ ├── bootstrap-datepicker.is.js │ │ │ ├── bootstrap-datepicker.it.js │ │ │ ├── bootstrap-datepicker.ja.js │ │ │ ├── bootstrap-datepicker.kr.js │ │ │ ├── bootstrap-datepicker.lt.js │ │ │ ├── bootstrap-datepicker.lv.js │ │ │ ├── bootstrap-datepicker.ms.js │ │ │ ├── bootstrap-datepicker.nb.js │ │ │ ├── bootstrap-datepicker.nl.js │ │ │ ├── bootstrap-datepicker.pl.js │ │ │ ├── bootstrap-datepicker.pt-BR.js │ │ │ ├── bootstrap-datepicker.pt.js │ │ │ ├── bootstrap-datepicker.ro.js │ │ │ ├── bootstrap-datepicker.rs-latin.js │ │ │ ├── bootstrap-datepicker.rs.js │ │ │ ├── bootstrap-datepicker.ru.js │ │ │ ├── bootstrap-datepicker.sk.js │ │ │ ├── bootstrap-datepicker.sl.js │ │ │ ├── bootstrap-datepicker.sv.js │ │ │ ├── bootstrap-datepicker.sw.js │ │ │ ├── bootstrap-datepicker.th.js │ │ │ ├── bootstrap-datepicker.tr.js │ │ │ ├── bootstrap-datepicker.uk.js │ │ │ ├── bootstrap-datepicker.zh-CN.js │ │ │ └── bootstrap-datepicker.zh-TW.js │ │ ├── bootstrap-image-gallery/ │ │ │ ├── css/ │ │ │ │ └── bootstrap-image-gallery.css │ │ │ └── js/ │ │ │ └── bootstrap-image-gallery.js │ │ ├── bootstrap-modal/ │ │ │ ├── css/ │ │ │ │ └── bootstrap-modal.css │ │ │ └── js/ │ │ │ ├── bootstrap-modal.js │ │ │ └── bootstrap-modalmanager.js │ │ ├── bootstrap-multiselect/ │ │ │ ├── css/ │ │ │ │ └── bootstrap-multiselect.css │ │ │ └── js/ │ │ │ └── bootstrap-multiselect.js │ │ ├── bootstrap-timepicker/ │ │ │ ├── css/ │ │ │ │ └── bootstrap-timepicker.css │ │ │ └── js/ │ │ │ └── bootstrap-timepicker.js │ │ ├── flot/ │ │ │ ├── excanvas.js │ │ │ ├── jquery.colorhelpers.js │ │ │ ├── jquery.flot.aggregate.js │ │ │ ├── jquery.flot.canvas.js │ │ │ ├── jquery.flot.categories.js │ │ │ ├── jquery.flot.crosshair.js │ │ │ ├── jquery.flot.errorbars.js │ │ │ ├── jquery.flot.fillbetween.js │ │ │ ├── jquery.flot.image.js │ │ │ ├── jquery.flot.js │ │ │ ├── jquery.flot.navigate.js │ │ │ ├── jquery.flot.pie.js │ │ │ ├── jquery.flot.resize.js │ │ │ ├── jquery.flot.selection.js │ │ │ ├── jquery.flot.stack.js │ │ │ ├── jquery.flot.symbol.js │ │ │ ├── jquery.flot.threshold.js │ │ │ └── jquery.flot.time.js │ │ ├── font-awesome/ │ │ │ ├── css/ │ │ │ │ └── font-awesome.css │ │ │ └── fonts/ │ │ │ └── FontAwesome.otf │ │ ├── jquery/ │ │ │ └── jquery.js │ │ ├── jquery-ui/ │ │ │ ├── jquery.ui.core.js │ │ │ ├── jquery.ui.effect.js │ │ │ ├── jquery.ui.mouse.js │ │ │ ├── jquery.ui.sortable.js │ │ │ └── jquery.ui.widget.js │ │ ├── load-image/ │ │ │ └── load-image.js │ │ ├── select2/ │ │ │ ├── select2.css │ │ │ ├── select2.js │ │ │ ├── select2_locale_de.js │ │ │ ├── select2_locale_en.js │ │ │ ├── select2_locale_es.js │ │ │ ├── select2_locale_eu.js │ │ │ ├── select2_locale_fr.js │ │ │ ├── select2_locale_hr.js │ │ │ ├── select2_locale_hu.js │ │ │ ├── select2_locale_it.js │ │ │ ├── select2_locale_nl.js │ │ │ ├── select2_locale_pt-BR.js │ │ │ ├── select2_locale_pt-PT.js │ │ │ ├── select2_locale_ro.js │ │ │ ├── select2_locale_ru.js │ │ │ ├── select2_locale_sk.js │ │ │ ├── select2_locale_sv.js │ │ │ ├── select2_locale_tr.js │ │ │ ├── select2_locale_ua.js │ │ │ ├── select2_locale_zh-CN.js │ │ │ └── select2_locale_zh-hans.js │ │ ├── selectize/ │ │ │ ├── selectize.bootstrap2.css │ │ │ ├── selectize.bootstrap3.css │ │ │ ├── selectize.css │ │ │ ├── selectize.default.css │ │ │ ├── selectize.js │ │ │ └── selectize.legacy.css │ │ └── snapjs/ │ │ ├── snap.css │ │ └── snap.js │ ├── templates/ │ │ └── xadmin/ │ │ ├── 404.html │ │ ├── 500.html │ │ ├── auth/ │ │ │ ├── password_reset/ │ │ │ │ ├── complete.html │ │ │ │ ├── confirm.html │ │ │ │ ├── done.html │ │ │ │ ├── email.html │ │ │ │ └── form.html │ │ │ └── user/ │ │ │ ├── add_form.html │ │ │ └── change_password.html │ │ ├── base.html │ │ ├── base_site.html │ │ ├── blocks/ │ │ │ ├── comm.top.setlang.html │ │ │ ├── comm.top.theme.html │ │ │ ├── comm.top.topnav.html │ │ │ ├── modal_list.left_navbar.quickfilter.html │ │ │ ├── model_form.before_fieldsets.wizard.html │ │ │ ├── model_form.submit_line.wizard.html │ │ │ ├── model_list.nav_form.search_form.html │ │ │ ├── model_list.nav_menu.bookmarks.html │ │ │ ├── model_list.nav_menu.filters.html │ │ │ ├── model_list.results_bottom.actions.html │ │ │ ├── model_list.results_top.charts.html │ │ │ ├── model_list.results_top.date_hierarchy.html │ │ │ ├── model_list.top_toolbar.exports.html │ │ │ ├── model_list.top_toolbar.importexport.export.html │ │ │ ├── model_list.top_toolbar.importexport.import.html │ │ │ ├── model_list.top_toolbar.layouts.html │ │ │ ├── model_list.top_toolbar.refresh.html │ │ │ └── model_list.top_toolbar.saveorder.html │ │ ├── edit_inline/ │ │ │ ├── accordion.html │ │ │ ├── base.html │ │ │ ├── blank.html │ │ │ ├── one.html │ │ │ ├── stacked.html │ │ │ ├── tab.html │ │ │ └── tabular.html │ │ ├── excel/ │ │ │ └── model_list.top_toolbar.import.html │ │ ├── filters/ │ │ │ ├── char.html │ │ │ ├── checklist.html │ │ │ ├── date.html │ │ │ ├── fk_search.html │ │ │ ├── list.html │ │ │ ├── number.html │ │ │ ├── quickfilter.html │ │ │ └── rel.html │ │ ├── forms/ │ │ │ └── transfer.html │ │ ├── grids/ │ │ │ └── thumbnails.html │ │ ├── import_export/ │ │ │ ├── export_action.html │ │ │ └── import.html │ │ ├── includes/ │ │ │ ├── box.html │ │ │ ├── pagination.html │ │ │ ├── sitemenu_accordion.html │ │ │ ├── sitemenu_default.html │ │ │ ├── submit_line.html │ │ │ ├── toggle_back.html │ │ │ └── toggle_menu.html │ │ ├── layout/ │ │ │ ├── field_value.html │ │ │ ├── field_value_td.html │ │ │ ├── fieldset.html │ │ │ ├── input_group.html │ │ │ └── td-field.html │ │ ├── views/ │ │ │ ├── app_index.html │ │ │ ├── batch_change_form.html │ │ │ ├── dashboard.html │ │ │ ├── form.html │ │ │ ├── invalid_setup.html │ │ │ ├── logged_out.html │ │ │ ├── login.html │ │ │ ├── model_dashboard.html │ │ │ ├── model_delete_confirm.html │ │ │ ├── model_delete_selected_confirm.html │ │ │ ├── model_detail.html │ │ │ ├── model_form.html │ │ │ ├── model_history.html │ │ │ ├── model_list.html │ │ │ ├── quick_detail.html │ │ │ ├── quick_form.html │ │ │ ├── recover_form.html │ │ │ ├── recover_list.html │ │ │ ├── revision_diff.html │ │ │ └── revision_form.html │ │ └── widgets/ │ │ ├── addform.html │ │ ├── base.html │ │ ├── chart.html │ │ ├── list.html │ │ └── qbutton.html │ ├── templatetags/ │ │ ├── __init__.py │ │ └── xadmin_tags.py │ ├── util.py │ ├── vendors.py │ ├── views/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── dashboard.py │ │ ├── delete.py │ │ ├── detail.py │ │ ├── edit.py │ │ ├── form.py │ │ ├── list.py │ │ └── website.py │ └── widgets.py └── zhihu.py
SYMBOL INDEX (2177 symbols across 144 files)
FILE: DjangoUeditor/commands.py
class UEditorEventHandler (line 11) | class UEditorEventHandler(object):
method on_selectionchange (line 14) | def on_selectionchange(self):
method on_contentchange (line 17) | def on_contentchange(self):
method render (line 20) | def render(self, editorID):
class UEditorCommand (line 48) | class UEditorCommand(object):
method __init__ (line 53) | def __init__(self, **kwargs):
method render_ui (line 59) | def render_ui(self, editor):
method render_ajax_command (line 63) | def render_ajax_command(self):
method render_command (line 82) | def render_command(self):
method render (line 108) | def render(self, editorID):
method onExecuteCommand (line 122) | def onExecuteCommand(self):
method onExecuteAjaxCommand (line 126) | def onExecuteAjaxCommand(self, state):
method onExecuteQueryvalueCommand (line 130) | def onExecuteQueryvalueCommand(self):
class UEditorButtonCommand (line 135) | class UEditorButtonCommand(UEditorCommand):
method __init__ (line 137) | def __init__(self, **kwargs):
method onClick (line 141) | def onClick(self):
method render_ui (line 147) | def render_ui(self, editorID):
class UEditorComboCommand (line 166) | class UEditorComboCommand(UEditorCommand):
method __init__ (line 168) | def __init__(self, **kwargs):
method get_items (line 174) | def get_items(self):
method onSelect (line 177) | def onSelect(self):
method render_ui (line 180) | def render_ui(self, editorID):
class UEditorDialogCommand (line 201) | class UEditorDialogCommand(UEditorCommand):
FILE: DjangoUeditor/forms.py
class UEditorField (line 8) | class UEditorField(forms.CharField):
method __init__ (line 10) | def __init__(
function UpdateUploadPath (line 43) | def UpdateUploadPath(model_form, model_inst=None):
class UEditorModelForm (line 55) | class UEditorModelForm(forms.ModelForm):
method __init__ (line 57) | def __init__(self, *args, **kwargs):
FILE: DjangoUeditor/models.py
class UEditorField (line 7) | class UEditorField(models.TextField):
method __init__ (line 16) | def __init__(
method formfield (line 35) | def formfield(self, **kwargs):
FILE: DjangoUeditor/settings.py
function UpdateUserSettings (line 192) | def UpdateUserSettings():
function GetUeditorSettings (line 211) | def GetUeditorSettings(key, default=None):
FILE: DjangoUeditor/static/ueditor/dialogs/attachment/attachment.js
function initTabs (line 19) | function initTabs() {
function setTabFocus (line 32) | function setTabFocus(id) {
function initButtons (line 56) | function initButtons() {
function UploadFile (line 87) | function UploadFile(target) {
function addFile (line 181) | function addFile(file) {
function removeFile (line 316) | function removeFile(file) {
function updateTotalProgress (line 323) | function updateTotalProgress() {
function setState (line 341) | function setState(val, files) {
function updateStatus (line 417) | function updateStatus() {
function OnlineFile (line 568) | function OnlineFile(target) {
FILE: DjangoUeditor/static/ueditor/dialogs/background/background.js
function initTabs (line 12) | function initTabs(){
function initColorSelector (line 35) | function initColorSelector () {
function initColorPicker (line 77) | function initColorPicker() {
function initImagePanel (line 116) | function initImagePanel() {
function updateFormState (line 121) | function updateFormState (radio, color, url, align, x, y) {
function updateBackground (line 158) | function updateBackground () {
function OnlineImage (line 184) | function OnlineImage(target) {
FILE: DjangoUeditor/static/ueditor/dialogs/charts/charts.js
function initChartsTypeView (line 49) | function initChartsTypeView () {
function renderTable (line 64) | function renderTable ( table ) {
function initUserConfig (line 104) | function initUserConfig ( config ) {
function initEvent (line 125) | function initEvent () {
function renderCharts (line 201) | function renderCharts () {
function updateViewType (line 253) | function updateViewType ( index ) {
function collectData (line 259) | function collectData () {
function getUserConfig (line 283) | function getUserConfig () {
function setUserConfig (line 302) | function setUserConfig ( config ) {
function getSeriesAndCategories (line 317) | function getSeriesAndCategories () {
function getTableDataFormat (line 367) | function getTableDataFormat () {
function disableNotPieConfig (line 379) | function disableNotPieConfig() {
function enableNotPieConfig (line 388) | function enableNotPieConfig() {
function updateConfigItem (line 394) | function updateConfigItem ( value ) {
function getSeriesForPieChart (line 420) | function getSeriesForPieChart () {
function getTableData (line 445) | function getTableData () {
function getTableInputValue (line 461) | function getTableInputValue () {
function getCellValue (line 475) | function getCellValue ( cell ) {
function syncTableData (line 505) | function syncTableData () {
FILE: DjangoUeditor/static/ueditor/dialogs/emotion/emotion.js
function initImgName (line 14) | function initImgName() {
function initEvtHandler (line 30) | function initEvtHandler( conId ) {
function InsertSmiley (line 47) | function InsertSmiley( url, evt ) {
function switchTab (line 58) | function switchTab( index ) {
function autoHeight (line 79) | function autoHeight( index ) {
function createTab (line 117) | function createTab( tabName ) {
function over (line 157) | function over( td, srcPath, posFlag ) {
function out (line 164) | function out( td ) {
function createTabList (line 171) | function createTabList( tabNum ) {
function createArr (line 179) | function createArr( tabNum ) {
FILE: DjangoUeditor/static/ueditor/dialogs/help/help.js
function clickHandler (line 14) | function clickHandler( tabHeads,tabBodys,obj ) {
function switchTab (line 41) | function switchTab( tabParentId ) {
FILE: DjangoUeditor/static/ueditor/dialogs/image/image.js
function initTabs (line 22) | function initTabs() {
function setTabFocus (line 40) | function setTabFocus(id) {
function initButtons (line 74) | function initButtons() {
function initAlign (line 115) | function initAlign(){
function setAlign (line 126) | function setAlign(align){
function getAlign (line 139) | function getAlign(){
function RemoteImage (line 146) | function RemoteImage(target) {
function updatePreview (line 202) | function updatePreview(){
function UploadImage (line 290) | function UploadImage(target) {
function addFile (line 401) | function addFile(file) {
function removeFile (line 531) | function removeFile(file) {
function updateTotalProgress (line 538) | function updateTotalProgress() {
function setState (line 556) | function setState(val, files) {
function updateStatus (line 632) | function updateStatus() {
function OnlineImage (line 789) | function OnlineImage(target) {
function SearchImage (line 968) | function SearchImage() {
FILE: DjangoUeditor/static/ueditor/dialogs/music/music.js
function Music (line 1) | function Music() {
FILE: DjangoUeditor/static/ueditor/dialogs/scrawl/scrawl.js
function _appendStyle (line 419) | function _appendStyle() {
function _getDom (line 441) | function _getDom() {
function ue_callback (line 570) | function ue_callback(url, state) {
function removeMaskLayer (line 615) | function removeMaskLayer() {
function addMaskLayer (line 622) | function addMaskLayer(html) {
function exec (line 629) | function exec(scrawlObj) {
FILE: DjangoUeditor/static/ueditor/dialogs/searchreplace/searchreplace.js
function clickHandler (line 19) | function clickHandler( tabHeads,tabBodys,obj ) {
function switchTab (line 43) | function switchTab( tabParentId ) {
function getMatchCase (line 61) | function getMatchCase(id) {
FILE: DjangoUeditor/static/ueditor/dialogs/spechars/spechars.js
function toArray (line 55) | function toArray(str) {
FILE: DjangoUeditor/static/ueditor/dialogs/video/video.js
function initTabs (line 24) | function initTabs(){
function initVideo (line 43) | function initVideo(){
function addOkListener (line 73) | function addOkListener(){
function updateAlignButton (line 98) | function updateAlignButton( align ) {
function insertSingle (line 116) | function insertSingle(){
function insertSearch (line 135) | function insertSearch(id){
function findFocus (line 156) | function findFocus( id, returnProperty ) {
function convert_url (line 167) | function convert_url(url){
function checkNum (line 190) | function checkNum( nodes ) {
function isNumber (line 207) | function isNumber( value ) {
function createAlignButton (line 215) | function createAlignButton( ids ) {
function switchSelect (line 235) | function switchSelect( selectParentId ) {
function addUrlChangeListener (line 252) | function addUrlChangeListener(url){
function createPreviewVideo (line 268) | function createPreviewVideo(url){
function insertUpload (line 284) | function insertUpload(){
function initUpload (line 310) | function initUpload(){
function UploadFile (line 316) | function UploadFile(target) {
function addFile (line 410) | function addFile(file) {
function removeFile (line 545) | function removeFile(file) {
function updateTotalProgress (line 552) | function updateTotalProgress() {
function setState (line 570) | function setState(val, files) {
function updateStatus (line 646) | function updateStatus() {
FILE: DjangoUeditor/static/ueditor/dialogs/wordimage/tangram.js
function _createString (line 577) | function _createString(){
function _checkReady (line 587) | function _checkReady(target){
function _callFn (line 602) | function _callFn(callQueue, target){
function _createFunName (line 618) | function _createFunName(fun){
function _render (line 639) | function _render(options){
function _check (line 728) | function _check(){
function _call (line 743) | function _call(){
function getCallBack (line 1197) | function getCallBack(onTimeOut){
function encodeString (line 1354) | function encodeString(source) {
function encodeArray (line 1376) | function encodeArray(source) {
function pad (line 1405) | function pad(source) {
function encodeDate (line 1413) | function encodeDate(source){
FILE: DjangoUeditor/static/ueditor/dialogs/wordimage/wordimage.js
function hideFlash (line 24) | function hideFlash(){
function addOkListener (line 28) | function addOkListener() {
function addUploadListener (line 59) | function addUploadListener() {
function showLocalPath (line 66) | function showLocalPath(id) {
function createFlashUploader (line 83) | function createFlashUploader(opt, callbacks) {
function extendProperty (line 112) | function extendProperty(fromObj, toObj) {
function getPasteData (line 123) | function getPasteData(id) {
function createCopyButton (line 131) | function createCopyButton(id, dataFrom) {
FILE: DjangoUeditor/static/ueditor/php/Uploader.class.php
class Uploader (line 10) | class Uploader
method __construct (line 51) | public function __construct($fileField, $config, $type = "upload")
method upFile (line 71) | private function upFile()
method upBase64 (line 130) | private function upBase64()
method saveRemote (line 171) | private function saveRemote()
method getStateInfo (line 243) | private function getStateInfo($errCode)
method getFileExt (line 252) | private function getFileExt()
method getFullName (line 261) | private function getFullName()
method getFileName (line 295) | private function getFileName () {
method getFilePath (line 303) | private function getFilePath()
method checkType (line 319) | private function checkType()
method checkSize (line 328) | private function checkSize()
method getFileInfo (line 337) | public function getFileInfo()
FILE: DjangoUeditor/static/ueditor/php/action_list.php
function getfiles (line 71) | function getfiles($path, $allowFiles, &$files = array())
FILE: DjangoUeditor/static/ueditor/third-party/SyntaxHighlighter/shCore.js
function clone (line 499) | function clone (regex, additionalFlags) {
function getNativeFlags (line 513) | function getNativeFlags (regex) {
function runTokens (line 521) | function runTokens (pattern, index, scope, context) {
function indexOf (line 550) | function indexOf (array, item, from) {
function defaultGetHtml (line 801) | function defaultGetHtml(highlighter, name)
function getValue (line 839) | function getValue(name)
function hasClass (line 1036) | function hasClass(target, className)
function addClass (line 1046) | function addClass(target, className)
function removeClass (line 1057) | function removeClass(target, className)
function toArray (line 1068) | function toArray(source)
function splitLines (line 1083) | function splitLines(block)
function getHighlighterId (line 1093) | function getHighlighterId(id)
function getHighlighterById (line 1104) | function getHighlighterById(id)
function getHighlighterDivById (line 1114) | function getHighlighterDivById(id)
function storeHighlighter (line 1124) | function storeHighlighter(highlighter)
function findElement (line 1137) | function findElement(target, search, reverse /* optional */)
function findParentElement (line 1170) | function findParentElement(target, className)
function indexOf (line 1182) | function indexOf(array, searchElement, fromIndex)
function guid (line 1196) | function guid(prefix)
function merge (line 1208) | function merge(obj1, obj2)
function toBoolean (line 1226) | function toBoolean(value)
function popup (line 1241) | function popup(url, name, width, height, options)
function attachEvent (line 1265) | function attachEvent(obj, type, func, scope)
function alert (line 1297) | function alert(str)
function findBrush (line 1309) | function findBrush(alias, showAlert)
function eachLine (line 1352) | function eachLine(str, callback)
function trimFirstAndLastLines (line 1370) | function trimFirstAndLastLines(str)
function parseParams (line 1390) | function parseParams(str)
function wrapLinesWithCode (line 1434) | function wrapLinesWithCode(str, css)
function padNumber (line 1484) | function padNumber(number, length)
function processTabs (line 1501) | function processTabs(code, tabSize)
function processSmartTabs (line 1518) | function processSmartTabs(code, tabSize)
function fixInputString (line 1566) | function fixInputString(str)
function trim (line 1585) | function trim(str)
function unindent (line 1595) | function unindent(str)
function matchesSortCallback (line 1637) | function matchesSortCallback(m1, m2)
function getMatches (line 1664) | function getMatches(code, regexInfo)
function processUrls (line 1695) | function processUrls(code)
function getSyntaxHighlighterScriptTags (line 1723) | function getSyntaxHighlighterScriptTags()
function stripCData (line 1742) | function stripCData(original)
function quickCodeHandler (line 1774) | function quickCodeHandler(e)
function offsetMatches (line 1880) | function offsetMatches(matches, offset)
function process (line 1886) | function process(match, info)
function getBrushNameCss (line 2169) | function getBrushNameCss(match)
function Brush (line 2388) | function Brush()
function Brush (line 2432) | function Brush()
function Brush (line 2491) | function Brush()
function Brush (line 2534) | function Brush()
function Brush (line 2618) | function Brush()
function Brush (line 2699) | function Brush()
function Brush (line 2748) | function Brush()
function Brush (line 2823) | function Brush()
function Brush (line 2862) | function Brush()
function Brush (line 2887) | function Brush()
function Brush (line 2923) | function Brush()
function Brush (line 2974) | function Brush()
function Brush (line 3015) | function Brush()
function Brush (line 3057) | function Brush()
function Brush (line 3093) | function Brush()
function Brush (line 3170) | function Brush()
function Brush (line 3242) | function Brush()
function Brush (line 3259) | function Brush()
function Brush (line 3318) | function Brush()
function Brush (line 3366) | function Brush()
function Brush (line 3405) | function Brush()
function Brush (line 3483) | function Brush()
function Brush (line 3518) | function Brush()
function Brush (line 3568) | function Brush()
function Brush (line 3608) | function Brush()
FILE: DjangoUeditor/static/ueditor/third-party/codemirror/codemirror.js
function CodeMirror (line 11) | function CodeMirror(place, givenOptions) {
function lookupKey (line 1870) | function lookupKey(name, extraMap, map) {
function isModifierKey (line 1885) | function isModifierKey(event) {
function save (line 1896) | function save() {textarea.value = instance.getValue();}
function wrappedSubmit (line 1902) | function wrappedSubmit() {
function copyState (line 1933) | function copyState(mode, state) {
function startState (line 1945) | function startState(mode, a1, a2) {
function StringStream (line 1951) | function StringStream(string, tabSize) {
function cased (line 1990) | function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
function MarkedText (line 2006) | function MarkedText(from, to, className, set) {
function Bookmark (line 2036) | function Bookmark(pos) {
function Line (line 2072) | function Line(text, styles) {
function span (line 2234) | function span(text, style) {
function nextMark (line 2259) | function nextMark() {
function copyStyles (line 2306) | function copyStyles(from, to, source, dest) {
function LeafChunk (line 2322) | function LeafChunk(lines) {
function BranchChunk (line 2356) | function BranchChunk(children) {
function getLineAt (line 2454) | function getLineAt(chunk, n) {
function lineNo (line 2464) | function lineNo(line) {
function lineAtHeight (line 2475) | function lineAtHeight(chunk, h) {
function heightAtLine (line 2493) | function heightAtLine(chunk, n) {
function History (line 2510) | function History() {
function stopMethod (line 2541) | function stopMethod() {e_stop(this);}
function addStop (line 2543) | function addStop(event) {
function e_preventDefault (line 2548) | function e_preventDefault(e) {
function e_stopPropagation (line 2552) | function e_stopPropagation(e) {
function e_stop (line 2556) | function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}
function e_target (line 2561) | function e_target(e) {return e.target || e.srcElement;}
function e_button (line 2562) | function e_button(e) {
function connect (line 2571) | function connect(node, type, handler, disconnect) {
function Delayed (line 2584) | function Delayed() {this.id = null;}
function countColumn (line 2610) | function countColumn(string, end, tabSize) {
function computedStyle (line 2622) | function computedStyle(elt) {
function eltOffset (line 2629) | function eltOffset(node, screen) {
function eltText (line 2665) | function eltText(node) {
function posEq (line 2670) | function posEq(a, b) {return a.line == b.line && a.ch == b.ch;}
function posLess (line 2671) | function posLess(a, b) {return a.line < b.line || (a.line == b.line && a...
function copyPos (line 2672) | function copyPos(x) {return {line: x.line, ch: x.ch};}
function htmlEscape (line 2675) | function htmlEscape(str) {
function editEnd (line 2697) | function editEnd(from, to) {
function indexOf (line 2705) | function indexOf(collection, elt) {
function isWordChar (line 2711) | function isWordChar(ch) {
function inText (line 2775) | function inText(stream, state) {
function inTag (line 2821) | function inTag(stream, state) {
function inAttribute (line 2842) | function inAttribute(quote) {
function inBlock (line 2854) | function inBlock(style, terminator) {
function doctype (line 2866) | function doctype(depth) {
function pass (line 2888) | function pass() {
function cont (line 2891) | function cont() {
function pushContext (line 2896) | function pushContext(tagName, startOfLine) {
function popContext (line 2906) | function popContext() {
function element (line 2910) | function element(type) {
function endtag (line 2926) | function endtag(startOfLine) {
function endclosetag (line 2935) | function endclosetag(err) {
function attributes (line 2944) | function attributes(type) {
function attvalue (line 2950) | function attvalue(type) {
function attvaluemaybe (line 2955) | function attvaluemaybe(type) {
function kw (line 3021) | function kw(type) {return {type: type, style: "keyword"};}
function chain (line 3037) | function chain(stream, state, f) {
function nextUntilUnescaped (line 3042) | function nextUntilUnescaped(stream, end) {
function ret (line 3055) | function ret(tp, style, cont) {
function jsTokenBase (line 3060) | function jsTokenBase(stream, state) {
function jsTokenString (line 3108) | function jsTokenString(quote) {
function jsTokenComment (line 3116) | function jsTokenComment(stream, state) {
function JSLexical (line 3132) | function JSLexical(indented, column, type, align, prev, info) {
function inScope (line 3141) | function inScope(state, varname) {
function parseJS (line 3146) | function parseJS(state, style, type, content, stream) {
function pass (line 3170) | function pass() {
function cont (line 3173) | function cont() {
function register (line 3177) | function register(varname) {
function pushcontext (line 3190) | function pushcontext() {
function popcontext (line 3194) | function popcontext() {
function pushlex (line 3198) | function pushlex(type, info) {
function poplex (line 3206) | function poplex() {
function expect (line 3216) | function expect(wanted) {
function statement (line 3224) | function statement(type) {
function expression (line 3242) | function expression(type) {
function maybeexpression (line 3252) | function maybeexpression(type) {
function maybeoperator (line 3257) | function maybeoperator(type, value) {
function maybelabel (line 3265) | function maybelabel(type) {
function property (line 3269) | function property(type) {
function objprop (line 3272) | function objprop(type) {
function commasep (line 3276) | function commasep(what, end) {
function block (line 3287) | function block(type) {
function vardef1 (line 3291) | function vardef1(type, value) {
function vardef2 (line 3295) | function vardef2(type, value) {
function forspec1 (line 3299) | function forspec1(type) {
function formaybein (line 3305) | function formaybein(type, value) {
function forspec2 (line 3309) | function forspec2(type, value) {
function forspec3 (line 3314) | function forspec3(type) {
function functiondef (line 3317) | function functiondef(type, value) {
function funarg (line 3321) | function funarg(type, value) {
function ret (line 3377) | function ret(style, tp) {type = tp; return style;}
function tokenBase (line 3379) | function tokenBase(stream, state) {
function tokenCComment (line 3420) | function tokenCComment(stream, state) {
function tokenSGMLComment (line 3432) | function tokenSGMLComment(stream, state) {
function tokenString (line 3444) | function tokenString(quote) {
function html (line 3504) | function html(stream, state) {
function maybeBackup (line 3520) | function maybeBackup(stream, pat, style) {
function javascript (line 3526) | function javascript(stream, state) {
function css (line 3536) | function css(stream, state) {
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/adapters/standalone-framework.js
function o (line 8) | function o(c){function a(a,b,d){a.removeEventListener(b,d,!1)}function d...
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/adapters/standalone-framework.src.js
function augment (line 29) | function augment(obj) {
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/highcharts-more.js
function J (line 8) | function J(a,b,c){this.init.call(this,a,b,c)}
function K (line 8) | function K(a,b,c){a.call(this,b,c);if(this.chart.polar)this.closeSegment...
function L (line 8) | function L(a,b){var c=this.chart,d=this.options.animation,g=this.group,f...
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/highcharts-more.src.js
function Pane (line 42) | function Pane(options, chart, firstAxis) {
function initArea (line 2028) | function initArea(proceed, chart, options) {
function polarAnimate (line 2199) | function polarAnimate(proceed, init) {
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/highcharts.js
function r (line 8) | function r(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}
function x (line 8) | function x(){var a,b=arguments.length,c={},d=function(a,b){var c,h;typeo...
function C (line 8) | function C(a,b){return parseInt(a,b||10)}
function ea (line 8) | function ea(a){return typeof a==="string"}
function T (line 8) | function T(a){return typeof a===
function Ia (line 9) | function Ia(a){return Object.prototype.toString.call(a)==="[object Array]"}
function sa (line 9) | function sa(a){return typeof a==="number"}
function na (line 9) | function na(a){return R.log(a)/R.LN10}
function fa (line 9) | function fa(a){return R.pow(10,a)}
function ga (line 9) | function ga(a,b){for(var c=a.length;c--;)if(a[c]===b){a.splice(c,1);break}}
function u (line 9) | function u(a){return a!==w&&a!==null}
function v (line 9) | function v(a,b,c){var d,e;if(ea(b))u(c)?a.setAttribute(b,c):a&&a.getAttr...
function ja (line 9) | function ja(a){return Ia(a)?
function o (line 10) | function o(){var a=arguments,b,c,d=a.length;for(b=0;b<d;b++)if(c=a[b],ty...
function K (line 10) | function K(a,b){if(ta&&b&&b.opacity!==w)b.filter="alpha(opacity="+b.opac...
function U (line 10) | function U(a,b,c,d,e){a=y.createElement(a);b&&r(a,b);e&&K(a,{padding:0,b...
function ha (line 10) | function ha(a,b){var c=function(){};c.prototype=new a;r(c.prototype,b);r...
function Aa (line 10) | function Aa(a,b,c,d){var e=M.lang,a=+a||0,f=b===-1?(a.toString().split("...
function Ba (line 11) | function Ba(a,b){return Array((b||2)+1-String(a).length).join(0)+a}
function mb (line 11) | function mb(a,b,c){var d=a[b];a[b]=function(){var a=Array.prototype.slic...
function Ca (line 11) | function Ca(a,b){for(var c="{",d=!1,
function nb (line 12) | function nb(a){return R.pow(10,P(R.log(a)/R.LN10))}
function ob (line 12) | function ob(a,b,c,d){var e,c=o(c,1);e=a/c;b||(b=[1,2,2.5,5,10],d&&d.allo...
function Cb (line 13) | function Cb(a,b){var c=b||[[Db,[1,2,5,10,20,25,50,100,200,500]],[pb,[1,2...
function Eb (line 14) | function Eb(a,b,c,d){var e=[],f={},g=M.global.useUTC,h,i=new Date(b),j=a...
function Jb (line 15) | function Jb(){this.symbol=this.color=0}
function Kb (line 15) | function Kb(a,b){var c=a.length,d,e;for(e=0;e<c;e++)a[e].ss_i=e;a.sort(f...
function Ja (line 16) | function Ja(a){for(var b=a.length,c=a[0];b--;)a[b]<c&&(c=a[b]);return c}
function va (line 16) | function va(a){for(var b=a.length,c=a[0];b--;)a[b]>c&&(c=a[b]);return c}
function Ka (line 16) | function Ka(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destr...
function Ta (line 16) | function Ta(a){cb||(cb=U(Ea));a&&cb.appendChild(a);cb.innerHTML=""}
function ka (line 16) | function ka(a,b){var c="Highcharts error #"+a+": www.highcharts.com/erro...
function ia (line 16) | function ia(a){return parseFloat(a.toPrecision(14))}
function La (line 17) | function La(a,b){Fa=o(a,b.animation)}
function Lb (line 17) | function Lb(){var a=M.global.useUTC,b=a?"getUTC":"get",c=a?"setUTC":"set...
function wa (line 17) | function wa(){}
function Ma (line 17) | function Ma(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!...
function vb (line 17) | function vb(a,b){this.axis=a;if(b)this.options=
function Mb (line 18) | function Mb(a,b,c,d,e,f){var g=a.chart.inverted;this.axis=a;this.isNegat...
function db (line 18) | function db(){this.init.apply(this,arguments)}
function wb (line 18) | function wb(){this.init.apply(this,arguments)}
function xb (line 19) | function xb(a,b){this.init(a,b)}
function eb (line 19) | function eb(a,b){this.init(a,b)}
function yb (line 19) | function yb(){this.init.apply(this,arguments)}
function j (line 72) | function j(){var a,b;a=o.element.style;L=(Oa===void 0||la===void 0||q.st...
function k (line 73) | function k(){var a=q.styles,a=a&&a.textAlign,b=kb+da*(1-s),c;c=h?0:v;if(...
function l (line 73) | function l(a,b){A?A.attr(a,b):lb[a]=b}
function m (line 73) | function m(){o.add(q);q.attr({text:a,x:b,y:c});A&&u(e)&&q.attr({anchorX:...
function a (line 93) | function a(){var a=b.length,d;for(d=0;d<a;d++)b[d]();b=[]}
function a (line 193) | function a(a){var g=c.width||jb(d,"width"),h=c.height||jb(d,"height"),a=...
function a (line 248) | function a(){var a={width:b.yAxis.len,height:b.xAxis.len};n(["group","ma...
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/highcharts.src.js
function extend (line 128) | function extend(a, b) {
function merge (line 145) | function merge() {
function hash (line 188) | function hash() {
function pInt (line 204) | function pInt(s, mag) {
function isString (line 212) | function isString(s) {
function isObject (line 220) | function isObject(obj) {
function isArray (line 228) | function isArray(obj) {
function isNumber (line 236) | function isNumber(n) {
function log2lin (line 240) | function log2lin(num) {
function lin2log (line 243) | function lin2log(num) {
function erase (line 252) | function erase(arr, item) {
function defined (line 267) | function defined(obj) {
function attr (line 279) | function attr(elem, prop, value) {
function splat (line 308) | function splat(obj) {
function pick (line 316) | function pick() {
function css (line 334) | function css(el, styles) {
function createElement (line 351) | function createElement(tag, attribs, styles, parent, nopad) {
function extendClass (line 373) | function extendClass(parent, members) {
function numberFormat (line 387) | function numberFormat(number, decimals, decPoint, thousandsSep) {
function pad (line 409) | function pad(number, length) {
function wrap (line 422) | function wrap(obj, method, func) {
function formatSingle (line 501) | function formatSingle(format, val) {
function format (line 525) | function format(str, ctx) {
function getMagnitude (line 575) | function getMagnitude(num) {
function normalizeTickInterval (line 586) | function normalizeTickInterval(interval, multiples, magnitude, options) {
function normalizeTimeTickInterval (line 629) | function normalizeTimeTickInterval(tickInterval, unitsOption) {
function getTimeTicks (line 710) | function getTimeTicks(normalizedInterval, min, max, startOfWeek) {
function ChartCounters (line 822) | function ChartCounters() {
function stableSort (line 852) | function stableSort(arr, sortFunction) {
function arrayMin (line 878) | function arrayMin(data) {
function arrayMax (line 895) | function arrayMax(data) {
function destroyObjectProperties (line 914) | function destroyObjectProperties(obj, except) {
function discardElement (line 933) | function discardElement(element) {
function error (line 949) | function error(code, stop) {
function correctFloat (line 962) | function correctFloat(num) {
function setAnimation (line 974) | function setAnimation(animation, chart) {
function setTimeMethods (line 1821) | function setTimeMethods() {
function setOptions (line 1854) | function setOptions(options) {
function getOptions (line 1874) | function getOptions() {
function init (line 1891) | function init(input) {
function get (line 1925) | function get(format) {
function brighten (line 1954) | function brighten(alpha) {
function setOpacity (line 1979) | function setOpacity(alpha) {
function SVGElement (line 2000) | function SVGElement() {}
function updateBoxSize (line 4272) | function updateBoxSize() {
function updateTextPadding (line 4312) | function updateTextPadding() {
function boxAttr (line 4344) | function boxAttr(key, value) {
function getSizeAfterAdd (line 4352) | function getSizeAfterAdd() {
function drawDeferred (line 5727) | function drawDeferred() {
function Tick (line 5763) | function Tick(axis, pos, type, noLabel) {
function PlotLineOrBand (line 6170) | function PlotLineOrBand(axis, options) {
function StackItem (line 6345) | function StackItem(axis, options, isNegative, x, stackOption, stacking) {
function Axis (line 6456) | function Axis() {
function Tooltip (line 8560) | function Tooltip() {
function Pointer (line 9010) | function Pointer(chart, options) {
function Legend (line 9848) | function Legend(chart, options) {
function Chart (line 10518) | function Chart() {
function reflow (line 11514) | function reflow(e) {
function setInvert (line 14818) | function setInvert() {
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/modules/annotations.js
function m (line 1) | function m(a){return typeof a==="number"}
function n (line 1) | function n(a){return a!==D&&a!==null}
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/modules/annotations.src.js
function defaultOptions (line 26) | function defaultOptions(shapeType) {
function isArray (line 64) | function isArray(obj) {
function isNumber (line 68) | function isNumber(n) {
function defined (line 72) | function defined(obj) {
function translatePath (line 76) | function translatePath(d, xAxis, yAxis, xOffset, yOffset) {
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/modules/canvas-tools.js
function RGBColor (line 21) | function RGBColor(m){this.ok=!1;m.charAt(0)=="#"&&(m=m.substr(1,6));var ...
function m (line 31) | function m(){var a={FRAMERATE:30,MAX_VIRTUAL_PIXELS:3E4};a.init=function...
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/modules/canvas-tools.src.js
function RGBColor (line 8) | function RGBColor(color_string)
function build (line 382) | function build() {
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/modules/drilldown.js
function q (line 1) | function q(b,a,c){return"rgba("+[Math.round(b[0]+(a[0]-b[0])*c),Math.rou...
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/modules/drilldown.src.js
function tweenColors (line 28) | function tweenColors(startColor, endColor, pos) {
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/modules/map.js
function x (line 8) | function x(a,b,c){for(var d=4,e=[];d--;)e[d]=Math.round(b.rgba[d]+(a.rgb...
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/modules/map.src.js
function tweenColors (line 40) | function tweenColors(from, to, pos) {
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/modules/no-data-to-display.js
function f (line 10) | function f(){return!!this.points.length}
function g (line 10) | function g(){this.hasData()?this.hideNoData():this.showNoData()}
FILE: DjangoUeditor/static/ueditor/third-party/highcharts/modules/no-data-to-display.src.js
function hasDataPie (line 43) | function hasDataPie() {
function handleNoData (line 111) | function handleNoData() {
FILE: DjangoUeditor/static/ueditor/third-party/jquery-1.10.2.js
function isArraylike (line 983) | function isArraylike( obj ) {
function Sizzle (line 1183) | function Sizzle( selector, context, results, seed ) {
function createCache (line 1298) | function createCache() {
function markFunction (line 1316) | function markFunction( fn ) {
function assert (line 1325) | function assert( fn ) {
function addHandle (line 1347) | function addHandle( attrs, handler ) {
function siblingCheck (line 1362) | function siblingCheck( a, b ) {
function createInputPseudo (line 1389) | function createInputPseudo( type ) {
function createButtonPseudo (line 1400) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 1411) | function createPositionalPseudo( fn ) {
function setFilters (line 2394) | function setFilters() {}
function tokenize (line 2398) | function tokenize( selector, parseOnly ) {
function toSelector (line 2465) | function toSelector( tokens ) {
function addCombinator (line 2475) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2525) | function elementMatcher( matchers ) {
function condense (line 2539) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2560) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2653) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2708) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function multipleContexts (line 2836) | function multipleContexts( selector, contexts, results ) {
function select (line 2845) | function select( selector, context, results, seed ) {
function createOptions (line 2985) | function createOptions( options ) {
function internalData (line 3568) | function internalData( elem, name, data, pvt /* Internal Use Only */ ){
function internalRemoveData (line 3657) | function internalRemoveData( elem, name, pvt ) {
function dataAttr (line 3854) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 3886) | function isEmptyDataObject( obj ) {
function returnTrue (line 4712) | function returnTrue() {
function returnFalse (line 4716) | function returnFalse() {
function safeActiveElement (line 4720) | function safeActiveElement() {
function sibling (line 5838) | function sibling( cur, dir ) {
function winnow (line 5956) | function winnow( elements, qualifier, not ) {
function createSafeFragment (line 5984) | function createSafeFragment( document ) {
function manipulationTarget (line 6298) | function manipulationTarget( elem, content ) {
function disableScript (line 6308) | function disableScript( elem ) {
function restoreScript (line 6312) | function restoreScript( elem ) {
function setGlobalEval (line 6323) | function setGlobalEval( elems, refElements ) {
function cloneCopyEvent (line 6331) | function cloneCopyEvent( src, dest ) {
function fixCloneNodeIssues (line 6359) | function fixCloneNodeIssues( src, dest ) {
function getAll (line 6452) | function getAll( context, tag ) {
function fixDefaultChecked (line 6475) | function fixDefaultChecked( elem ) {
function vendorPropName (line 6817) | function vendorPropName( style, name ) {
function isHidden (line 6839) | function isHidden( elem, el ) {
function showHide (line 6846) | function showHide( elements, show ) {
function setPositiveNumber (line 7175) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 7183) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 7222) | function getWidthOrHeight( elem, name, extra ) {
function css_defaultDisplay (line 7266) | function css_defaultDisplay( nodeName ) {
function actualDisplay (line 7298) | function actualDisplay( name, doc ) {
function buildParams (line 7527) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 7642) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 7674) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 7701) | function ajaxExtend( target, src ) {
function done (line 8149) | function done( status, nativeStatusText, responses, headers ) {
function ajaxHandleResponses (line 8296) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 8351) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function createStandardXHR (line 8619) | function createStandardXHR() {
function createActiveXHR (line 8625) | function createActiveXHR() {
function createFxNow (line 8871) | function createFxNow() {
function createTween (line 8878) | function createTween( value, prop, animation ) {
function Animation (line 8892) | function Animation( elem, properties, options ) {
function propFilter (line 8996) | function propFilter( props, specialEasing ) {
function defaultPrefilter (line 9063) | function defaultPrefilter( elem, props, opts ) {
function Tween (line 9188) | function Tween( elem, options, prop, end, easing ) {
function genFx (line 9412) | function genFx( type, includeWidth ) {
function getWindow (line 9708) | function getWindow( elem ) {
FILE: DjangoUeditor/static/ueditor/third-party/video-js/video.dev.js
function returnTrue (line 410) | function returnTrue() { return true; }
function returnFalse (line 411) | function returnFalse() { return false; }
function F (line 656) | function F() {}
function createMethod (line 5055) | function createMethod(methodName){
function walk (line 6995) | function walk(holder, key) {
FILE: DjangoUeditor/static/ueditor/third-party/video-js/video.js
function m (line 1) | function m(){return function(){}}
function p (line 1) | function p(a){return function(){return this[a]}}
function s (line 1) | function s(a){return function(){return a}}
function u (line 1) | function u(a,c,d){if("string"===typeof a){0===a.indexOf("#")&&(a=a.slice...
function c (line 6) | function c(){return f}
function d (line 6) | function d(){return l}
function e (line 8) | function e(){u.o(a,c,e);d.apply(this,arguments)}
function c (line 9) | function c(){}
function e (line 10) | function e(){return c.apply(a,arguments)}
function D (line 25) | function D(a){a.u("vjs-lock-showing")}
function E (line 26) | function E(a,c,d,e){if(d!==b)return a.a.style[c]=-1!==(""+d).indexOf("%"...
function F (line 32) | function F(a,c){var d,e,g,j;d=a.a;e=u.ad(d);j=g=d.offsetWidth;d=a.handle...
function ca (line 34) | function ca(a,c){a.Z(c);c.d("click",u.bind(a,function(){D(this)}))}
function H (line 37) | function H(a){a.pa=f;a.wa.n("vjs-lock-showing");a.a.setAttribute("aria-p...
function G (line 38) | function G(a){a.pa=l;D(a.wa);a.a.setAttribute("aria-pressed",l)}
function da (line 42) | function da(a){var c={sources:[],tracks:[]};u.k.B(c,u.xb(a));if(a.hasChi...
function I (line 45) | function I(a,c,d){a.h?(a.aa=l,a.h.D(),a.Eb&&(a.Eb=l,clearInterval(a.Ra))...
function J (line 46) | function J(a){a.Fb=l;a.za();a.o("play",a.Cc);a.o("pause",a.za)}
function L (line 48) | function L(a,c,d){if(a.h&&!a.h.aa)a.h.L(function(){this[c](d)});else try...
function K (line 48) | function K(a,c){if(a.h&&a.h.aa)try{return a.h[c]()}catch(d){throw a.h[c]...
function M (line 53) | function M(a){a.cd=l;u.o(document,"keydown",a.lc);document.documentEleme...
function ea (line 86) | function ea(){var a=u.media.Va[i];return function(){throw Error('The "'+...
function fa (line 99) | function fa(){var a=R[T],c=a.charAt(0).toUpperCase()+a.slice(1);Q["set"+...
function U (line 99) | function U(a){Q[a]=function(){return this.a.vjs_getProperty(a)}}
function V (line 105) | function V(a){a.Aa=a.Aa||[];return a.Aa}
function W (line 105) | function W(a,c,d){for(var e=a.Aa,g=0,j=e.length,k,q;g<j;g++)k=e[g],k.id(...
function X (line 108) | function X(a){0===a.ha&&a.load();0===a.ga&&(a.b.d("timeupdate",u.bind(a,...
function Y (line 110) | function Y(a){var c=a.split(":");a=0;var d,e,g;3==c.length?(d=c[0],e=c[1...
function d (line 121) | function d(a,e){var k,q,n=a[e];if(n&&"object"===typeof n)for(k in n)Obje...
function $ (line 123) | function $(a,c){var d=a.split("."),e=ga;!(d[0]in e)&&e.execScript&&e.exe...
FILE: DjangoUeditor/static/ueditor/third-party/webuploader/webuploader.custom.js
function uncurryThis (line 194) | function uncurryThis( fn ) {
function bindFn (line 200) | function bindFn( fn, context ) {
function createObject (line 206) | function createObject( proto ) {
function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
function triggerHanders (line 512) | function triggerHanders( events, args ) {
function Uploader (line 721) | function Uploader( opts ) {
function Runtime (line 903) | function Runtime( options ) {
function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
function Blob (line 1139) | function Blob( ruid, source ) {
function File (line 1183) | function File( ruid, file ) {
function FilePicker (line 1223) | function FilePicker( opts ) {
function isArrayLike (line 1358) | function isArrayLike( obj ) {
function Widget (line 1375) | function Widget( uploader ) {
function Image (line 1653) | function Image( opts ) {
function gid (line 2022) | function gid() {
function WUFile (line 2033) | function WUFile( source ) {
function Queue (line 2210) | function Queue() {
function Transport (line 2758) | function Transport( opts ) {
function CuteFile (line 2971) | function CuteFile( file, chunkSize ) {
function CompBase (line 3541) | function CompBase( owner, runtime ) {
function Html5Runtime (line 3573) | function Html5Runtime() {
function detectVerticalSquash (line 4559) | function detectVerticalSquash( img, iw, ih ) {
function detectSubsampling (line 4611) | function detectSubsampling( img ) {
function JPEGEncoder (line 4727) | function JPEGEncoder(quality) {
FILE: DjangoUeditor/static/ueditor/third-party/webuploader/webuploader.flashonly.js
function uncurryThis (line 194) | function uncurryThis( fn ) {
function bindFn (line 200) | function bindFn( fn, context ) {
function createObject (line 206) | function createObject( proto ) {
function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
function triggerHanders (line 512) | function triggerHanders( events, args ) {
function Uploader (line 721) | function Uploader( opts ) {
function Runtime (line 903) | function Runtime( options ) {
function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
function Blob (line 1139) | function Blob( ruid, source ) {
function File (line 1183) | function File( ruid, file ) {
function FilePicker (line 1223) | function FilePicker( opts ) {
function isArrayLike (line 1358) | function isArrayLike( obj ) {
function Widget (line 1375) | function Widget( uploader ) {
function Image (line 1653) | function Image( opts ) {
function gid (line 2022) | function gid() {
function WUFile (line 2033) | function WUFile( source ) {
function Queue (line 2210) | function Queue() {
function Transport (line 2758) | function Transport( opts ) {
function CuteFile (line 2971) | function CuteFile( file, chunkSize ) {
function hashString (line 3715) | function hashString( str ) {
function CompBase (line 3761) | function CompBase( owner, runtime ) {
function getFlashVersion (line 3795) | function getFlashVersion() {
function FlashRuntime (line 3813) | function FlashRuntime() {
FILE: DjangoUeditor/static/ueditor/third-party/webuploader/webuploader.html5only.js
function uncurryThis (line 194) | function uncurryThis( fn ) {
function bindFn (line 200) | function bindFn( fn, context ) {
function createObject (line 206) | function createObject( proto ) {
function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
function triggerHanders (line 512) | function triggerHanders( events, args ) {
function Uploader (line 721) | function Uploader( opts ) {
function Runtime (line 903) | function Runtime( options ) {
function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
function DragAndDrop (line 1142) | function DragAndDrop( opts ) {
function isArrayLike (line 1193) | function isArrayLike( obj ) {
function Widget (line 1210) | function Widget( uploader ) {
function FilePaste (line 1419) | function FilePaste( opts ) {
function Blob (line 1500) | function Blob( ruid, source ) {
function File (line 1544) | function File( ruid, file ) {
function FilePicker (line 1584) | function FilePicker( opts ) {
function Image (line 1847) | function Image( opts ) {
function gid (line 2216) | function gid() {
function WUFile (line 2227) | function WUFile( source ) {
function Queue (line 2404) | function Queue() {
function Transport (line 2952) | function Transport( opts ) {
function CuteFile (line 3165) | function CuteFile( file, chunkSize ) {
function hashString (line 3909) | function hashString( str ) {
function CompBase (line 3955) | function CompBase( owner, runtime ) {
function Html5Runtime (line 3987) | function Html5Runtime() {
function detectVerticalSquash (line 5233) | function detectVerticalSquash( img, iw, ih ) {
function detectSubsampling (line 5285) | function detectSubsampling( img ) {
FILE: DjangoUeditor/static/ueditor/third-party/webuploader/webuploader.js
function uncurryThis (line 194) | function uncurryThis( fn ) {
function bindFn (line 200) | function bindFn( fn, context ) {
function createObject (line 206) | function createObject( proto ) {
function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
function triggerHanders (line 512) | function triggerHanders( events, args ) {
function Uploader (line 721) | function Uploader( opts ) {
function Runtime (line 903) | function Runtime( options ) {
function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
function DragAndDrop (line 1142) | function DragAndDrop( opts ) {
function isArrayLike (line 1193) | function isArrayLike( obj ) {
function Widget (line 1210) | function Widget( uploader ) {
function FilePaste (line 1419) | function FilePaste( opts ) {
function Blob (line 1500) | function Blob( ruid, source ) {
function File (line 1544) | function File( ruid, file ) {
function FilePicker (line 1584) | function FilePicker( opts ) {
function Image (line 1847) | function Image( opts ) {
function gid (line 2216) | function gid() {
function WUFile (line 2227) | function WUFile( source ) {
function Queue (line 2404) | function Queue() {
function Transport (line 2952) | function Transport( opts ) {
function CuteFile (line 3165) | function CuteFile( file, chunkSize ) {
function hashString (line 3909) | function hashString( str ) {
function CompBase (line 3955) | function CompBase( owner, runtime ) {
function Html5Runtime (line 3987) | function Html5Runtime() {
function JPEGEncoder (line 5008) | function JPEGEncoder(quality) {
function detectVerticalSquash (line 6035) | function detectVerticalSquash( img, iw, ih ) {
function detectSubsampling (line 6087) | function detectSubsampling( img ) {
function getFlashVersion (line 6341) | function getFlashVersion() {
function FlashRuntime (line 6359) | function FlashRuntime() {
FILE: DjangoUeditor/static/ueditor/third-party/webuploader/webuploader.withoutimage.js
function uncurryThis (line 194) | function uncurryThis( fn ) {
function bindFn (line 200) | function bindFn( fn, context ) {
function createObject (line 206) | function createObject( proto ) {
function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
function triggerHanders (line 512) | function triggerHanders( events, args ) {
function Uploader (line 721) | function Uploader( opts ) {
function Runtime (line 903) | function Runtime( options ) {
function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
function DragAndDrop (line 1142) | function DragAndDrop( opts ) {
function isArrayLike (line 1193) | function isArrayLike( obj ) {
function Widget (line 1210) | function Widget( uploader ) {
function FilePaste (line 1419) | function FilePaste( opts ) {
function Blob (line 1500) | function Blob( ruid, source ) {
function File (line 1544) | function File( ruid, file ) {
function FilePicker (line 1584) | function FilePicker( opts ) {
function gid (line 1850) | function gid() {
function WUFile (line 1861) | function WUFile( source ) {
function Queue (line 2038) | function Queue() {
function Transport (line 2586) | function Transport( opts ) {
function CuteFile (line 2799) | function CuteFile( file, chunkSize ) {
function hashString (line 3543) | function hashString( str ) {
function CompBase (line 3589) | function CompBase( owner, runtime ) {
function Html5Runtime (line 3621) | function Html5Runtime() {
function getFlashVersion (line 4233) | function getFlashVersion() {
function FlashRuntime (line 4251) | function FlashRuntime() {
FILE: DjangoUeditor/static/ueditor/third-party/zeroclipboard/ZeroClipboard.js
function parseFlashVersion (line 521) | function parseFlashVersion(desc) {
function isPepperFlash (line 526) | function isPepperFlash(flashPlayerFileName) {
function inspectPlugin (line 529) | function inspectPlugin(plugin) {
FILE: DjangoUeditor/static/ueditor/ueditor.all.js
function getItem (line 870) | function getItem(doc, obj) {
function opt (line 1019) | function opt(obj, name) {
function doReady (line 1130) | function doReady(doc) {
function encodeString (line 1329) | function encodeString(source) {
function encodeArray (line 1347) | function encodeArray(source) {
function pad (line 1372) | function pad(source) {
function encodeDate (line 1376) | function encodeDate(source){
function getListener (line 1647) | function getListener(obj, type, force) {
function _ (line 1666) | function _( s ) {
function getDomNode (line 1851) | function getDomNode(node, start, ltr, startFromChild, fn, guard) {
function clear (line 2451) | function clear(next, dir) {
function remove (line 2946) | function remove(dir) {
function merge (line 3137) | function merge(rtl, start, node) {
function updateCollapse (line 4285) | function updateCollapse(range) {
function selectOneNode (line 4292) | function selectOneNode(rng){
function setEndPoint (line 4295) | function setEndPoint(toStart, node, offset, range) {
function execContentsAction (line 4318) | function execContentsAction(range, action) {
function removeFillData (line 4465) | function removeFillData(doc, excludeNode) {
function mergeSibling (line 4491) | function mergeSibling(node, dir) {
function check (line 4994) | function check(node){
function adjust (line 5215) | function adjust(r, c) {
function checkOffset (line 5716) | function checkOffset(rng){
function getAddress (line 5870) | function getAddress(isStart){
function getNode (line 5956) | function getNode(address,isStart){
function getBoundaryInformation (line 6117) | function getBoundaryInformation( range, start ) {
function transformIERangeToRange (line 6187) | function transformIERangeToRange( ieRange, range ) {
function _getIERange (line 6206) | function _getIERange( sel ) {
function optimze (line 6356) | function optimze( range ) {
function setValue (line 6522) | function setValue(form, editor) {
function loadPlugins (line 6550) | function loadPlugins(me){
function checkCurLang (line 6557) | function checkCurLang(I18N){
function langReadied (line 6563) | function langReadied(me){
function isCdataDiv (line 7331) | function isCdataDiv(node){
function clear (line 7795) | function clear() {
function showErrorMsg (line 8091) | function showErrorMsg(msg) {
function json2str (line 8155) | function json2str(json) {
function doAjax (line 8175) | function doAjax(url, ajaxOptions) {
function doJsonp (line 8232) | function doJsonp(url, opts) {
function isWordDocument (line 8415) | function isWordDocument( str ) {
function transUnit (line 8419) | function transUnit( v ) {
function filterPasteWord (line 8426) | function filterPasteWord( str ) {
function insertLine (line 8641) | function insertLine(arr, current, begin) {
function insertIndent (line 8646) | function insertIndent(arr, current) {
function nodeToHtml (line 8672) | function nodeToHtml(node, arr, formatter, current) {
function isText (line 8696) | function isText(node, arr) {
function isElement (line 8706) | function isElement(node, arr, formatter, current) {
function isComment (line 8756) | function isComment(node, arr) {
function getNodeById (line 8760) | function getNodeById(root, id) {
function getNodesByTagName (line 8774) | function getNodesByTagName(node, tagName, arr) {
function nodeTraversal (line 8784) | function nodeTraversal(root,fn){
function exec (line 9292) | function exec(name, val) {
function text (line 9408) | function text(parent, data) {
function element (line 9421) | function element(parent, tagName, htmlattr) {
function comment (line 9466) | function comment(parent, data) {
function filterNode (line 9560) | function filterNode(node,rules){
function getUserData (line 9838) | function getUserData() {
function tdParent (line 9958) | function tdParent(node){
function isLine (line 10495) | function isLine(node,notEmpty){
function removeNotAttributeSpan (line 10513) | function removeNotAttributeSpan(node){
function autotype (line 10521) | function autotype(type,html){
function DBC2SB (line 10702) | function DBC2SB(str) {
function ToDBC (line 10718) | function ToDBC(txtstring) {
function readLocalOpts (line 10736) | function readLocalOpts() {
function stringToObj (line 10809) | function stringToObj(str) {
function setBackground (line 10819) | function setBackground(obj) {
function mergeWithParent (line 11440) | function mergeWithParent(node){
function mergeChild (line 11456) | function mergeChild(rng,cmdName,value){
function mergesibling (line 11479) | function mergesibling(rng,cmdName,value) {
function optimize (line 11844) | function optimize( range ) {
function doLink (line 11872) | function doLink(range,opt,me){
function deleteIframe (line 11984) | function deleteIframe(){
function isRedundantSpan (line 12047) | function isRedundantSpan (node) {
function doRemove (line 12066) | function doRemove( range ) {
function getObj (line 12229) | function getObj(editor){
function formatTime (line 12996) | function formatTime(date, format) {
function formatDate (line 13003) | function formatDate(date, format) {
function fillNode (line 13835) | function fillNode(node){
function isHr (line 13852) | function isHr(node){
function compareAddr (line 14139) | function compareAddr(indexA, indexB) {
function compareRangeAddress (line 14149) | function compareRangeAddress(rngAddrA, rngAddrB) {
function UndoManager (line 14159) | function UndoManager() {
function saveScene (line 14287) | function saveScene() {
function save (line 14356) | function save(cont){
function initZeroClipboard (line 14406) | function initZeroClipboard() {
function getClipboardData (line 14486) | function getClipboardData(callback) {
function getPureHtml (line 14536) | function getPureHtml(html){
function filter (line 14564) | function filter(div) {
function transP (line 14793) | function transP(node){
function removeNode (line 14797) | function removeNode(node){
function listToArray (line 14933) | function listToArray(list){
function getStyle (line 15036) | function getStyle(node){
function checkListType (line 15155) | function checkListType(content,container){
function appendLi (line 15182) | function appendLi(list,p,type){
function adjustListStyle (line 15236) | function adjustListStyle(doc,ignore){
function adjustList (line 15312) | function adjustList(list, tag, style,ignoreEmpty) {
function setListStyle (line 15336) | function setListStyle(list,style){
function clearEmptySibling (line 15344) | function clearEmptySibling(node) {
function preventAndSave (line 15356) | function preventAndSave() {
function findList (line 15361) | function findList(node,filterFn){
function checkLevel (line 15665) | function checkLevel(li){
function getLi (line 15753) | function getLi(start){
function createSourceEditor (line 16225) | function createSourceEditor(holder){
function Scale (line 16836) | function Scale() {
function checkIsCludeLink (line 17256) | function checkIsCludeLink(node){
function adjustHeight (line 17345) | function adjustHeight() {
function checkHasUI (line 17467) | function checkHasUI(){
function fixIE6FixedPos (line 17474) | function fixIE6FixedPos(){
function setFloating (line 17484) | function setFloating(){
function unsetFloating (line 17508) | function unsetFloating(){
function updateFloating (line 17517) | function updateFloating(){
function creatInsertStr (line 17597) | function creatInsertStr(url,width,height,id,align,classname,type){
function switchImgAndVideo (line 17620) | function switchImgAndVideo(root,img2video){
function checkRange (line 18218) | function checkRange(beginRowIndex, beginColIndex, endRowIndex, endColInd...
function replaceTdToTh (line 18505) | function replaceTdToTh(colIndex, cell, tableRow) {
function replaceTdToTh (line 18623) | function replaceTdToTh(rowIndex, cell, tableRow) {
function showError (line 18871) | function showError(e) {
function createTable (line 18905) | function createTable(opt, tdWidth) {
function getAverageWidth (line 19491) | function getAverageWidth() {
function setAverageWidth (line 19514) | function setAverageWidth(averageWidth) {
function getAverageHeight (line 19544) | function getAverageHeight() {
function setAverageHeight (line 19584) | function setAverageHeight(averageHeight) {
function resetTdWidth (line 19780) | function resetTdWidth(table, editor) {
function getTableWidth (line 19797) | function getTableWidth(editor, needIEHack, defaultValue) {
function getSelectedArr (line 19802) | function getSelectedArr(editor) {
function showError (line 19854) | function showError(e) {
function removeStyleSize (line 20533) | function removeStyleSize(obj, replaceToProperty) {
function removeStyle (line 20538) | function removeStyle(obj, styleName, replaceToProperty) {
function getParentTdOrTh (line 20545) | function getParentTdOrTh(ele) {
function isEmptyBlock (line 20552) | function isEmptyBlock(node) {
function mouseCoords (line 20566) | function mouseCoords(evt) {
function mouseMoveEvent (line 20576) | function mouseMoveEvent(evt) {
function toggleDragButton (line 20653) | function toggleDragButton(show, table, editor) {
function createDragButton (line 20664) | function createDragButton(table, editor) {
function inTableSide (line 20723) | function inTableSide(table, cell, evt, top) {
function getPermissionX (line 20741) | function getPermissionX(dragTd, evt) {
function getPermissionY (line 20760) | function getPermissionY(dragTd, evt) {
function toggleDraggableState (line 20773) | function toggleDraggableState(editor, draggable, dir, mousePos, cell) {
function getResizeLineByUETable (line 20794) | function getResizeLineByUETable() {
function updateResizeLine (line 20832) | function updateResizeLine( cell, uetable ) {
function showResizeLine (line 20850) | function showResizeLine( cell ) {
function getRelation (line 20863) | function getRelation(ele, mousePos) {
function mouseDownEvent (line 20885) | function mouseDownEvent(type, evt) {
function clearTableTimer (line 20926) | function clearTableTimer() {
function tableDbclickHandler (line 20932) | function tableDbclickHandler(evt) {
function tableClickHander (line 21020) | function tableClickHander( evt ) {
function borderActionHandler (line 21048) | function borderActionHandler( evt ) {
function extractArray (line 21065) | function extractArray( originArr, key ) {
function clearTableDragTimer (line 21084) | function clearTableDragTimer() {
function reconstruct (line 21089) | function reconstruct( obj ) {
function tableBorderDrag (line 21108) | function tableBorderDrag( evt ) {
function mouseUpEvent (line 21129) | function mouseUpEvent(type, evt) {
function mouseOverEvent (line 21247) | function mouseOverEvent(type, evt) {
function setCellHeight (line 21275) | function setCellHeight(cell, height, backHeight) {
function getWidth (line 21283) | function getWidth(cell) {
function changeColWidth (line 21288) | function changeColWidth(cell, changeValue) {
function isEditorDisabled (line 21325) | function isEditorDisabled() {
function changeRowHeight (line 21329) | function changeRowHeight(td, changeValue) {
function getCellsByMoveBorder (line 21347) | function getCellsByMoveBorder( cell, table, isContainMergeCell ) {
function getMinWidthByTableCells (line 21418) | function getMinWidthByTableCells( cells ) {
function correctChangeValue (line 21432) | function correctChangeValue( changeValue, relatedCell, cells ) {
function getTableCellWidth (line 21469) | function getTableCellWidth( cell ) {
function getTableCellOffset (line 21497) | function getTableCellOffset( cell ) {
function getTabcellSpace (line 21520) | function getTabcellSpace() {
function getDragLine (line 21566) | function getDragLine(editor, doc) {
function hideDragLine (line 21581) | function hideDragLine(editor) {
function showDragLineAt (line 21594) | function showDragLineAt(state, cell) {
function switchBorderColor (line 21621) | function switchBorderColor(editor, flag) {
function getTableWidth (line 21638) | function getTableWidth(editor, needIEHack, defaultValue) {
function getTargetTd (line 21646) | function getTargetTd(editor, evt) {
function getLabel (line 22265) | function getLabel(){
function addList (line 22668) | function addList(type,evt){
function findTextInString (line 22793) | function findTextInString(textContent,opt,currentIndex){
function findTextBlockElm (line 22810) | function findTextBlockElm(node,currentIndex,opt){
function findNTextInBlockElm (line 22836) | function findNTextInBlockElm(node,index,str){
function searchReplace (line 22866) | function searchReplace(me,opt){
function replaceText (line 22915) | function replaceText(rng,str){
function catchremoteimage (line 23210) | function catchremoteimage(imgs, callbacks) {
function getLocation (line 23239) | function getLocation(url){
function onSuccess (line 23292) | function onSuccess(rs){
function createInsertStr (line 23455) | function createInsertStr(obj,toEmbed){
function creatInsertStr (line 23597) | function creatInsertStr(url,width,height,align,cssfloat,toEmbed){
function sendAndInsertFile (line 23681) | function sendAndInsertFile(file, editor) {
function getPasteImage (line 23784) | function getPasteImage(e){
function getDropImage (line 23787) | function getDropImage(e){
function save (line 23863) | function save ( editor ) {
function validData (line 24067) | function validData ( table ) {
function Section (line 24135) | function Section(option){
function getSection (line 24146) | function getSection(option) {
function getNodeFromAddress (line 24150) | function getNodeFromAddress(startAddress, root) {
function getSectionLevel (line 24214) | function getSectionLevel(node) {
function traversal (line 24225) | function traversal(node, Directory) {
function isContainsAddress (line 24306) | function isContainsAddress(startAddress, endAddress, addressTarget){
function getNodeFromAddress (line 24337) | function getNodeFromAddress(startAddress) {
function initUploadBtn (line 24410) | function initUploadBtn(){
function getFileIcon (line 24690) | function getFileIcon(url){
function handleMouseMove (line 24920) | function handleMouseMove(evt){
function handleMouseUp (line 24931) | function handleMouseUp(evt){
function releaseCaptrue (line 24945) | function releaseCaptrue(){
function updateFixedOffset (line 25000) | function updateFixedOffset(){
function bindFixedLayer (line 25012) | function bindFixedLayer(adjOffset){
function closeAllPopup (line 25197) | function closeAllPopup( evt,el ){
function genColorPicker (line 25491) | function genColorPicker(noColorText,editor){
function getPara (line 26066) | function getPara(me){
function setPos (line 27419) | function setPos (offset) {
function setPosByCxtMenu (line 27429) | function setPosByCxtMenu (menu) {
function hideAllMenu (line 27503) | function hideAllMenu (e) {
function EditorUI (line 28498) | function EditorUI(options) {
function countFn (line 28531) | function countFn() {
function setCount (line 28622) | function setCount(editor,ui) {
function down (line 29053) | function down() {
function move (line 29084) | function move(event) {
function up (line 29102) | function up() {
function clearSelection (line 29119) | function clearSelection() {
function renderUI (line 29211) | function renderUI() {
function updateHolderPos (line 29396) | function updateHolderPos(){
FILE: DjangoUeditor/static/ueditor/ueditor.config.js
function getUEBasePath (line 348) | function getUEBasePath(docUrl, confUrl) {
function getConfigFilePath (line 354) | function getConfigFilePath() {
function getBasePath (line 362) | function getBasePath(docUrl, confUrl) {
function optimizationPath (line 383) | function optimizationPath(path) {
FILE: DjangoUeditor/static/ueditor/ueditor.parse.js
function getItem (line 232) | function getItem(doc,obj){
function findParentByTagName (line 433) | function findParentByTagName(target, tagNames) {
function sortTable (line 445) | function sortTable(table, sortByCellIndex, compareFn) {
function sort (line 515) | function sort(array, compareFn){
function updateTable (line 529) | function updateTable(table) {
function parseSources (line 559) | function parseSources () {
function extractChartData (line 572) | function extractChartData ( rootNode ) {
function formatData (line 591) | function formatData ( tableNode ) {
function loadResources (line 632) | function loadResources () {
function loadJQuery (line 638) | function loadJQuery () {
function loadHighcharts (line 662) | function loadHighcharts () {
function loadTypeConfig (line 687) | function loadTypeConfig () {
function render (line 703) | function render () {
function renderChart (line 730) | function renderChart ( container, typeConfig, config ) {
function createContainer (line 785) | function createContainer ( tableNode ) {
function analysisConfig (line 797) | function analysisConfig ( config ) {
function applyStyle (line 932) | function applyStyle(nodes){
FILE: DjangoUeditor/utils.py
class FileSize (line 5) | class FileSize():
method __init__ (line 14) | def __init__(self, size):
method Format (line 18) | def Format(size):
method size (line 42) | def size(self):
method size (line 46) | def size(self, newsize):
method FriendValue (line 51) | def FriendValue(self):
method __str__ (line 70) | def __str__(self):
method __add__ (line 74) | def __add__(self, other):
method __sub__ (line 80) | def __sub__(self, other):
method __gt__ (line 86) | def __gt__(self, other):
method __lt__ (line 98) | def __lt__(self, other):
method __ge__ (line 110) | def __ge__(self, other):
method __le__ (line 122) | def __le__(self, other):
FILE: DjangoUeditor/views.py
function get_path_format_vars (line 19) | def get_path_format_vars():
function save_upload_file (line 31) | def save_upload_file(PostFile, FilePath):
function get_ueditor_settings (line 44) | def get_ueditor_settings(request):
function get_ueditor_controller (line 49) | def get_ueditor_controller(request):
function list_files (line 67) | def list_files(request):
function get_files (line 112) | def get_files(root_path, cur_path, allow_types=[]):
function UploadFile (line 133) | def UploadFile(request):
function catcher_remote_image (line 228) | def catcher_remote_image(request):
function get_output_path (line 289) | def get_output_path(request, path_format, path_format_var):
function save_scrawl_file (line 306) | def save_scrawl_file(request, filename):
FILE: DjangoUeditor/widgets.py
function calc_path (line 16) | def calc_path(OutputPath, instance=None):
class UEditorWidget (line 35) | class UEditorWidget(forms.Textarea):
method __init__ (line 37) | def __init__(self, attrs=None):
method recalc_path (line 127) | def recalc_path(self, model_inst):
method render (line 167) | def render(self, name, value, attrs=None):
class Media (line 203) | class Media:
class AdminUEditorWidget (line 208) | class AdminUEditorWidget(AdminTextareaWidget, UEditorWidget):
method __init__ (line 210) | def __init__(self, **kwargs):
FILE: xadmin/__init__.py
class Settings (line 6) | class Settings(object):
function autodiscover (line 10) | def autodiscover():
FILE: xadmin/adminx.py
class UserSettingsAdmin (line 8) | class UserSettingsAdmin(object):
class LogAdmin (line 14) | class LogAdmin(object):
method link (line 16) | def link(self, instance):
FILE: xadmin/apps.py
class XAdminConfig (line 7) | class XAdminConfig(AppConfig):
method ready (line 13) | def ready(self):
FILE: xadmin/filters.py
class BaseFilter (line 26) | class BaseFilter(object):
method test (line 31) | def test(cls, field, request, params, model, admin_view, field_path):
method __init__ (line 34) | def __init__(self, request, params, model, admin_view):
method query_string (line 46) | def query_string(self, new_params=None, remove=None):
method form_params (line 49) | def form_params(self):
method has_output (line 55) | def has_output(self):
method is_used (line 62) | def is_used(self):
method do_filte (line 65) | def do_filte(self, queryset):
method get_context (line 71) | def get_context(self):
method __str__ (line 74) | def __str__(self):
class FieldFilterManager (line 79) | class FieldFilterManager(object):
method register (line 83) | def register(self, list_filter_class, take_priority=False):
method create (line 95) | def create(self, field, request, params, model, admin_view, field_path):
class FieldFilter (line 105) | class FieldFilter(BaseFilter):
method __init__ (line 109) | def __init__(self, field, request, params, model, admin_view, field_pa...
method get_context (line 134) | def get_context(self):
method has_output (line 143) | def has_output(self):
method do_filte (line 146) | def do_filte(self, queryset):
class ListFieldFilter (line 150) | class ListFieldFilter(FieldFilter):
method get_context (line 153) | def get_context(self):
class BooleanFieldListFilter (line 160) | class BooleanFieldListFilter(ListFieldFilter):
method test (line 164) | def test(cls, field, request, params, model, admin_view, field_path):
method choices (line 167) | def choices(self):
class ChoicesFieldListFilter (line 196) | class ChoicesFieldListFilter(ListFieldFilter):
method test (line 200) | def test(cls, field, request, params, model, admin_view, field_path):
method choices (line 203) | def choices(self):
class TextFieldListFilter (line 218) | class TextFieldListFilter(FieldFilter):
method test (line 223) | def test(cls, field, request, params, model, admin_view, field_path):
class NumberFieldListFilter (line 232) | class NumberFieldListFilter(FieldFilter):
method test (line 239) | def test(cls, field, request, params, model, admin_view, field_path):
method do_filte (line 242) | def do_filte(self, queryset):
class DateFieldListFilter (line 252) | class DateFieldListFilter(ListFieldFilter):
method test (line 259) | def test(cls, field, request, params, model, admin_view, field_path):
method __init__ (line 262) | def __init__(self, field, request, params, model, admin_view, field_pa...
method get_context (line 312) | def get_context(self):
method choices (line 318) | def choices(self):
class RelatedFieldSearchFilter (line 329) | class RelatedFieldSearchFilter(FieldFilter):
method test (line 333) | def test(cls, field, request, params, model, admin_view, field_path):
method __init__ (line 340) | def __init__(self, field, request, params, model, model_admin, field_p...
method label_for_value (line 368) | def label_for_value(self, other_model, rel_name, value):
method get_context (line 375) | def get_context(self):
class RelatedFieldListFilter (line 385) | class RelatedFieldListFilter(ListFieldFilter):
method test (line 388) | def test(cls, field, request, params, model, admin_view, field_path):
method __init__ (line 391) | def __init__(self, field, request, params, model, model_admin, field_p...
method has_output (line 410) | def has_output(self):
method expected_parameters (line 419) | def expected_parameters(self):
method choices (line 422) | def choices(self):
class MultiSelectFieldListFilter (line 449) | class MultiSelectFieldListFilter(ListFieldFilter):
method test (line 461) | def test(cls, field, request, params, model, admin_view, field_path):
method get_cached_choices (line 464) | def get_cached_choices(self):
method set_cached_choices (line 470) | def set_cached_choices(self,choices):
method __init__ (line 476) | def __init__(self, field, request, params, model, model_admin, field_p...
method choices (line 508) | def choices(self):
class AllValuesFieldListFilter (line 524) | class AllValuesFieldListFilter(ListFieldFilter):
method test (line 528) | def test(cls, field, request, params, model, admin_view, field_path):
method __init__ (line 531) | def __init__(self, field, request, params, model, admin_view, field_pa...
method choices (line 547) | def choices(self):
FILE: xadmin/forms.py
class AdminAuthenticationForm (line 14) | class AdminAuthenticationForm(AuthenticationForm):
method clean (line 23) | def clean(self):
FILE: xadmin/layout.py
class Fieldset (line 12) | class Fieldset(layout.Fieldset):
method __init__ (line 15) | def __init__(self, legend, *fields, **kwargs):
class Row (line 21) | class Row(layout.Div):
method __init__ (line 23) | def __init__(self, *fields, **kwargs):
method convert_field (line 28) | def convert_field(self, f, counts):
class Col (line 39) | class Col(layout.Column):
method __init__ (line 41) | def __init__(self, id, *fields, **kwargs):
class Main (line 50) | class Main(layout.Column):
class Side (line 54) | class Side(layout.Column):
class Container (line 58) | class Container(layout.Div):
class InputGroup (line 63) | class InputGroup(layout.Field):
method __init__ (line 67) | def __init__(self, field, *args, **kwargs):
method render (line 82) | def render(self, form, form_style, context, template_pack=TEMPLATE_PAC...
class PrependedText (line 97) | class PrependedText(InputGroup):
method __init__ (line 99) | def __init__(self, field, text, **kwargs):
class AppendedText (line 103) | class AppendedText(InputGroup):
method __init__ (line 105) | def __init__(self, field, text, **kwargs):
class PrependedAppendedText (line 109) | class PrependedAppendedText(InputGroup):
method __init__ (line 111) | def __init__(self, field, prepended_text=None, appended_text=None, *ar...
FILE: xadmin/migrations/0001_initial.py
class Migration (line 10) | class Migration(migrations.Migration):
FILE: xadmin/migrations/0002_log.py
class Migration (line 11) | class Migration(migrations.Migration):
FILE: xadmin/migrations/0003_auto_20160715_0100.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: xadmin/models.py
function add_view_permissions (line 22) | def add_view_permissions(sender, **kwargs):
class Bookmark (line 45) | class Bookmark(models.Model):
method url (line 54) | def url(self):
method __str__ (line 60) | def __str__(self):
class Meta (line 63) | class Meta:
class JSONEncoder (line 68) | class JSONEncoder(DjangoJSONEncoder):
method default (line 69) | def default(self, o):
class UserSettings (line 86) | class UserSettings(models.Model):
method json_value (line 91) | def json_value(self):
method set_json (line 94) | def set_json(self, obj):
method __str__ (line 97) | def __str__(self):
class Meta (line 100) | class Meta:
class UserWidget (line 106) | class UserWidget(models.Model):
method get_value (line 112) | def get_value(self):
method set_value (line 118) | def set_value(self, obj):
method save (line 121) | def save(self, *args, **kwargs):
method __str__ (line 133) | def __str__(self):
class Meta (line 136) | class Meta:
class Log (line 142) | class Log(models.Model):
class Meta (line 165) | class Meta:
method __repr__ (line 170) | def __repr__(self):
method __str__ (line 173) | def __str__(self):
method get_edited_object (line 186) | def get_edited_object(self):
FILE: xadmin/plugins/__init__.py
function register_builtin_plugins (line 37) | def register_builtin_plugins(site):
FILE: xadmin/plugins/actions.py
function action_checkbox (line 27) | def action_checkbox(obj):
class BaseActionView (line 35) | class BaseActionView(ModelAdminView):
method has_perm (line 43) | def has_perm(cls, list_view):
method init_action (line 46) | def init_action(self, list_view):
method do_action (line 51) | def do_action(self, queryset):
class DeleteSelectedAction (line 55) | class DeleteSelectedAction(BaseActionView):
method delete_models (line 69) | def delete_models(self, queryset):
method do_action (line 84) | def do_action(self, queryset):
class ActionPlugin (line 133) | class ActionPlugin(BaseAdminPlugin):
method init_request (line 140) | def init_request(self, *args, **kwargs):
method get_list_display (line 144) | def get_list_display(self, list_display):
method get_list_display_links (line 150) | def get_list_display_links(self, list_display_links):
method get_context (line 156) | def get_context(self, context):
method post_response (line 171) | def post_response(self, response, *args, **kwargs):
method response_action (line 208) | def response_action(self, ac, queryset):
method get_actions (line 216) | def get_actions(self):
method get_action_choices (line 242) | def get_action_choices(self):
method get_action (line 253) | def get_action(self, action):
method result_header (line 277) | def result_header(self, item, field_name, row):
method result_item (line 282) | def result_item(self, item, obj, field_name, row):
method get_media (line 288) | def get_media(self, media):
method block_results_bottom (line 294) | def block_results_bottom(self, context, nodes):
FILE: xadmin/plugins/aggregation.py
class AggregationPlugin (line 18) | class AggregationPlugin(BaseAdminPlugin):
method init_request (line 22) | def init_request(self, *args, **kwargs):
method _get_field_aggregate (line 25) | def _get_field_aggregate(self, field_name, obj, row):
method _get_aggregate_row (line 46) | def _get_aggregate_row(self):
method results (line 57) | def results(self, rows):
method get_media (line 63) | def get_media(self, media):
FILE: xadmin/plugins/ajax.py
class BaseAjaxPlugin (line 12) | class BaseAjaxPlugin(BaseAdminPlugin):
method init_request (line 14) | def init_request(self, *args, **kwargs):
class AjaxListPlugin (line 18) | class AjaxListPlugin(BaseAjaxPlugin):
method get_list_display (line 20) | def get_list_display(self,list_display):
method get_result_list (line 27) | def get_result_list(self, response):
class JsonErrorDict (line 40) | class JsonErrorDict(ErrorDict):
method __init__ (line 42) | def __init__(self, errors, form):
method as_json (line 46) | def as_json(self):
class AjaxFormPlugin (line 52) | class AjaxFormPlugin(BaseAjaxPlugin):
method post_response (line 54) | def post_response(self, __):
method get_response (line 64) | def get_response(self, __):
class AjaxDetailPlugin (line 79) | class AjaxDetailPlugin(BaseAjaxPlugin):
method get_response (line 81) | def get_response(self, __):
FILE: xadmin/plugins/auth.py
function get_permission_name (line 33) | def get_permission_name(p):
class PermissionModelMultipleChoiceField (line 41) | class PermissionModelMultipleChoiceField(ModelMultipleChoiceField):
method label_from_instance (line 43) | def label_from_instance(self, p):
class GroupAdmin (line 47) | class GroupAdmin(object):
method get_field_attrs (line 53) | def get_field_attrs(self, db_field, **kwargs):
class UserAdmin (line 60) | class UserAdmin(object):
method get_field_attrs (line 70) | def get_field_attrs(self, db_field, **kwargs):
method get_model_form (line 76) | def get_model_form(self, **kwargs):
method get_form_layout (line 83) | def get_form_layout(self):
class PermissionAdmin (line 111) | class PermissionAdmin(object):
method show_name (line 113) | def show_name(self, p):
class UserFieldPlugin (line 126) | class UserFieldPlugin(BaseAdminPlugin):
method get_field_attrs (line 130) | def get_field_attrs(self, __, db_field, **kwargs):
method get_form_datas (line 135) | def get_form_datas(self, datas):
class ModelPermissionPlugin (line 146) | class ModelPermissionPlugin(BaseAdminPlugin):
method queryset (line 151) | def queryset(self, qs):
method get_list_display (line 158) | def get_list_display(self, list_display):
class AccountMenuPlugin (line 168) | class AccountMenuPlugin(BaseAdminPlugin):
method block_top_account_menu (line 170) | def block_top_account_menu(self, context, nodes):
class ChangePasswordView (line 176) | class ChangePasswordView(ModelAdminView):
method get (line 182) | def get(self, request, object_id):
method get_media (line 190) | def get_media(self):
method get_context (line 195) | def get_context(self):
method get_response (line 211) | def get_response(self):
method post (line 219) | def post(self, request, object_id):
class ChangeAccountPasswordView (line 233) | class ChangeAccountPasswordView(ChangePasswordView):
method get (line 237) | def get(self, request):
method get_context (line 243) | def get_context(self):
method post (line 253) | def post(self, request):
FILE: xadmin/plugins/batch.py
class ChangeFieldWidgetWrapper (line 20) | class ChangeFieldWidgetWrapper(forms.Widget):
method __init__ (line 22) | def __init__(self, widget):
method __deepcopy__ (line 27) | def __deepcopy__(self, memo):
method media (line 35) | def media(self):
method render (line 39) | def render(self, name, value, attrs=None):
method build_attrs (line 50) | def build_attrs(self, extra_attrs=None, **kwargs):
method value_from_datadict (line 55) | def value_from_datadict(self, data, files, name):
method id_for_label (line 58) | def id_for_label(self, id_):
class BatchChangeAction (line 61) | class BatchChangeAction(BaseActionView):
method change_models (line 73) | def change_models(self, queryset, cleaned_data):
method get_change_form (line 93) | def get_change_form(self, is_post, fields):
method do_action (line 108) | def do_action(self, queryset):
method get_media (line 152) | def get_media(self):
FILE: xadmin/plugins/bookmark.py
class BookmarkPlugin (line 27) | class BookmarkPlugin(BaseAdminPlugin):
method has_change_permission (line 33) | def has_change_permission(self, obj=None):
method get_context (line 39) | def get_context(self, context):
method get_media (line 131) | def get_media(self, media):
method block_nav_menu (line 135) | def block_nav_menu(self, context, nodes):
class BookmarkView (line 141) | class BookmarkView(ModelAdminView):
method post (line 145) | def post(self, request):
class BookmarkAdmin (line 158) | class BookmarkAdmin(object):
method queryset (line 166) | def queryset(self):
method get_list_display (line 171) | def get_list_display(self):
method has_change_permission (line 178) | def has_change_permission(self, obj=None):
class BookmarkWidget (line 186) | class BookmarkWidget(PartialBaseWidget):
method setup (line 196) | def setup(self):
method has_perm (line 211) | def has_perm(self):
method context (line 214) | def context(self, context):
FILE: xadmin/plugins/chart.py
class ChartWidget (line 22) | class ChartWidget(ModelBaseWidget):
method convert (line 28) | def convert(self, data):
method setup (line 32) | def setup(self):
method filte_choices_model (line 52) | def filte_choices_model(self, model, modeladmin):
method get_chart_url (line 56) | def get_chart_url(self, name, v):
method context (line 59) | def context(self, context):
method media (line 65) | def media(self):
class JSONEncoder (line 69) | class JSONEncoder(DjangoJSONEncoder):
method default (line 70) | def default(self, o):
class ChartsPlugin (line 82) | class ChartsPlugin(BaseAdminPlugin):
method init_request (line 86) | def init_request(self, *args, **kwargs):
method get_chart_url (line 89) | def get_chart_url(self, name, v):
method get_media (line 93) | def get_media(self, media):
method block_results_top (line 97) | def block_results_top(self, context, nodes):
class ChartsView (line 105) | class ChartsView(ListAdminView):
method get_ordering (line 109) | def get_ordering(self):
method get (line 115) | def get(self, request, name):
FILE: xadmin/plugins/comments.py
class UsernameSearch (line 12) | class UsernameSearch(object):
method __str__ (line 17) | def __str__(self):
class CommentsAdmin (line 21) | class CommentsAdmin(object):
method get_actions (line 46) | def get_actions(self):
method flag_comments (line 58) | def flag_comments(self, request, queryset):
method approve_comments (line 64) | def approve_comments(self, request, queryset):
method remove_comments (line 70) | def remove_comments(self, request, queryset):
method _bulk_flag (line 76) | def _bulk_flag(self, queryset, action, done_message):
FILE: xadmin/plugins/details.py
class DetailsPlugin (line 11) | class DetailsPlugin(BaseAdminPlugin):
method result_item (line 16) | def result_item(self, item, obj, field_name, row):
method get_media (line 58) | def get_media(self, media):
FILE: xadmin/plugins/editable.py
class EditablePlugin (line 20) | class EditablePlugin(BaseAdminPlugin):
method __init__ (line 24) | def __init__(self, admin_view):
method init_request (line 28) | def init_request(self, *args, **kwargs):
method result_item (line 34) | def result_item(self, item, obj, field_name, row):
method get_media (line 53) | def get_media(self, media):
class EditPatchView (line 61) | class EditPatchView(ModelFormAdminView, ListAdminView):
method init_request (line 63) | def init_request(self, object_id, *args, **kwargs):
method get_new_field_html (line 76) | def get_new_field_html(self, f):
method _get_new_field_html (line 81) | def _get_new_field_html(self, field_name):
method get (line 108) | def get(self, request, object_id):
method post (line 134) | def post(self, request, object_id):
FILE: xadmin/plugins/excel.py
class ListImportExcelPlugin (line 9) | class ListImportExcelPlugin(BaseAdminPlugin):
method init_request (line 12) | def init_request(self, *args, **kwargs):
method block_top_toolbar (line 15) | def block_top_toolbar(self, context, nodes):
FILE: xadmin/plugins/export.py
class ExportMenuPlugin (line 34) | class ExportMenuPlugin(BaseAdminPlugin):
method init_request (line 40) | def init_request(self, *args, **kwargs):
method block_top_toolbar (line 45) | def block_top_toolbar(self, context, nodes):
class ExportPlugin (line 56) | class ExportPlugin(BaseAdminPlugin):
method init_request (line 62) | def init_request(self, *args, **kwargs):
method _format_value (line 65) | def _format_value(self, o):
method _get_objects (line 75) | def _get_objects(self, context):
method _get_datas (line 83) | def _get_datas(self, context):
method get_xlsx_export (line 91) | def get_xlsx_export(self, context):
method get_xls_export (line 128) | def get_xls_export(self, context):
method _format_csv_text (line 165) | def _format_csv_text(self, t):
method get_csv_export (line 174) | def get_csv_export(self, context):
method _to_xml (line 186) | def _to_xml(self, xml, data):
method get_xml_export (line 201) | def get_xml_export(self, context):
method get_json_export (line 216) | def get_json_export(self, context):
method get_response (line 221) | def get_response(self, response, context, *args, **kwargs):
method get_result_list (line 234) | def get_result_list(self, __):
method result_header (line 239) | def result_header(self, item, field_name, row):
method result_item (line 243) | def result_item(self, item, obj, field_name, row):
FILE: xadmin/plugins/filters.py
class IncorrectLookupParameters (line 24) | class IncorrectLookupParameters(Exception):
class FilterPlugin (line 28) | class FilterPlugin(BaseAdminPlugin):
method lookup_allowed (line 33) | def lookup_allowed(self, lookup, value):
method get_list_queryset (line 78) | def get_list_queryset(self, queryset):
method get_media (line 209) | def get_media(self, media):
method block_nav_menu (line 225) | def block_nav_menu(self, context, nodes):
method block_nav_form (line 230) | def block_nav_form(self, context, nodes):
FILE: xadmin/plugins/images.py
function get_gallery_modal (line 9) | def get_gallery_modal():
class AdminImageField (line 32) | class AdminImageField(forms.ImageField):
method widget_attrs (line 34) | def widget_attrs(self, widget):
class AdminImageWidget (line 38) | class AdminImageWidget(forms.FileInput):
method __init__ (line 42) | def __init__(self, attrs={}):
method render (line 45) | def render(self, name, value, attrs=None):
class ModelDetailPlugin (line 55) | class ModelDetailPlugin(BaseAdminPlugin):
method __init__ (line 57) | def __init__(self, admin_view):
method get_field_attrs (line 61) | def get_field_attrs(self, attrs, db_field, **kwargs):
method get_field_result (line 68) | def get_field_result(self, result, field_name):
method get_media (line 77) | def get_media(self, media):
method block_before_fieldsets (line 83) | def block_before_fieldsets(self, context, node):
method block_after_fieldsets (line 87) | def block_after_fieldsets(self, context, node):
method block_extrabody (line 91) | def block_extrabody(self, context, node):
class ModelListPlugin (line 96) | class ModelListPlugin(BaseAdminPlugin):
method init_request (line 100) | def init_request(self, *args, **kwargs):
method get_media (line 104) | def get_media(self, media):
method block_results_top (line 107) | def block_results_top(self, context, node):
method block_results_bottom (line 110) | def block_results_bottom(self, context, node):
method block_extrabody (line 113) | def block_extrabody(self, context, node):
FILE: xadmin/plugins/importexport.py
class ImportMenuPlugin (line 71) | class ImportMenuPlugin(BaseAdminPlugin):
method init_request (line 74) | def init_request(self, *args, **kwargs):
method block_top_toolbar (line 77) | def block_top_toolbar(self, context, nodes):
class ImportBaseView (line 91) | class ImportBaseView(ModelAdminView):
method get_skip_admin_log (line 107) | def get_skip_admin_log(self):
method get_tmp_storage_class (line 113) | def get_tmp_storage_class(self):
method get_resource_kwargs (line 119) | def get_resource_kwargs(self, request, *args, **kwargs):
method get_import_resource_kwargs (line 122) | def get_import_resource_kwargs(self, request, *args, **kwargs):
method get_resource_class (line 125) | def get_resource_class(self, usage):
method get_import_resource_class (line 135) | def get_import_resource_class(self):
method process_import_resource (line 141) | def process_import_resource(self, resource):
method get_import_formats (line 148) | def get_import_formats(self):
class ImportView (line 155) | class ImportView(ImportBaseView):
method get_media (line 156) | def get_media(self):
method get (line 162) | def get(self, request, *args, **kwargs):
method post (line 187) | def post(self, request, *args, **kwargs):
class ImportProcessView (line 256) | class ImportProcessView(ImportBaseView):
method post (line 260) | def post(self, request, *args, **kwargs):
class ExportMixin (line 316) | class ExportMixin(object):
method get_resource_kwargs (line 330) | def get_resource_kwargs(self, request, *args, **kwargs):
method get_export_resource_kwargs (line 333) | def get_export_resource_kwargs(self, request, *args, **kwargs):
method get_resource_class (line 336) | def get_resource_class(self, usage):
method get_export_resource_class (line 346) | def get_export_resource_class(self):
method get_export_formats (line 352) | def get_export_formats(self):
method get_export_filename (line 358) | def get_export_filename(self, file_format):
method get_export_queryset (line 365) | def get_export_queryset(self, request, context):
method get_export_data (line 389) | def get_export_data(self, file_format, queryset, *args, **kwargs):
class ExportMenuPlugin (line 400) | class ExportMenuPlugin(ExportMixin, BaseAdminPlugin):
method get_media (line 404) | def get_media(self, media):
method init_request (line 407) | def init_request(self, *args, **kwargs):
method block_top_toolbar (line 410) | def block_top_toolbar(self, context, nodes):
class ExportPlugin (line 424) | class ExportPlugin(ExportMixin, BaseAdminPlugin):
method init_request (line 426) | def init_request(self, *args, **kwargs):
method get_response (line 429) | def get_response(self, response, context, *args, **kwargs):
FILE: xadmin/plugins/inline.py
class ShowField (line 20) | class ShowField(Field):
method __init__ (line 23) | def __init__(self, admin_view, *args, **kwargs):
method render (line 29) | def render(self, form, form_style, context, template_pack=TEMPLATE_PAC...
class DeleteField (line 40) | class DeleteField(Field):
method render (line 42) | def render(self, form, form_style, context, template_pack=TEMPLATE_PAC...
class TDField (line 50) | class TDField(Field):
class InlineStyleManager (line 54) | class InlineStyleManager(object):
method register_style (line 57) | def register_style(self, name, style):
method get_style (line 60) | def get_style(self, name='stacked'):
class InlineStyle (line 66) | class InlineStyle(object):
method __init__ (line 69) | def __init__(self, view, formset):
method update_layout (line 73) | def update_layout(self, helper):
method get_attrs (line 76) | def get_attrs(self):
class OneInlineStyle (line 81) | class OneInlineStyle(InlineStyle):
class AccInlineStyle (line 86) | class AccInlineStyle(InlineStyle):
class TabInlineStyle (line 91) | class TabInlineStyle(InlineStyle):
class TableInlineStyle (line 96) | class TableInlineStyle(InlineStyle):
method update_layout (line 99) | def update_layout(self, helper):
method get_attrs (line 103) | def get_attrs(self):
function replace_field_to_value (line 116) | def replace_field_to_value(layout, av):
class InlineModelAdmin (line 128) | class InlineModelAdmin(ModelFormAdminView):
method init (line 139) | def init(self, admin_view):
method get_formset (line 148) | def get_formset(self, **kwargs):
method instance_form (line 179) | def instance_form(self, **kwargs):
method has_auto_field (line 246) | def has_auto_field(self, form):
method queryset (line 254) | def queryset(self):
method has_add_permission (line 260) | def has_add_permission(self):
method has_change_permission (line 267) | def has_change_permission(self):
method has_delete_permission (line 278) | def has_delete_permission(self):
class GenericInlineModelAdmin (line 286) | class GenericInlineModelAdmin(InlineModelAdmin):
method get_formset (line 292) | def get_formset(self, **kwargs):
class InlineFormset (line 322) | class InlineFormset(Fieldset):
method __init__ (line 324) | def __init__(self, formset, allow_blank=False, **kwargs):
method render (line 339) | def render(self, form, form_style, context, template_pack=TEMPLATE_PAC...
class Inline (line 350) | class Inline(Fieldset):
method __init__ (line 352) | def __init__(self, rel_model):
method render (line 357) | def render(self, form, form_style, context, template_pack=TEMPLATE_PAC...
function get_first_field (line 361) | def get_first_field(layout, clz):
function replace_inline_objects (line 371) | def replace_inline_objects(layout, fs):
class InlineFormsetPlugin (line 381) | class InlineFormsetPlugin(BaseAdminPlugin):
method inline_instances (line 385) | def inline_instances(self):
method instance_forms (line 404) | def instance_forms(self, ret):
method valid_forms (line 413) | def valid_forms(self, result):
method save_related (line 416) | def save_related(self):
method get_context (line 421) | def get_context(self, context):
method get_error_list (line 425) | def get_error_list(self, errors):
method get_form_layout (line 432) | def get_form_layout(self, layout):
method get_media (line 451) | def get_media(self, media):
method _get_detail_formset_instance (line 459) | def _get_detail_formset_instance(self, inline):
class DetailAdminUtil (line 474) | class DetailAdminUtil(DetailAdminView):
method init_request (line 476) | def init_request(self, obj):
class DetailInlineFormsetPlugin (line 481) | class DetailInlineFormsetPlugin(InlineFormsetPlugin):
method get_model_form (line 483) | def get_model_form(self, form, **kwargs):
FILE: xadmin/plugins/language.py
class SetLangNavPlugin (line 10) | class SetLangNavPlugin(BaseAdminPlugin):
method block_top_navmenu (line 12) | def block_top_navmenu(self, context, nodes):
class SetLangView (line 17) | class SetLangView(BaseAdminView):
method post (line 19) | def post(self, request, *args, **kwargs):
FILE: xadmin/plugins/layout.py
class GridLayoutPlugin (line 28) | class GridLayoutPlugin(BaseAdminPlugin):
method get_layout (line 36) | def get_layout(self, l):
method init_request (line 40) | def init_request(self, *args, **kwargs):
method result_item (line 53) | def result_item(self, item, obj, field_name, row):
method block_top_toolbar (line 71) | def block_top_toolbar(self, context, nodes):
FILE: xadmin/plugins/mobile.py
class MobilePlugin (line 6) | class MobilePlugin(BaseAdminPlugin):
method _test_mobile (line 8) | def _test_mobile(self):
method init_request (line 15) | def init_request(self, *args, **kwargs):
method get_context (line 18) | def get_context(self, context):
method block_extrahead (line 27) | def block_extrahead(self, context, nodes):
FILE: xadmin/plugins/multiselect.py
class SelectMultipleTransfer (line 16) | class SelectMultipleTransfer(forms.SelectMultiple):
method media (line 19) | def media(self):
method __init__ (line 22) | def __init__(self, verbose_name, is_stacked, attrs=None, choices=()):
method render_opt (line 27) | def render_opt(self, selected_choices, option_value, option_label):
method render (line 32) | def render(self, name, value, attrs=None, choices=()):
class SelectMultipleDropdown (line 80) | class SelectMultipleDropdown(forms.SelectMultiple):
method media (line 83) | def media(self):
method render (line 86) | def render(self, name, value, attrs=None, choices=()):
class M2MSelectPlugin (line 93) | class M2MSelectPlugin(BaseAdminPlugin):
method init_request (line 95) | def init_request(self, *args, **kwargs):
method get_field_style (line 102) | def get_field_style(self, attrs, db_field, style, **kwargs):
FILE: xadmin/plugins/passwords.py
class ResetPasswordSendView (line 13) | class ResetPasswordSendView(BaseAdminView):
method get (line 26) | def get(self, request, *args, **kwargs):
method post (line 33) | def post(self, request, *args, **kwargs):
class ResetLinkPlugin (line 58) | class ResetLinkPlugin(BaseAdminPlugin):
method block_form_bottom (line 60) | def block_form_bottom(self, context, nodes):
class ResetPasswordComfirmView (line 67) | class ResetPasswordComfirmView(BaseAdminView):
method do_view (line 75) | def do_view(self, request, uidb36, token, *args, **kwargs):
method get (line 84) | def get(self, request, uidb36, token, *args, **kwargs):
method post (line 87) | def post(self, request, uidb36, token, *args, **kwargs):
method get_media (line 90) | def get_media(self):
class ResetPasswordCompleteView (line 98) | class ResetPasswordCompleteView(BaseAdminView):
method get (line 104) | def get(self, request, *args, **kwargs):
FILE: xadmin/plugins/portal.py
class BasePortalPlugin (line 8) | class BasePortalPlugin(BaseAdminPlugin):
method get_media (line 11) | def get_media(self, media):
function get_layout_objects (line 15) | def get_layout_objects(layout, clz, objects):
class ModelFormPlugin (line 23) | class ModelFormPlugin(BasePortalPlugin):
method _portal_key (line 25) | def _portal_key(self):
method get_form_helper (line 28) | def get_form_helper(self, helper):
method block_form_top (line 59) | def block_form_top(self, context, node):
class ModelDetailPlugin (line 64) | class ModelDetailPlugin(ModelFormPlugin):
method _portal_key (line 66) | def _portal_key(self):
method block_after_fieldsets (line 69) | def block_after_fieldsets(self, context, node):
FILE: xadmin/plugins/quickfilter.py
class QuickFilterMultiSelectFieldListFilter (line 14) | class QuickFilterMultiSelectFieldListFilter(MultiSelectFieldListFilter):
class QuickFilterPlugin (line 23) | class QuickFilterPlugin(BaseAdminPlugin):
method init_request (line 30) | def init_request(self, *args, **kwargs):
method get_media (line 35) | def get_media(self, media):
method lookup_allowed (line 38) | def lookup_allowed(self, lookup, value):
method get_list_queryset (line 83) | def get_list_queryset(self, queryset):
method block_left_navbar (line 161) | def block_left_navbar(self, context, nodes):
FILE: xadmin/plugins/quickform.py
class QuickFormPlugin (line 13) | class QuickFormPlugin(BaseAdminPlugin):
method init_request (line 15) | def init_request(self, *args, **kwargs):
method get_model_form (line 22) | def get_model_form(self, __, **kwargs):
method get_form_layout (line 32) | def get_form_layout(self, __):
method get_context (line 37) | def get_context(self, context):
class RelatedFieldWidgetWrapper (line 42) | class RelatedFieldWidgetWrapper(forms.Widget):
method __init__ (line 48) | def __init__(self, widget, rel, add_url, rel_add_url):
method __deepcopy__ (line 62) | def __deepcopy__(self, memo):
method media (line 70) | def media(self):
method render (line 74) | def render(self, name, value, renderer=None, *args, **kwargs):
method build_attrs (line 86) | def build_attrs(self, extra_attrs=None, **kwargs):
method value_from_datadict (line 91) | def value_from_datadict(self, data, files, name):
method id_for_label (line 94) | def id_for_label(self, id_):
class QuickAddBtnPlugin (line 98) | class QuickAddBtnPlugin(BaseAdminPlugin):
method formfield_for_dbfield (line 100) | def formfield_for_dbfield(self, formfield, db_field, **kwargs):
FILE: xadmin/plugins/refresh.py
class RefreshPlugin (line 11) | class RefreshPlugin(BaseAdminPlugin):
method get_media (line 16) | def get_media(self, media):
method block_top_toolbar (line 22) | def block_top_toolbar(self, context, nodes):
FILE: xadmin/plugins/relate.py
class RelateMenuPlugin (line 22) | class RelateMenuPlugin(BaseAdminPlugin):
method _get_all_related_objects (line 27) | def _get_all_related_objects(self, local_only=False, include_hidden=Fa...
method get_related_list (line 51) | def get_related_list(self):
method related_link (line 71) | def related_link(self, instance):
method get_list_display (line 111) | def get_list_display(self, list_display):
class RelateObject (line 118) | class RelateObject(object):
method __init__ (line 120) | def __init__(self, admin_view, lookup, value):
method filter (line 142) | def filter(self, queryset):
method get_brand_name (line 145) | def get_brand_name(self):
class BaseRelateDisplayPlugin (line 154) | class BaseRelateDisplayPlugin(BaseAdminPlugin):
method init_request (line 156) | def init_request(self, *args, **kwargs):
method _get_relate_params (line 165) | def _get_relate_params(self):
method _get_input (line 168) | def _get_input(self):
method _get_url (line 171) | def _get_url(self, url):
class ListRelateDisplayPlugin (line 175) | class ListRelateDisplayPlugin(BaseRelateDisplayPlugin):
method get_list_queryset (line 177) | def get_list_queryset(self, queryset):
method url_for_result (line 182) | def url_for_result(self, url, result):
method get_context (line 185) | def get_context(self, context):
method get_list_display (line 194) | def get_list_display(self, list_display):
class EditRelateDisplayPlugin (line 203) | class EditRelateDisplayPlugin(BaseRelateDisplayPlugin):
method get_form_datas (line 205) | def get_form_datas(self, datas):
method post_response (line 211) | def post_response(self, response):
method get_context (line 217) | def get_context(self, context):
method block_after_fieldsets (line 222) | def block_after_fieldsets(self, context, nodes):
class DeleteRelateDisplayPlugin (line 226) | class DeleteRelateDisplayPlugin(BaseRelateDisplayPlugin):
method post_response (line 228) | def post_response(self, response):
method block_form_fields (line 234) | def block_form_fields(self, context, nodes):
FILE: xadmin/plugins/relfield.py
class ForeignKeySearchWidget (line 13) | class ForeignKeySearchWidget(forms.Widget):
method __init__ (line 15) | def __init__(self, rel, admin_view, attrs=None, using=None):
method build_attrs (line 21) | def build_attrs(self, attrs={}, extra_attrs=None, **kwargs):
method render (line 43) | def render(self, name, value, attrs=None):
method label_for_value (line 55) | def label_for_value(self, value):
method media (line 65) | def media(self):
class ForeignKeySelectWidget (line 69) | class ForeignKeySelectWidget(ForeignKeySearchWidget):
method build_attrs (line 71) | def build_attrs(self, attrs={}, **kwargs):
class RelateFieldPlugin (line 81) | class RelateFieldPlugin(BaseAdminPlugin):
method get_field_style (line 83) | def get_field_style(self, attrs, db_field, style, **kwargs):
FILE: xadmin/plugins/sitemenu.py
class SiteMenuStylePlugin (line 11) | class SiteMenuStylePlugin(BaseAdminPlugin):
method init_request (line 15) | def init_request(self, *args, **kwargs):
method get_context (line 18) | def get_context(self, context):
FILE: xadmin/plugins/sortablelist.py
class SortableListPlugin (line 21) | class SortableListPlugin(BaseAdminPlugin):
method init_request (line 25) | def init_request(self, *args, **kwargs):
method is_list_sortable (line 29) | def is_list_sortable(self):
method result_row (line 32) | def result_row(self, __, obj):
method result_item (line 39) | def result_item(self, item, obj, field_name, row):
method get_context (line 44) | def get_context(self, context):
method block_top_toolbar (line 48) | def block_top_toolbar(self, context, nodes):
method get_media (line 54) | def get_media(self, media):
class SaveOrderView (line 60) | class SaveOrderView(ModelAdminView):
method post (line 64) | def post(self, request):
method save_order (line 70) | def save_order(self, pk, order_value):
FILE: xadmin/plugins/themes.py
class ThemePlugin (line 21) | class ThemePlugin(BaseAdminPlugin):
method init_request (line 30) | def init_request(self, *args, **kwargs):
method _get_theme (line 33) | def _get_theme(self):
method get_context (line 47) | def get_context(self, context):
method get_media (line 52) | def get_media(self, media):
method block_top_navmenu (line 56) | def block_top_navmenu(self, context, nodes):
FILE: xadmin/plugins/topnav.py
class TopNavPlugin (line 12) | class TopNavPlugin(BaseAdminPlugin):
method get_context (line 17) | def get_context(self, context):
method block_top_navbar (line 21) | def block_top_navbar(self, context, nodes):
method block_top_navmenu (line 46) | def block_top_navmenu(self, context, nodes):
FILE: xadmin/plugins/ueditor.py
class XadminUEditorWidget (line 12) | class XadminUEditorWidget(UEditorWidget):
method __init__ (line 13) | def __init__(self,**kwargs):
class UeditorPlugin (line 18) | class UeditorPlugin(BaseAdminPlugin):
method get_field_style (line 20) | def get_field_style(self, attrs, db_field, style, **kwargs):
method block_extrahead (line 30) | def block_extrahead(self, context, nodes):
FILE: xadmin/plugins/utils.py
function get_context_dict (line 4) | def get_context_dict(context):
FILE: xadmin/plugins/wizard.py
function normalize_name (line 28) | def normalize_name(name):
class WizardFormPlugin (line 33) | class WizardFormPlugin(BaseAdminPlugin):
method _get_form_prefix (line 45) | def _get_form_prefix(self, step=None):
method get_form_list (line 53) | def get_form_list(self):
method init_request (line 68) | def init_request(self, *args, **kwargs):
method prepare_form (line 74) | def prepare_form(self, __):
method get_form_layout (line 119) | def get_form_layout(self, __):
method get_step_form (line 127) | def get_step_form(self, step=None):
method get_step_form_obj (line 148) | def get_step_form_obj(self, step=None):
method get_form_datas (line 156) | def get_form_datas(self, datas):
method valid_forms (line 165) | def valid_forms(self, __):
method _done (line 171) | def _done(self):
method save_forms (line 203) | def save_forms(self, __):
method save_models (line 214) | def save_models(self, __):
method save_related (line 217) | def save_related(self, __):
method get_context (line 220) | def get_context(self, context):
method get_response (line 229) | def get_response(self, response):
method post_response (line 233) | def post_response(self, __):
method get_all_cleaned_data (line 246) | def get_all_cleaned_data(self):
method get_cleaned_data_for_step (line 271) | def get_cleaned_data_for_step(self, step):
method get_next_step (line 283) | def get_next_step(self, step=None):
method get_prev_step (line 299) | def get_prev_step(self, step=None):
method get_step_index (line 315) | def get_step_index(self, step=None):
method block_before_fieldsets (line 327) | def block_before_fieldsets(self, context, nodes):
method block_submit_line (line 337) | def block_submit_line(self, context, nodes):
FILE: xadmin/plugins/xversion.py
function _autoregister (line 31) | def _autoregister(admin, model, follow=None):
function _register_model (line 43) | def _register_model(admin, model):
function register_models (line 74) | def register_models(admin_site=None):
function do_create_revision (line 83) | def do_create_revision(request):
class ReversionPlugin (line 88) | class ReversionPlugin(BaseAdminPlugin):
method init_request (line 98) | def init_request(self, *args, **kwargs):
method do_post (line 101) | def do_post(self, __):
method post (line 121) | def post(self, __, request, *args, **kwargs):
method block_top_toolbar (line 126) | def block_top_toolbar(self, context, nodes):
method block_nav_toggles (line 130) | def block_nav_toggles(self, context, nodes):
method block_nav_btns (line 138) | def block_nav_btns(self, context, nodes):
class ActionRevisionPlugin (line 147) | class ActionRevisionPlugin(BaseAdminPlugin):
method init_request (line 151) | def init_request(self, *args, **kwargs):
method do_action (line 154) | def do_action(self, __, queryset):
class BaseReversionView (line 159) | class BaseReversionView(ModelAdminView):
method init_request (line 172) | def init_request(self, *args, **kwargs):
method _order_version_queryset (line 176) | def _order_version_queryset(self, queryset):
class RecoverListView (line 183) | class RecoverListView(BaseReversionView):
method get_context (line 187) | def get_context(self):
method get (line 202) | def get(self, request, *args, **kwargs):
class RevisionListView (line 211) | class RevisionListView(BaseReversionView):
method _reversion_order_version_queryset (line 216) | def _reversion_order_version_queryset(self, queryset):
method get_context (line 222) | def get_context(self):
method get (line 250) | def get(self, request, object_id, *args, **kwargs):
method get_response (line 259) | def get_response(self):
method get_version_object (line 265) | def get_version_object(self, version):
method post (line 280) | def post(self, request, object_id, *args, **kwargs):
method get_media (line 347) | def get_media(self):
class BaseRevisionView (line 351) | class BaseRevisionView(ModelFormAdminView):
method get_revision (line 354) | def get_revision(self):
method get_form_datas (line 358) | def get_form_datas(self):
method get_context (line 366) | def get_context(self):
method get_media (line 374) | def get_media(self):
class DiffField (line 378) | class DiffField(Field):
method render (line 380) | def render(self, form, form_style, context, template_pack=TEMPLATE_PAC...
class RevisionView (line 388) | class RevisionView(BaseRevisionView):
method init_request (line 392) | def init_request(self, object_id, version_id):
method get_form_helper (line 401) | def get_form_helper(self):
method get_context (line 422) | def get_context(self):
method get_response (line 429) | def get_response(self):
method post_response (line 440) | def post_response(self):
class RecoverView (line 446) | class RecoverView(BaseRevisionView):
method init_request (line 450) | def init_request(self, version_id):
method get_context (line 460) | def get_context(self):
method get_response (line 466) | def get_response(self):
method post_response (line 477) | def post_response(self):
class InlineDiffField (line 483) | class InlineDiffField(Field):
method render (line 485) | def render(self, form, form_style, context, template_pack=TEMPLATE_PAC...
class InlineRevisionPlugin (line 509) | class InlineRevisionPlugin(BaseAdminPlugin):
method get_related_versions (line 511) | def get_related_versions(self, obj, version, formset):
method _hack_inline_formset_initial (line 528) | def _hack_inline_formset_initial(self, revision_view, formset):
method instance_form (line 576) | def instance_form(self, formset, **kwargs):
class VersionInline (line 583) | class VersionInline(object):
class ReversionAdmin (line 588) | class ReversionAdmin(object):
FILE: xadmin/sites.py
class AlreadyRegistered (line 18) | class AlreadyRegistered(Exception):
class NotRegistered (line 22) | class NotRegistered(Exception):
class MergeAdminMetaclass (line 26) | class MergeAdminMetaclass(type):
method __new__ (line 28) | def __new__(cls, name, bases, attrs):
class AdminSite (line 32) | class AdminSite(object):
method __init__ (line 34) | def __init__(self, name='xadmin'):
method copy_registry (line 53) | def copy_registry(self):
method restore_registry (line 64) | def restore_registry(self, data):
method register_modelview (line 72) | def register_modelview(self, path, admin_view_class, name):
method register_view (line 80) | def register_view(self, path, admin_view_class, name):
method register_plugin (line 83) | def register_plugin(self, plugin_class, admin_view_class):
method register_settings (line 92) | def register_settings(self, name, admin_class):
method register (line 95) | def register(self, model_or_iterable, admin_class=object, **options):
method unregister (line 133) | def unregister(self, model_or_iterable):
method set_loginview (line 153) | def set_loginview(self, login_view):
method has_permission (line 156) | def has_permission(self, request):
method check_dependencies (line 163) | def check_dependencies(self):
method admin_view (line 182) | def admin_view(self, view, cacheable=False):
method _get_merge_attrs (line 213) | def _get_merge_attrs(self, option_class, plugin_class):
method _get_settings_class (line 217) | def _get_settings_class(self, admin_view_class):
method _create_plugin (line 229) | def _create_plugin(self, option_classes):
method get_plugins (line 246) | def get_plugins(self, admin_view_class, *option_classes):
method get_view_class (line 265) | def get_view_class(self, view_class, option_class=None, **opts):
method create_admin_view (line 285) | def create_admin_view(self, admin_view_class):
method create_model_admin_view (line 288) | def create_model_admin_view(self, admin_view_class, model, option_class):
method get_urls (line 291) | def get_urls(self):
method urls (line 338) | def urls(self):
method i18n_javascript (line 341) | def i18n_javascript(self, request):
function register (line 359) | def register(models, **kwargs):
FILE: xadmin/static/xadmin/js/xadmin.plugin.charts.js
function showTooltip (line 3) | function showTooltip(x, y, contents) {
FILE: xadmin/static/xadmin/js/xadmin.plugin.quickfilter.js
function addShowMore (line 5) | function addShowMore($,v){
function addShowLess (line 18) | function addShowLess($,v){
FILE: xadmin/static/xadmin/js/xadmin.plugin.sortablelist.js
function getCookie (line 5) | function getCookie(name) {
FILE: xadmin/static/xadmin/vendor/bootstrap-clockpicker/bootstrap-clockpicker.js
function createSvgElement (line 43) | function createSvgElement(name) {
function leadingZero (line 47) | function leadingZero(num) {
function uniqueId (line 53) | function uniqueId(prefix) {
function ClockPicker (line 90) | function ClockPicker(element, options) {
function raiseCallback (line 358) | function raiseCallback(callbackFunction) {
FILE: xadmin/static/xadmin/vendor/bootstrap-datepicker/js/bootstrap-datepicker.js
function UTCDate (line 23) | function UTCDate(){
function UTCToday (line 26) | function UTCToday(){
FILE: xadmin/static/xadmin/vendor/bootstrap-modal/js/bootstrap-modalmanager.js
function targetIsSelf (line 382) | function targetIsSelf(callback){
FILE: xadmin/static/xadmin/vendor/bootstrap-multiselect/js/bootstrap-multiselect.js
function Multiselect (line 39) | function Multiselect(select, options) {
FILE: xadmin/static/xadmin/vendor/bootstrap/js/bootstrap.js
function transitionEnd (line 36) | function transitionEnd() {
function removeElement (line 121) | function removeElement() {
function clearMenus (line 767) | function clearMenus() {
function getParent (line 778) | function getParent($this) {
function complete (line 1339) | function complete() {
function ScrollSpy (line 1607) | function ScrollSpy(element, options) {
function next (line 1808) | function next() {
FILE: xadmin/static/xadmin/vendor/flot/excanvas.js
function getContext (line 59) | function getContext() {
function bind (line 82) | function bind(f, obj, var_args) {
function encodeHtmlAttribute (line 89) | function encodeHtmlAttribute(s) {
function addNamespace (line 93) | function addNamespace(doc, prefix, urn) {
function addNamespacesAndStylesheet (line 99) | function addNamespacesAndStylesheet(doc) {
function onPropertyChange (line 178) | function onPropertyChange(e) {
function onResize (line 196) | function onResize(e) {
function createMatrixIdentity (line 214) | function createMatrixIdentity() {
function matrixMultiply (line 222) | function matrixMultiply(m1, m2) {
function copyState (line 239) | function copyState(o1, o2) {
function getRgbHslContent (line 394) | function getRgbHslContent(styleString) {
function percent (line 405) | function percent(s) {
function clamp (line 409) | function clamp(v, min, max) {
function hslToRgb (line 413) | function hslToRgb(parts){
function hueToRgb (line 435) | function hueToRgb(m1, m2, h) {
function processStyle (line 453) | function processStyle(styleString) {
function processFontStyle (line 496) | function processFontStyle(styleString) {
function getComputedStyle (line 518) | function getComputedStyle(style, element) {
function buildStyle (line 550) | function buildStyle(style) {
function processLineCap (line 560) | function processLineCap(lineCap) {
function CanvasRenderingContext2D_ (line 570) | function CanvasRenderingContext2D_(canvasElement) {
function bezierCurveTo (line 649) | function bezierCurveTo(self, cp1, cp2, p) {
function appendStroke (line 978) | function appendStroke(ctx, lineStr) {
function appendFill (line 1001) | function appendFill(ctx, lineStr, min, max) {
function getCoords (line 1112) | function getCoords(ctx, aX, aY) {
function matrixIsFinite (line 1135) | function matrixIsFinite(m) {
function setM (line 1141) | function setM(ctx, m, updateLineScale) {
function CanvasGradient_ (line 1344) | function CanvasGradient_(aType) {
function CanvasPattern_ (line 1362) | function CanvasPattern_(image, repetition) {
function throwException (line 1384) | function throwException(s) {
function assertImageIsValid (line 1388) | function assertImageIsValid(img) {
function DOMException_ (line 1397) | function DOMException_(s) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.colorhelpers.js
function clamp (line 55) | function clamp(min, value, max) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.aggregate.js
function groupByAxis (line 30) | function groupByAxis(data,axis) {
function processRawData (line 42) | function processRawData(plot, series, data, datapoints) {
function init (line 130) | function init(plot) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.canvas.js
function init (line 42) | function init(plot, classes) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.categories.js
function processRawData (line 56) | function processRawData(plot, series, data, datapoints) {
function getNextIndex (line 97) | function getNextIndex(categories) {
function categoriesTickGenerator (line 107) | function categoriesTickGenerator(axis) {
function setupCategoriesForAxis (line 120) | function setupCategoriesForAxis(series, axis, datapoints) {
function transformPointsOnAxis (line 146) | function transformPointsOnAxis(datapoints, axis, categories) {
function processDatapoints (line 174) | function processDatapoints(plot, series, datapoints) {
function init (line 179) | function init(plot) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.crosshair.js
function init (line 70) | function init(plot) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.errorbars.js
function processRawData (line 76) | function processRawData(plot, series, data, datapoints){
function parseErrors (line 107) | function parseErrors(series, i){
function drawSeriesErrors (line 162) | function drawSeriesErrors(plot, ctx, s){
function drawError (line 275) | function drawError(ctx,err,x,y,upper,lower,drawUpper,drawLower,radius,of...
function drawPath (line 322) | function drawPath(ctx, pts){
function draw (line 330) | function draw(plot, ctx){
function init (line 342) | function init(plot) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.fillbetween.js
function init (line 40) | function init( plot ) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.image.js
function drawSeries (line 118) | function drawSeries(plot, ctx, series) {
function processRawData (line 216) | function processRawData(plot, series, data, datapoints) {
function init (line 230) | function init(plot) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.js
function H (line 32) | function H(J,K,I){return K<J?J:(K>I?I:K)}
function Canvas (line 51) | function Canvas(cls, container) {
function Plot (line 430) | function Plot(placeholder, data_, options_, plugins) {
function floorInBase (line 2976) | function floorInBase(n, base) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.navigate.js
function e (line 90) | function e(h){var k,j=this,l=h.data||{};if(l.elem)j=h.dragTarget=l.elem,...
function f (line 90) | function f(b,c,d){b.type=c;var e=a.event.dispatch.call(d,b);return e===!...
function g (line 90) | function g(a){return Math.pow(a,2)}
function h (line 90) | function h(){return d.dragging===!1}
function i (line 90) | function i(a,b){a&&(a.unselectable=b?"off":"on",a.onselectstart=function...
function e (line 103) | function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0...
function init (line 126) | function init(plot) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.pie.js
function init (line 68) | function init(plot) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.resize.js
function m (line 23) | function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r...
function g (line 23) | function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width...
function init (line 28) | function init(plot) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.selection.js
function init (line 82) | function init(plot) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.stack.js
function init (line 43) | function init(plot) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.symbol.js
function processRawData (line 17) | function processRawData(plot, series, datapoints) {
function init (line 62) | function init(plot) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.threshold.js
function init (line 50) | function init(plot) {
FILE: xadmin/static/xadmin/vendor/flot/jquery.flot.time.js
function floorInBase (line 24) | function floorInBase(n, base) {
function formatDate (line 31) | function formatDate(d, fmt, monthNames, dayNames) {
function makeUtcWrapper (line 110) | function makeUtcWrapper(d) {
function dateGenerator (line 144) | function dateGenerator(ts, opts) {
function init (line 196) | function init(plot) {
FILE: xadmin/static/xadmin/vendor/jquery-ui/jquery.ui.core.js
function focusable (line 128) | function focusable( element, isTabIndexNotNaN ) {
function visible (line 149) | function visible( element ) {
function reduce (line 191) | function reduce( elem, size, border, margin ) {
FILE: xadmin/static/xadmin/vendor/jquery-ui/jquery.ui.effect.js
function clamp (line 167) | function clamp( value, prop, allowEmpty ) {
function stringParse (line 193) | function stringParse( string ) {
function hue2rgb (line 443) | function hue2rgb( p, q, h ) {
function getElementStyles (line 711) | function getElementStyles( elem ) {
function styleDifference (line 739) | function styleDifference( oldStyle, newStyle ) {
function _normalizeArguments (line 1060) | function _normalizeArguments( effect, options, speed, callback ) {
function standardAnimationOption (line 1112) | function standardAnimationOption( option ) {
function run (line 1157) | function run( next ) {
FILE: xadmin/static/xadmin/vendor/jquery-ui/jquery.ui.sortable.js
function isOverAxis (line 20) | function isOverAxis( x, reference, size ) {
function isFloating (line 24) | function isFloating(item) {
FILE: xadmin/static/xadmin/vendor/jquery-ui/jquery.ui.widget.js
function handlerProxy (line 387) | function handlerProxy() {
function handlerProxy (line 423) | function handlerProxy() {
FILE: xadmin/static/xadmin/vendor/jquery/jquery.js
function isArraylike (line 848) | function isArraylike( obj ) {
function isNative (line 1043) | function isNative( fn ) {
function createCache (line 1053) | function createCache() {
function markFunction (line 1071) | function markFunction( fn ) {
function assert (line 1080) | function assert( fn ) {
function Sizzle (line 1096) | function Sizzle( selector, context, results, seed ) {
function siblingCheck (line 1647) | function siblingCheck( a, b ) {
function boolHandler (line 1669) | function boolHandler( elem, name, isXML ) {
function interpolationHandler (line 1680) | function interpolationHandler( elem, name, isXML ) {
function createInputPseudo (line 1688) | function createInputPseudo( type ) {
function createButtonPseudo (line 1696) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 1704) | function createPositionalPseudo( fn ) {
function tokenize (line 2231) | function tokenize( selector, parseOnly ) {
function toSelector (line 2298) | function toSelector( tokens ) {
function addCombinator (line 2308) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2358) | function elementMatcher( matchers ) {
function condense (line 2372) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2393) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2486) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2538) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function multipleContexts (line 2666) | function multipleContexts( selector, contexts, results ) {
function select (line 2675) | function select( selector, context, results, seed ) {
function setFilters (line 2744) | function setFilters() {}
function createOptions (line 2800) | function createOptions( options ) {
function Data (line 3262) | function Data() {
function dataAttr (line 3570) | function dataAttr( elem, key, data ) {
function returnTrue (line 4247) | function returnTrue() {
function returnFalse (line 4251) | function returnFalse() {
function safeActiveElement (line 4255) | function safeActiveElement() {
function sibling (line 5201) | function sibling( cur, dir ) {
function winnow (line 5319) | function winnow( elements, qualifier, not ) {
function manipulationTarget (line 5823) | function manipulationTarget( elem, content ) {
function disableScript (line 5833) | function disableScript( elem ) {
function restoreScript (line 5837) | function restoreScript( elem ) {
function setGlobalEval (line 5850) | function setGlobalEval( elems, refElements ) {
function cloneCopyEvent (line 5861) | function cloneCopyEvent( src, dest ) {
function getAll (line 5898) | function getAll( context, tag ) {
function fixInput (line 5909) | function fixInput( src, dest ) {
function vendorPropName (line 6010) | function vendorPropName( style, name ) {
function isHidden (line 6032) | function isHidden( elem, el ) {
function getStyles (line 6041) | function getStyles( elem ) {
function showHide (line 6045) | function showHide( elements, show ) {
function setPositiveNumber (line 6313) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 6321) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 6360) | function getWidthOrHeight( elem, name, extra ) {
function css_defaultDisplay (line 6404) | function css_defaultDisplay( nodeName ) {
function actualDisplay (line 6436) | function actualDisplay( name, doc ) {
function buildParams (line 6622) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 6738) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 6770) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 6797) | function ajaxExtend( target, src ) {
function done (line 7243) | function done( status, nativeStatusText, responses, headers ) {
function ajaxHandleResponses (line 7390) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 7446) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function createFxNow (line 7834) | function createFxNow() {
function createTweens (line 7841) | function createTweens( animation, props ) {
function Animation (line 7856) | function Animation( elem, properties, options ) {
function propFilter (line 7960) | function propFilter( props, specialEasing ) {
function defaultPrefilter (line 8027) | function defaultPrefilter( elem, props, opts ) {
function Tween (line 8151) | function Tween( elem, options, prop, end, easing ) {
function genFx (line 8377) | function genFx( type, includeWidth ) {
function getWindow (line 8675) | function getWindow( elem ) {
FILE: xadmin/static/xadmin/vendor/select2/select2.js
function indexOf (line 104) | function indexOf(value, array) {
function equal (line 117) | function equal(a, b) {
function splitVal (line 132) | function splitVal(string, separator) {
function getSideBorderPadding (line 140) | function getSideBorderPadding(element) {
function installKeyUpChangeEvent (line 144) | function installKeyUpChangeEvent(element) {
function installFilteredMouseMove (line 170) | function installFilteredMouseMove(element) {
function debounce (line 188) | function debounce(quietMillis, fn, ctx) {
function thunk (line 205) | function thunk(formula) {
function installDebouncedScroll (line 214) | function installDebouncedScroll(threshold, element) {
function focus (line 221) | function focus($el) {
function killEvent (line 251) | function killEvent(event) {
function killEventImmediately (line 255) | function killEventImmediately(event) {
function measureTextWidth (line 260) | function measureTextWidth(e) {
function syncCssClasses (line 283) | function syncCssClasses(dest, src, adapter) {
function markMatch (line 311) | function markMatch(text, term, markup, escapeMarkup) {
function ajax (line 343) | function ajax(options) {
function local (line 409) | function local(options) {
function tags (line 468) | function tags(data) {
function checkFormatter (line 491) | function checkFormatter(formatter, formatterName) {
function evaluate (line 497) | function evaluate(val) {
function countResults (line 501) | function countResults(results) {
function defaultTokenizer (line 524) | function defaultTokenizer(input, selection, selectCallback, opts) {
function clazz (line 572) | function clazz(SuperClass, methods) {
function _makeMaskCss (line 1146) | function _makeMaskCss() {
function postRender (line 1371) | function postRender() {
function render (line 1377) | function render(html) {
function resolveContainerWidth (line 1526) | function resolveContainerWidth() {
FILE: xadmin/templatetags/xadmin_tags.py
function view_block (line 11) | def view_block(context, block_name, *args, **kwargs):
function admin_urlname (line 32) | def admin_urlname(value, arg):
function vendor (line 39) | def vendor(context, *tags):
class BlockcaptureNode (line 43) | class BlockcaptureNode(template.Node):
method __init__ (line 45) | def __init__(self, nodelist, varname):
method render (line 49) | def render(self, context):
function do_blockcapture (line 56) | def do_blockcapture(parser, token):
FILE: xadmin/util.py
function xstatic (line 44) | def xstatic(*tags):
function vendor (line 86) | def vendor(*tags):
function lookup_needs_distinct (line 98) | def lookup_needs_distinct(opts, lookup_path):
function prepare_lookup_value (line 112) | def prepare_lookup_value(key, value):
function quote (line 128) | def quote(s):
function unquote (line 146) | def unquote(s):
function flatten_fieldsets (line 170) | def flatten_fieldsets(fieldsets):
class NestedObjects (line 183) | class NestedObjects(Collector):
method __init__ (line 185) | def __init__(self, *args, **kwargs):
method add_edge (line 190) | def add_edge(self, source, target):
method collect (line 193) | def collect(self, objs, source_attr=None, **kwargs):
method related_objects (line 204) | def related_objects(self, related, objs):
method _nested (line 208) | def _nested(self, obj, seen, format_callback):
method nested (line 223) | def nested(self, format_callback=None):
function model_format_dict (line 235) | def model_format_dict(obj):
function model_ngettext (line 255) | def model_ngettext(obj, n=None):
function is_rel_field (line 274) | def is_rel_field(name, model):
function lookup_field (line 282) | def lookup_field(name, obj, model_admin=None):
function admin_urlname (line 318) | def admin_urlname(value, arg):
function boolean_icon (line 322) | def boolean_icon(field_val):
function display_for_field (line 327) | def display_for_field(value, field):
function display_for_value (line 352) | def display_for_value(value, boolean=False):
class NotRelationField (line 369) | class NotRelationField(Exception):
function get_model_from_relation (line 373) | def get_model_from_relation(field):
function reverse_field_path (line 384) | def reverse_field_path(model, path):
function get_fields_from_path (line 415) | def get_fields_from_path(model, path):
function remove_trailing_data_field (line 435) | def remove_trailing_data_field(fields):
function get_limit_choices_to_from_path (line 444) | def get_limit_choices_to_from_path(model, path):
function sortkeypicker (line 464) | def sortkeypicker(keynames):
function is_related_field (line 480) | def is_related_field(field):
function is_related_field2 (line 484) | def is_related_field2(field):
FILE: xadmin/views/__init__.py
function register_builtin_views (line 23) | def register_builtin_views(site):
FILE: xadmin/views/base.py
class IncorrectPluginArg (line 38) | class IncorrectPluginArg(Exception):
function get_content_type_for_model (line 41) | def get_content_type_for_model(obj):
function filter_chain (line 45) | def filter_chain(filters, token, func, *args, **kwargs):
function filter_hook (line 64) | def filter_hook(func):
function inclusion_tag (line 84) | def inclusion_tag(file_name, context_class=Context, takes_context=False):
class JSONEncoder (line 112) | class JSONEncoder(DjangoJSONEncoder):
method default (line 113) | def default(self, o):
class BaseAdminObject (line 129) | class BaseAdminObject(object):
method get_view (line 131) | def get_view(self, view_class, option_class=None, *args, **kwargs):
method get_model_view (line 135) | def get_model_view(self, view_class, model, *args, **kwargs):
method get_admin_url (line 138) | def get_admin_url(self, name, *args, **kwargs):
method get_model_url (line 141) | def get_model_url(self, model, name, *args, **kwargs):
method get_model_perm (line 147) | def get_model_perm(self, model, name):
method has_model_perm (line 150) | def has_model_perm(self, model, name, user=None):
method get_query_string (line 154) | def get_query_string(self, new_params=None, remove=None):
method get_form_params (line 173) | def get_form_params(self, new_params=None, remove=None):
method render_response (line 193) | def render_response(self, content, response_type='json'):
method template_response (line 201) | def template_response(self, template, context):
method message_user (line 204) | def message_user(self, message, level='info'):
method static (line 212) | def static(self, path):
method vendor (line 215) | def vendor(self, *tags):
method log (line 218) | def log(self, flag, message, obj=None):
class BaseAdminPlugin (line 232) | class BaseAdminPlugin(BaseAdminObject):
method __init__ (line 234) | def __init__(self, admin_view):
method init_request (line 242) | def init_request(self, *args, **kwargs):
class BaseAdminView (line 246) | class BaseAdminView(BaseAdminObject, View):
method __init__ (line 252) | def __init__(self, request, *args, **kwargs):
method as_view (line 266) | def as_view(cls):
method init_request (line 287) | def init_request(self, *args, **kwargs):
method init_plugin (line 290) | def init_plugin(self, *args, **kwargs):
method get_context (line 303) | def get_context(self):
method media (line 307) | def media(self):
method get_media (line 311) | def get_media(self):
class CommAdminView (line 315) | class CommAdminView(BaseAdminView):
method get_site_menu (line 328) | def get_site_menu(self):
method get_nav_menu (line 332) | def get_nav_menu(self):
method get_context (line 401) | def get_context(self):
method get_model_icon (line 467) | def get_model_icon(self, model):
method get_breadcrumb (line 475) | def get_breadcrumb(self):
class ModelAdminView (line 481) | class ModelAdminView(CommAdminView):
method __init__ (line 489) | def __init__(self, request, *args, **kwargs):
method get_context (line 498) | def get_context(self):
method get_breadcrumb (line 511) | def get_breadcrumb(self):
method get_object (line 520) | def get_object(self, object_id):
method get_object_url (line 534) | def get_object_url(self, obj):
method model_admin_url (line 542) | def model_admin_url(self, name, *args, **kwargs):
method get_model_perms (line 547) | def get_model_perms(self):
method get_template_list (line 560) | def get_template_list(self, template_name):
method get_ordering (line 569) | def get_ordering(self):
method queryset (line 576) | def queryset(self):
method has_view_permission (line 583) | def has_view_permission(self, obj=None):
method has_add_permission (line 590) | def has_add_permission(self):
method has_change_permission (line 594) | def has_change_permission(self, obj=None):
method has_delete_permission (line 598) | def has_delete_permission(self, obj=None):
FILE: xadmin/views/dashboard.py
class WidgetTypeSelect (line 30) | class WidgetTypeSelect(forms.Widget):
method __init__ (line 32) | def __init__(self, widgets, attrs=None):
method render (line 36) | def render(self, name, value, attrs=None):
method render_option (line 53) | def render_option(self, selected_choice, widget, id):
method render_options (line 67) | def render_options(self, selected_choice, id):
class UserWidgetAdmin (line 75) | class UserWidgetAdmin(object):
method formfield_for_dbfield (line 90) | def formfield_for_dbfield(self, db_field, **kwargs):
method get_widget_params_form (line 102) | def get_widget_params_form(self, wizard):
method convert_widget_params (line 111) | def convert_widget_params(self, wizard, cleaned_data, form):
method get_list_display (line 118) | def get_list_display(self):
method queryset (line 124) | def queryset(self):
method update_dashboard (line 129) | def update_dashboard(self, obj):
method delete_model (line 140) | def delete_model(self):
method delete_models (line 144) | def delete_models(self, queryset):
class WidgetManager (line 153) | class WidgetManager(object):
method __init__ (line 156) | def __init__(self):
method register (line 159) | def register(self, widget_class):
method get (line 163) | def get(self, name):
method get_widgets (line 166) | def get_widgets(self, page_id):
class WidgetDataError (line 172) | class WidgetDataError(Exception):
method __init__ (line 174) | def __init__(self, widget, errors):
class BaseWidget (line 180) | class BaseWidget(forms.Form):
method __init__ (line 192) | def __init__(self, dashboard, data):
method setup (line 205) | def setup(self):
method widget (line 218) | def widget(self):
method context (line 225) | def context(self, context):
method convert (line 228) | def convert(self, data):
method has_perm (line 231) | def has_perm(self):
method save (line 234) | def save(self):
method static (line 240) | def static(self, path):
method vendor (line 243) | def vendor(self, *tags):
method media (line 246) | def media(self):
class HtmlWidget (line 251) | class HtmlWidget(BaseWidget):
method has_perm (line 260) | def has_perm(self):
method context (line 263) | def context(self, context):
class ModelChoiceIterator (line 267) | class ModelChoiceIterator(object):
method __init__ (line 268) | def __init__(self, field):
method __iter__ (line 271) | def __iter__(self):
class ModelChoiceField (line 278) | class ModelChoiceField(forms.ChoiceField):
method __init__ (line 280) | def __init__(self, required=True, widget=None, label=None, initial=None,
method __deepcopy__ (line 288) | def __deepcopy__(self, memo):
method _get_choices (line 292) | def _get_choices(self):
method to_python (line 297) | def to_python(self, value):
method prepare_value (line 303) | def prepare_value(self, value):
method valid_value (line 308) | def valid_value(self, value):
class ModelBaseWidget (line 316) | class ModelBaseWidget(BaseWidget):
method __init__ (line 323) | def __init__(self, dashboard, data):
method setup (line 327) | def setup(self):
method has_perm (line 334) | def has_perm(self):
method filte_choices_model (line 337) | def filte_choices_model(self, model, modeladmin):
method model_admin_url (line 340) | def model_admin_url(self, name, *args, **kwargs):
class PartialBaseWidget (line 346) | class PartialBaseWidget(BaseWidget):
method get_view_class (line 348) | def get_view_class(self, view_class, model=None, **opts):
method get_factory (line 352) | def get_factory(self):
method setup_request (line 355) | def setup_request(self, request):
method make_get_request (line 360) | def make_get_request(self, path, data={}, **extra):
method make_post_request (line 364) | def make_post_request(self, path, data={}, **extra):
class QuickBtnWidget (line 370) | class QuickBtnWidget(BaseWidget):
method convert (line 377) | def convert(self, data):
method get_model (line 380) | def get_model(self, model_or_label):
method context (line 386) | def context(self, context):
method has_perm (line 412) | def has_perm(self):
class ListWidget (line 417) | class ListWidget(ModelBaseWidget, PartialBaseWidget):
method convert (line 424) | def convert(self, data):
method setup (line 428) | def setup(self):
method context (line 439) | def context(self, context):
class AddFormWidget (line 457) | class AddFormWidget(ModelBaseWidget, PartialBaseWidget):
method setup (line 464) | def setup(self):
method context (line 475) | def context(self, context):
method media (line 487) | def media(self):
class Dashboard (line 491) | class Dashboard(CommAdminView):
method get_page_id (line 498) | def get_page_id(self):
method get_portal_key (line 501) | def get_portal_key(self):
method get_widget (line 505) | def get_widget(self, widget_or_id, data=None):
method get_init_widget (line 523) | def get_init_widget(self):
method get_widgets (line 546) | def get_widgets(self):
method get_title (line 574) | def get_title(self):
method get_context (line 578) | def get_context(self):
method get (line 593) | def get(self, request, *args, **kwargs):
method post (line 598) | def post(self, request, *args, **kwargs):
method get_media (line 623) | def get_media(self):
class ModelDashboard (line 634) | class ModelDashboard(Dashboard, ModelAdminView):
method get_page_id (line 638) | def get_page_id(self):
method get_title (line 642) | def get_title(self):
method init_request (line 645) | def init_request(self, object_id, *args, **kwargs):
method get_context (line 656) | def get_context(self):
method get (line 667) | def get(self, request, *args, **kwargs):
FILE: xadmin/views/delete.py
class DeleteAdminView (line 17) | class DeleteAdminView(ModelAdminView):
method init_request (line 20) | def init_request(self, object_id, *args, **kwargs):
method get (line 39) | def get(self, request, object_id):
method post (line 48) | def post(self, request, object_id):
method delete_model (line 61) | def delete_model(self):
method get_context (line 69) | def get_context(self):
method get_breadcrumb (line 88) | def get_breadcrumb(self):
method post_response (line 102) | def post_response(self):
FILE: xadmin/views/detail.py
class ShowField (line 28) | class ShowField(Field):
method __init__ (line 31) | def __init__(self, callback, *args, **kwargs):
method render (line 35) | def render(self, form, form_style, context, template_pack=TEMPLATE_PAC...
class ResultField (line 61) | class ResultField(object):
method __init__ (line 63) | def __init__(self, obj, field_name, admin_view=None):
method init (line 77) | def init(self):
method val (line 106) | def val(self):
function replace_field_to_value (line 117) | def replace_field_to_value(layout, cb):
class DetailAdminView (line 129) | class DetailAdminView(ModelAdminView):
method init_request (line 137) | def init_request(self, object_id, *args, **kwargs):
method get_form_layout (line 150) | def get_form_layout(self):
method get_model_form (line 185) | def get_model_form(self, **kwargs):
method get_form_helper (line 210) | def get_form_helper(self):
method get (line 223) | def get(self, request, *args, **kwargs):
method get_context (line 233) | def get_context(self):
method get_breadcrumb (line 251) | def get_breadcrumb(self):
method get_media (line 260) | def get_media(self):
method get_field_result (line 265) | def get_field_result(self, field_name):
method get_response (line 269) | def get_response(self, *args, **kwargs):
class DetailAdminUtil (line 279) | class DetailAdminUtil(DetailAdminView):
method init_request (line 281) | def init_request(self, obj):
FILE: xadmin/views/edit.py
class ReadOnlyField (line 47) | class ReadOnlyField(Field):
method __init__ (line 50) | def __init__(self, *args, **kwargs):
method render (line 54) | def render(self, form, form_style, context, template_pack=TEMPLATE_PAC...
class ModelFormAdminView (line 64) | class ModelFormAdminView(ModelAdminView):
method __init__ (line 80) | def __init__(self, request, *args, **kwargs):
method formfield_for_dbfield (line 87) | def formfield_for_dbfield(self, db_field, **kwargs):
method get_field_style (line 97) | def get_field_style(self, db_field, style, **kwargs):
method get_field_attrs (line 113) | def get_field_attrs(self, db_field, **kwargs):
method prepare_form (line 139) | def prepare_form(self):
method instance_forms (line 143) | def instance_forms(self):
method setup_forms (line 146) | def setup_forms(self):
method valid_forms (line 152) | def valid_forms(self):
method get_model_form (line 156) | def get_model_form(self, **kwargs):
method get_form_layout (line 193) | def get_form_layout(self):
method get_form_helper (line 227) | def get_form_helper(self):
method get_readonly_fields (line 244) | def get_readonly_fields(self):
method save_forms (line 251) | def save_forms(self):
method change_message (line 255) | def change_message(self):
method save_models (line 266) | def save_models(self):
method save_related (line 272) | def save_related(self):
method get (line 277) | def get(self, request, *args, **kwargs):
method post (line 286) | def post(self, request, *args, **kwargs):
method get_context (line 304) | def get_context(self):
method get_error_list (line 350) | def get_error_list(self):
method get_media (line 357) | def get_media(self):
class CreateAdminView (line 362) | class CreateAdminView(ModelFormAdminView):
method init_request (line 364) | def init_request(self, *args, **kwargs):
method get_form_datas (line 374) | def get_form_datas(self):
method get_context (line 391) | def get_context(self):
method get_breadcrumb (line 400) | def get_breadcrumb(self):
method get_response (line 409) | def get_response(self):
method post_response (line 419) | def post_response(self):
class UpdateAdminView (line 451) | class UpdateAdminView(ModelFormAdminView):
method init_request (line 453) | def init_request(self, object_id, *args, **kwargs):
method get_form_datas (line 467) | def get_form_datas(self):
method get_context (line 475) | def get_context(self):
method get_breadcrumb (line 485) | def get_breadcrumb(self):
method get_response (line 496) | def get_response(self, *args, **kwargs):
method post (line 505) | def post(self, request, *args, **kwargs):
method post_response (line 511) | def post_response(self):
class ModelFormAdminUtil (line 549) | class ModelFormAdminUtil(ModelFormAdminView):
method init_request (line 551) | def init_request(self, obj=None):
method get_form_datas (line 557) | def get_form_datas(self):
FILE: xadmin/views/form.py
class FormAdminView (line 23) | class FormAdminView(CommAdminView):
method init_request (line 32) | def init_request(self, *args, **kwargs):
method prepare_form (line 37) | def prepare_form(self):
method instance_forms (line 41) | def instance_forms(self):
method setup_forms (line 44) | def setup_forms(self):
method valid_forms (line 50) | def valid_forms(self):
method get_form_layout (line 54) | def get_form_layout(self):
method get_form_helper (line 85) | def get_form_helper(self):
method save_forms (line 94) | def save_forms(self):
method get (line 99) | def get(self, request, *args, **kwargs):
method post (line 108) | def post(self, request, *args, **kwargs):
method get_context (line 124) | def get_context(self):
method get_media (line 133) | def get_media(self):
method get_initial_data (line 137) | def get_initial_data(self):
method get_form_datas (line 141) | def get_form_datas(self):
method get_breadcrumb (line 150) | def get_breadcrumb(self):
method get_response (line 156) | def get_response(self):
method post_response (line 165) | def post_response(self):
method get_redirect_url (line 177) | def get_redirect_url(self):
FILE: xadmin/views/list.py
class FakeMethodField (line 34) | class FakeMethodField(object):
method __init__ (line 38) | def __init__(self, name, verbose_name):
class ResultRow (line 45) | class ResultRow(dict):
class ResultItem (line 49) | class ResultItem(object):
method __init__ (line 51) | def __init__(self, field_name, row):
method label (line 68) | def label(self):
method tagattrs (line 78) | def tagattrs(self):
class ResultHeader (line 84) | class ResultHeader(ResultItem):
method __init__ (line 86) | def __init__(self, field_name, row):
class ListAdminView (line 100) | class ListAdminView(ModelAdminView):
method init_request (line 118) | def init_request(self, *args, **kwargs):
method get_list_display (line 148) | def get_list_display(self):
method get_list_display_links (line 157) | def get_list_display_links(self):
method make_result_list (line 169) | def make_result_list(self):
method get_result_list (line 199) | def get_result_list(self):
method post_result_list (line 203) | def post_result_list(self):
method get_list_queryset (line 207) | def get_list_queryset(self):
method _get_default_ordering (line 242) | def _get_default_ordering(self):
method get_ordering_field (line 251) | def get_ordering_field(self, field_name):
method get_ordering (line 274) | def get_ordering(self):
method get_ordering_field_columns (line 308) | def get_ordering_field_columns(self):
method get_check_field_url (line 337) | def get_check_field_url(self, f):
method get_model_method_fields (line 350) | def get_model_method_fields(self):
method get_context (line 365) | def get_context(self):
method get_response (line 392) | def get_response(self, context, *args, **kwargs):
method get (line 397) | def get(self, request, *args, **kwargs):
method post_response (line 413) | def post_response(self, *args, **kwargs):
method post (line 418) | def post(self, request, *args, **kwargs):
method get_paginator (line 422) | def get_paginator(self):
method get_page_number (line 426) | def get_page_number(self, i):
method result_header (line 436) | def result_header(self, field_name, row):
method result_headers (line 517) | def result_headers(self):
method result_item (line 528) | def result_item(self, obj, field_name, row):
method result_row (line 585) | def result_row(self, obj):
method results (line 594) | def results(self):
method url_for_result (line 601) | def url_for_result(self, result):
method get_media (line 606) | def get_media(self):
method block_pagination (line 614) | def block_pagination(self, context, nodes, page_type='normal'):
FILE: xadmin/views/website.py
class IndexView (line 16) | class IndexView(Dashboard):
method get_page_id (line 20) | def get_page_id(self):
class UserSettingView (line 24) | class UserSettingView(BaseAdminView):
method post (line 27) | def post(self, request):
class LoginView (line 37) | class LoginView(BaseAdminView):
method update_params (line 44) | def update_params(self, defaults):
method get (line 48) | def get(self, request, *args, **kwargs):
method post (line 69) | def post(self, request, *args, **kwargs):
class LogoutView (line 73) | class LogoutView(BaseAdminView):
method update_params (line 79) | def update_params(self, defaults):
method get (line 83) | def get(self, request, *args, **kwargs):
method post (line 97) | def post(self, request, *args, **kwargs):
FILE: xadmin/widgets.py
class AdminDateWidget (line 20) | class AdminDateWidget(forms.DateInput):
method media (line 23) | def media(self):
method __init__ (line 26) | def __init__(self, attrs=None, format=None):
method render (line 32) | def render(self, name, value, attrs=None):
class AdminTimeWidget (line 38) | class AdminTimeWidget(forms.TimeInput):
method media (line 41) | def media(self):
method __init__ (line 44) | def __init__(self, attrs=None, format=None):
method render (line 50) | def render(self, name, value, attrs=None):
class AdminSelectWidget (line 56) | class AdminSelectWidget(forms.Select):
method media (line 59) | def media(self):
class AdminSplitDateTime (line 63) | class AdminSplitDateTime(forms.SplitDateTimeWidget):
method __init__ (line 68) | def __init__(self, attrs=None):
method render (line 74) | def render(self, name, value, attrs=None):
method format_output (line 85) | def format_output(self, rendered_widgets):
class AdminRadioInput (line 90) | class AdminRadioInput(RadioChoiceInput):
method render (line 92) | def render(self, name=None, value=None, attrs=None, choices=()):
class AdminRadioFieldRenderer (line 108) | class AdminRadioFieldRenderer(forms.RadioSelect):
method __iter__ (line 110) | def __iter__(self):
method __getitem__ (line 114) | def __getitem__(self, idx):
method render (line 118) | def render(self):
class AdminRadioSelect (line 122) | class AdminRadioSelect(forms.RadioSelect):
class AdminCheckboxSelect (line 126) | class AdminCheckboxSelect(forms.CheckboxSelectMultiple):
method render (line 128) | def render(self, name, value, attrs=None, choices=()):
class AdminSelectMultiple (line 161) | class AdminSelectMultiple(forms.SelectMultiple):
method __init__ (line 163) | def __init__(self, attrs=None):
class AdminFileWidget (line 170) | class AdminFileWidget(forms.ClearableFileInput):
class AdminTextareaWidget (line 177) | class AdminTextareaWidget(forms.Textarea):
method __init__ (line 179) | def __init__(self, attrs=None):
class AdminTextInputWidget (line 186) | class AdminTextInputWidget(forms.TextInput):
method __init__ (line 188) | def __init__(self, attrs=None):
class AdminURLFieldWidget (line 195) | class AdminURLFieldWidget(forms.TextInput):
method __init__ (line 197) | def __init__(self, attrs=None):
class AdminIntegerFieldWidget (line 204) | class AdminIntegerFieldWidget(forms.TextInput):
method __init__ (line 206) | def __init__(self, attrs=None):
class AdminCommaSeparatedIntegerFieldWidget (line 213) | class AdminCommaSeparatedIntegerFieldWidget(forms.TextInput):
method __init__ (line 215) | def __init__(self, attrs=None):
FILE: zhihu.py
class ZhihuSpider (line 16) | class ZhihuSpider(scrapy.Spider):
method parse (line 34) | def parse(self, response):
method parse_question (line 52) | def parse_question(self, response):
method parse_answer (line 94) | def parse_answer(self, reponse):
method start_requests (line 119) | def start_requests(self):
method get_xsrf (line 122) | def get_xsrf(self, session):
method get_captcha (line 134) | def get_captcha(self, session):
method login (line 158) | def login(self, response):
method get_captcha_login (line 185) | def get_captcha_login(self, response):
method check_login (line 229) | def check_login(self, response):
Condensed preview — 519 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,757K chars).
[
{
"path": ".gitignore",
"chars": 11,
"preview": "*.pyc\n.idea"
},
{
"path": "DjangoUeditor/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "DjangoUeditor/commands.py",
"chars": 5711,
"preview": "# coding:utf-8\ntry:\n # python3\n from urllib.request import urljoin as urljoin\nexcept:\n # python2\n from urlli"
},
{
"path": "DjangoUeditor/forms.py",
"chars": 1993,
"preview": "# coding: utf-8\n\nfrom django import forms\nfrom widgets import UEditorWidget\nfrom DjangoUeditor.models import UEditorFiel"
},
{
"path": "DjangoUeditor/models.py",
"chars": 1632,
"preview": "# coding: utf-8\nfrom django.db import models\nfrom django.contrib.admin import widgets as admin_widgets\nfrom .widgets imp"
},
{
"path": "DjangoUeditor/readme.md",
"chars": 10934,
"preview": "本模块帮助在Django应用中集成百度Ueditor HTML编辑器,Django是Python世界最有影响力的web框架。\nUeditor HTML编辑器是百度开源的在线HTML编辑器,功能非常强大,像表格可以直接拖动调整单元格大小等。\n"
},
{
"path": "DjangoUeditor/settings.py",
"chars": 8700,
"preview": "# coding:utf-8\nfrom django.conf import settings as gSettings # 全局设置\n\n# 工具栏样式,可以添加任意多的模式\nTOOLBARS_SETTINGS = {\"besttome\""
},
{
"path": "DjangoUeditor/static/ueditor/_examples/addCustomizeButton.js",
"chars": 1051,
"preview": "UE.registerUI('button',function(editor,uiName){\n //注册按钮执行时的command命令,使用命令默认就会带有回退操作\n editor.registerCommand(uiName"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/addCustomizeCombox.js",
"chars": 2145,
"preview": "UE.registerUI('combox',function(editor,uiName){\n //注册按钮执行时的command命令,用uiName作为command名字,使用命令默认就会带有回退操作\n editor.reg"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/addCustomizeDialog.js",
"chars": 1350,
"preview": "UE.registerUI('dialog',function(editor,uiName){\n\n //创建dialog\n var dialog = new UE.ui.Dialog({\n //指定弹出层中页面的路"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/charts.html",
"chars": 2425,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n <title>图表demo</title>\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=u"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/completeDemo.html",
"chars": 5700,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/customPluginDemo.html",
"chars": 1558,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n <title></titl"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/customToolbarDemo.html",
"chars": 4746,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n <title></title"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/customizeDialogPage.html",
"chars": 646,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/customizeToolbarUIDemo.html",
"chars": 1331,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n <title>完整demo</title>\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=u"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/editor_api.js",
"chars": 4221,
"preview": "/**\n * 开发版本的文件导入\n */\n(function (){\n var paths = [\n 'editor.js',\n 'core/browser.js',\n "
},
{
"path": "DjangoUeditor/static/ueditor/_examples/filterRuleDemo.html",
"chars": 5540,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n <title>过滤规则定制化</title>\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset="
},
{
"path": "DjangoUeditor/static/ueditor/_examples/highlightDemo.html",
"chars": 1175,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/index.html",
"chars": 2952,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n <title></tit"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/jqueryCompleteDemo.html",
"chars": 1556,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/jqueryValidation.html",
"chars": 2204,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/multiDemo.html",
"chars": 1163,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n <title></title"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/multiEditorWithOneInstance.html",
"chars": 1751,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n <title></title"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/renderInTable.html",
"chars": 784,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n <script type="
},
{
"path": "DjangoUeditor/static/ueditor/_examples/resetDemo.html",
"chars": 1779,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=8\">\n <meta http-equiv=\"Content-Type\""
},
{
"path": "DjangoUeditor/static/ueditor/_examples/sectiondemo.html",
"chars": 9143,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n <title>目录大纲demo</title>\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/server/getContent.ashx",
"chars": 1080,
"preview": "<%@ WebHandler Language=\"C#\" Class=\"getContent\" %>\n/**\n * Created by visual studio 2010\n * User: xuheng\n * Date: 12-3-"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/server/getContent.asp",
"chars": 406,
"preview": "<% @LANGUAGE=\"VBSCRIPT\" CODEPAGE=\"65001\" %> \n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n<script"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/server/getContent.jsp",
"chars": 574,
"preview": " <%@ page language=\"java\" contentType=\"text/html; charset=utf-8\" pageEncoding=\"utf-8\"%>\n <meta http-equiv=\"Con"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/server/getContent.php",
"chars": 469,
"preview": "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n<script src=\"../../ueditor.parse.js\" type=\"text/java"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/setWidthHeightDemo.html",
"chars": 1188,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n <title></titl"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/simpleDemo.html",
"chars": 984,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n <title></titl"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/sortableDemo.html",
"chars": 3768,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/submitFormDemo.html",
"chars": 1526,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n <title></titl"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/textareaDemo.html",
"chars": 785,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n <title></titl"
},
{
"path": "DjangoUeditor/static/ueditor/_examples/uparsedemo.html",
"chars": 6948,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/anchor/anchor.html",
"chars": 1588,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <h"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/attachment/attachment.css",
"chars": 14327,
"preview": "@charset \"utf-8\";\n/* dialog样式 */\n.wrapper {\n zoom: 1;\n width: 630px;\n *width: 626px;\n height: 380px;\n mar"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/attachment/attachment.html",
"chars": 2285,
"preview": "<!doctype html>\n<html>\n<head>\n <meta charset=\"UTF-8\">\n <title>ueditor图片对话框</title>\n <script type=\"text/javascri"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/attachment/attachment.js",
"chars": 29423,
"preview": "/**\n * User: Jinqn\n * Date: 14-04-08\n * Time: 下午16:34\n * 上传图片对话框逻辑代码,包括tab: 远程图片/上传图片/在线图片/搜索图片\n */\n\n(function () {\n\n "
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/background/background.css",
"chars": 2386,
"preview": ".wrapper{ width: 424px;margin: 10px auto; zoom:1;position: relative}\n.tabbody{height:225px;}\n.tabbody .panel { position:"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/background/background.html",
"chars": 2898,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n <script type=\""
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/background/background.js",
"chars": 14074,
"preview": "(function () {\n\n var onlineImage,\n backupStyle = editor.queryCommandValue('background');\n\n window.onload = "
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/charts/chart.config.js",
"chars": 1388,
"preview": "/*\n * 图表配置文件\n * */\n\n\n//不同类型的配置\nvar typeConfig = [\n {\n chart: {\n type: 'line'\n },\n plo"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/charts/charts.css",
"chars": 2593,
"preview": "html, body {\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n overflow-x: hidden;\n}\n\n.main {\n wi"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/charts/charts.html",
"chars": 4798,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <title>chart</title>\n <meta chartset=\"utf-8\">\n <link rel=\"styles"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/charts/charts.js",
"chars": 10643,
"preview": "/*\n * 图片转换对话框脚本\n **/\n\nvar tableData = [],\n //编辑器页面table\n editorTable = null,\n chartsConfig = window.typeConfig,"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/emotion/emotion.css",
"chars": 1800,
"preview": ".jd img{\n background:transparent url(images/jxface2.gif?v=1.1) no-repeat scroll left top;\n cursor:pointer;width:35"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/emotion/emotion.html",
"chars": 4260,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" >\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/emotion/emotion.js",
"chars": 6154,
"preview": "window.onload = function () {\n editor.setOpt({\n emotionLocalization:false\n });\n\n emotion.SmileyPath = ed"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/gmap/gmap.html",
"chars": 4046,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/help/help.css",
"chars": 389,
"preview": ".wrapper{width: 370px;margin: 10px auto;zoom: 1;}\n.tabbody{height: 360px;}\n.tabbody .panel{width:100%;height: 360px;posi"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/help/help.html",
"chars": 2836,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/help/help.js",
"chars": 1452,
"preview": "/**\n * Created with JetBrains PhpStorm.\n * User: xuheng\n * Date: 12-9-26\n * Time: 下午1:06\n * To change this template use "
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/image/image.css",
"chars": 18063,
"preview": "@charset \"utf-8\";\n/* dialog样式 */\n.wrapper {\n zoom: 1;\n width: 630px;\n *width: 626px;\n height: 380px;\n mar"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/image/image.html",
"chars": 5566,
"preview": "<!doctype html>\n<html>\n<head>\n <meta charset=\"UTF-8\">\n <title>ueditor图片对话框</title>\n <script type=\"text/javascri"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/image/image.js",
"chars": 126758,
"preview": "/**\n * User: Jinqn\n * Date: 14-04-08\n * Time: 下午16:34\n * 上传图片对话框逻辑代码,包括tab: 远程图片/上传图片/在线图片/搜索图片\n */\n\n(function () {\n\n "
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/insertframe/insertframe.html",
"chars": 4284,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n <title></titl"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/internal.js",
"chars": 2561,
"preview": "(function () {\n var parent = window.parent;\n //dialog对象\n dialog = parent.$EDITORUI[window.frameElement.id.repla"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/link/link.html",
"chars": 4322,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/map/map.html",
"chars": 5961,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n <title></tit"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/map/show.html",
"chars": 4361,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/music/music.css",
"chars": 1677,
"preview": ".wrapper{margin: 5px 10px;}\n\n.searchBar{height:30px;padding:7px 0 3px;text-align:center;}\n.searchBtn{font-size:13px;heig"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/music/music.html",
"chars": 942,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n <title>插入音乐</t"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/music/music.js",
"chars": 7819,
"preview": "function Music() {\n this.init();\n}\n(function () {\n var pages = [],\n panels = [],\n selectedItem = nul"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/preview/preview.html",
"chars": 1180,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <h"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/scrawl/scrawl.css",
"chars": 3809,
"preview": "/*common\n*/\nbody{margin: 0;}\ntable{width:100%;}\ntable td{padding:2px 4px;vertical-align: middle;}\na{text-decoration: non"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/scrawl/scrawl.html",
"chars": 3889,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <title></title>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\""
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/scrawl/scrawl.js",
"chars": 26725,
"preview": "/**\n * Created with JetBrains PhpStorm.\n * User: xuheng\n * Date: 12-5-22\n * Time: 上午11:38\n * To change this template use"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/searchreplace/searchreplace.html",
"chars": 4182,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/searchreplace/searchreplace.js",
"chars": 4285,
"preview": "/**\n * Created with JetBrains PhpStorm.\n * User: xuheng\n * Date: 12-9-26\n * Time: 下午12:29\n * To change this template use"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/snapscreen/snapscreen.html",
"chars": 1921,
"preview": "<!DOCTYPE HTML>\n<html>\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n <"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/spechars/spechars.html",
"chars": 829,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/spechars/spechars.js",
"chars": 3539,
"preview": "/**\n * Created with JetBrains PhpStorm.\n * User: xuheng\n * Date: 12-9-26\n * Time: 下午1:09\n * To change this template use "
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/table/edittable.css",
"chars": 1192,
"preview": "body{\n overflow: hidden;\n width: 540px;\n}\n.wrapper {\n margin: 10px auto 0;\n font-size: 12px;\n overflow: h"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/table/edittable.html",
"chars": 2394,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <title></title>\n <script type=\"text/javascript\" src=\"../internal.js\"></script>\n "
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/table/edittable.js",
"chars": 8930,
"preview": "/**\n * Created with JetBrains PhpStorm.\n * User: xuheng\n * Date: 12-12-19\n * Time: 下午4:55\n * To change this template use"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/table/edittd.html",
"chars": 1556,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <title></title>\n <script type=\"text/javascript\" src=\"../internal.js\"></script>\n "
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/table/edittip.html",
"chars": 851,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <title>表格删除提示</title>\n <script type=\"text/javascript\" src=\"../internal.js\"></script"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/template/config.js",
"chars": 9973,
"preview": "/**\n * Created with JetBrains PhpStorm.\n * User: xuheng\n * Date: 12-8-8\n * Time: 下午2:00\n * To change this template use F"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/template/template.css",
"chars": 1030,
"preview": ".wrap{ padding: 5px;font-size: 14px;}\n.left{width:425px;float: left;}\n.right{width:160px;border: 1px solid #ccc;float: r"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/template/template.html",
"chars": 920,
"preview": "<!DOCTYPE HTML>\n<html>\n<head>\n <title></title>\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/template/template.js",
"chars": 1588,
"preview": "/**\n * Created with JetBrains PhpStorm.\n * User: xuheng\n * Date: 12-8-8\n * Time: 下午2:09\n * To change this template use F"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/video/video.css",
"chars": 14887,
"preview": "@charset \"utf-8\";\n.wrapper{ width: 570px;_width:575px;margin: 10px auto; zoom:1;position: relative}\n.tabbody{height: 335"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/video/video.html",
"chars": 4192,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/video/video.js",
"chars": 29361,
"preview": "/**\n * Created by JetBrains PhpStorm.\n * User: taoqili\n * Date: 12-2-20\n * Time: 上午11:19\n * To change this template use "
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/webapp/webapp.html",
"chars": 2229,
"preview": "<!DOCTYPE>\n<html>\n<head>\n <title></title>\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n "
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/wordimage/tangram.js",
"chars": 41868,
"preview": "// Copyright (c) 2009, Baidu Inc. All rights reserved.\n// \n// Licensed under the BSD License\n// you may not use this fil"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/wordimage/wordimage.html",
"chars": 5614,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/dialogs/wordimage/wordimage.js",
"chars": 3959,
"preview": "/**\n * Created by JetBrains PhpStorm.\n * User: taoqili\n * Date: 12-1-30\n * Time: 下午12:50\n * To change this template use "
},
{
"path": "DjangoUeditor/static/ueditor/index.html",
"chars": 5699,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<h"
},
{
"path": "DjangoUeditor/static/ueditor/lang/en/en.js",
"chars": 29174,
"preview": "/**\n * Created with JetBrains PhpStorm.\n * User: taoqili\n * Date: 12-6-12\n * Time: 下午6:57\n * To change this template use"
},
{
"path": "DjangoUeditor/static/ueditor/lang/zh-cn/zh-cn.js",
"chars": 22515,
"preview": "/**\n * Created with JetBrains PhpStorm.\n * User: taoqili\n * Date: 12-6-12\n * Time: 下午5:02\n * To change this template use"
},
{
"path": "DjangoUeditor/static/ueditor/php/Uploader.class.php",
"chars": 10515,
"preview": "<?php\n\n/**\n * Created by JetBrains PhpStorm.\n * User: taoqili\n * Date: 12-7-18\n * Time: 上午11: 32\n * UEditor编辑器通用上传类\n */\n"
},
{
"path": "DjangoUeditor/static/ueditor/php/action_crawler.php",
"chars": 1039,
"preview": "<?php\n/**\n * 抓取远程图片\n * User: Jinqn\n * Date: 14-04-14\n * Time: 下午19:18\n */\nset_time_limit(0);\ninclude(\"Uploader.class.php"
},
{
"path": "DjangoUeditor/static/ueditor/php/action_list.php",
"chars": 2410,
"preview": "<?php\n/**\n * 获取已上传的文件列表\n * User: Jinqn\n * Date: 14-04-09\n * Time: 上午10:17\n */\ninclude \"Uploader.class.php\";\n\n/* 判断类型 */\n"
},
{
"path": "DjangoUeditor/static/ueditor/php/action_upload.php",
"chars": 1821,
"preview": "<?php\n/**\n * 上传附件和上传视频\n * User: Jinqn\n * Date: 14-04-09\n * Time: 上午10:17\n */\ninclude \"Uploader.class.php\";\n\n/* 上传配置 */\n$"
},
{
"path": "DjangoUeditor/static/ueditor/php/config.json",
"chars": 4799,
"preview": "/* 前后端通信相关的配置,注释只允许使用多行方式 */\n{\n /* 上传图片配置项 */\n \"imageActionName\": \"uploadimage\", /* 执行上传图片的action名称 */\n \"imageF"
},
{
"path": "DjangoUeditor/static/ueditor/php/controller.php",
"chars": 1472,
"preview": "<?php\n//header('Access-Control-Allow-Origin: http://www.baidu.com'); //设置http://www.baidu.com允许跨域访问\n//header('Access-Con"
},
{
"path": "DjangoUeditor/static/ueditor/themes/default/css/ueditor.css",
"chars": 43428,
"preview": "/*基础UI构建\n*/\n/* common layer */\n.edui-default .edui-box {\n border: none;\n padding: 0;\n margin: 0;\n overflow: "
},
{
"path": "DjangoUeditor/static/ueditor/themes/default/dialogbase.css",
"chars": 1659,
"preview": "/*弹出对话框页面样式组件\n*/\n\n/*reset\n*/\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\n"
},
{
"path": "DjangoUeditor/static/ueditor/themes/iframe.css",
"chars": 19,
"preview": "/*可以在这里添加你自己的css*/\n"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/SyntaxHighlighter/shCore.js",
"chars": 159481,
"preview": "// XRegExp 1.5.1\n// (c) 2007-2012 Steven Levithan\n// MIT License\n// <http://xregexp.com>\n// Provides an augmented, exten"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/SyntaxHighlighter/shCoreDefault.css",
"chars": 7117,
"preview": ".syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter,.syntaxhighlighter td,.syntaxhigh"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/codemirror/codemirror.css",
"chars": 2888,
"preview": ".CodeMirror {\n line-height: 1em;\n font-family: monospace;\n}\n\n.CodeMirror-scroll {\n overflow: auto;\n height: "
},
{
"path": "DjangoUeditor/static/ueditor/third-party/codemirror/codemirror.js",
"chars": 158605,
"preview": "// CodeMirror version 2.2\n//\n// All functions that need access to the editor's state live inside\n// the CodeMirror funct"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/adapters/mootools-adapter.js",
"chars": 2263,
"preview": "/*\n Highcharts JS v3.0.6 (2013-10-04)\n MooTools adapter\n\n (c) 2010-2013 Torstein Hønsi\n\n License: www.highcharts.com/lic"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/adapters/mootools-adapter.src.js",
"chars": 7789,
"preview": "/**\n * @license Highcharts JS v3.0.6 (2013-10-04)\n * MooTools adapter\n *\n * (c) 2010-2013 Torstein Hønsi\n *\n * License: "
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/adapters/prototype-adapter.js",
"chars": 3309,
"preview": "/*\n Highcharts JS v3.0.6 (2013-10-04)\n Prototype adapter\n\n @author Michael Nelson, Torstein Hønsi.\n\n Feel free to use an"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/adapters/prototype-adapter.src.js",
"chars": 8933,
"preview": "/**\n * @license Highcharts JS v3.0.6 (2013-10-04)\n * Prototype adapter\n *\n * @author Michael Nelson, Torstein Hønsi.\n *\n"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/adapters/standalone-framework.js",
"chars": 5067,
"preview": "/*\n Highcharts JS v3.0.6 (2013-10-04)\n\n Standalone Highcharts Framework\n\n License: MIT License\n*/\nvar HighchartsAdapter="
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/adapters/standalone-framework.src.js",
"chars": 11658,
"preview": "/**\n * @license Highcharts JS v3.0.6 (2013-10-04)\n *\n * Standalone Highcharts Framework\n *\n * License: MIT License\n */\n\n"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/highcharts-more.js",
"chars": 21813,
"preview": "/*\n Highcharts JS v3.0.6 (2013-10-04)\n\n (c) 2009-2013 Torstein Hønsi\n\n License: www.highcharts.com/license\n*/\n(function("
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/highcharts-more.src.js",
"chars": 60179,
"preview": "// ==ClosureCompiler==\n// @compilation_level SIMPLE_OPTIMIZATIONS\n\n/**\n * @license Highcharts JS v3.0.6 (2013-10-04)\n *\n"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/highcharts.js",
"chars": 140854,
"preview": "/*\n Highcharts JS v3.0.6 (2013-10-04)\n\n (c) 2009-2013 Torstein Hønsi\n\n License: www.highcharts.com/license\n*/\n(function("
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/highcharts.src.js",
"chars": 444364,
"preview": "// ==ClosureCompiler==\n// @compilation_level SIMPLE_OPTIMIZATIONS\n\n/**\n * @license Highcharts JS v3.0.6 (2013-10-04)\n *\n"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/annotations.js",
"chars": 3398,
"preview": "(function(i,C){function m(a){return typeof a===\"number\"}function n(a){return a!==D&&a!==null}var D,p,r,s=i.Chart,t=i.ext"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/annotations.src.js",
"chars": 8377,
"preview": "(function (Highcharts, HighchartsAdapter) {\n\nvar UNDEFINED,\n\tALIGN_FACTOR,\n\tALLOWED_SHAPES,\n\tChart = Highcharts.Chart,\n\t"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/canvas-tools.js",
"chars": 57873,
"preview": "/*\n A class to parse color values\n @author Stoyan Stefanov <sstoo@gmail.com>\n @link http://www.phpied.com/rgb-color-pa"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/canvas-tools.src.js",
"chars": 100677,
"preview": "/**\n * @license A class to parse color values\n * @author Stoyan Stefanov <sstoo@gmail.com>\n * @link http://www.phpied."
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/data.js",
"chars": 4435,
"preview": "/*\n Data plugin for Highcharts\n\n (c) 2012-2013 Torstein Hønsi\n Last revision 2013-06-07\n\n License: www.highcharts.com/li"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/data.src.js",
"chars": 15505,
"preview": "/**\n * @license Data plugin for Highcharts\n *\n * (c) 2012-2013 Torstein Hønsi\n * Last revision 2013-06-07\n *\n * License:"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/drilldown.js",
"chars": 5550,
"preview": "(function(e){function q(b,a,c){return\"rgba(\"+[Math.round(b[0]+(a[0]-b[0])*c),Math.round(b[1]+(a[1]-b[1])*c),Math.round(b"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/drilldown.src.js",
"chars": 10947,
"preview": "/**\n * Highcharts Drilldown plugin\n * \n * Author: Torstein Honsi\n * Last revision: 2013-02-18\n * License: MIT License\n *"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/exporting.js",
"chars": 7243,
"preview": "/*\n Highcharts JS v3.0.6 (2013-10-04)\n Exporting module\n\n (c) 2010-2013 Torstein Hønsi\n\n License: www.highcharts.com/lic"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/exporting.src.js",
"chars": 17267,
"preview": "/**\n * @license Highcharts JS v3.0.6 (2013-10-04)\n * Exporting module\n *\n * (c) 2010-2013 Torstein Hønsi\n *\n * License: "
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/funnel.js",
"chars": 1973,
"preview": "/*\n \n Highcharts funnel module, Beta\n\n (c) 2010-2012 Torstein Hønsi\n\n License: www.highcharts.com/license\n*/\n(function(d"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/funnel.src.js",
"chars": 6534,
"preview": "/**\n * @license \n * Highcharts funnel module, Beta\n *\n * (c) 2010-2012 Torstein Hønsi\n *\n * License: www.highcharts.com/"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/heatmap.js",
"chars": 535,
"preview": "(function(b){var k=b.seriesTypes,l=b.each;k.heatmap=b.extendClass(k.map,{colorKey:\"z\",useMapGeometry:!1,pointArrayMap:[\""
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/heatmap.src.js",
"chars": 1130,
"preview": "(function (Highcharts) {\n\tvar seriesTypes = Highcharts.seriesTypes,\n\t\teach = Highcharts.each;\n\t\n\tseriesTypes.heatmap = H"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/map.js",
"chars": 10116,
"preview": "/*\n Map plugin v0.1 for Highcharts\n\n (c) 2011-2013 Torstein Hønsi\n\n License: www.highcharts.com/license\n*/\n(function(g){"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/map.src.js",
"chars": 25762,
"preview": "/**\n * @license Map plugin v0.1 for Highcharts\n *\n * (c) 2011-2013 Torstein Hønsi\n *\n * License: www.highcharts.com/lice"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/no-data-to-display.js",
"chars": 1358,
"preview": "/*\n Highcharts JS v3.0.6 (2013-10-04)\n Plugin for displaying a message when there is no data visible in chart.\n\n (c) 201"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/modules/no-data-to-display.src.js",
"chars": 2860,
"preview": "/**\n * @license Highcharts JS v3.0.6 (2013-10-04)\n * Plugin for displaying a message when there is no data visible in ch"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/themes/dark-blue.js",
"chars": 4351,
"preview": "/**\n * Dark blue theme for Highcharts JS\n * @author Torstein Hønsi\n */\n\nHighcharts.theme = {\n\tcolors: [\"#DDDF0D\", \"#55BF"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/themes/dark-green.js",
"chars": 4338,
"preview": "/**\n * Dark blue theme for Highcharts JS\n * @author Torstein Hønsi\n */\n\nHighcharts.theme = {\n\tcolors: [\"#DDDF0D\", \"#55BF"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/themes/gray.js",
"chars": 4487,
"preview": "/**\n * Gray theme for Highcharts JS\n * @author Torstein Hønsi\n */\n\nHighcharts.theme = {\n\tcolors: [\"#DDDF0D\", \"#7798BF\", "
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/themes/grid.js",
"chars": 1794,
"preview": "/**\n * Grid theme for Highcharts JS\n * @author Torstein Hønsi\n */\n\nHighcharts.theme = {\n\tcolors: ['#058DC7', '#50B432', "
},
{
"path": "DjangoUeditor/static/ueditor/third-party/highcharts/themes/skies.js",
"chars": 1764,
"preview": "/**\n * Skies theme for Highcharts JS\n * @author Torstein Hønsi\n */\n\nHighcharts.theme = {\n\tcolors: [\"#514F78\", \"#42A07B\","
},
{
"path": "DjangoUeditor/static/ueditor/third-party/jquery-1.10.2.js",
"chars": 273199,
"preview": "/*!\n * jQuery JavaScript Library v1.10.2\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Co"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/video-js/video-js.css",
"chars": 21318,
"preview": "/*!\nVideo.js Default Styles (http://videojs.com)\nVersion 4.3.0\nCreate your own skin at http://designer.videojs.com\n*/\n/*"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/video-js/video.dev.js",
"chars": 214821,
"preview": "/**\n * @fileoverview Main function src.\n */\n\n// HTML5 Shiv. Must be in <head> to support older browsers.\ndocument.create"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/video-js/video.js",
"chars": 55392,
"preview": "/*! Video.js v4.3.0 Copyright 2013 Brightcove, Inc. https://github.com/videojs/video.js/blob/master/LICENSE */ (function"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/webuploader/webuploader.css",
"chars": 515,
"preview": ".webuploader-container {\n\tposition: relative;\n}\n.webuploader-element-invisible {\n\tposition: absolute !important;\n\tclip: "
},
{
"path": "DjangoUeditor/static/ueditor/third-party/webuploader/webuploader.custom.js",
"chars": 187323,
"preview": "/*! WebUploader 0.1.2 */\n\n\n/**\n * @fileOverview 让内部各个部件的代码可以用[amd](https://github.com/amdjs/amdjs-api/wiki/AMD)模块定义方式组织起"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/webuploader/webuploader.flashonly.js",
"chars": 128330,
"preview": "/*! WebUploader 0.1.2 */\n\n\n/**\n * @fileOverview 让内部各个部件的代码可以用[amd](https://github.com/amdjs/amdjs-api/wiki/AMD)模块定义方式组织起"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/webuploader/webuploader.html5only.js",
"chars": 174993,
"preview": "/*! WebUploader 0.1.2 */\n\n\n/**\n * @fileOverview 让内部各个部件的代码可以用[amd](https://github.com/amdjs/amdjs-api/wiki/AMD)模块定义方式组织起"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/webuploader/webuploader.js",
"chars": 219973,
"preview": "/*! WebUploader 0.1.2 */\n\n\n/**\n * @fileOverview 让内部各个部件的代码可以用[amd](https://github.com/amdjs/amdjs-api/wiki/AMD)模块定义方式组织起"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/webuploader/webuploader.withoutimage.js",
"chars": 141769,
"preview": "/*! WebUploader 0.1.2 */\n\n\n/**\n * @fileOverview 让内部各个部件的代码可以用[amd](https://github.com/amdjs/amdjs-api/wiki/AMD)模块定义方式组织起"
},
{
"path": "DjangoUeditor/static/ueditor/third-party/zeroclipboard/ZeroClipboard.js",
"chars": 43216,
"preview": "/*!\n* ZeroClipboard\n* The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Ad"
},
{
"path": "DjangoUeditor/static/ueditor/ueditor.all.js",
"chars": 1054652,
"preview": "/*!\n * UEditor\n * version: ueditor\n * build: Thu May 29 2014 16:47:49 GMT+0800 (中国标准时间)\n */\n\n(function(){\n\n// editor.js\n"
},
{
"path": "DjangoUeditor/static/ueditor/ueditor.config.js",
"chars": 14950,
"preview": "/**\n * ueditor完整配置项\n * 可以在这里配置整个编辑器的特性\n */\n/**************************提示********************************\n * 所有被注释的配置项均为U"
},
{
"path": "DjangoUeditor/static/ueditor/ueditor.parse.js",
"chars": 36280,
"preview": "/*!\n * UEditor\n * version: ueditor\n * build: Thu May 29 2014 16:47:49 GMT+0800 (中国标准时间)\n */\n\n(function(){\n\n(function(){\n"
},
{
"path": "DjangoUeditor/templates/ueditor.html",
"chars": 402,
"preview": " <script id=\"{{ UEditor.id }}\" name=\"{{ UEditor.name }}\" style=\"display: inline-block;\" type=\"text/plain\">\n {{ UEdi"
},
{
"path": "DjangoUeditor/templates/ueditor_old.html",
"chars": 1504,
"preview": "<textarea name={{ UEditor.name }} id=id_{{ UEditor.name }} style=\"display:inline-block;width:{{ UEditor.width }}px;{{ UE"
},
{
"path": "DjangoUeditor/test_try.py",
"chars": 78,
"preview": "# coding:utf-8\nfrom utils import FileSize\nMF = FileSize(\"36723678\")\nprint(MF)\n"
},
{
"path": "DjangoUeditor/urls.py",
"chars": 242,
"preview": "# coding:utf-8\nfrom django import VERSION\nfrom .widgets import UEditorWidget, AdminUEditorWidget\nfrom .views import get_"
},
{
"path": "DjangoUeditor/utils.py",
"chars": 3653,
"preview": "# coding: utf-8\n\n\n# 文件大小类\nclass FileSize():\n SIZE_UNIT = {\n \"Byte\": 1,\n \"KB\": 1024,\n \"MB\": 10485"
},
{
"path": "DjangoUeditor/views.py",
"chars": 11043,
"preview": "# coding:utf-8\nimport os\nimport json\nimport random\ntry:\n # python3\n import urllib.request as urllib\n from urlli"
},
{
"path": "DjangoUeditor/widgets.py",
"chars": 10123,
"preview": "# coding:utf-8\nfrom django import forms\nfrom django.conf import settings\nfrom django.contrib.admin.widgets import AdminT"
},
{
"path": "README.md",
"chars": 163,
"preview": "# mxonline_resources\nmxonline的课程资源\n\n慕课网课程地址 http://coding.imooc.com/class/78.html\n\n最新的源码管理我通过github私人仓库管理,已经购买的用户到这里申请加入"
},
{
"path": "course-play.html",
"chars": 19278,
"preview": "<!DOCTYPE html>\n<html>\n\n<head>\n\t<meta charset=\"UTF-8\">\n <meta name=\"renderer\" content=\"webkit\">\n <meta http-equiv="
},
{
"path": "requirements.txt",
"chars": 247,
"preview": "django\nPillow\ndjango-crispy-forms~=1.6.0\ndjango-import-export>=0.5.1\ndjango-reversion~=2.0.0\ndjango-formtools\nfuture==0."
},
{
"path": "xadmin/.tx/config",
"chars": 335,
"preview": "[main]\nhost = https://www.transifex.com\n\n[xadmin-core.django]\nfile_filter = locale/<lang>/LC_MESSAGES/django.po\nsource_f"
},
{
"path": "xadmin/__init__.py",
"chars": 2395,
"preview": "\nVERSION = (0,6,0)\n\nfrom xadmin.sites import AdminSite, site\n\nclass Settings(object):\n pass\n\n\ndef autodiscover():\n "
},
{
"path": "xadmin/adminx.py",
"chars": 1059,
"preview": "from __future__ import absolute_import\nimport xadmin\nfrom .models import UserSettings, Log\nfrom xadmin.layout import *\n\n"
},
{
"path": "xadmin/apps.py",
"chars": 394,
"preview": "from django.apps import AppConfig\nfrom django.core import checks\nfrom django.utils.translation import ugettext_lazy as _"
},
{
"path": "xadmin/filters.py",
"chars": 22134,
"preview": "from __future__ import absolute_import\nfrom django.db import models\nfrom django.core.exceptions import ImproperlyConfigu"
},
{
"path": "xadmin/forms.py",
"chars": 1974,
"preview": "from django import forms\n\nfrom django.contrib.auth import authenticate\nfrom django.contrib.auth.forms import Authenticat"
},
{
"path": "xadmin/layout.py",
"chars": 3645,
"preview": "from crispy_forms.helper import FormHelper\nfrom crispy_forms.layout import *\nfrom crispy_forms.bootstrap import *\nfrom c"
},
{
"path": "xadmin/locale/de_DE/LC_MESSAGES/django.po",
"chars": 36776,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/de_DE/LC_MESSAGES/djangojs.po",
"chars": 2317,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/en/LC_MESSAGES/django.po",
"chars": 30113,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/en/LC_MESSAGES/djangojs.po",
"chars": 1750,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/es_MX/LC_MESSAGES/django.po",
"chars": 40377,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/es_MX/LC_MESSAGES/djangojs.po",
"chars": 2474,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/eu/LC_MESSAGES/django.po",
"chars": 37896,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/eu/LC_MESSAGES/djangojs.po",
"chars": 2279,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/id_ID/LC_MESSAGES/django.po",
"chars": 30011,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/id_ID/LC_MESSAGES/djangojs.po",
"chars": 1852,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/ja/LC_MESSAGES/django.po",
"chars": 29991,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/ja/LC_MESSAGES/djangojs.po",
"chars": 1832,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/lt/LC_MESSAGES/django.po",
"chars": 30248,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/lt/LC_MESSAGES/djangojs.po",
"chars": 1930,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/nl_NL/LC_MESSAGES/django.po",
"chars": 30106,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/nl_NL/LC_MESSAGES/djangojs.po",
"chars": 1869,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/pl/LC_MESSAGES/django.po",
"chars": 38650,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/pl/LC_MESSAGES/djangojs.po",
"chars": 2555,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/pt_BR/LC_MESSAGES/django.po",
"chars": 38510,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/pt_BR/LC_MESSAGES/djangojs.po",
"chars": 2278,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/ru_RU/LC_MESSAGES/django.po",
"chars": 32459,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/ru_RU/LC_MESSAGES/djangojs.po",
"chars": 1953,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/zh_Hans/LC_MESSAGES/django.po",
"chars": 36730,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/locale/zh_Hans/LC_MESSAGES/djangojs.po",
"chars": 2489,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "xadmin/migrations/0001_initial.py",
"chars": 2846,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.9.2 on 2016-03-20 13:46\nfrom __future__ import unicode_literals\n\nfrom dj"
},
{
"path": "xadmin/migrations/0002_log.py",
"chars": 1849,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.9.7 on 2016-07-15 05:50\nfrom __future__ import unicode_literals\n\nfrom dj"
},
{
"path": "xadmin/migrations/0003_auto_20160715_0100.py",
"chars": 464,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.9.7 on 2016-07-15 06:00\nfrom __future__ import unicode_literals\n\nfrom dj"
},
{
"path": "xadmin/migrations/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "xadmin/models.py",
"chars": 6514,
"preview": "import json\nimport django\nfrom django.db import models\nfrom django.utils import timezone\nfrom django.conf import setting"
}
]
// ... and 319 more files (download for full content)
About this extraction
This page contains the full source code of the liyaopinner/mxonline_resources GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 519 files (6.8 MB), approximately 1.8M tokens, and a symbol index with 2177 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.