├── form ├── uploads │ └── .gitkeep ├── .flaskenv ├── static │ ├── favicon.ico │ └── style.css └── templates │ ├── macros.html │ ├── custom_validator.html │ ├── upload.html │ ├── post.html │ ├── 2submit.html │ ├── dropzone.html │ ├── uploaded.html │ ├── pure_html.html │ ├── ckeditor.html │ ├── 2form.html │ ├── 2form2view.html │ ├── basic.html │ ├── index.html │ ├── base.html │ └── bootstrap.html ├── CHANGES.md ├── cache ├── .flaskenv ├── static │ ├── favicon.ico │ └── style.css ├── templates │ ├── qux.html │ ├── bar.html │ ├── baz.html │ ├── foo.html │ ├── index.html │ └── base.html └── app.py ├── email ├── .flaskenv ├── static │ ├── favicon.ico │ └── style.css └── templates │ ├── emails │ ├── subscribe.txt │ └── subscribe.html │ ├── macros.html │ ├── index.html │ ├── subscribe.html │ └── base.html ├── hello ├── .flaskenv └── app.py ├── http └── .flaskenv ├── assets ├── .flaskenv ├── static │ ├── favicon.ico │ ├── ckeditor │ │ ├── plugins │ │ │ ├── icons.png │ │ │ ├── icons_hidpi.png │ │ │ ├── link │ │ │ │ ├── images │ │ │ │ │ ├── anchor.png │ │ │ │ │ └── hidpi │ │ │ │ │ │ └── anchor.png │ │ │ │ └── dialogs │ │ │ │ │ └── anchor.js │ │ │ ├── image │ │ │ │ └── images │ │ │ │ │ └── noimage.png │ │ │ ├── magicline │ │ │ │ └── images │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── icon-rtl.png │ │ │ │ │ └── hidpi │ │ │ │ │ ├── icon.png │ │ │ │ │ └── icon-rtl.png │ │ │ ├── widget │ │ │ │ └── images │ │ │ │ │ └── handle.png │ │ │ ├── about │ │ │ │ └── dialogs │ │ │ │ │ ├── logo_ckeditor.png │ │ │ │ │ ├── hidpi │ │ │ │ │ └── logo_ckeditor.png │ │ │ │ │ └── about.js │ │ │ ├── markdown │ │ │ │ ├── theme │ │ │ │ │ ├── ambiance-mobile.css │ │ │ │ │ ├── neat.css │ │ │ │ │ ├── elegant.css │ │ │ │ │ ├── neo.css │ │ │ │ │ ├── eclipse.css │ │ │ │ │ ├── cobalt.css │ │ │ │ │ ├── rubyblue.css │ │ │ │ │ ├── monokai.css │ │ │ │ │ ├── night.css │ │ │ │ │ ├── the-matrix.css │ │ │ │ │ ├── blackboard.css │ │ │ │ │ ├── 3024-day.css │ │ │ │ │ ├── paraiso-dark.css │ │ │ │ │ ├── 3024-night.css │ │ │ │ │ ├── paraiso-light.css │ │ │ │ │ ├── base16-dark.css │ │ │ │ │ ├── vibrant-ink.css │ │ │ │ │ ├── mbo.css │ │ │ │ │ ├── base16-light.css │ │ │ │ │ ├── twilight.css │ │ │ │ │ ├── midnight.css │ │ │ │ │ ├── erlang-dark.css │ │ │ │ │ ├── tomorrow-night-eighties.css │ │ │ │ │ ├── pastel-on-dark.css │ │ │ │ │ ├── lesser-dark.css │ │ │ │ │ └── xq-light.css │ │ │ │ ├── .gitattributes │ │ │ │ └── README.md │ │ │ ├── dialog │ │ │ │ └── dialogDefinition.js │ │ │ ├── scayt │ │ │ │ ├── skins │ │ │ │ │ └── moono-lisa │ │ │ │ │ │ └── scayt.css │ │ │ │ ├── dialogs │ │ │ │ │ ├── dialog.css │ │ │ │ │ └── toolbar.css │ │ │ │ ├── README.md │ │ │ │ ├── CHANGELOG.md │ │ │ │ └── LICENSE.md │ │ │ ├── filetools │ │ │ │ ├── lang │ │ │ │ │ ├── zh-cn.js │ │ │ │ │ ├── zh.js │ │ │ │ │ ├── ko.js │ │ │ │ │ ├── ja.js │ │ │ │ │ ├── ru.js │ │ │ │ │ ├── sv.js │ │ │ │ │ ├── tr.js │ │ │ │ │ ├── az.js │ │ │ │ │ ├── en.js │ │ │ │ │ ├── hr.js │ │ │ │ │ ├── en-au.js │ │ │ │ │ ├── nb.js │ │ │ │ │ ├── cs.js │ │ │ │ │ ├── nl.js │ │ │ │ │ ├── ug.js │ │ │ │ │ ├── da.js │ │ │ │ │ ├── eo.js │ │ │ │ │ ├── hu.js │ │ │ │ │ ├── sk.js │ │ │ │ │ ├── id.js │ │ │ │ │ ├── ku.js │ │ │ │ │ ├── pl.js │ │ │ │ │ ├── ro.js │ │ │ │ │ ├── uk.js │ │ │ │ │ ├── eu.js │ │ │ │ │ ├── pt.js │ │ │ │ │ ├── km.js │ │ │ │ │ ├── pt-br.js │ │ │ │ │ ├── sq.js │ │ │ │ │ ├── es.js │ │ │ │ │ ├── gl.js │ │ │ │ │ ├── es-mx.js │ │ │ │ │ ├── ca.js │ │ │ │ │ ├── de-ch.js │ │ │ │ │ ├── de.js │ │ │ │ │ ├── oc.js │ │ │ │ │ ├── fr.js │ │ │ │ │ └── it.js │ │ │ │ └── dev │ │ │ │ │ └── uploaddebugger.js │ │ │ ├── specialchar │ │ │ │ └── dialogs │ │ │ │ │ └── lang │ │ │ │ │ ├── _translationstatus.txt │ │ │ │ │ ├── ja.js │ │ │ │ │ ├── zh.js │ │ │ │ │ └── zh-cn.js │ │ │ ├── a11yhelp │ │ │ │ └── dialogs │ │ │ │ │ └── lang │ │ │ │ │ ├── _translationstatus.txt │ │ │ │ │ ├── zh-cn.js │ │ │ │ │ └── zh.js │ │ │ ├── wsc │ │ │ │ ├── README.md │ │ │ │ ├── skins │ │ │ │ │ └── moono-lisa │ │ │ │ │ │ └── wsc.css │ │ │ │ ├── dialogs │ │ │ │ │ ├── wsc.css │ │ │ │ │ ├── ciframe.html │ │ │ │ │ └── tmpFrameset.html │ │ │ │ └── LICENSE.md │ │ │ ├── codesnippet │ │ │ │ └── dialogs │ │ │ │ │ └── codesnippet.js │ │ │ ├── tableselection │ │ │ │ └── styles │ │ │ │ │ └── tableselection.css │ │ │ └── popup │ │ │ │ └── plugin.js │ │ ├── samples │ │ │ ├── img │ │ │ │ ├── logo.png │ │ │ │ ├── header-bg.png │ │ │ │ ├── github-top.png │ │ │ │ ├── navigation-tip.png │ │ │ │ └── header-separator.png │ │ │ ├── old │ │ │ │ ├── assets │ │ │ │ │ ├── sample.jpg │ │ │ │ │ ├── inlineall │ │ │ │ │ │ └── logo.png │ │ │ │ │ ├── uilanguages │ │ │ │ │ │ └── languages.js │ │ │ │ │ └── posteddata.php │ │ │ │ ├── htmlwriter │ │ │ │ │ └── assets │ │ │ │ │ │ └── outputforflash │ │ │ │ │ │ ├── outputforflash.fla │ │ │ │ │ │ └── outputforflash.swf │ │ │ │ ├── sample_posteddata.php │ │ │ │ ├── dialog │ │ │ │ │ └── assets │ │ │ │ │ │ └── my_dialog.js │ │ │ │ ├── sample.js │ │ │ │ ├── appendto.html │ │ │ │ └── tabindex.html │ │ │ ├── toolbarconfigurator │ │ │ │ ├── font │ │ │ │ │ ├── fontello.eot │ │ │ │ │ ├── fontello.ttf │ │ │ │ │ ├── fontello.woff │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ ├── config.json │ │ │ │ │ └── fontello.svg │ │ │ │ └── css │ │ │ │ │ └── fontello.css │ │ │ └── js │ │ │ │ └── sample.js │ │ ├── skins │ │ │ └── moono-lisa │ │ │ │ ├── icons.png │ │ │ │ ├── icons_hidpi.png │ │ │ │ ├── images │ │ │ │ ├── arrow.png │ │ │ │ ├── close.png │ │ │ │ ├── lock.png │ │ │ │ ├── refresh.png │ │ │ │ ├── spinner.gif │ │ │ │ ├── hidpi │ │ │ │ │ ├── lock.png │ │ │ │ │ ├── close.png │ │ │ │ │ ├── lock-open.png │ │ │ │ │ └── refresh.png │ │ │ │ └── lock-open.png │ │ │ │ └── readme.md │ │ ├── config.js │ │ └── README.md │ └── css │ │ ├── temp │ │ ├── sb-admin-rtl.css │ │ └── plugins │ │ │ └── morris.css │ │ ├── style.css │ │ └── jquery.Jcrop.min.css ├── templates │ ├── index.html │ ├── optimized.html │ ├── unoptimized.html │ └── base.html └── app.py ├── database ├── .flaskenv ├── static │ ├── favicon.ico │ └── style.css └── templates │ ├── new_note.html │ ├── edit_note.html │ ├── macros.html │ ├── index.html │ └── base.html ├── template ├── .flaskenv ├── static │ ├── avatar.jpg │ ├── favicon.ico │ └── style.css ├── templates │ ├── errors │ │ ├── 404.html │ │ └── 500.html │ ├── index.html │ ├── watchlist_with_static.html │ ├── watchlist.html │ ├── macros.html │ └── base.html └── app.py ├── requirements.txt ├── LICENSE ├── .gitignore └── README.md /form/uploads/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /CHANGES.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | 4 | -------------------------------------------------------------------------------- /cache/.flaskenv: -------------------------------------------------------------------------------- 1 | FLASK_ENV=development -------------------------------------------------------------------------------- /email/.flaskenv: -------------------------------------------------------------------------------- 1 | FLASK_ENV=development -------------------------------------------------------------------------------- /form/.flaskenv: -------------------------------------------------------------------------------- 1 | FLASK_ENV=development -------------------------------------------------------------------------------- /hello/.flaskenv: -------------------------------------------------------------------------------- 1 | FLASK_ENV=development -------------------------------------------------------------------------------- /http/.flaskenv: -------------------------------------------------------------------------------- 1 | FLASK_ENV=development -------------------------------------------------------------------------------- /assets/.flaskenv: -------------------------------------------------------------------------------- 1 | FLASK_ENV=development 2 | -------------------------------------------------------------------------------- /database/.flaskenv: -------------------------------------------------------------------------------- 1 | FLASK_ENV=development -------------------------------------------------------------------------------- /template/.flaskenv: -------------------------------------------------------------------------------- 1 | FLASK_ENV=development 2 | -------------------------------------------------------------------------------- /form/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/form/static/favicon.ico -------------------------------------------------------------------------------- /assets/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/favicon.ico -------------------------------------------------------------------------------- /cache/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/cache/static/favicon.ico -------------------------------------------------------------------------------- /email/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/email/static/favicon.ico -------------------------------------------------------------------------------- /template/static/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/template/static/avatar.jpg -------------------------------------------------------------------------------- /database/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/database/static/favicon.ico -------------------------------------------------------------------------------- /template/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/template/static/favicon.ico -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/plugins/icons.png -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/samples/img/logo.png -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/icons_hidpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/plugins/icons_hidpi.png -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/img/header-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/samples/img/header-bg.png -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/img/github-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/samples/img/github-top.png -------------------------------------------------------------------------------- /assets/static/ckeditor/skins/moono-lisa/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/skins/moono-lisa/icons.png -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/link/images/anchor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/plugins/link/images/anchor.png -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/img/navigation-tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/samples/img/navigation-tip.png -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/old/assets/sample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/samples/old/assets/sample.jpg -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/image/images/noimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/plugins/image/images/noimage.png -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/magicline/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/plugins/magicline/images/icon.png -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/widget/images/handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/plugins/widget/images/handle.png -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/img/header-separator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/samples/img/header-separator.png -------------------------------------------------------------------------------- /assets/static/ckeditor/skins/moono-lisa/icons_hidpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/skins/moono-lisa/icons_hidpi.png -------------------------------------------------------------------------------- /assets/static/ckeditor/skins/moono-lisa/images/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/skins/moono-lisa/images/arrow.png -------------------------------------------------------------------------------- /assets/static/ckeditor/skins/moono-lisa/images/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/skins/moono-lisa/images/close.png -------------------------------------------------------------------------------- /assets/static/ckeditor/skins/moono-lisa/images/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/skins/moono-lisa/images/lock.png -------------------------------------------------------------------------------- /assets/static/css/temp/sb-admin-rtl.css: -------------------------------------------------------------------------------- 1 | 2 | @media (min-width: 768px){ 3 | #wrapper {padding-right: 225px; padding-left: 0;} 4 | .side-nav{right: 0;left: auto;} 5 | } -------------------------------------------------------------------------------- /assets/static/ckeditor/skins/moono-lisa/images/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/skins/moono-lisa/images/refresh.png -------------------------------------------------------------------------------- /assets/static/ckeditor/skins/moono-lisa/images/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/skins/moono-lisa/images/spinner.gif -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/link/images/hidpi/anchor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/plugins/link/images/hidpi/anchor.png -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/magicline/images/icon-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/plugins/magicline/images/icon-rtl.png -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/old/assets/inlineall/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/samples/old/assets/inlineall/logo.png -------------------------------------------------------------------------------- /assets/static/ckeditor/skins/moono-lisa/images/hidpi/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/skins/moono-lisa/images/hidpi/lock.png -------------------------------------------------------------------------------- /assets/static/ckeditor/skins/moono-lisa/images/lock-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/skins/moono-lisa/images/lock-open.png -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/about/dialogs/logo_ckeditor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/plugins/about/dialogs/logo_ckeditor.png -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/magicline/images/hidpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/plugins/magicline/images/hidpi/icon.png -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/ambiance-mobile.css: -------------------------------------------------------------------------------- 1 | .cm-s-ambiance.CodeMirror { 2 | -webkit-box-shadow: none; 3 | -moz-box-shadow: none; 4 | box-shadow: none; 5 | } 6 | -------------------------------------------------------------------------------- /assets/static/ckeditor/skins/moono-lisa/images/hidpi/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/skins/moono-lisa/images/hidpi/close.png -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/magicline/images/hidpi/icon-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/plugins/magicline/images/hidpi/icon-rtl.png -------------------------------------------------------------------------------- /assets/static/ckeditor/skins/moono-lisa/images/hidpi/lock-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/skins/moono-lisa/images/hidpi/lock-open.png -------------------------------------------------------------------------------- /assets/static/ckeditor/skins/moono-lisa/images/hidpi/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/skins/moono-lisa/images/hidpi/refresh.png -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/toolbarconfigurator/font/fontello.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/samples/toolbarconfigurator/font/fontello.eot -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/toolbarconfigurator/font/fontello.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/samples/toolbarconfigurator/font/fontello.ttf -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/toolbarconfigurator/font/fontello.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/samples/toolbarconfigurator/font/fontello.woff -------------------------------------------------------------------------------- /email/templates/emails/subscribe.txt: -------------------------------------------------------------------------------- 1 | Hello {{ name }}, 2 | 3 | Thank you for subscribing Flask Weekly! 4 | Enjoy the reading :) 5 | 6 | Visit this link to unsubscribe: {{ url_for('unsubscribe', _external=True) }} 7 | -------------------------------------------------------------------------------- /template/templates/errors/404.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block title %}404 - Page Not Found{% endblock %} 4 | 5 | {% block content %} 6 |

Page Not Found

7 |

You are lost...

8 | {% endblock %} 9 | -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/old/htmlwriter/assets/outputforflash/outputforflash.fla: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/samples/old/htmlwriter/assets/outputforflash/outputforflash.fla -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/old/htmlwriter/assets/outputforflash/outputforflash.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/helloflask/flask-examples/main/assets/static/ckeditor/samples/old/htmlwriter/assets/outputforflash/outputforflash.swf -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/dialog/dialogDefinition.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | -------------------------------------------------------------------------------- /template/templates/errors/500.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block title %}500 - Internal Server Error{% endblock %} 4 | 5 | {% block content %} 6 |

Internal Server Error

7 |

Something was wrong...

8 | {% endblock %} 9 | -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/toolbarconfigurator/font/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Font license info 2 | 3 | 4 | ## Font Awesome 5 | 6 | Copyright (C) 2012 by Dave Gandy 7 | 8 | Author: Dave Gandy 9 | License: SIL () 10 | Homepage: http://fortawesome.github.com/Font-Awesome/ 11 | -------------------------------------------------------------------------------- /form/templates/macros.html: -------------------------------------------------------------------------------- 1 | {% macro form_field(field) %} 2 | {{ field.label }}
3 | {{ field(**kwargs) }}
4 | {% if field.errors -%} 5 | {% for error in field.errors -%} 6 | {{ error }}
7 | {%- endfor %} 8 | {%- endif %} 9 | {% endmacro %} -------------------------------------------------------------------------------- /form/templates/custom_validator.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% from 'macros.html' import form_field %} 3 | 4 | {% block content %} 5 |

Custom Validator

6 | 7 |
8 | {{ form.csrf_token }} 9 | {{ form_field(form.answer) }} 10 | {{ form.submit }}
11 |
12 | {% endblock %} -------------------------------------------------------------------------------- /cache/templates/qux.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 |

Qux

5 |

page: {{ page }}

6 |

Edit the page query argument's value in url and enter it.

7 |

Refresh the page to view the change.

8 |

Check the Time column in debug toolbar →

9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /form/templates/upload.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% from 'macros.html' import form_field %} 3 | 4 | {% block content %} 5 |

File Upload Form

6 | 7 |
8 | {{ form.csrf_token }} 9 | {{ form_field(form.photo) }} 10 | {{ form.submit }} 11 |
12 | {% endblock %} -------------------------------------------------------------------------------- /form/templates/post.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block title %}{{ title }}{% endblock %} 4 | 5 | {% block head %} 6 | {{ super() }} 7 | 8 | {{ ckeditor.load_code_theme() }} 9 | {% endblock %} 10 | 11 | {% block content %} 12 |

{{ title }}

13 |

{{ body|safe }}

14 | {% endblock %} -------------------------------------------------------------------------------- /cache/templates/bar.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 |

Bar

5 |

With cache enabled, only first load will need more than 1 second (1000.00ms).

6 |

Refresh the page to view the change.

7 |

Check the Time column in debug toolbar →

8 |

>>> time.sleep(1)

9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /cache/templates/baz.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 |

Baz

5 |

With cache enabled, only first load will need more than 1 second (1000.00ms).

6 |

Refresh the page to view the change.

7 |

Check the Time column in debug toolbar →

8 |

>>> time.sleep(1)

9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /cache/templates/foo.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 |

Foo

5 |

Without cache, the page will need more than 1 second (1000.00ms) to load, every time.

6 |

Refresh the page to view the change.

7 |

Check the Time column in debug toolbar →

8 |

>>> time.sleep(1)

9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /email/templates/emails/subscribe.html: -------------------------------------------------------------------------------- 1 |
2 |

Hello {{ name }},

3 |

Thank you for subscribing Flask Weekly!

4 |

Enjoy the reading :)

5 | 6 | Click here to unsubscribe. 7 | 8 |
9 | -------------------------------------------------------------------------------- /database/templates/new_note.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% from 'macros.html' import form_field %} 3 | 4 | {% block title %}New Note{% endblock %} 5 | 6 | {% block content %} 7 |

New Note

8 | 9 |
10 | {{ form.csrf_token }} 11 | {{ form_field(form.body, rows=5, cols=50) }} 12 | {{ form.submit }}
13 |
14 | {% endblock %} -------------------------------------------------------------------------------- /database/templates/edit_note.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% from 'macros.html' import form_field %} 3 | 4 | {% block title %}Edit Note{% endblock %} 5 | 6 | {% block content %} 7 |

Edit Note

8 | 9 |
10 | {{ form.csrf_token }} 11 | {{ form_field(form.body, rows=5, cols=50) }} 12 | {{ form.submit }}
13 |
14 | {% endblock %} -------------------------------------------------------------------------------- /form/templates/2submit.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% from 'macros.html' import form_field %} 3 | 4 | {% block content %} 5 |

Multiple Submit Buttons

6 | 7 |
8 | {{ form.csrf_token }} 9 | {{ form_field(form.title) }} 10 | {{ form_field(form.body) }} 11 | {{ form.save }} 12 | {{ form.publish }} 13 |
14 | {% endblock %} -------------------------------------------------------------------------------- /form/templates/dropzone.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block head %} 4 | {{ super() }} 5 | {{ dropzone.load() }} 6 | {{ dropzone.style('border: 2px dashed #0087F7; margin: 10%; min-height: 300px;') }} 7 | {% endblock %} 8 | 9 | {% block content %} 10 |

Integrate Dropzone.js with Flask-Dropzone

11 | {{ dropzone.create(action_view='dropzone_upload') }} 12 | {% endblock %} -------------------------------------------------------------------------------- /form/templates/uploaded.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% from 'macros.html' import form_field %} 3 | 4 | {% block title %}Home{% endblock %} 5 | 6 | {% block content %} 7 | {% if session.filenames %} 8 | {% for filename in session.filenames %} 9 | 10 | 11 | 12 | {% endfor %} 13 | {% endif %} 14 | {% endblock %} -------------------------------------------------------------------------------- /assets/static/css/temp/plugins/morris.css: -------------------------------------------------------------------------------- 1 | .morris-hover{position:absolute;z-index:1000}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255,255,255,0.8);border:solid 2px rgba(230,230,230,0.8);font-family:sans-serif;font-size:12px;text-align:center}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0} 2 | .morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0} 3 | -------------------------------------------------------------------------------- /database/templates/macros.html: -------------------------------------------------------------------------------- 1 | {% macro form_field(field) %} 2 | {{ field.label }}
3 | {% if field.flags.required %} 4 | {{ field(required='required', **kwargs) }}
5 | {% else %} 6 | {{ field(**kwargs) }}
7 | {% endif %} 8 | {% if field.errors %} 9 | {% for error in field.errors %} 10 | {{ error }}
11 | {% endfor %} 12 | {% endif %} 13 | {% endmacro %} 14 | -------------------------------------------------------------------------------- /email/templates/macros.html: -------------------------------------------------------------------------------- 1 | {% macro form_field(field) %} 2 | {{ field.label }}
3 | {% if field.flags.required -%} 4 | {{ field(required='required', **kwargs) }}
5 | {%- else -%} 6 | {{ field(**kwargs) }}
7 | {%- endif %} 8 | {% if field.errors -%} 9 | {% for error in field.errors -%} 10 | {{ error }}
11 | {%- endfor %} 12 | {%- endif %} 13 | {% endmacro %} -------------------------------------------------------------------------------- /assets/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 |

Assets Optimization

with Flask-Assets 5 |

Check the requests status in the network tab of the browser's development tool.

6 | 10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /assets/templates/optimized.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block styles %} 4 | {% assets "css_all" %} 5 | 6 | {% endassets %} 7 | {% endblock %} 8 | 9 | {% block content %} 10 |

Bar

11 |

Optimized.

12 | {% endblock %} 13 | 14 | 15 | {% block scripts %} 16 | {% assets "js_all" %} 17 | 18 | {% endassets %} 19 | {% endblock %} 20 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/scayt/skins/moono-lisa/scayt.css: -------------------------------------------------------------------------------- 1 | .scayt-lang-list > div 2 | { 3 | padding-bottom: 6px !important; 4 | } 5 | 6 | .scayt-lang-list > div input 7 | { 8 | margin-right: 4px; 9 | } 10 | 11 | #scayt_about_ 12 | { 13 | margin: 30px auto 0 auto; 14 | } 15 | 16 | #scayt_about_ p 17 | { 18 | text-align: center; 19 | margin-bottom: 10px; 20 | } 21 | 22 | .cke_dialog_contents_body div[name=dictionaries] .cke_dialog_ui_hbox_last > a.cke_dialog_ui_button 23 | { 24 | margin-top: 0; 25 | } 26 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/scayt/dialogs/dialog.css: -------------------------------------------------------------------------------- 1 | div.cke_dialog_ui_scaytItemList { 2 | border: 1px solid #c9cccf; 3 | } 4 | 5 | .cke_scaytItemList-child { 6 | position: relative; 7 | padding: 6px 30px 6px 5px; 8 | overflow: hidden; 9 | text-overflow: ellipsis; 10 | white-space: nowrap; 11 | } 12 | 13 | .cke_scaytItemList-child:hover { 14 | background: #ebebeb; 15 | } 16 | 17 | .cke_scaytItemList-child .cke_scaytItemList_remove { 18 | position: absolute; 19 | top: 0; 20 | right: 5px; 21 | width: 26px; 22 | height: 26px; 23 | } 24 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/zh-cn.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'zh-cn', { 6 | loadError: '读取文件时发生错误', 7 | networkError: '上传文件时发生网络错误', 8 | httpError404: '上传文件时发生 HTTP 错误(404:无法找到文件)', 9 | httpError403: '上传文件时发生 HTTP 错误(403:禁止访问)', 10 | httpError: '上传文件时发生 HTTP 错误(错误代码:%1)', 11 | noUrlError: '上传的 URL 未定义', 12 | responseError: '不正确的服务器响应' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/zh.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'zh', { 6 | loadError: '在讀取檔案時發生錯誤。', 7 | networkError: '在上傳檔案時發生網路錯誤。', 8 | httpError404: '在上傳檔案時發生 HTTP 錯誤(404:檔案找不到)。', 9 | httpError403: '在上傳檔案時發生 HTTP 錯誤(403:禁止)。', 10 | httpError: '在上傳檔案時發生 HTTP 錯誤(錯誤狀態:%1)。', 11 | noUrlError: '上傳的 URL 未被定義。', 12 | responseError: '不正確的伺服器回應。' 13 | } ); 14 | -------------------------------------------------------------------------------- /form/templates/pure_html.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 |

Pure HTML Form

5 | 6 |
7 |
8 |
9 |
10 |
11 | 12 |
13 | 14 |
15 | {% endblock %} -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/ko.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'ko', { 6 | loadError: '파일을 읽는 중 오류가 발생했습니다.', 7 | networkError: '파일 업로드 중 네트워크 오류가 발생했습니다.', 8 | httpError404: '파일 업로드중 HTTP 오류가 발생했습니다 (404: 파일 찾을수 없음).', 9 | httpError403: '파일 업로드중 HTTP 오류가 발생했습니다 (403: 권한 없음).', 10 | httpError: '파일 업로드중 HTTP 오류가 발생했습니다 (오류 코드 %1).', 11 | noUrlError: '업로드 주소가 정의되어 있지 않습니다.', 12 | responseError: '잘못된 서버 응답.' 13 | } ); 14 | -------------------------------------------------------------------------------- /email/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% from 'macros.html' import form_field %} 3 | 4 | {% block content %} 5 |

Send an Email to Yourself

6 |

or subscribe the fake newsletter

7 | 8 |
9 | {{ form.csrf_token }} 10 | {{ form_field(form.to, placeholder='zorn@example.com') }} 11 | {{ form_field(form.subject, size=30) }} 12 | {{ form_field(form.body, rows=5, cols=50) }}
13 | {{ form.submit_smtp(class='btn') }} 14 | {{ form.submit_api(class='btn') }} 15 | {{ form.submit_async(class='btn') }} 16 |
17 | {% endblock %} 18 | -------------------------------------------------------------------------------- /email/templates/subscribe.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% from 'macros.html' import form_field %} 3 | 4 | {% block content %} 5 |

Flask Weekly

6 |

A free weekly newsletter featuring curated news, articles, new releases, jobs etc related to Flask.

7 |

Delivery at every Wednesday morning.

8 |

Unsubscribe at any time.

9 |
10 | {{ form.csrf_token }} 11 | {{ form_field(form.name, placeholder='Your Name') }} 12 | {{ form_field(form.email, placeholder='Your Email') }}
13 | {{ form.submit(class='btn') }} 14 |
15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /form/templates/ckeditor.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% from 'macros.html' import form_field %} 3 | 4 | {% block content %} 5 |

Integrate CKEditor with Flask-CKEditor 6 |

7 |
8 | {{ form.csrf_token }} 9 | {{ form_field(form.title) }} 10 | {{ form_field(form.body) }} 11 | {{ form.submit }} 12 |
13 | {% endblock %} 14 | 15 | {% block scripts %} 16 | {{ super() }} 17 | {{ ckeditor.load() }} 18 | {{ ckeditor.config(name='body') }} 19 | {% endblock %} 20 | -------------------------------------------------------------------------------- /template/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% from 'macros.html' import qux %} 3 | 4 | {% block content %} 5 | {% set name='baz' %} 6 |

Template

7 | 16 | {% endblock %} 17 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/ja.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'ja', { 6 | loadError: 'ファイルの読み込み中にエラーが発生しました。', 7 | networkError: 'ファイルのアップロード中にネットワークエラーが発生しました。', 8 | httpError404: 'ファイルのアップロード中にHTTPエラーが発生しました。(404: File not found)', 9 | httpError403: 'ファイルのアップロード中にHTTPエラーが発生しました。(403: Forbidden)', 10 | httpError: 'ファイルのアップロード中にHTTPエラーが発生しました。(error status: %1)', 11 | noUrlError: 'アップロードURLが定義されていません。', 12 | responseError: 'サーバーの応答が不正です。' 13 | } ); 14 | -------------------------------------------------------------------------------- /database/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 |

Notebook

5 | New Note 6 | 7 |

{{ notes|length }} notes:

8 | {% for note in notes %} 9 |
10 |

{{ note.body }}

11 | Edit 12 |
13 | {{ form.csrf_token }} 14 | {{ form.submit(class='btn') }} 15 |
16 |
17 | {% endfor %} 18 | {% endblock %} 19 | -------------------------------------------------------------------------------- /template/templates/watchlist_with_static.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block title %}{{ user.username }}'s Watchlist Pro{% endblock %} 4 | 5 | {% block content %} 6 |

7 | {{ user.username }} 8 |

9 | {% if user.bio %} 10 | {{ user.bio }} 11 | {% else %} 12 | This user has not provided a bio. 13 | {% endif %} 14 | {# Below is the movie list (this is comment) #} 15 |
{{ user.username }}'s Watchlist ({{ movies|length }}):
16 | 21 | {% endblock %} -------------------------------------------------------------------------------- /template/templates/watchlist.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ user.username }}'s Watchlist 6 | 7 | 8 | ← Return 9 |

{{ user.username }}

10 | {% if user.bio %} 11 | {{ user.bio }} 12 | {% else %} 13 | This user has not provided a bio. 14 | {% endif %} 15 | {# Below is the movie list (this is comment) #} 16 |
{{ user.username }}'s Watchlist ({{ movies|length }}):
17 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/ru.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'ru', { 6 | loadError: 'Ошибка при чтении файла', 7 | networkError: 'Сетевая ошибка при загрузке файла', 8 | httpError404: 'HTTP ошибка при загрузке файла (404: Файл не найден)', 9 | httpError403: 'HTTP ошибка при загрузке файла (403: Запрещено)', 10 | httpError: 'HTTP ошибка при загрузке файла (%1)', 11 | noUrlError: 'Не определен URL для загрузки файлов', 12 | responseError: 'Некорректный ответ сервера' 13 | } ); 14 | -------------------------------------------------------------------------------- /form/templates/2form.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% from 'macros.html' import form_field %} 3 | 4 | {% block content %} 5 |

Multiple Form in One Page with One View

6 | 7 |

Login Form

8 |
9 | {{ signin_form.csrf_token }} 10 | {{ form_field(signin_form.username) }} 11 | {{ form_field(signin_form.password) }} 12 | {{ signin_form.submit1 }} 13 |
14 |

Register Form

15 |
16 | {{ register_form.csrf_token }} 17 | {{ form_field(register_form.username) }} 18 | {{ form_field(register_form.email) }} 19 | {{ form_field(register_form.password) }} 20 | {{ register_form.submit2 }} 21 |
22 | {% endblock %} -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/sv.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'sv', { 6 | loadError: 'Fel uppstod vid filläsning', 7 | networkError: 'Nätverksfel uppstod vid filuppladdning.', 8 | httpError404: 'HTTP-fel uppstod vid filuppladdning (404: Fil hittades inte).', 9 | httpError403: 'HTTP-fel uppstod vid filuppladdning (403: Förbjuden).', 10 | httpError: 'HTTP-fel uppstod vid filuppladdning (felstatus: %1).', 11 | noUrlError: 'URL för uppladdning inte definierad.', 12 | responseError: 'Felaktigt serversvar.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/toolbarconfigurator/font/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "css_prefix_text": "icon-", 4 | "css_use_suffix": false, 5 | "hinting": true, 6 | "units_per_em": 1000, 7 | "ascent": 850, 8 | "glyphs": [ 9 | { 10 | "uid": "f48ae54adfb27d8ada53d0fd9e34ee10", 11 | "css": "trash-empty", 12 | "code": 59392, 13 | "src": "fontawesome" 14 | }, 15 | { 16 | "uid": "1c4068ed75209e21af36017df8871802", 17 | "css": "down-big", 18 | "code": 59393, 19 | "src": "fontawesome" 20 | }, 21 | { 22 | "uid": "95376bf082bfec6ce06ea1cda7bd7ead", 23 | "css": "up-big", 24 | "code": 59394, 25 | "src": "fontawesome" 26 | } 27 | ] 28 | } -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/tr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'tr', { 6 | loadError: 'Dosya okunurken hata oluştu.', 7 | networkError: 'Dosya gönderilirken ağ hatası oluştu.', 8 | httpError404: 'Dosya gönderilirken HTTP hatası oluştu (404: Dosya bulunamadı).', 9 | httpError403: 'Dosya gönderilirken HTTP hatası oluştu (403: Yasaklı).', 10 | httpError: 'Dosya gönderilirken HTTP hatası oluştu (hata durumu: %1).', 11 | noUrlError: 'Gönderilecek URL belirtilmedi.', 12 | responseError: 'Sunucu cevap veremedi.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/az.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'az', { 6 | loadError: 'Faylını oxumaq mümkün deyil', 7 | networkError: 'Xəta baş verdi.', 8 | httpError404: 'Serverə göndərilməsinin zamanı xəta baş verdi (404 - fayl tapılmayıb)', 9 | httpError403: 'Serverə göndərilməsinin zamanı xəta baş verdi (403 - gadağandır)', 10 | httpError: 'Serverə göndərilməsinin zamanı xəta baş verdi (xətanın ststusu: %1)', 11 | noUrlError: 'Yükləmə linki təyin edilməyib', 12 | responseError: 'Serverin cavabı yanlışdır' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/en.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'en', { 6 | loadError: 'Error occurred during file read.', 7 | networkError: 'Network error occurred during file upload.', 8 | httpError404: 'HTTP error occurred during file upload (404: File not found).', 9 | httpError403: 'HTTP error occurred during file upload (403: Forbidden).', 10 | httpError: 'HTTP error occurred during file upload (error status: %1).', 11 | noUrlError: 'Upload URL is not defined.', 12 | responseError: 'Incorrect server response.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/hr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'hr', { 6 | loadError: 'Greška prilikom čitanja datoteke.', 7 | networkError: 'Mrežna greška prilikom slanja datoteke.', 8 | httpError404: 'HTTP greška tijekom slanja datoteke (404: datoteka nije pronađena).', 9 | httpError403: 'HTTP greška tijekom slanja datoteke (403: Zabranjeno).', 10 | httpError: 'HTTP greška tijekom slanja datoteke (greška status: %1).', 11 | noUrlError: 'URL za slanje nije podešen.', 12 | responseError: 'Neispravni odgovor servera.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/en-au.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'en-au', { 6 | loadError: 'Error occurred during file read.', 7 | networkError: 'Network error occurred during file upload.', 8 | httpError404: 'HTTP error occurred during file upload (404: File not found).', 9 | httpError403: 'HTTP error occurred during file upload (403: Forbidden).', 10 | httpError: 'HTTP error occurred during file upload (error status: %1).', 11 | noUrlError: 'Upload URL is not defined.', 12 | responseError: 'Incorrect server response.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/nb.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'nb', { 6 | loadError: 'Feil oppsto under filinnlesing.', 7 | networkError: 'Nettverksfeil oppsto under filopplasting.', 8 | httpError404: 'HTTP-feil oppsto under filopplasting (404: Fant ikke filen).', 9 | httpError403: 'HTTP-feil oppsto under filopplasting (403: Ikke tillatt).', 10 | httpError: 'HTTP-feil oppsto under filopplasting (feilstatus: %1).', 11 | noUrlError: 'URL for opplasting er ikke oppgitt.', 12 | responseError: 'Ukorrekt svar fra serveren.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/cs.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'cs', { 6 | loadError: 'Při čtení souboru došlo k chybě.', 7 | networkError: 'Při nahrávání souboru došlo k chybě v síti.', 8 | httpError404: 'Při nahrávání souboru došlo k chybě HTTP (404: Soubor nenalezen).', 9 | httpError403: 'Při nahrávání souboru došlo k chybě HTTP (403: Zakázáno).', 10 | httpError: 'Při nahrávání souboru došlo k chybě HTTP (chybový stav: %1).', 11 | noUrlError: 'URL pro nahrání není zadána.', 12 | responseError: 'Nesprávná odpověď serveru.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/nl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'nl', { 6 | loadError: 'Fout tijdens lezen van bestand.', 7 | networkError: 'Netwerkfout tijdens uploaden van bestand.', 8 | httpError404: 'HTTP fout tijdens uploaden van bestand (404: Bestand niet gevonden).', 9 | httpError403: 'HTTP fout tijdens uploaden van bestand (403: Verboden).', 10 | httpError: 'HTTP fout tijdens uploaden van bestand (fout status: %1).', 11 | noUrlError: 'Upload URL is niet gedefinieerd.', 12 | responseError: 'Ongeldig antwoord van server.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/ug.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'ug', { 6 | loadError: 'ھۆججەت ئوقۇشتا خاتالىق كۆرۈلدى', 7 | networkError: 'ھۆججەت يۈكلەشتە تور خاتالىقى كۆرۈلدى.', 8 | httpError404: 'ھۆججەت يۈكلىگەندە HTTP خاتالىقى كۆرۈلدى (404: ھۆججەت تېپىلمىدى).', 9 | httpError403: 'ھۆججەت يۈكلىگەندە HTTP خاتالىقى كۆرۈلدى (403: چەكلەنگەن).', 10 | httpError: 'ھۆججەت يۈكلىگەندە HTTP خاتالىقى كۆرۈلدى (404: خاتالىق نىسپىتى: 1%).', 11 | noUrlError: 'چىقىردىغان ئۇلانما تەڭشەلمىگەن .', 12 | responseError: 'مۇلازىمىتىردا ئىنكاس يوق .' 13 | } ); 14 | -------------------------------------------------------------------------------- /template/templates/macros.html: -------------------------------------------------------------------------------- 1 | {% macro qux(amount=1) %} 2 | {% if amount == 1 -%} 3 | I am qux. 4 | {%- elif amount > 1 -%} 5 | We are quxs. 6 | {%- endif %} 7 | {% endmacro %} 8 | 9 | {% macro static_file(type, filename_or_url, local=True) %} 10 | {% if local -%} 11 | {% set filename_or_url = url_for('static', filename=filename_or_url) %} 12 | {%- endif %} 13 | {% if type == 'css' -%} 14 | 15 | {%- elif type == 'js' -%} 16 | 17 | {%- elif type == 'icon' -%} 18 | 19 | {%- endif %} 20 | {% endmacro %} 21 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/da.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'da', { 6 | loadError: 'Der skete en fejl ved indlæsningen af filen.', 7 | networkError: 'Der skete en netværks fejl under uploadingen.', 8 | httpError404: 'Der skete en HTTP fejl under uploadingen (404: File not found).', 9 | httpError403: 'Der skete en HTTP fejl under uploadingen (403: Forbidden).', 10 | httpError: 'Der skete en HTTP fejl under uploadingen (error status: %1).', 11 | noUrlError: 'Upload URL er ikke defineret.', 12 | responseError: 'Ikke korrekt server svar.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/eo.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'eo', { 6 | loadError: 'Eraro okazis dum la dosiera legado.', 7 | networkError: 'Reta eraro okazis dum la dosiera alŝuto.', 8 | httpError404: 'HTTP eraro okazis dum la dosiera alŝuto (404: dosiero ne trovita).', 9 | httpError403: 'HTTP eraro okazis dum la dosiera alŝuto (403: malpermesita).', 10 | httpError: 'HTTP eraro okazis dum la dosiera alŝuto (erara stato: %1).', 11 | noUrlError: 'Alŝuta URL ne estas difinita.', 12 | responseError: 'Malĝusta respondo de la servilo.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/hu.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'hu', { 6 | loadError: 'Hiba történt a fájl olvasása közben.', 7 | networkError: 'Hálózati hiba történt a fájl feltöltése közben.', 8 | httpError404: 'HTTP hiba történt a fájl feltöltése alatt (404: A fájl nem található).', 9 | httpError403: 'HTTP hiba történt a fájl feltöltése alatt (403: Tiltott).', 10 | httpError: 'HTTP hiba történt a fájl feltöltése alatt (hiba státusz: %1).', 11 | noUrlError: 'Feltöltési URL nincs megadva.', 12 | responseError: 'Helytelen szerver válasz.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/sk.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'sk', { 6 | loadError: 'Počas čítania súboru nastala chyba.', 7 | networkError: 'Počas nahrávania súboru nastala chyba siete.', 8 | httpError404: 'Počas nahrávania súboru nastala HTTP chyba (404: Súbor nebol nájdený).', 9 | httpError403: 'Počas nahrávania súboru nastala HTTP chyba (403: Zakázaný).', 10 | httpError: 'Počas nahrávania súboru nastala HTTP chyba (error status: %1).', 11 | noUrlError: 'URL nahrávania nie je definovaný.', 12 | responseError: 'Nesprávna odpoveď servera.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/id.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'id', { 6 | loadError: 'Error terjadi ketika berkas dibaca', 7 | networkError: 'Jaringan error terjadi ketika mengunggah berkas', 8 | httpError404: 'HTTP error terjadi ketika mengunggah berkas (404: Berkas tidak ditemukan)', 9 | httpError403: 'HTTP error terjadi ketika mengunggah berkas (403: Gangguan)', 10 | httpError: 'HTTP error terjadi ketika mengunggah berkas (status error: %1)', 11 | noUrlError: 'Unggahan URL tidak terdefinisi', 12 | responseError: 'Respon server tidak sesuai' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/ku.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'ku', { 6 | loadError: 'هەڵەیەک ڕوویدا لە ماوەی خوێندنەوەی پەڕگەکە.', 7 | networkError: 'هەڵەیەکی ڕایەڵە ڕوویدا لە ماوەی بارکردنی پەڕگەکە.', 8 | httpError404: 'هەڵەیەک ڕوویدا لە ماوەی بارکردنی پەڕگەکە (404: پەڕگەکە نەدۆزراوە).', 9 | httpError403: 'هەڵەیەک ڕوویدا لە ماوەی بارکردنی پەڕگەکە (403: قەدەغەکراو).', 10 | httpError: 'هەڵەیەک ڕوویدا لە ماوەی بارکردنی پەڕگەکە (دۆخی هەڵە: %1).', 11 | noUrlError: 'بەستەری پەڕگەکە پێناسە نەکراوە.', 12 | responseError: 'وەڵامێکی نادروستی سێرڤەر.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/pl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'pl', { 6 | loadError: 'Błąd podczas odczytu pliku.', 7 | networkError: 'W trakcie wysyłania pliku pojawił się błąd sieciowy.', 8 | httpError404: 'Błąd HTTP w trakcie wysyłania pliku (404: Nie znaleziono pliku).', 9 | httpError403: 'Błąd HTTP w trakcie wysyłania pliku (403: Zabroniony).', 10 | httpError: 'Błąd HTTP w trakcie wysyłania pliku (status błędu: %1).', 11 | noUrlError: 'Nie zdefiniowano adresu URL do przesłania pliku.', 12 | responseError: 'Niepoprawna odpowiedź serwera.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/neat.css: -------------------------------------------------------------------------------- 1 | .cm-s-neat span.cm-comment { color: #a86; } 2 | .cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } 3 | .cm-s-neat span.cm-string { color: #a22; } 4 | .cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } 5 | .cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } 6 | .cm-s-neat span.cm-variable { color: black; } 7 | .cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } 8 | .cm-s-neat span.cm-meta {color: #555;} 9 | .cm-s-neat span.cm-link { color: #3a3; } 10 | 11 | .cm-s-neat .CodeMirror-activeline-background {background: #e8f2ff !important;} 12 | .cm-s-neat .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 13 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | -i https://pypi.python.org/simple/ 2 | alembic==1.5.8 3 | blinker==1.4 4 | click==7.1.2 5 | cssmin==0.2.0 6 | email-validator==1.1.2 7 | flask-assets==0.12 8 | flask-caching==1.7.2 9 | flask-ckeditor==0.4.3 10 | flask-debugtoolbar==0.10.1 11 | flask-dropzone==1.5.3 12 | flask-mail==0.9.1 13 | flask-migrate==2.5.2 14 | flask-sqlalchemy==2.5.1 15 | flask-wtf==0.14.2 16 | flask==1.0 17 | greenlet==1.0.0 ; python_version >= '3' 18 | itsdangerous==1.1.0 19 | jinja2==2.11.3 20 | jsmin==2.2.2 21 | mako==1.1.4 22 | markupsafe==1.1.1 23 | python-dateutil==2.8.1 24 | python-dotenv==0.10.3 25 | python-editor==1.0.4 26 | python-http-client==3.3.2 27 | redis==3.2.1 28 | sendgrid==6.0.5 29 | six==1.15.0 30 | sqlalchemy==1.4.3 31 | webassets==2.0 32 | werkzeug==0.16.1 33 | wtforms==2.3.3 34 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/ro.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'ro', { 6 | loadError: 'Eroare în timpul citirii fișierului.', 7 | networkError: 'Eroare de rețea în timpul încărcării fișierului.', 8 | httpError404: 'Eroare HTTP în timpul încărcării fișierului (404: Fișier negăsit).', 9 | httpError403: 'Eroare HTTP în timpul încărcării fișierului (403: Operașie nepermisă).', 10 | httpError: 'Eroare HTTP în timpul încărcării fișierului (stare eroiare: %1).', 11 | noUrlError: 'URL-ul de ăncărcare nu este specificat.', 12 | responseError: 'Răspuns server incorect.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/uk.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'uk', { 6 | loadError: 'Виникла помилка під час читання файлу', 7 | networkError: 'Під час завантаження файлу виникла помилка мережі.', 8 | httpError404: 'Під час завантаження файлу виникла помилка HTTP (404: Файл не знайдено).', 9 | httpError403: 'Під час завантаження файлу виникла помилка HTTP (403: Доступ заборонено).', 10 | httpError: 'Під час завантаження файлу виникла помилка (статус помилки: %1).', 11 | noUrlError: 'URL завантаження не визначений.', 12 | responseError: 'Невірна відповідь сервера.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/eu.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'eu', { 6 | loadError: 'Errorea gertatu da fitxategia irakurtzean.', 7 | networkError: 'Sareko errorea gertatu da fitxategia kargatzean.', 8 | httpError404: 'HTTP errorea gertatu da fitxategia kargatzean (404: Fitxategia ez da aurkitu).', 9 | httpError403: 'HTTP errorea gertatu da fitxategia kargatzean (403: Debekatuta).', 10 | httpError: 'HTTP errorea gertatu da fitxategia kargatzean (errore-egoera: %1).', 11 | noUrlError: 'Kargatzeko URLa definitu gabe.', 12 | responseError: 'Zerbitzariaren erantzun okerra.' 13 | } ); 14 | -------------------------------------------------------------------------------- /form/templates/2form2view.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% from 'macros.html' import form_field %} 3 | 4 | {% block content %} 5 |

Multiple Form in One Page with Multiple View

6 | 7 |

Login Form

8 |
9 | {{ signin_form.csrf_token }} 10 | {{ form_field(signin_form.username) }} 11 | {{ form_field(signin_form.password) }} 12 | {{ signin_form.submit }} 13 |
14 | 15 |

Register Form

16 |
17 | {{ register_form.csrf_token }} 18 | {{ form_field(register_form.username) }} 19 | {{ form_field(register_form.email) }} 20 | {{ form_field(register_form.password) }} 21 | {{ register_form.submit }} 22 |
23 | {% endblock %} -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/pt.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'pt', { 6 | loadError: 'Ocorreu um erro ao ler o ficheiro', 7 | networkError: 'Ocorreu um erro de rede ao carregar o ficheiro.', 8 | httpError404: 'HTTP error occurred during file upload (404: File not found).', // MISSING 9 | httpError403: 'HTTP error occurred during file upload (403: Forbidden).', // MISSING 10 | httpError: 'HTTP error occurred during file upload (error status: %1).', // MISSING 11 | noUrlError: 'Upload URL is not defined.', // MISSING 12 | responseError: 'Incorrect server response.' // MISSING 13 | } ); 14 | -------------------------------------------------------------------------------- /form/templates/basic.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 |

Basic Form

5 | 6 |
7 | {{ form.csrf_token }} 8 | {{ form.username.label }}
9 | {{ form.username }}
10 | {% if form.username.errors %} 11 | {% for message in form.username.errors %} 12 | {{ message }}
13 | {% endfor %} 14 | {% endif %} 15 | {{ form.password.label }}
16 | {{ form.password }}
17 | {% if form.password.errors %} 18 | {% for message in form.password.errors %} 19 | {{ message }}
20 | {% endfor %} 21 | {% endif %} 22 | {{ form.remember }}{{ form.remember.label }}
23 | {{ form.submit }}
24 |
25 | {% endblock %} -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/km.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'km', { 6 | loadError: 'មាន​បញ្ហា​កើតឡើង​ក្នុង​ពេល​អាន​ឯកសារ។', 7 | networkError: 'មាន​បញ្ហា​បណ្ដាញ​កើត​ឡើង​ក្នុង​ពេល​ផ្ទុកឡើង​ឯកសារ។', 8 | httpError404: 'មាន​បញ្ហា HTTP កើត​ឡើង​ក្នុង​ពេល​ផ្ទុកឡើង​ឯកសារ (404៖ រក​ឯកសារ​មិន​ឃើញ)។', 9 | httpError403: 'មាន​បញ្ហា HTTP កើត​ឡើង​ក្នុង​ពេល​ផ្ទុកឡើង​ឯកសារ (403៖ ហាមឃាត់)។', 10 | httpError: 'មាន​បញ្ហា HTTP កើត​ឡើង​ក្នុង​ពេល​ផ្ទុកឡើង​ឯកសារ (ស្ថានភាព​កំហុស៖ %1)។', 11 | noUrlError: 'មិន​មាន​បញ្ជាក់ URL ផ្ទុក​ឡើង។', 12 | responseError: 'ការ​ឆ្លើយតប​របស់​ម៉ាស៊ីនបម្រើ មិន​ត្រឹមត្រូវ។' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/pt-br.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'pt-br', { 6 | loadError: 'Um erro ocorreu durante a leitura do arquivo.', 7 | networkError: 'Um erro de rede ocorreu durante o envio do arquivo.', 8 | httpError404: 'Um erro HTTP ocorreu durante o envio do arquivo (404: Arquivo não encontrado).', 9 | httpError403: 'Um erro HTTP ocorreu durante o envio do arquivo (403: Proibido).', 10 | httpError: 'Um erro HTTP ocorreu durante o envio do arquivo (status do erro: %1)', 11 | noUrlError: 'A URL de upload não está definida.', 12 | responseError: 'Resposta incorreta do servidor.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/sq.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'sq', { 6 | loadError: 'Gabimi u paraqit gjatë leximit të skedës.', 7 | networkError: 'Gabimi në rrjetë u paraqitë gjatë ngarkimit të skedës.', 8 | httpError404: 'Gabimi në HTTP u paraqit gjatë ngarkimit të skedës (404: Skeda nuk u gjetë).', 9 | httpError403: 'Gabimi në HTTP u paraqitë gjatë ngarkimit të skedës (403: E ndaluar).', 10 | httpError: 'Gabimi në HTTP u paraqit gjatë ngarkimit të skedës (gjendja e gabimit: %1).', 11 | noUrlError: 'URL e ngarkimit nuk është vendosur.', 12 | responseError: 'Përgjigje e gabuar e serverit.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/es.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'es', { 6 | loadError: 'Ha ocurrido un error durante la lectura del archivo.', 7 | networkError: 'Error de red ocurrido durante carga de archivo.', 8 | httpError404: 'Un error HTTP ha ocurrido durante la carga del archivo (404: Archivo no encontrado).', 9 | httpError403: 'Un error HTTP ha ocurrido durante la carga del archivo (403: Prohibido).', 10 | httpError: 'Error HTTP ocurrido durante la carga del archivo (Estado del error: %1).', 11 | noUrlError: 'URL cargada no está definida.', 12 | responseError: 'Respueta del servidor incorrecta.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/gl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'gl', { 6 | loadError: 'Produciuse un erro durante a lectura do ficheiro.', 7 | networkError: 'Produciuse un erro na rede durante o envío do ficheiro.', 8 | httpError404: 'Produciuse un erro HTTP durante o envío do ficheiro (404: Ficheiro non atopado).', 9 | httpError403: 'Produciuse un erro HTTP durante o envío do ficheiro (403: Acceso denegado).', 10 | httpError: 'Produciuse un erro HTTP durante o envío do ficheiro (erro de estado: %1).', 11 | noUrlError: 'Non foi definido o URL para o envío.', 12 | responseError: 'Resposta incorrecta do servidor.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/es-mx.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'es-mx', { 6 | loadError: 'Ha ocurrido un error al leer el archivo', 7 | networkError: 'Ha ocurrido un error de red durante la carga del archivo.', 8 | httpError404: 'Se ha producido un error HTTP durante la subida de archivos (404: archivo no encontrado).', 9 | httpError403: 'Se ha producido un error HTTP durante la subida de archivos (403: Prohibido).', 10 | httpError: 'Se ha producido un error HTTP durante la subida de archivos (error: %1).', 11 | noUrlError: 'La URL de subida no está definida.', 12 | responseError: 'Respuesta incorrecta del servidor.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/ca.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'ca', { 6 | loadError: 'S\'ha produït un error durant la lectura del fitxer.', 7 | networkError: 'S\'ha produït un error de xarxa durant la càrrega del fitxer.', 8 | httpError404: 'S\'ha produït un error HTTP durant la càrrega del fitxer (404: Fitxer no trobat).', 9 | httpError403: 'S\'ha produït un error HTTP durant la càrrega del fitxer (403: Permís denegat).', 10 | httpError: 'S\'ha produït un error HTTP durant la càrrega del fitxer (estat d\'error: %1).', 11 | noUrlError: 'La URL de càrrega no està definida.', 12 | responseError: 'Resposta incorrecte del servidor' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/elegant.css: -------------------------------------------------------------------------------- 1 | .cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom {color: #762;} 2 | .cm-s-elegant span.cm-comment {color: #262; font-style: italic; line-height: 1em;} 3 | .cm-s-elegant span.cm-meta {color: #555; font-style: italic; line-height: 1em;} 4 | .cm-s-elegant span.cm-variable {color: black;} 5 | .cm-s-elegant span.cm-variable-2 {color: #b11;} 6 | .cm-s-elegant span.cm-qualifier {color: #555;} 7 | .cm-s-elegant span.cm-keyword {color: #730;} 8 | .cm-s-elegant span.cm-builtin {color: #30a;} 9 | .cm-s-elegant span.cm-link {color: #762;} 10 | .cm-s-elegant span.cm-error {background-color: #fdd;} 11 | 12 | .cm-s-elegant .CodeMirror-activeline-background {background: #e8f2ff !important;} 13 | .cm-s-elegant .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 2 | For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 3 | 4 | cs.js Found: 118 Missing: 0 5 | cy.js Found: 118 Missing: 0 6 | de.js Found: 118 Missing: 0 7 | el.js Found: 16 Missing: 102 8 | eo.js Found: 118 Missing: 0 9 | et.js Found: 31 Missing: 87 10 | fa.js Found: 24 Missing: 94 11 | fi.js Found: 23 Missing: 95 12 | fr.js Found: 118 Missing: 0 13 | hr.js Found: 23 Missing: 95 14 | it.js Found: 118 Missing: 0 15 | nb.js Found: 118 Missing: 0 16 | nl.js Found: 118 Missing: 0 17 | no.js Found: 118 Missing: 0 18 | tr.js Found: 118 Missing: 0 19 | ug.js Found: 39 Missing: 79 20 | zh-cn.js Found: 118 Missing: 0 21 | -------------------------------------------------------------------------------- /cache/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 |

Cache

with Flask-Caching 5 |

These pages use time.sleep(1) to simulate a poor server or heavy work.

6 | 12 | Delete cache for bar 13 | Delete cache for baz 14 | Delete all cache 15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/de-ch.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'de-ch', { 6 | loadError: 'Während dem Lesen der Datei ist ein Fehler aufgetreten.', 7 | networkError: 'Während dem Hochladen der Datei ist ein Netzwerkfehler aufgetreten.', 8 | httpError404: 'Während dem Hochladen der Datei ist ein HTTP-Fehler aufgetreten (404: Datei nicht gefunden).', 9 | httpError403: 'Während dem Hochladen der Datei ist ein HTTP-Fehler aufgetreten (403: Verboten).', 10 | httpError: 'Während dem Hochladen der Datei ist ein HTTP-Fehler aufgetreten (Fehlerstatus: %1).', 11 | noUrlError: 'Hochlade-URL ist nicht definiert.', 12 | responseError: 'Falsche Antwort des Servers.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/de.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'de', { 6 | loadError: 'Während des Lesens der Datei ist ein Fehler aufgetreten.', 7 | networkError: 'Während des Hochladens der Datei ist ein Netzwerkfehler aufgetreten.', 8 | httpError404: 'Während des Hochladens der Datei ist ein HTTP-Fehler aufgetreten (404: Datei nicht gefunden).', 9 | httpError403: 'Während des Hochladens der Datei ist ein HTTP-Fehler aufgetreten (403: Verboten).', 10 | httpError: 'Während des Hochladens der Datei ist ein HTTP-Fehler aufgetreten (Fehlerstatus: %1).', 11 | noUrlError: 'Hochlade-URL ist nicht definiert.', 12 | responseError: 'Falsche Antwort des Servers.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/oc.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'oc', { 6 | loadError: 'Una error s\'es produita pendent la lectura del fichièr.', 7 | networkError: 'Una error de ret s\'es produita pendent lo mandadís del fichièr.', 8 | httpError404: 'Una error HTTP s\'es produita pendent lo mandadís del fichièr (404 : fichièr pas trobat).', 9 | httpError403: 'Una error HTTP s\'es produita pendent lo mandadís del fichièr (403 : accès refusat).', 10 | httpError: 'Una error HTTP s\'es produita pendent lo mandadís del fichièr (error : %1).', 11 | noUrlError: 'L\'URL de mandadís es pas especificada.', 12 | responseError: 'Responsa del servidor incorrècta.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/fr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'fr', { 6 | loadError: 'Une erreur est survenue lors de la lecture du fichier.', 7 | networkError: 'Une erreur réseau est survenue lors du téléversement du fichier.', 8 | httpError404: 'Une erreur HTTP est survenue durant le téléversement du fichier (404 : fichier non trouvé).', 9 | httpError403: 'Une erreur HTTP est survenue durant le téléversement du fichier (403 : accès refusé).', 10 | httpError: 'Une erreur HTTP est survenue durant le téléversement du fichier (erreur : %1).', 11 | noUrlError: 'L\'URL de téléversement n\'est pas spécifiée.', 12 | responseError: 'Réponse du serveur incorrecte.' 13 | } ); 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/old/sample_posteddata.php: -------------------------------------------------------------------------------- 1 |
 2 | 
 3 | -------------------------------------------------------------------------------------------
 4 |   CKEditor - Posted Data
 5 | 
 6 |   We are sorry, but your Web server does not support the PHP language used in this script.
 7 | 
 8 |   Please note that CKEditor can be used with any other server-side language than just PHP.
 9 |   To save the content created with CKEditor you need to read the POST data on the server
10 |   side and write it to a file or the database.
11 | 
12 |   Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
13 |   For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
14 | -------------------------------------------------------------------------------------------
15 | 
16 | 
*/ include "assets/posteddata.php"; ?> 17 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/lang/it.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang( 'filetools', 'it', { 6 | loadError: 'Si è verificato un errore durante la lettura del file.', 7 | networkError: 'Si è verificato un errore di rete durante il caricamento del file.', 8 | httpError404: 'Si è verificato un errore HTTP durante il caricamento del file (404: file non trovato).', 9 | httpError403: 'Si è verificato un errore HTTP durante il caricamento del file (403: accesso negato).', 10 | httpError: 'Si è verificato un errore HTTP durante il caricamento del file (stato dell\'errore: %1).', 11 | noUrlError: 'L\'URL per il caricamento non è stato definito.', 12 | responseError: 'La risposta del server non è corretta.' 13 | } ); 14 | -------------------------------------------------------------------------------- /hello/app.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | :author: Grey Li (李辉) 4 | :url: http://greyli.com 5 | :copyright: © 2019 Grey Li 6 | :license: MIT, see LICENSE for more details. 7 | """ 8 | import click 9 | from flask import Flask 10 | 11 | app = Flask(__name__) 12 | 13 | 14 | # the minimal Flask application 15 | @app.route('/') 16 | def index(): 17 | return '

Hello, World!

' 18 | 19 | 20 | # bind multiple URL for one view function 21 | @app.route('/hi') 22 | @app.route('/hello') 23 | def say_hello(): 24 | return '

Hello, Flask!

' 25 | 26 | 27 | # dynamic route, URL variable default 28 | @app.route('/greet', defaults={'name': 'Programmer'}) 29 | @app.route('/greet/') 30 | def greet(name): 31 | return '

Hello, %s!

' % name 32 | 33 | 34 | # custom flask cli command 35 | @app.cli.command() 36 | def hello(): 37 | """Just say hello.""" 38 | click.echo('Hello, Human!') 39 | -------------------------------------------------------------------------------- /template/static/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: auto; 3 | width: 750px; 4 | } 5 | 6 | nav ul { 7 | list-style-type: none; 8 | margin: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | background-color: #333; 12 | } 13 | 14 | nav li { 15 | float: left; 16 | } 17 | 18 | nav li a { 19 | display: block; 20 | color: white; 21 | text-align: center; 22 | padding: 14px 16px; 23 | text-decoration: none; 24 | } 25 | 26 | nav li a:hover { 27 | background-color: #111; 28 | } 29 | 30 | main { 31 | padding: 10px 20px; 32 | } 33 | 34 | footer { 35 | font-size: 13px; 36 | color: #888; 37 | border-top: 1px solid #eee; 38 | margin-top: 25px; 39 | text-align: center; 40 | padding: 10px; 41 | 42 | } 43 | 44 | .alert { 45 | position: relative; 46 | padding: 0.75rem 1.25rem; 47 | margin-bottom: 1rem; 48 | border: 1px solid transparent; 49 | border-radius: 0.25rem; 50 | color: #004085; 51 | background-color: #cce5ff; 52 | border-color: #b8daff; 53 | } 54 | -------------------------------------------------------------------------------- /assets/static/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: auto; 3 | width: 750px; 4 | } 5 | 6 | nav ul { 7 | list-style-type: none; 8 | margin: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | background-color: #333; 12 | } 13 | 14 | nav li { 15 | float: left; 16 | } 17 | 18 | nav li a { 19 | display: block; 20 | color: white; 21 | text-align: center; 22 | padding: 14px 16px; 23 | text-decoration: none; 24 | } 25 | 26 | nav li a:hover { 27 | background-color: #111; 28 | } 29 | 30 | main { 31 | padding: 10px 20px; 32 | } 33 | 34 | footer { 35 | font-size: 13px; 36 | color: #888; 37 | border-top: 1px solid #eee; 38 | margin-top: 25px; 39 | text-align: center; 40 | padding: 20px; 41 | 42 | } 43 | 44 | .alert { 45 | position: relative; 46 | padding: 0.75rem 1.25rem; 47 | margin-bottom: 1rem; 48 | border: 1px solid transparent; 49 | border-radius: 0.25rem; 50 | color: #004085; 51 | background-color: #cce5ff; 52 | border-color: #b8daff; 53 | } 54 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 2 | For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 3 | 4 | cs.js Found: 30 Missing: 0 5 | cy.js Found: 30 Missing: 0 6 | da.js Found: 12 Missing: 18 7 | de.js Found: 30 Missing: 0 8 | el.js Found: 25 Missing: 5 9 | eo.js Found: 30 Missing: 0 10 | fa.js Found: 30 Missing: 0 11 | fi.js Found: 30 Missing: 0 12 | fr.js Found: 30 Missing: 0 13 | gu.js Found: 12 Missing: 18 14 | he.js Found: 30 Missing: 0 15 | it.js Found: 30 Missing: 0 16 | mk.js Found: 5 Missing: 25 17 | nb.js Found: 30 Missing: 0 18 | nl.js Found: 30 Missing: 0 19 | no.js Found: 30 Missing: 0 20 | pt-br.js Found: 30 Missing: 0 21 | ro.js Found: 6 Missing: 24 22 | tr.js Found: 30 Missing: 0 23 | ug.js Found: 27 Missing: 3 24 | vi.js Found: 6 Missing: 24 25 | zh-cn.js Found: 30 Missing: 0 26 | -------------------------------------------------------------------------------- /form/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block content %} 4 |

Forms

5 | 18 | {% endblock %} -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/wsc/README.md: -------------------------------------------------------------------------------- 1 | CKEditor WebSpellChecker Plugin 2 | =============================== 3 | 4 | This plugin brings Web Spell Checker (WSC) into CKEditor. 5 | 6 | WSC is "installation-less", using the web-services of [WebSpellChecker.net](http://www.webspellchecker.net/). It's an out of the box solution. 7 | 8 | Installation 9 | ------------ 10 | 11 | 1. Clone/copy this repository contents in a new "plugins/wsc" folder in your CKEditor installation. 12 | 2. Enable the "wsc" plugin in the CKEditor configuration file (config.js): 13 | 14 | config.extraPlugins = 'wsc'; 15 | 16 | That's all. WSC will appear on the editor toolbar and will be ready to use. 17 | 18 | License 19 | ------- 20 | 21 | Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). 22 | 23 | See LICENSE.md for more information. 24 | 25 | Developed in cooperation with [WebSpellChecker.net](http://www.webspellchecker.net/). 26 | -------------------------------------------------------------------------------- /form/static/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: auto; 3 | width: 750px; 4 | } 5 | 6 | img { 7 | max-width: 710px; 8 | } 9 | 10 | nav ul { 11 | list-style-type: none; 12 | margin: 0; 13 | padding: 0; 14 | overflow: hidden; 15 | background-color: #333; 16 | } 17 | 18 | nav li { 19 | float: left; 20 | } 21 | 22 | nav li a { 23 | display: block; 24 | color: white; 25 | text-align: center; 26 | padding: 14px 16px; 27 | text-decoration: none; 28 | } 29 | 30 | nav li a:hover { 31 | background-color: #111; 32 | } 33 | 34 | main { 35 | padding: 10px 20px; 36 | } 37 | 38 | footer { 39 | font-size: 13px; 40 | color: #888; 41 | border-top: 1px solid #eee; 42 | margin-top: 25px; 43 | text-align: center; 44 | padding: 10px; 45 | 46 | } 47 | 48 | .alert { 49 | position: relative; 50 | padding: 0.75rem 1.25rem; 51 | margin-bottom: 1rem; 52 | border: 1px solid #b8daff; 53 | border-radius: 0.25rem; 54 | color: #004085; 55 | background-color: #cce5ff; 56 | } 57 | 58 | .error { 59 | color: red; 60 | } 61 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/scayt/README.md: -------------------------------------------------------------------------------- 1 | CKEditor SCAYT Plugin 2 | ===================== 3 | 4 | This plugin brings Spell Check As You Type (SCAYT) into up to CKEditor 4+. 5 | 6 | SCAYT is a "installation-less", using the web-services of [WebSpellChecker.net](http://www.webspellchecker.net/). It's an out of the box solution. 7 | 8 | Installation 9 | ------------ 10 | 11 | 1. Clone/copy this repository contents in a new "plugins/scayt" folder in your CKEditor installation. 12 | 2. Enable the "scayt" plugin in the CKEditor configuration file (config.js): 13 | 14 | config.extraPlugins = 'scayt'; 15 | 16 | That's all. SCAYT will appear on the editor toolbar and will be ready to use. 17 | 18 | License 19 | ------- 20 | 21 | Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). 22 | 23 | See LICENSE.md for more information. 24 | 25 | Developed in cooperation with [WebSpellChecker.net](http://www.webspellchecker.net/). 26 | -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/old/dialog/assets/my_dialog.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | 6 | CKEDITOR.dialog.add( 'myDialog', function() { 7 | return { 8 | title: 'My Dialog', 9 | minWidth: 400, 10 | minHeight: 200, 11 | contents: [ 12 | { 13 | id: 'tab1', 14 | label: 'First Tab', 15 | title: 'First Tab', 16 | elements: [ 17 | { 18 | id: 'input1', 19 | type: 'text', 20 | label: 'Text Field' 21 | }, 22 | { 23 | id: 'select1', 24 | type: 'select', 25 | label: 'Select Field', 26 | items: [ 27 | [ 'option1', 'value1' ], 28 | [ 'option2', 'value2' ] 29 | ] 30 | } 31 | ] 32 | }, 33 | { 34 | id: 'tab2', 35 | label: 'Second Tab', 36 | title: 'Second Tab', 37 | elements: [ 38 | { 39 | id: 'button1', 40 | type: 'button', 41 | label: 'Button Field' 42 | } 43 | ] 44 | } 45 | ] 46 | }; 47 | } ); 48 | 49 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Grey Li 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/neo.css: -------------------------------------------------------------------------------- 1 | /* neo theme for codemirror */ 2 | 3 | /* Color scheme */ 4 | 5 | .cm-s-neo.CodeMirror { 6 | background-color:#ffffff; 7 | color:#2e383c; 8 | line-height:1.4375; 9 | } 10 | .cm-s-neo .cm-comment {color:#75787b} 11 | .cm-s-neo .cm-keyword, .cm-s-neo .cm-property {color:#1d75b3} 12 | .cm-s-neo .cm-atom,.cm-s-neo .cm-number {color:#75438a} 13 | .cm-s-neo .cm-node,.cm-s-neo .cm-tag {color:#9c3328} 14 | .cm-s-neo .cm-string {color:#b35e14} 15 | .cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier {color:#047d65} 16 | 17 | 18 | /* Editor styling */ 19 | 20 | .cm-s-neo pre { 21 | padding:0; 22 | } 23 | 24 | .cm-s-neo .CodeMirror-gutters { 25 | border:none; 26 | border-right:10px solid transparent; 27 | background-color:transparent; 28 | } 29 | 30 | .cm-s-neo .CodeMirror-linenumber { 31 | padding:0; 32 | color:#e0e2e5; 33 | } 34 | 35 | .cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; } 36 | .cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; } 37 | 38 | .cm-s-neo div.CodeMirror-cursor { 39 | width: auto; 40 | border: 0; 41 | background: rgba(155,157,162,0.37); 42 | z-index: 1; 43 | } 44 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/codesnippet/dialogs/codesnippet.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | (function(){CKEDITOR.dialog.add("codeSnippet",function(c){var b=c._.codesnippet.langs,d=c.lang.codesnippet,g=document.documentElement.clientHeight,e=[],f;e.push([c.lang.common.notSet,""]);for(f in b)e.push([b[f],f]);b=CKEDITOR.document.getWindow().getViewPaneSize();c=Math.min(b.width-70,800);b=b.height/1.5;650>g&&(b=g-220);return{title:d.title,minHeight:200,resizable:CKEDITOR.DIALOG_RESIZE_NONE,contents:[{id:"info",elements:[{id:"lang",type:"select",label:d.language,items:e,setup:function(a){a.ready&& 6 | a.data.lang&&this.setValue(a.data.lang);!CKEDITOR.env.gecko||a.data.lang&&a.ready||(this.getInputElement().$.selectedIndex=-1)},commit:function(a){a.setData("lang",this.getValue())}},{id:"code",type:"textarea",label:d.codeContents,setup:function(a){this.setValue(a.data.code)},commit:function(a){a.setData("code",this.getValue())},required:!0,validate:CKEDITOR.dialog.validate.notEmpty(d.emptySnippetError),inputStyle:"cursor:auto;width:"+c+"px;height:"+b+"px;tab-size:4;text-align:left;","class":"cke_source"}]}]}})})(); -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/tableselection/styles/tableselection.css: -------------------------------------------------------------------------------- 1 | .cke_table-faked-selection-editor *::selection, table[data-cke-table-faked-selection-table] *::selection { 2 | background: transparent; 3 | } 4 | 5 | .cke_table-faked-selection-editor { 6 | /* With love, dedicated for Chrome, until https://bugs.chromium.org/p/chromium/issues/detail?id=702610 is resolved. 7 | It will force repaint (without reflow) so that selection is properly displayed. */ 8 | transform: translateZ( 0 ); 9 | } 10 | 11 | .cke_table-faked-selection { 12 | background: darkgray !important; 13 | color: black; 14 | } 15 | .cke_table-faked-selection a { 16 | color: black; 17 | } 18 | .cke_editable:focus .cke_table-faked-selection { 19 | /* We have to use !important here, as td might specify it's own background, thus table selection 20 | would not be visible. */ 21 | background: #0076cb !important; 22 | color: white; 23 | } 24 | .cke_editable:focus .cke_table-faked-selection a { 25 | color: white; 26 | } 27 | .cke_table-faked-selection::-moz-selection, .cke_table-faked-selection ::-moz-selection { 28 | background: transparent; 29 | } 30 | .cke_table-faked-selection::selection, .cke_table-faked-selection ::selection { 31 | background: transparent; 32 | } 33 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/eclipse.css: -------------------------------------------------------------------------------- 1 | .cm-s-eclipse span.cm-meta {color: #FF1717;} 2 | .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } 3 | .cm-s-eclipse span.cm-atom {color: #219;} 4 | .cm-s-eclipse span.cm-number {color: #164;} 5 | .cm-s-eclipse span.cm-def {color: #00f;} 6 | .cm-s-eclipse span.cm-variable {color: black;} 7 | .cm-s-eclipse span.cm-variable-2 {color: #0000C0;} 8 | .cm-s-eclipse span.cm-variable-3 {color: #0000C0;} 9 | .cm-s-eclipse span.cm-property {color: black;} 10 | .cm-s-eclipse span.cm-operator {color: black;} 11 | .cm-s-eclipse span.cm-comment {color: #3F7F5F;} 12 | .cm-s-eclipse span.cm-string {color: #2A00FF;} 13 | .cm-s-eclipse span.cm-string-2 {color: #f50;} 14 | .cm-s-eclipse span.cm-qualifier {color: #555;} 15 | .cm-s-eclipse span.cm-builtin {color: #30a;} 16 | .cm-s-eclipse span.cm-bracket {color: #cc7;} 17 | .cm-s-eclipse span.cm-tag {color: #170;} 18 | .cm-s-eclipse span.cm-attribute {color: #00c;} 19 | .cm-s-eclipse span.cm-link {color: #219;} 20 | .cm-s-eclipse span.cm-error {color: #f00;} 21 | 22 | .cm-s-eclipse .CodeMirror-activeline-background {background: #e8f2ff !important;} 23 | .cm-s-eclipse .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 24 | -------------------------------------------------------------------------------- /template/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% block head %} 5 | 6 | {% block title %}Template - HelloFlask{% endblock %} 7 | 8 | {% block styles %} 9 | 10 | {% endblock %} 11 | {% endblock %} 12 | 13 | 14 | 17 | 18 |
19 | {% for message in get_flashed_messages() %} 20 |
{{ message }}
21 | {% endfor %} 22 | {% block content %}{% endblock %} 23 |
24 | 32 | {% block scripts %}{% endblock %} 33 | 34 | 35 | -------------------------------------------------------------------------------- /assets/templates/unoptimized.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block styles %} 4 | 5 | 6 | 7 | 8 | 9 | {% endblock %} 10 | 11 | {% block content %} 12 |

Foo

13 |

Unoptimized.

14 | {% endblock %} 15 | 16 | 17 | {% block scripts %} 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | {% endblock %} 26 | -------------------------------------------------------------------------------- /email/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% block head %} 5 | 6 | {% block title %}Email - HelloFlask{% endblock %} 7 | 8 | {% block styles %} 9 | 10 | {% endblock %} 11 | {% endblock %} 12 | 13 | 14 | 19 | 20 |
21 | {% for message in get_flashed_messages() %} 22 |
23 | {{ message }} 24 |
25 | {% endfor %} 26 | {% block content %}{% endblock %} 27 |
28 | 36 | {% block scripts %}{% endblock %} 37 | 38 | 39 | -------------------------------------------------------------------------------- /cache/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% block head %} 5 | 6 | {% block title %}Cache - HelloFlask{% endblock %} 7 | 8 | {% block styles %} 9 | 10 | {% endblock %} 11 | {% endblock %} 12 | 13 | 14 | 19 | 20 |
21 | {% for message in get_flashed_messages() %} 22 |
23 | {{ message }} 24 |
25 | {% endfor %} 26 | {% block content %}{% endblock %} 27 |
28 | 36 | {% block scripts %}{% endblock %} 37 | 38 | 39 | -------------------------------------------------------------------------------- /assets/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% block head %} 5 | 6 | {% block title %}Assets - HelloFlask{% endblock %} 7 | 8 | {% block styles %} 9 | 10 | {% endblock %} 11 | {% endblock %} 12 | 13 | 14 | 19 | 20 |
21 | {% for message in get_flashed_messages() %} 22 |
23 | {{ message }} 24 |
25 | {% endfor %} 26 | {% block content %}{% endblock %} 27 |
28 | 36 | {% block scripts %}{% endblock %} 37 | 38 | 39 | -------------------------------------------------------------------------------- /database/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% block head %} 5 | 6 | {% block title %}Database - HelloFlask{% endblock %} 7 | 8 | {% block styles %} 9 | 10 | {% endblock %} 11 | {% endblock %} 12 | 13 | 14 | 19 | 20 |
21 | {% for message in get_flashed_messages() %} 22 |
23 | {{ message }} 24 |
25 | {% endfor %} 26 | {% block content %}{% endblock %} 27 |
28 | 36 | {% block scripts %}{% endblock %} 37 | 38 | 39 | -------------------------------------------------------------------------------- /email/static/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: auto; 3 | width: 750px; 4 | } 5 | 6 | nav ul { 7 | list-style-type: none; 8 | margin: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | background-color: #333; 12 | } 13 | 14 | nav li { 15 | float: left; 16 | } 17 | 18 | nav li a { 19 | display: block; 20 | color: white; 21 | text-align: center; 22 | padding: 14px 16px; 23 | text-decoration: none; 24 | } 25 | 26 | nav li a:hover { 27 | background-color: #111; 28 | } 29 | 30 | main { 31 | padding: 10px 20px; 32 | } 33 | 34 | footer { 35 | font-size: 13px; 36 | color: #888; 37 | border-top: 1px solid #eee; 38 | margin-top: 25px; 39 | text-align: center; 40 | padding: 20px; 41 | 42 | } 43 | 44 | .alert { 45 | position: relative; 46 | padding: 0.75rem 1.25rem; 47 | margin-bottom: 1rem; 48 | border: 1px solid #b8daff; 49 | border-radius: 0.25rem; 50 | color: #004085; 51 | background-color: #cce5ff; 52 | } 53 | 54 | 55 | .btn { 56 | font-size: 14px; 57 | padding: 5px 10px; 58 | text-decoration: none; 59 | cursor: pointer; 60 | background-color: white; 61 | color: black; 62 | border: 2px solid #555555; 63 | } 64 | 65 | .btn:hover { 66 | text-decoration: none; 67 | background-color: black; 68 | color: white; 69 | border: 2px solid black; 70 | } -------------------------------------------------------------------------------- /form/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% block head %} 5 | {% block metas %} 6 | 7 | {% endblock metas %} 8 | 9 | {% block title %}Form - HelloFlask{% endblock %} 10 | 11 | {% block styles %} 12 | 13 | {% endblock styles %} 14 | {% endblock head %} 15 | 16 | 17 | 24 | 25 |
26 | {% for message in get_flashed_messages() %} 27 |
28 | {{ message }} 29 |
30 | {% endfor %} 31 | {% block content %}{% endblock %} 32 |
33 | 41 | {% block scripts %}{% endblock %} 42 | 43 | 44 | -------------------------------------------------------------------------------- /assets/app.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | :author: Grey Li (李辉) 4 | :url: http://greyli.com 5 | :copyright: © 2019 Grey Li 6 | :license: MIT, see LICENSE for more details. 7 | """ 8 | from flask import Flask, render_template 9 | from flask_assets import Environment, Bundle 10 | from flask_ckeditor import CKEditor 11 | 12 | 13 | app = Flask(__name__) 14 | app.secret_key = 'dev key' 15 | 16 | assets = Environment(app) 17 | ckeditor = CKEditor(app) 18 | 19 | css = Bundle('css/bootstrap.min.css', 20 | 'css/bootstrap.css', 21 | 'css/dropzone.min.css', 22 | 'css/jquery.Jcrop.min.css', 23 | 'css/style.css', 24 | filters='cssmin', output='gen/packed.css') 25 | 26 | js = Bundle('js/jquery.min.js', 27 | 'js/popper.min.js', 28 | 'js/bootstrap.min.js', 29 | 'js/bootstrap.js', 30 | 'js/moment-with-locales.min.js', 31 | 'js/dropzone.min.js', 32 | 'js/jquery.Jcrop.min.js', 33 | filters='jsmin', output='gen/packed.js') 34 | 35 | assets.register('js_all', js) 36 | assets.register('css_all', css) 37 | 38 | 39 | @app.route('/') 40 | def index(): 41 | return render_template('index.html') 42 | 43 | 44 | @app.route('/foo') 45 | def unoptimized(): 46 | return render_template('unoptimized.html') 47 | 48 | 49 | @app.route('/bar') 50 | def optimized(): 51 | return render_template('optimized.html') 52 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/cobalt.css: -------------------------------------------------------------------------------- 1 | .cm-s-cobalt.CodeMirror { background: #002240; color: white; } 2 | .cm-s-cobalt div.CodeMirror-selected { background: #b36539 !important; } 3 | .cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } 4 | .cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; } 5 | .cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 6 | .cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; } 7 | .cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white !important; } 8 | 9 | .cm-s-cobalt span.cm-comment { color: #08f; } 10 | .cm-s-cobalt span.cm-atom { color: #845dc4; } 11 | .cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; } 12 | .cm-s-cobalt span.cm-keyword { color: #ffee80; } 13 | .cm-s-cobalt span.cm-string { color: #3ad900; } 14 | .cm-s-cobalt span.cm-meta { color: #ff9d00; } 15 | .cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; } 16 | .cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; } 17 | .cm-s-cobalt span.cm-bracket { color: #d8d8d8; } 18 | .cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; } 19 | .cm-s-cobalt span.cm-link { color: #845dc4; } 20 | .cm-s-cobalt span.cm-error { color: #9d1e15; } 21 | 22 | .cm-s-cobalt .CodeMirror-activeline-background {background: #002D57 !important;} 23 | .cm-s-cobalt .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important} 24 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/wsc/skins/moono-lisa/wsc.css: -------------------------------------------------------------------------------- 1 | .cke_dialog_body #overlayBlock, 2 | .cke_dialog_body #no_check_over 3 | { 4 | top: 39px !important; 5 | } 6 | 7 | div[name=SpellTab] .wsc-spelltab-bottom .cke_dialog_ui_vbox td > .cke_dialog_ui_button:first-child 8 | { 9 | margin-top: 4px; 10 | } 11 | 12 | div[name=SpellTab] .wsc-spelltab-bottom .cke_dialog_ui_hbox_first .cke_dialog_ui_select > label 13 | { 14 | margin-left: 0; 15 | } 16 | 17 | div[name=SpellTab] .wsc-spelltab-bottom .cke_dialog_ui_hbox_first .cke_dialog_ui_select div.cke_dialog_ui_input_select 18 | { 19 | width: 140px !important; 20 | } 21 | 22 | div[name=SpellTab] .wsc-spelltab-bottom .cke_dialog_ui_hbox_first .cke_dialog_ui_select select.cke_dialog_ui_input_select, 23 | div[name=Thesaurus] div.cke_dialog_ui_input_select select.cke_dialog_ui_input_select 24 | { 25 | margin-top: 1px; 26 | } 27 | 28 | div[name=SpellTab] .wsc-spelltab-bottom .cke_dialog_ui_hbox_first .cke_dialog_ui_select select.cke_dialog_ui_input_select:focus, 29 | div[name=Thesaurus] div.cke_dialog_ui_input_select select.cke_dialog_ui_input_select:focus 30 | { 31 | margin-top: 0; 32 | } 33 | 34 | div[name=GrammTab] .cke_dialog_ui_vbox tbody > tr:first-child .cke_dialog_ui_button, 35 | div[name=Thesaurus] .cke_dialog_ui_vbox tbody > tr:first-child .cke_dialog_ui_button 36 | { 37 | margin-top: 4px !important; 38 | } 39 | 40 | div[name=Thesaurus] div.cke_dialog_ui_input_select 41 | { 42 | width: 180px !important; 43 | } 44 | -------------------------------------------------------------------------------- /assets/static/ckeditor/config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | 6 | CKEDITOR.editorConfig = function( config ) { 7 | // Define changes to default configuration here. 8 | // For complete reference see: 9 | // http://docs.ckeditor.com/#!/api/CKEDITOR.config 10 | 11 | // The toolbar groups arrangement, optimized for two toolbar rows. 12 | config.toolbarGroups = [ 13 | { name: 'clipboard', groups: [ 'clipboard', 'undo' ] }, 14 | { name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ] }, 15 | { name: 'links' }, 16 | { name: 'insert' }, 17 | { name: 'forms' }, 18 | { name: 'tools' }, 19 | { name: 'document', groups: [ 'mode', 'document', 'doctools' ] }, 20 | { name: 'others' }, 21 | '/', 22 | { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] }, 23 | { name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] }, 24 | { name: 'styles' }, 25 | { name: 'colors' }, 26 | { name: 'about' } 27 | ]; 28 | 29 | // Remove some buttons provided by the standard plugins, which are 30 | // not needed in the Standard(s) toolbar. 31 | config.removeButtons = 'Underline,Subscript,Superscript'; 32 | 33 | // Set the most common block elements. 34 | config.format_tags = 'p;h1;h2;h3;pre'; 35 | 36 | // Simplify the dialog windows. 37 | config.removeDialogTabs = 'image:advanced;link:advanced'; 38 | }; 39 | -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/old/assets/uilanguages/languages.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | var CKEDITOR_LANGS=function(){var c={af:"Afrikaans",ar:"Arabic",az:"Azerbaijani",bg:"Bulgarian",bn:"Bengali/Bangla",bs:"Bosnian",ca:"Catalan",cs:"Czech",cy:"Welsh",da:"Danish",de:"German","de-ch":"German (Switzerland)",el:"Greek",en:"English","en-au":"English (Australia)","en-ca":"English (Canadian)","en-gb":"English (United Kingdom)",eo:"Esperanto",es:"Spanish","es-mx":"Spanish (Mexico)",et:"Estonian",eu:"Basque",fa:"Persian",fi:"Finnish",fo:"Faroese",fr:"French","fr-ca":"French (Canada)",gl:"Galician", 6 | gu:"Gujarati",he:"Hebrew",hi:"Hindi",hr:"Croatian",hu:"Hungarian",id:"Indonesian",is:"Icelandic",it:"Italian",ja:"Japanese",ka:"Georgian",km:"Khmer",ko:"Korean",ku:"Kurdish",lt:"Lithuanian",lv:"Latvian",mk:"Macedonian",mn:"Mongolian",ms:"Malay",nb:"Norwegian Bokmal",nl:"Dutch",no:"Norwegian",oc:"Occitan",pl:"Polish",pt:"Portuguese (Portugal)","pt-br":"Portuguese (Brazil)",ro:"Romanian",ru:"Russian",si:"Sinhala",sk:"Slovak",sq:"Albanian",sl:"Slovenian",sr:"Serbian (Cyrillic)","sr-latn":"Serbian (Latin)", 7 | sv:"Swedish",th:"Thai",tr:"Turkish",tt:"Tatar",ug:"Uighur",uk:"Ukrainian",vi:"Vietnamese",zh:"Chinese Traditional","zh-cn":"Chinese Simplified"},b=[],a;for(a in CKEDITOR.lang.languages)b.push({code:a,name:c[a]||a});b.sort(function(a,b){return a.name//samples/index.html 36 | 37 | For example: 38 | 39 | http://www.example.com/ckeditor/samples/index.html 40 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/rubyblue.css: -------------------------------------------------------------------------------- 1 | .cm-s-rubyblue.CodeMirror { background: #112435; color: white; } 2 | .cm-s-rubyblue div.CodeMirror-selected { background: #38566F !important; } 3 | .cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; } 4 | .cm-s-rubyblue .CodeMirror-guttermarker { color: white; } 5 | .cm-s-rubyblue .CodeMirror-guttermarker-subtle { color: #3E7087; } 6 | .cm-s-rubyblue .CodeMirror-linenumber { color: white; } 7 | .cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white !important; } 8 | 9 | .cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; } 10 | .cm-s-rubyblue span.cm-atom { color: #F4C20B; } 11 | .cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color: #82C6E0; } 12 | .cm-s-rubyblue span.cm-keyword { color: #F0F; } 13 | .cm-s-rubyblue span.cm-string { color: #F08047; } 14 | .cm-s-rubyblue span.cm-meta { color: #F0F; } 15 | .cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; } 16 | .cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def { color: white; } 17 | .cm-s-rubyblue span.cm-bracket { color: #F0F; } 18 | .cm-s-rubyblue span.cm-link { color: #F4C20B; } 19 | .cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; } 20 | .cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; } 21 | .cm-s-rubyblue span.cm-error { color: #AF2018; } 22 | 23 | .cm-s-rubyblue .CodeMirror-activeline-background {background: #173047 !important;} 24 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/monokai.css: -------------------------------------------------------------------------------- 1 | /* Based on Sublime Text's Monokai theme */ 2 | 3 | .cm-s-monokai.CodeMirror {background: #272822; color: #f8f8f2;} 4 | .cm-s-monokai div.CodeMirror-selected {background: #49483E !important;} 5 | .cm-s-monokai .CodeMirror-gutters {background: #272822; border-right: 0px;} 6 | .cm-s-monokai .CodeMirror-guttermarker { color: white; } 7 | .cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 8 | .cm-s-monokai .CodeMirror-linenumber {color: #d0d0d0;} 9 | .cm-s-monokai .CodeMirror-cursor {border-left: 1px solid #f8f8f0 !important;} 10 | 11 | .cm-s-monokai span.cm-comment {color: #75715e;} 12 | .cm-s-monokai span.cm-atom {color: #ae81ff;} 13 | .cm-s-monokai span.cm-number {color: #ae81ff;} 14 | 15 | .cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute {color: #a6e22e;} 16 | .cm-s-monokai span.cm-keyword {color: #f92672;} 17 | .cm-s-monokai span.cm-string {color: #e6db74;} 18 | 19 | .cm-s-monokai span.cm-variable {color: #a6e22e;} 20 | .cm-s-monokai span.cm-variable-2 {color: #9effff;} 21 | .cm-s-monokai span.cm-def {color: #fd971f;} 22 | .cm-s-monokai span.cm-bracket {color: #f8f8f2;} 23 | .cm-s-monokai span.cm-tag {color: #f92672;} 24 | .cm-s-monokai span.cm-link {color: #ae81ff;} 25 | .cm-s-monokai span.cm-error {background: #f92672; color: #f8f8f0;} 26 | 27 | .cm-s-monokai .CodeMirror-activeline-background {background: #373831 !important;} 28 | .cm-s-monokai .CodeMirror-matchingbracket { 29 | text-decoration: underline; 30 | color: white !important; 31 | } 32 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/scayt/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | SCAYT plugin for CKEditor 4 Changelog 2 | ==================== 3 | ### CKEditor 4.5.6 4 | 5 | New Features: 6 | * CKEditor [language addon](http://ckeditor.com/addon/language) support 7 | * CKEditor [placeholder addon](http://ckeditor.com/addon/placeholder) support 8 | * Drag and Drop support 9 | * *Experimental* GRAYT functionality http://www.webspellchecker.net/samples/scayt-ckeditor-plugin.html#25 10 | 11 | Fixed issues: 12 | * [#98](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/98) SCAYT Affects Dialog Double Click. Fixed in SCAYT Core. 13 | * [#102](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/102) SCAYT Core performance enhancements 14 | * [#104](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/104) SCAYT's spans leak into the clipboard and after pasting 15 | * [#105](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/105) Javascript error fired in case of multiple instances of CKEditor in one page 16 | * [#107](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/107) SCAYT should not check non-editable parts of content 17 | * [#108](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/108) Latest SCAYT copies id of editor element to the iframe 18 | * SCAYT stops working when CKEditor Undo plug-in not enabled 19 | * Issue with pasting SCAYT markup in CKEditor 20 | * [#32](https://github.com/WebSpellChecker/ckeditor-plugin-wsc/issues/32) SCAYT stops working after pressing Cancel button in WSC dialog 21 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/night.css: -------------------------------------------------------------------------------- 1 | /* Loosely based on the Midnight Textmate theme */ 2 | 3 | .cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; } 4 | .cm-s-night div.CodeMirror-selected { background: #447 !important; } 5 | .cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } 6 | .cm-s-night .CodeMirror-guttermarker { color: white; } 7 | .cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; } 8 | .cm-s-night .CodeMirror-linenumber { color: #f8f8f8; } 9 | .cm-s-night .CodeMirror-cursor { border-left: 1px solid white !important; } 10 | 11 | .cm-s-night span.cm-comment { color: #6900a1; } 12 | .cm-s-night span.cm-atom { color: #845dc4; } 13 | .cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; } 14 | .cm-s-night span.cm-keyword { color: #599eff; } 15 | .cm-s-night span.cm-string { color: #37f14a; } 16 | .cm-s-night span.cm-meta { color: #7678e2; } 17 | .cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; } 18 | .cm-s-night span.cm-variable-3, .cm-s-night span.cm-def { color: white; } 19 | .cm-s-night span.cm-bracket { color: #8da6ce; } 20 | .cm-s-night span.cm-comment { color: #6900a1; } 21 | .cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; } 22 | .cm-s-night span.cm-link { color: #845dc4; } 23 | .cm-s-night span.cm-error { color: #9d1e15; } 24 | 25 | .cm-s-night .CodeMirror-activeline-background {background: #1C005A !important;} 26 | .cm-s-night .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} 27 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/wsc/dialogs/wsc.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.html or http://ckeditor.com/license 4 | */ 5 | 6 | html, body 7 | { 8 | background-color: transparent; 9 | margin: 0px; 10 | padding: 0px; 11 | } 12 | 13 | body 14 | { 15 | padding: 10px; 16 | } 17 | 18 | body, td, input, select, textarea 19 | { 20 | font-size: 11px; 21 | font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana; 22 | } 23 | 24 | .midtext 25 | { 26 | padding:0px; 27 | margin:10px; 28 | } 29 | 30 | .midtext p 31 | { 32 | padding:0px; 33 | margin:10px; 34 | } 35 | 36 | .Button 37 | { 38 | border: #737357 1px solid; 39 | color: #3b3b1f; 40 | background-color: #c7c78f; 41 | } 42 | 43 | .PopupTabArea 44 | { 45 | color: #737357; 46 | background-color: #e3e3c7; 47 | } 48 | 49 | .PopupTitleBorder 50 | { 51 | border-bottom: #d5d59d 1px solid; 52 | } 53 | .PopupTabEmptyArea 54 | { 55 | padding-left: 10px; 56 | border-bottom: #d5d59d 1px solid; 57 | } 58 | 59 | .PopupTab, .PopupTabSelected 60 | { 61 | border-right: #d5d59d 1px solid; 62 | border-top: #d5d59d 1px solid; 63 | border-left: #d5d59d 1px solid; 64 | padding: 3px 5px 3px 5px; 65 | color: #737357; 66 | } 67 | 68 | .PopupTab 69 | { 70 | margin-top: 1px; 71 | border-bottom: #d5d59d 1px solid; 72 | cursor: pointer; 73 | } 74 | 75 | .PopupTabSelected 76 | { 77 | font-weight: bold; 78 | cursor: default; 79 | padding-top: 4px; 80 | border-bottom: #f1f1e3 1px solid; 81 | background-color: #f1f1e3; 82 | } 83 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/wsc/LICENSE.md: -------------------------------------------------------------------------------- 1 | Software License Agreement 2 | ========================== 3 | 4 | **CKEditor WSC Plugin** 5 | Copyright © 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved. 6 | 7 | Licensed under the terms of any of the following licenses at your choice: 8 | 9 | * GNU General Public License Version 2 or later (the "GPL"): 10 | http://www.gnu.org/licenses/gpl.html 11 | 12 | * GNU Lesser General Public License Version 2.1 or later (the "LGPL"): 13 | http://www.gnu.org/licenses/lgpl.html 14 | 15 | * Mozilla Public License Version 1.1 or later (the "MPL"): 16 | http://www.mozilla.org/MPL/MPL-1.1.html 17 | 18 | You are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled "legal.txt" in your version of this software, indicating your license choice. 19 | 20 | Sources of Intellectual Property Included in this plugin 21 | -------------------------------------------------------- 22 | 23 | Where not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission. 24 | 25 | Trademarks 26 | ---------- 27 | 28 | CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. 29 | -------------------------------------------------------------------------------- /cache/static/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: auto; 3 | width: 750px; 4 | } 5 | 6 | nav ul { 7 | list-style-type: none; 8 | margin: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | background-color: #333; 12 | } 13 | 14 | nav li { 15 | float: left; 16 | } 17 | 18 | nav li a { 19 | display: block; 20 | color: white; 21 | text-align: center; 22 | padding: 14px 16px; 23 | text-decoration: none; 24 | } 25 | 26 | nav li a:hover { 27 | background-color: #111; 28 | } 29 | 30 | main { 31 | padding: 10px 20px; 32 | } 33 | 34 | footer { 35 | font-size: 13px; 36 | color: #888; 37 | border-top: 1px solid #eee; 38 | margin-top: 25px; 39 | text-align: center; 40 | padding: 20px; 41 | 42 | } 43 | 44 | .alert { 45 | position: relative; 46 | padding: 0.75rem 1.25rem; 47 | margin-bottom: 1rem; 48 | border: 1px solid transparent; 49 | border-radius: 0.25rem; 50 | color: #004085; 51 | background-color: #cce5ff; 52 | border-color: #b8daff; 53 | } 54 | 55 | .note p { 56 | padding: 10px; 57 | border-left: solid 2px #bbb; 58 | } 59 | 60 | .note form { 61 | display: inline; 62 | } 63 | 64 | 65 | .btn { 66 | font-family: Arial; 67 | font-size: 14px; 68 | padding: 5px 10px; 69 | text-decoration: none; 70 | border:none; 71 | cursor: pointer; 72 | background-color: white; 73 | color: black; 74 | border: 2px solid #555555; 75 | } 76 | 77 | .btn:hover { 78 | text-decoration: none; 79 | background-color: black; 80 | color: white; 81 | border: 2px solid black; 82 | } -------------------------------------------------------------------------------- /database/static/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: auto; 3 | width: 750px; 4 | } 5 | 6 | nav ul { 7 | list-style-type: none; 8 | margin: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | background-color: #333; 12 | } 13 | 14 | nav li { 15 | float: left; 16 | } 17 | 18 | nav li a { 19 | display: block; 20 | color: white; 21 | text-align: center; 22 | padding: 14px 16px; 23 | text-decoration: none; 24 | } 25 | 26 | nav li a:hover { 27 | background-color: #111; 28 | } 29 | 30 | main { 31 | padding: 10px 20px; 32 | } 33 | 34 | footer { 35 | font-size: 13px; 36 | color: #888; 37 | border-top: 1px solid #eee; 38 | margin-top: 25px; 39 | text-align: center; 40 | padding: 20px; 41 | 42 | } 43 | 44 | .alert { 45 | position: relative; 46 | padding: 0.75rem 1.25rem; 47 | margin-bottom: 1rem; 48 | border: 1px solid transparent; 49 | border-radius: 0.25rem; 50 | color: #004085; 51 | background-color: #cce5ff; 52 | border-color: #b8daff; 53 | } 54 | 55 | .note p { 56 | padding: 10px; 57 | border-left: solid 2px #bbb; 58 | } 59 | 60 | .note form { 61 | display: inline; 62 | } 63 | 64 | 65 | .btn { 66 | font-family: Arial; 67 | font-size: 14px; 68 | padding: 5px 10px; 69 | text-decoration: none; 70 | border:none; 71 | cursor: pointer; 72 | background-color: white; 73 | color: black; 74 | border: 2px solid #555555; 75 | } 76 | 77 | .btn:hover { 78 | text-decoration: none; 79 | background-color: black; 80 | color: white; 81 | border: 2px solid black; 82 | } -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/scayt/LICENSE.md: -------------------------------------------------------------------------------- 1 | Software License Agreement 2 | ========================== 3 | 4 | **CKEditor SCAYT Plugin** 5 | Copyright © 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved. 6 | 7 | Licensed under the terms of any of the following licenses at your choice: 8 | 9 | * GNU General Public License Version 2 or later (the "GPL"): 10 | http://www.gnu.org/licenses/gpl.html 11 | 12 | * GNU Lesser General Public License Version 2.1 or later (the "LGPL"): 13 | http://www.gnu.org/licenses/lgpl.html 14 | 15 | * Mozilla Public License Version 1.1 or later (the "MPL"): 16 | http://www.mozilla.org/MPL/MPL-1.1.html 17 | 18 | You are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled "legal.txt" in your version of this software, indicating your license choice. 19 | 20 | Sources of Intellectual Property Included in this plugin 21 | -------------------------------------------------------- 22 | 23 | Where not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission. 24 | 25 | Trademarks 26 | ---------- 27 | 28 | CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. 29 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/scayt/dialogs/toolbar.css: -------------------------------------------------------------------------------- 1 | a 2 | { 3 | text-decoration:none; 4 | padding: 2px 4px 4px 6px; 5 | display : block; 6 | border-width: 1px; 7 | border-style: solid; 8 | margin : 0px; 9 | } 10 | 11 | a.cke_scayt_toogle:hover, 12 | a.cke_scayt_toogle:focus, 13 | a.cke_scayt_toogle:active 14 | { 15 | border-color: #316ac5; 16 | background-color: #dff1ff; 17 | color : #000; 18 | cursor: pointer; 19 | margin : 0px; 20 | } 21 | a.cke_scayt_toogle { 22 | color : #316ac5; 23 | border-color: #fff; 24 | } 25 | .scayt_enabled a.cke_scayt_item { 26 | color : #316ac5; 27 | border-color: #fff; 28 | margin : 0px; 29 | } 30 | .scayt_disabled a.cke_scayt_item { 31 | color : gray; 32 | border-color : #fff; 33 | } 34 | .scayt_enabled a.cke_scayt_item:hover, 35 | .scayt_enabled a.cke_scayt_item:focus, 36 | .scayt_enabled a.cke_scayt_item:active 37 | { 38 | border-color: #316ac5; 39 | background-color: #dff1ff; 40 | color : #000; 41 | cursor: pointer; 42 | } 43 | .scayt_disabled a.cke_scayt_item:hover, 44 | .scayt_disabled a.cke_scayt_item:focus, 45 | .scayt_disabled a.cke_scayt_item:active 46 | { 47 | border-color: gray; 48 | background-color: #dff1ff; 49 | color : gray; 50 | cursor: no-drop; 51 | } 52 | .cke_scayt_set_on, .cke_scayt_set_off 53 | { 54 | display: none; 55 | } 56 | .scayt_enabled .cke_scayt_set_on 57 | { 58 | display: none; 59 | } 60 | .scayt_disabled .cke_scayt_set_on 61 | { 62 | display: inline; 63 | } 64 | .scayt_disabled .cke_scayt_set_off 65 | { 66 | display: none; 67 | } 68 | .scayt_enabled .cke_scayt_set_off 69 | { 70 | display: inline; 71 | } 72 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/filetools/dev/uploaddebugger.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | 6 | 'use strict'; 7 | 8 | // Slow down the upload process. 9 | // This trick works only on Chrome. 10 | 11 | ( function() { 12 | XMLHttpRequest.prototype.baseSend = XMLHttpRequest.prototype.send; 13 | 14 | XMLHttpRequest.prototype.send = function( data ) { 15 | var baseOnProgress = this.onprogress, 16 | baseOnLoad = this.onload; 17 | 18 | this.onprogress = function() {}; 19 | 20 | this.onload = function( evt ) { 21 | // Total file size. 22 | var total = 1163, 23 | step = Math.round( total / 10 ), 24 | loaded = 0, 25 | xhr = this; 26 | 27 | function progress() { 28 | setTimeout( function() { 29 | if ( xhr.aborted ) { 30 | return; 31 | } 32 | 33 | loaded += step; 34 | if ( loaded > total ) { 35 | loaded = total; 36 | } 37 | 38 | if ( loaded > step * 4 && xhr.responseText.indexOf( 'incorrectFile' ) > 0 ) { 39 | xhr.aborted = true; 40 | xhr.onerror(); 41 | } else if ( loaded < total ) { 42 | evt.loaded = loaded; 43 | baseOnProgress( { loaded: loaded } ); 44 | progress(); 45 | } else { 46 | baseOnLoad( evt ); 47 | } 48 | }, 300 ); 49 | } 50 | 51 | progress(); 52 | }; 53 | 54 | this.abort = function() { 55 | this.aborted = true; 56 | this.onabort(); 57 | }; 58 | 59 | this.baseSend( data ); 60 | }; 61 | } )(); 62 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/the-matrix.css: -------------------------------------------------------------------------------- 1 | .cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; } 2 | .cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D !important; } 3 | .cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px solid #00FF00; } 4 | .cm-s-the-matrix .CodeMirror-guttermarker { color: #0f0; } 5 | .cm-s-the-matrix .CodeMirror-guttermarker-subtle { color: white; } 6 | .cm-s-the-matrix .CodeMirror-linenumber { color: #FFFFFF; } 7 | .cm-s-the-matrix .CodeMirror-cursor { border-left: 1px solid #00FF00 !important; } 8 | 9 | .cm-s-the-matrix span.cm-keyword {color: #008803; font-weight: bold;} 10 | .cm-s-the-matrix span.cm-atom {color: #3FF;} 11 | .cm-s-the-matrix span.cm-number {color: #FFB94F;} 12 | .cm-s-the-matrix span.cm-def {color: #99C;} 13 | .cm-s-the-matrix span.cm-variable {color: #F6C;} 14 | .cm-s-the-matrix span.cm-variable-2 {color: #C6F;} 15 | .cm-s-the-matrix span.cm-variable-3 {color: #96F;} 16 | .cm-s-the-matrix span.cm-property {color: #62FFA0;} 17 | .cm-s-the-matrix span.cm-operator {color: #999} 18 | .cm-s-the-matrix span.cm-comment {color: #CCCCCC;} 19 | .cm-s-the-matrix span.cm-string {color: #39C;} 20 | .cm-s-the-matrix span.cm-meta {color: #C9F;} 21 | .cm-s-the-matrix span.cm-qualifier {color: #FFF700;} 22 | .cm-s-the-matrix span.cm-builtin {color: #30a;} 23 | .cm-s-the-matrix span.cm-bracket {color: #cc7;} 24 | .cm-s-the-matrix span.cm-tag {color: #FFBD40;} 25 | .cm-s-the-matrix span.cm-attribute {color: #FFF700;} 26 | .cm-s-the-matrix span.cm-error {color: #FF0000;} 27 | 28 | .cm-s-the-matrix .CodeMirror-activeline-background {background: #040;} 29 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/blackboard.css: -------------------------------------------------------------------------------- 1 | /* Port of TextMate's Blackboard theme */ 2 | 3 | .cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; } 4 | .cm-s-blackboard .CodeMirror-selected { background: #253B76 !important; } 5 | .cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right: 0; } 6 | .cm-s-blackboard .CodeMirror-guttermarker { color: #FBDE2D; } 7 | .cm-s-blackboard .CodeMirror-guttermarker-subtle { color: #888; } 8 | .cm-s-blackboard .CodeMirror-linenumber { color: #888; } 9 | .cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7 !important; } 10 | 11 | .cm-s-blackboard .cm-keyword { color: #FBDE2D; } 12 | .cm-s-blackboard .cm-atom { color: #D8FA3C; } 13 | .cm-s-blackboard .cm-number { color: #D8FA3C; } 14 | .cm-s-blackboard .cm-def { color: #8DA6CE; } 15 | .cm-s-blackboard .cm-variable { color: #FF6400; } 16 | .cm-s-blackboard .cm-operator { color: #FBDE2D;} 17 | .cm-s-blackboard .cm-comment { color: #AEAEAE; } 18 | .cm-s-blackboard .cm-string { color: #61CE3C; } 19 | .cm-s-blackboard .cm-string-2 { color: #61CE3C; } 20 | .cm-s-blackboard .cm-meta { color: #D8FA3C; } 21 | .cm-s-blackboard .cm-builtin { color: #8DA6CE; } 22 | .cm-s-blackboard .cm-tag { color: #8DA6CE; } 23 | .cm-s-blackboard .cm-attribute { color: #8DA6CE; } 24 | .cm-s-blackboard .cm-header { color: #FF6400; } 25 | .cm-s-blackboard .cm-hr { color: #AEAEAE; } 26 | .cm-s-blackboard .cm-link { color: #8DA6CE; } 27 | .cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; } 28 | 29 | .cm-s-blackboard .CodeMirror-activeline-background {background: #3C3636 !important;} 30 | .cm-s-blackboard .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important} 31 | -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/old/assets/posteddata.php: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | Sample — CKEditor 12 | 13 | 14 | 15 |

16 | CKEditor — Posted Data 17 |

18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | $value ) 31 | { 32 | if ( ( !is_string($value) && !is_numeric($value) ) || !is_string($key) ) 33 | continue; 34 | 35 | if ( get_magic_quotes_gpc() ) 36 | $value = htmlspecialchars( stripslashes((string)$value) ); 37 | else 38 | $value = htmlspecialchars( (string)$value ); 39 | ?> 40 | 41 | 42 | 43 | 44 | 48 |
Field NameValue
49 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/toolbarconfigurator/font/fontello.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Copyright (C) 2014 by original authors @ fontello.com 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/js/sample.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | 6 | /* exported initSample */ 7 | 8 | if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 ) 9 | CKEDITOR.tools.enableHtml5Elements( document ); 10 | 11 | // The trick to keep the editor in the sample quite small 12 | // unless user specified own height. 13 | CKEDITOR.config.height = 150; 14 | CKEDITOR.config.width = 'auto'; 15 | 16 | var initSample = ( function() { 17 | var wysiwygareaAvailable = isWysiwygareaAvailable(), 18 | isBBCodeBuiltIn = !!CKEDITOR.plugins.get( 'bbcode' ); 19 | 20 | return function() { 21 | var editorElement = CKEDITOR.document.getById( 'editor' ); 22 | 23 | // :((( 24 | if ( isBBCodeBuiltIn ) { 25 | editorElement.setHtml( 26 | 'Hello world!\n\n' + 27 | 'I\'m an instance of [url=https://ckeditor.com]CKEditor[/url].' 28 | ); 29 | } 30 | 31 | // Depending on the wysiwygare plugin availability initialize classic or inline editor. 32 | if ( wysiwygareaAvailable ) { 33 | CKEDITOR.replace( 'editor' ); 34 | } else { 35 | editorElement.setAttribute( 'contenteditable', 'true' ); 36 | CKEDITOR.inline( 'editor' ); 37 | 38 | // TODO we can consider displaying some info box that 39 | // without wysiwygarea the classic editor may not work. 40 | } 41 | }; 42 | 43 | function isWysiwygareaAvailable() { 44 | // If in development mode, then the wysiwygarea must be available. 45 | // Split REV into two strings so builder does not replace it :D. 46 | if ( CKEDITOR.revision == ( '%RE' + 'V%' ) ) { 47 | return true; 48 | } 49 | 50 | return !!CKEDITOR.plugins.get( 'wysiwygarea' ); 51 | } 52 | } )(); 53 | 54 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/3024-day.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: 3024 day 4 | Author: Jan T. Sott (http://github.com/idleberg) 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-3024-day.CodeMirror {background: #f7f7f7; color: #3a3432;} 12 | .cm-s-3024-day div.CodeMirror-selected {background: #d6d5d4 !important;} 13 | 14 | .cm-s-3024-day .CodeMirror-gutters {background: #f7f7f7; border-right: 0px;} 15 | .cm-s-3024-day .CodeMirror-guttermarker { color: #db2d20; } 16 | .cm-s-3024-day .CodeMirror-guttermarker-subtle { color: #807d7c; } 17 | .cm-s-3024-day .CodeMirror-linenumber {color: #807d7c;} 18 | 19 | .cm-s-3024-day .CodeMirror-cursor {border-left: 1px solid #5c5855 !important;} 20 | 21 | .cm-s-3024-day span.cm-comment {color: #cdab53;} 22 | .cm-s-3024-day span.cm-atom {color: #a16a94;} 23 | .cm-s-3024-day span.cm-number {color: #a16a94;} 24 | 25 | .cm-s-3024-day span.cm-property, .cm-s-3024-day span.cm-attribute {color: #01a252;} 26 | .cm-s-3024-day span.cm-keyword {color: #db2d20;} 27 | .cm-s-3024-day span.cm-string {color: #fded02;} 28 | 29 | .cm-s-3024-day span.cm-variable {color: #01a252;} 30 | .cm-s-3024-day span.cm-variable-2 {color: #01a0e4;} 31 | .cm-s-3024-day span.cm-def {color: #e8bbd0;} 32 | .cm-s-3024-day span.cm-bracket {color: #3a3432;} 33 | .cm-s-3024-day span.cm-tag {color: #db2d20;} 34 | .cm-s-3024-day span.cm-link {color: #a16a94;} 35 | .cm-s-3024-day span.cm-error {background: #db2d20; color: #5c5855;} 36 | 37 | .cm-s-3024-day .CodeMirror-activeline-background {background: #e8f2ff !important;} 38 | .cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 39 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/paraiso-dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Paraíso (Dark) 4 | Author: Jan T. Sott 5 | 6 | Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror) 7 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br) 8 | 9 | */ 10 | 11 | .cm-s-paraiso-dark.CodeMirror {background: #2f1e2e; color: #b9b6b0;} 12 | .cm-s-paraiso-dark div.CodeMirror-selected {background: #41323f !important;} 13 | .cm-s-paraiso-dark .CodeMirror-gutters {background: #2f1e2e; border-right: 0px;} 14 | .cm-s-paraiso-dark .CodeMirror-guttermarker { color: #ef6155; } 15 | .cm-s-paraiso-dark .CodeMirror-guttermarker-subtle { color: #776e71; } 16 | .cm-s-paraiso-dark .CodeMirror-linenumber {color: #776e71;} 17 | .cm-s-paraiso-dark .CodeMirror-cursor {border-left: 1px solid #8d8687 !important;} 18 | 19 | .cm-s-paraiso-dark span.cm-comment {color: #e96ba8;} 20 | .cm-s-paraiso-dark span.cm-atom {color: #815ba4;} 21 | .cm-s-paraiso-dark span.cm-number {color: #815ba4;} 22 | 23 | .cm-s-paraiso-dark span.cm-property, .cm-s-paraiso-dark span.cm-attribute {color: #48b685;} 24 | .cm-s-paraiso-dark span.cm-keyword {color: #ef6155;} 25 | .cm-s-paraiso-dark span.cm-string {color: #fec418;} 26 | 27 | .cm-s-paraiso-dark span.cm-variable {color: #48b685;} 28 | .cm-s-paraiso-dark span.cm-variable-2 {color: #06b6ef;} 29 | .cm-s-paraiso-dark span.cm-def {color: #f99b15;} 30 | .cm-s-paraiso-dark span.cm-bracket {color: #b9b6b0;} 31 | .cm-s-paraiso-dark span.cm-tag {color: #ef6155;} 32 | .cm-s-paraiso-dark span.cm-link {color: #815ba4;} 33 | .cm-s-paraiso-dark span.cm-error {background: #ef6155; color: #8d8687;} 34 | 35 | .cm-s-paraiso-dark .CodeMirror-activeline-background {background: #4D344A !important;} 36 | .cm-s-paraiso-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 37 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/link/dialogs/anchor.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.dialog.add("anchor",function(c){function e(b,a){return b.createFakeElement(b.document.createElement("a",{attributes:a}),"cke_anchor","anchor")}return{title:c.lang.link.anchor.title,minWidth:300,minHeight:60,onOk:function(){var b=CKEDITOR.tools.trim(this.getValueOf("info","txtName")),a={id:b,name:b,"data-cke-saved-name":b};this._.selectedElement?this._.selectedElement.data("cke-realelement")?(b=e(c,a),b.replace(this._.selectedElement),CKEDITOR.env.ie&&c.getSelection().selectElement(b)):this._.selectedElement.setAttributes(a): 6 | (b=(b=c.getSelection())&&b.getRanges()[0],b.collapsed?(a=e(c,a),b.insertNode(a)):(CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(a["class"]="cke_anchor"),a=new CKEDITOR.style({element:"a",attributes:a}),a.type=CKEDITOR.STYLE_INLINE,a.applyToRange(b)))},onHide:function(){delete this._.selectedElement},onShow:function(){var b=c.getSelection(),a;a=b.getRanges()[0];var d=b.getSelectedElement();a.shrink(CKEDITOR.SHRINK_ELEMENT);a=(d=a.getEnclosedNode())&&d.type===CKEDITOR.NODE_ELEMENT&&("anchor"===d.data("cke-real-element-type")|| 7 | d.is("a"))?d:void 0;var f=(d=a&&a.data("cke-realelement"))?CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,a):CKEDITOR.plugins.link.getSelectedLink(c);if(f){this._.selectedElement=f;var e=f.data("cke-saved-name");this.setValueOf("info","txtName",e||"");!d&&b.selectElement(f);a&&(this._.selectedElement=a)}this.getContentElement("info","txtName").focus()},contents:[{id:"info",label:c.lang.link.anchor.title,accessKey:"I",elements:[{type:"text",id:"txtName",label:c.lang.link.anchor.name,required:!0,validate:function(){return this.getValue()? 8 | !0:(alert(c.lang.link.anchor.errorName),!1)}}]}]}}); -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/3024-night.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: 3024 night 4 | Author: Jan T. Sott (http://github.com/idleberg) 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-3024-night.CodeMirror {background: #090300; color: #d6d5d4;} 12 | .cm-s-3024-night div.CodeMirror-selected {background: #3a3432 !important;} 13 | .cm-s-3024-night .CodeMirror-gutters {background: #090300; border-right: 0px;} 14 | .cm-s-3024-night .CodeMirror-guttermarker { color: #db2d20; } 15 | .cm-s-3024-night .CodeMirror-guttermarker-subtle { color: #5c5855; } 16 | .cm-s-3024-night .CodeMirror-linenumber {color: #5c5855;} 17 | 18 | .cm-s-3024-night .CodeMirror-cursor {border-left: 1px solid #807d7c !important;} 19 | 20 | .cm-s-3024-night span.cm-comment {color: #cdab53;} 21 | .cm-s-3024-night span.cm-atom {color: #a16a94;} 22 | .cm-s-3024-night span.cm-number {color: #a16a94;} 23 | 24 | .cm-s-3024-night span.cm-property, .cm-s-3024-night span.cm-attribute {color: #01a252;} 25 | .cm-s-3024-night span.cm-keyword {color: #db2d20;} 26 | .cm-s-3024-night span.cm-string {color: #fded02;} 27 | 28 | .cm-s-3024-night span.cm-variable {color: #01a252;} 29 | .cm-s-3024-night span.cm-variable-2 {color: #01a0e4;} 30 | .cm-s-3024-night span.cm-def {color: #e8bbd0;} 31 | .cm-s-3024-night span.cm-bracket {color: #d6d5d4;} 32 | .cm-s-3024-night span.cm-tag {color: #db2d20;} 33 | .cm-s-3024-night span.cm-link {color: #a16a94;} 34 | .cm-s-3024-night span.cm-error {background: #db2d20; color: #807d7c;} 35 | 36 | .cm-s-3024-night .CodeMirror-activeline-background {background: #2F2F2F !important;} 37 | .cm-s-3024-night .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 38 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/about/dialogs/about.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.dialog.add("about",function(a){a=a.lang.about;var b=CKEDITOR.getUrl(CKEDITOR.plugins.get("about").path+"dialogs/"+(CKEDITOR.env.hidpi?"hidpi/":"")+"logo_ckeditor.png");return{title:a.dlgTitle,minWidth:390,minHeight:210,contents:[{id:"tab1",label:"",title:"",expand:!0,padding:0,elements:[{type:"html",html:'\x3cstyle type\x3d"text/css"\x3e.cke_about_container{color:#000 !important;padding:10px 10px 0;margin-top:5px}.cke_about_container p{margin: 0 0 10px;}.cke_about_container .cke_about_logo{height:81px;background-color:#fff;background-image:url('+ 6 | b+");"+(CKEDITOR.env.hidpi?"background-size:194px 58px;":"")+'background-position:center; background-repeat:no-repeat;margin-bottom:10px;}.cke_about_container a{cursor:pointer !important;color:#00B2CE !important;text-decoration:underline !important;}.cke_about_container \x3e p,.cke_rtl .cke_about_container \x3e p{text-align:center;}\x3c/style\x3e\x3cdiv class\x3d"cke_about_container"\x3e\x3cdiv class\x3d"cke_about_logo"\x3e\x3c/div\x3e\x3cp\x3eCKEditor '+CKEDITOR.version+" (revision "+CKEDITOR.revision+ 7 | ')\x3cbr\x3e\x3ca target\x3d"_blank" rel\x3d"noopener noreferrer" href\x3d"https://ckeditor.com/"\x3ehttps://ckeditor.com\x3c/a\x3e\x3c/p\x3e\x3cp\x3e'+a.moreInfo+'\x3cbr\x3e\x3ca target\x3d"_blank" rel\x3d"noopener noreferrer" href\x3d"https://ckeditor.com/legal/ckeditor-oss-license/"\x3ehttps://ckeditor.com/legal/ckeditor-oss-license/\x3c/a\x3e\x3c/p\x3e\x3cp\x3e'+a.copy.replace("$1",'\x3ca target\x3d"_blank" rel\x3d"noopener noreferrer" href\x3d"https://cksource.com/"\x3eCKSource\x3c/a\x3e - Frederico Knabben')+ 8 | "\x3c/p\x3e\x3c/div\x3e"}]}],buttons:[CKEDITOR.dialog.cancelButton]}}); -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/paraiso-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Paraíso (Light) 4 | Author: Jan T. Sott 5 | 6 | Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror) 7 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br) 8 | 9 | */ 10 | 11 | .cm-s-paraiso-light.CodeMirror {background: #e7e9db; color: #41323f;} 12 | .cm-s-paraiso-light div.CodeMirror-selected {background: #b9b6b0 !important;} 13 | .cm-s-paraiso-light .CodeMirror-gutters {background: #e7e9db; border-right: 0px;} 14 | .cm-s-paraiso-light .CodeMirror-guttermarker { color: black; } 15 | .cm-s-paraiso-light .CodeMirror-guttermarker-subtle { color: #8d8687; } 16 | .cm-s-paraiso-light .CodeMirror-linenumber {color: #8d8687;} 17 | .cm-s-paraiso-light .CodeMirror-cursor {border-left: 1px solid #776e71 !important;} 18 | 19 | .cm-s-paraiso-light span.cm-comment {color: #e96ba8;} 20 | .cm-s-paraiso-light span.cm-atom {color: #815ba4;} 21 | .cm-s-paraiso-light span.cm-number {color: #815ba4;} 22 | 23 | .cm-s-paraiso-light span.cm-property, .cm-s-paraiso-light span.cm-attribute {color: #48b685;} 24 | .cm-s-paraiso-light span.cm-keyword {color: #ef6155;} 25 | .cm-s-paraiso-light span.cm-string {color: #fec418;} 26 | 27 | .cm-s-paraiso-light span.cm-variable {color: #48b685;} 28 | .cm-s-paraiso-light span.cm-variable-2 {color: #06b6ef;} 29 | .cm-s-paraiso-light span.cm-def {color: #f99b15;} 30 | .cm-s-paraiso-light span.cm-bracket {color: #41323f;} 31 | .cm-s-paraiso-light span.cm-tag {color: #ef6155;} 32 | .cm-s-paraiso-light span.cm-link {color: #815ba4;} 33 | .cm-s-paraiso-light span.cm-error {background: #ef6155; color: #776e71;} 34 | 35 | .cm-s-paraiso-light .CodeMirror-activeline-background {background: #CFD1C4 !important;} 36 | .cm-s-paraiso-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 37 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/base16-dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Base16 Default Dark 4 | Author: Chris Kempson (http://chriskempson.com) 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-chrome-devtools) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-base16-dark.CodeMirror {background: #151515; color: #e0e0e0;} 12 | .cm-s-base16-dark div.CodeMirror-selected {background: #202020 !important;} 13 | .cm-s-base16-dark .CodeMirror-gutters {background: #151515; border-right: 0px;} 14 | .cm-s-base16-dark .CodeMirror-guttermarker { color: #ac4142; } 15 | .cm-s-base16-dark .CodeMirror-guttermarker-subtle { color: #505050; } 16 | .cm-s-base16-dark .CodeMirror-linenumber {color: #505050;} 17 | .cm-s-base16-dark .CodeMirror-cursor {border-left: 1px solid #b0b0b0 !important;} 18 | 19 | .cm-s-base16-dark span.cm-comment {color: #8f5536;} 20 | .cm-s-base16-dark span.cm-atom {color: #aa759f;} 21 | .cm-s-base16-dark span.cm-number {color: #aa759f;} 22 | 23 | .cm-s-base16-dark span.cm-property, .cm-s-base16-dark span.cm-attribute {color: #90a959;} 24 | .cm-s-base16-dark span.cm-keyword {color: #ac4142;} 25 | .cm-s-base16-dark span.cm-string {color: #f4bf75;} 26 | 27 | .cm-s-base16-dark span.cm-variable {color: #90a959;} 28 | .cm-s-base16-dark span.cm-variable-2 {color: #6a9fb5;} 29 | .cm-s-base16-dark span.cm-def {color: #d28445;} 30 | .cm-s-base16-dark span.cm-bracket {color: #e0e0e0;} 31 | .cm-s-base16-dark span.cm-tag {color: #ac4142;} 32 | .cm-s-base16-dark span.cm-link {color: #aa759f;} 33 | .cm-s-base16-dark span.cm-error {background: #ac4142; color: #b0b0b0;} 34 | 35 | .cm-s-base16-dark .CodeMirror-activeline-background {background: #2F2F2F !important;} 36 | .cm-s-base16-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 37 | -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/old/sample.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | 6 | // Tool scripts for the sample pages. 7 | // This file can be ignored and is not required to make use of CKEditor. 8 | 9 | ( function() { 10 | CKEDITOR.on( 'instanceReady', function( ev ) { 11 | // Check for sample compliance. 12 | var editor = ev.editor, 13 | meta = CKEDITOR.document.$.getElementsByName( 'ckeditor-sample-required-plugins' ), 14 | requires = meta.length ? CKEDITOR.dom.element.get( meta[ 0 ] ).getAttribute( 'content' ).split( ',' ) : [], 15 | missing = [], 16 | i; 17 | 18 | if ( requires.length ) { 19 | for ( i = 0; i < requires.length; i++ ) { 20 | if ( !editor.plugins[ requires[ i ] ] ) 21 | missing.push( '' + requires[ i ] + '' ); 22 | } 23 | 24 | if ( missing.length ) { 25 | var warn = CKEDITOR.dom.element.createFromHtml( 26 | '
' + 27 | 'To fully experience this demo, the ' + missing.join( ', ' ) + ' plugin' + ( missing.length > 1 ? 's are' : ' is' ) + ' required.' + 28 | '
' 29 | ); 30 | warn.insertBefore( editor.container ); 31 | } 32 | } 33 | 34 | // Set icons. 35 | var doc = new CKEDITOR.dom.document( document ), 36 | icons = doc.find( '.button_icon' ); 37 | 38 | for ( i = 0; i < icons.count(); i++ ) { 39 | var icon = icons.getItem( i ), 40 | name = icon.getAttribute( 'data-icon' ), 41 | style = CKEDITOR.skin.getIconStyle( name, ( CKEDITOR.lang.dir == 'rtl' ) ); 42 | 43 | icon.addClass( 'cke_button_icon' ); 44 | icon.addClass( 'cke_button__' + name + '_icon' ); 45 | icon.setAttribute( 'style', style ); 46 | icon.setStyle( 'float', 'none' ); 47 | 48 | } 49 | } ); 50 | } )(); 51 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/vibrant-ink.css: -------------------------------------------------------------------------------- 1 | /* Taken from the popular Visual Studio Vibrant Ink Schema */ 2 | 3 | .cm-s-vibrant-ink.CodeMirror { background: black; color: white; } 4 | .cm-s-vibrant-ink .CodeMirror-selected { background: #35493c !important; } 5 | 6 | .cm-s-vibrant-ink .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } 7 | .cm-s-vibrant-ink .CodeMirror-guttermarker { color: white; } 8 | .cm-s-vibrant-ink .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 9 | .cm-s-vibrant-ink .CodeMirror-linenumber { color: #d0d0d0; } 10 | .cm-s-vibrant-ink .CodeMirror-cursor { border-left: 1px solid white !important; } 11 | 12 | .cm-s-vibrant-ink .cm-keyword { color: #CC7832; } 13 | .cm-s-vibrant-ink .cm-atom { color: #FC0; } 14 | .cm-s-vibrant-ink .cm-number { color: #FFEE98; } 15 | .cm-s-vibrant-ink .cm-def { color: #8DA6CE; } 16 | .cm-s-vibrant-ink span.cm-variable-2, .cm-s-vibrant span.cm-tag { color: #FFC66D } 17 | .cm-s-vibrant-ink span.cm-variable-3, .cm-s-vibrant span.cm-def { color: #FFC66D } 18 | .cm-s-vibrant-ink .cm-operator { color: #888; } 19 | .cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; } 20 | .cm-s-vibrant-ink .cm-string { color: #A5C25C } 21 | .cm-s-vibrant-ink .cm-string-2 { color: red } 22 | .cm-s-vibrant-ink .cm-meta { color: #D8FA3C; } 23 | .cm-s-vibrant-ink .cm-builtin { color: #8DA6CE; } 24 | .cm-s-vibrant-ink .cm-tag { color: #8DA6CE; } 25 | .cm-s-vibrant-ink .cm-attribute { color: #8DA6CE; } 26 | .cm-s-vibrant-ink .cm-header { color: #FF6400; } 27 | .cm-s-vibrant-ink .cm-hr { color: #AEAEAE; } 28 | .cm-s-vibrant-ink .cm-link { color: blue; } 29 | .cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; } 30 | 31 | .cm-s-vibrant-ink .CodeMirror-activeline-background {background: #27282E !important;} 32 | .cm-s-vibrant-ink .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} 33 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/mbo.css: -------------------------------------------------------------------------------- 1 | /****************************************************************/ 2 | /* Based on mbonaci's Brackets mbo theme */ 3 | /* https://github.com/mbonaci/global/blob/master/Mbo.tmTheme */ 4 | /* Create your own: http://tmtheme-editor.herokuapp.com */ 5 | /****************************************************************/ 6 | 7 | .cm-s-mbo.CodeMirror {background: #2c2c2c; color: #ffffec;} 8 | .cm-s-mbo div.CodeMirror-selected {background: #716C62 !important;} 9 | .cm-s-mbo .CodeMirror-gutters {background: #4e4e4e; border-right: 0px;} 10 | .cm-s-mbo .CodeMirror-guttermarker { color: white; } 11 | .cm-s-mbo .CodeMirror-guttermarker-subtle { color: grey; } 12 | .cm-s-mbo .CodeMirror-linenumber {color: #dadada;} 13 | .cm-s-mbo .CodeMirror-cursor {border-left: 1px solid #ffffec !important;} 14 | 15 | .cm-s-mbo span.cm-comment {color: #95958a;} 16 | .cm-s-mbo span.cm-atom {color: #00a8c6;} 17 | .cm-s-mbo span.cm-number {color: #00a8c6;} 18 | 19 | .cm-s-mbo span.cm-property, .cm-s-mbo span.cm-attribute {color: #9ddfe9;} 20 | .cm-s-mbo span.cm-keyword {color: #ffb928;} 21 | .cm-s-mbo span.cm-string {color: #ffcf6c;} 22 | .cm-s-mbo span.cm-string.cm-property {color: #ffffec;} 23 | 24 | .cm-s-mbo span.cm-variable {color: #ffffec;} 25 | .cm-s-mbo span.cm-variable-2 {color: #00a8c6;} 26 | .cm-s-mbo span.cm-def {color: #ffffec;} 27 | .cm-s-mbo span.cm-bracket {color: #fffffc; font-weight: bold;} 28 | .cm-s-mbo span.cm-tag {color: #9ddfe9;} 29 | .cm-s-mbo span.cm-link {color: #f54b07;} 30 | .cm-s-mbo span.cm-error {border-bottom: #636363; color: #ffffec;} 31 | .cm-s-mbo span.cm-qualifier {color: #ffffec;} 32 | 33 | .cm-s-mbo .CodeMirror-activeline-background {background: #494b41 !important;} 34 | .cm-s-mbo .CodeMirror-matchingbracket {color: #222 !important;} 35 | .cm-s-mbo .CodeMirror-matchingtag {background: rgba(255, 255, 255, .37);} 36 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/base16-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Base16 Default Light 4 | Author: Chris Kempson (http://chriskempson.com) 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-chrome-devtools) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-base16-light.CodeMirror {background: #f5f5f5; color: #202020;} 12 | .cm-s-base16-light div.CodeMirror-selected {background: #e0e0e0 !important;} 13 | .cm-s-base16-light .CodeMirror-gutters {background: #f5f5f5; border-right: 0px;} 14 | .cm-s-base16-light .CodeMirror-guttermarker { color: #ac4142; } 15 | .cm-s-base16-light .CodeMirror-guttermarker-subtle { color: #b0b0b0; } 16 | .cm-s-base16-light .CodeMirror-linenumber {color: #b0b0b0;} 17 | .cm-s-base16-light .CodeMirror-cursor {border-left: 1px solid #505050 !important;} 18 | 19 | .cm-s-base16-light span.cm-comment {color: #8f5536;} 20 | .cm-s-base16-light span.cm-atom {color: #aa759f;} 21 | .cm-s-base16-light span.cm-number {color: #aa759f;} 22 | 23 | .cm-s-base16-light span.cm-property, .cm-s-base16-light span.cm-attribute {color: #90a959;} 24 | .cm-s-base16-light span.cm-keyword {color: #ac4142;} 25 | .cm-s-base16-light span.cm-string {color: #f4bf75;} 26 | 27 | .cm-s-base16-light span.cm-variable {color: #90a959;} 28 | .cm-s-base16-light span.cm-variable-2 {color: #6a9fb5;} 29 | .cm-s-base16-light span.cm-def {color: #d28445;} 30 | .cm-s-base16-light span.cm-bracket {color: #202020;} 31 | .cm-s-base16-light span.cm-tag {color: #ac4142;} 32 | .cm-s-base16-light span.cm-link {color: #aa759f;} 33 | .cm-s-base16-light span.cm-error {background: #ac4142; color: #505050;} 34 | 35 | .cm-s-base16-light .CodeMirror-activeline-background {background: #DDDCDC !important;} 36 | .cm-s-base16-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 37 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/twilight.css: -------------------------------------------------------------------------------- 1 | .cm-s-twilight.CodeMirror { background: #141414; color: #f7f7f7; } /**/ 2 | .cm-s-twilight .CodeMirror-selected { background: #323232 !important; } /**/ 3 | 4 | .cm-s-twilight .CodeMirror-gutters { background: #222; border-right: 1px solid #aaa; } 5 | .cm-s-twilight .CodeMirror-guttermarker { color: white; } 6 | .cm-s-twilight .CodeMirror-guttermarker-subtle { color: #aaa; } 7 | .cm-s-twilight .CodeMirror-linenumber { color: #aaa; } 8 | .cm-s-twilight .CodeMirror-cursor { border-left: 1px solid white !important; } 9 | 10 | .cm-s-twilight .cm-keyword { color: #f9ee98; } /**/ 11 | .cm-s-twilight .cm-atom { color: #FC0; } 12 | .cm-s-twilight .cm-number { color: #ca7841; } /**/ 13 | .cm-s-twilight .cm-def { color: #8DA6CE; } 14 | .cm-s-twilight span.cm-variable-2, .cm-s-twilight span.cm-tag { color: #607392; } /**/ 15 | .cm-s-twilight span.cm-variable-3, .cm-s-twilight span.cm-def { color: #607392; } /**/ 16 | .cm-s-twilight .cm-operator { color: #cda869; } /**/ 17 | .cm-s-twilight .cm-comment { color:#777; font-style:italic; font-weight:normal; } /**/ 18 | .cm-s-twilight .cm-string { color:#8f9d6a; font-style:italic; } /**/ 19 | .cm-s-twilight .cm-string-2 { color:#bd6b18 } /*?*/ 20 | .cm-s-twilight .cm-meta { background-color:#141414; color:#f7f7f7; } /*?*/ 21 | .cm-s-twilight .cm-builtin { color: #cda869; } /*?*/ 22 | .cm-s-twilight .cm-tag { color: #997643; } /**/ 23 | .cm-s-twilight .cm-attribute { color: #d6bb6d; } /*?*/ 24 | .cm-s-twilight .cm-header { color: #FF6400; } 25 | .cm-s-twilight .cm-hr { color: #AEAEAE; } 26 | .cm-s-twilight .cm-link { color:#ad9361; font-style:italic; text-decoration:none; } /**/ 27 | .cm-s-twilight .cm-error { border-bottom: 1px solid red; } 28 | 29 | .cm-s-twilight .CodeMirror-activeline-background {background: #27282E !important;} 30 | .cm-s-twilight .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} 31 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/wsc/dialogs/ciframe.html: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 64 | 65 |

66 | 67 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | 49 | # Translations 50 | *.mo 51 | *.pot 52 | 53 | # Django stuff: 54 | *.log 55 | local_settings.py 56 | 57 | # Flask stuff: 58 | instance/ 59 | .webassets-cache 60 | 61 | # Scrapy stuff: 62 | .scrapy 63 | 64 | # Sphinx documentation 65 | docs/_build/ 66 | 67 | # PyBuilder 68 | target/ 69 | 70 | # Jupyter Notebook 71 | .ipynb_checkpoints 72 | 73 | # pyenv 74 | .python-version 75 | 76 | # celery beat schedule file 77 | celerybeat-schedule 78 | 79 | # SageMath parsed files 80 | *.sage.py 81 | 82 | # dotenv 83 | .env 84 | 85 | # virtualenv 86 | .venv 87 | venv/ 88 | ENV/ 89 | 90 | # Spyder project settings 91 | .spyderproject 92 | .spyproject 93 | 94 | # Rope project settings 95 | .ropeproject 96 | 97 | # mkdocs documentation 98 | /site 99 | 100 | # mypy 101 | .mypy_cache/ 102 | 103 | # PyCharm 104 | .idea 105 | 106 | # Sphinx 107 | docs/_build/ 108 | 109 | # SQLite 110 | *.db 111 | !demos/database/data.db 112 | *.sqlite 113 | *.sqlite3 114 | 115 | # Upload file 116 | demos/form/uploads/* 117 | !demos/form/uploads/.gitkeep -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/midnight.css: -------------------------------------------------------------------------------- 1 | /* Based on the theme at http://bonsaiden.github.com/JavaScript-Garden */ 2 | 3 | /**/ 4 | .cm-s-midnight span.CodeMirror-matchhighlight { background: #494949; } 5 | .cm-s-midnight.CodeMirror-focused span.CodeMirror-matchhighlight { background: #314D67 !important; } 6 | 7 | /**/ 8 | .cm-s-midnight .CodeMirror-activeline-background {background: #253540 !important;} 9 | 10 | .cm-s-midnight.CodeMirror { 11 | background: #0F192A; 12 | color: #D1EDFF; 13 | } 14 | 15 | .cm-s-midnight.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;} 16 | 17 | .cm-s-midnight div.CodeMirror-selected {background: #314D67 !important;} 18 | .cm-s-midnight .CodeMirror-gutters {background: #0F192A; border-right: 1px solid;} 19 | .cm-s-midnight .CodeMirror-guttermarker { color: white; } 20 | .cm-s-midnight .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 21 | .cm-s-midnight .CodeMirror-linenumber {color: #D0D0D0;} 22 | .cm-s-midnight .CodeMirror-cursor { 23 | border-left: 1px solid #F8F8F0 !important; 24 | } 25 | 26 | .cm-s-midnight span.cm-comment {color: #428BDD;} 27 | .cm-s-midnight span.cm-atom {color: #AE81FF;} 28 | .cm-s-midnight span.cm-number {color: #D1EDFF;} 29 | 30 | .cm-s-midnight span.cm-property, .cm-s-midnight span.cm-attribute {color: #A6E22E;} 31 | .cm-s-midnight span.cm-keyword {color: #E83737;} 32 | .cm-s-midnight span.cm-string {color: #1DC116;} 33 | 34 | .cm-s-midnight span.cm-variable {color: #FFAA3E;} 35 | .cm-s-midnight span.cm-variable-2 {color: #FFAA3E;} 36 | .cm-s-midnight span.cm-def {color: #4DD;} 37 | .cm-s-midnight span.cm-bracket {color: #D1EDFF;} 38 | .cm-s-midnight span.cm-tag {color: #449;} 39 | .cm-s-midnight span.cm-link {color: #AE81FF;} 40 | .cm-s-midnight span.cm-error {background: #F92672; color: #F8F8F0;} 41 | 42 | .cm-s-midnight .CodeMirror-matchingbracket { 43 | text-decoration: underline; 44 | color: white !important; 45 | } 46 | -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/toolbarconfigurator/css/fontello.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'fontello'; 3 | src: url('../font/fontello.eot?89024372'); 4 | src: url('../font/fontello.eot?89024372#iefix') format('embedded-opentype'), 5 | url('../font/fontello.woff?89024372') format('woff'), 6 | url('../font/fontello.ttf?89024372') format('truetype'), 7 | url('../font/fontello.svg?89024372#fontello') format('svg'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ 12 | /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ 13 | /* 14 | @media screen and (-webkit-min-device-pixel-ratio:0) { 15 | @font-face { 16 | font-family: 'fontello'; 17 | src: url('../font/fontello.svg?89024372#fontello') format('svg'); 18 | } 19 | } 20 | */ 21 | 22 | [class^="icon-"]:before, [class*=" icon-"]:before { 23 | font-family: "fontello"; 24 | font-style: normal; 25 | font-weight: normal; 26 | speak: none; 27 | 28 | display: inline-block; 29 | text-decoration: inherit; 30 | width: 1em; 31 | margin-right: .2em; 32 | text-align: center; 33 | /* opacity: .8; */ 34 | 35 | /* For safety - reset parent styles, that can break glyph codes*/ 36 | font-variant: normal; 37 | text-transform: none; 38 | 39 | /* fix buttons height, for twitter bootstrap */ 40 | line-height: 1em; 41 | 42 | /* Animation center compensation - margins should be symmetric */ 43 | /* remove if not needed */ 44 | margin-left: .2em; 45 | 46 | /* you can be more comfortable with increased icons size */ 47 | /* font-size: 120%; */ 48 | 49 | /* Uncomment for 3D effect */ 50 | /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ 51 | } 52 | 53 | .icon-trash:before { content: '\e802'; } /* '' */ 54 | .icon-down-big:before { content: '\e800'; } /* '' */ 55 | .icon-up-big:before { content: '\e801'; } /* '' */ 56 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/erlang-dark.css: -------------------------------------------------------------------------------- 1 | .cm-s-erlang-dark.CodeMirror { background: #002240; color: white; } 2 | .cm-s-erlang-dark div.CodeMirror-selected { background: #b36539 !important; } 3 | .cm-s-erlang-dark .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } 4 | .cm-s-erlang-dark .CodeMirror-guttermarker { color: white; } 5 | .cm-s-erlang-dark .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 6 | .cm-s-erlang-dark .CodeMirror-linenumber { color: #d0d0d0; } 7 | .cm-s-erlang-dark .CodeMirror-cursor { border-left: 1px solid white !important; } 8 | 9 | .cm-s-erlang-dark span.cm-atom { color: #f133f1; } 10 | .cm-s-erlang-dark span.cm-attribute { color: #ff80e1; } 11 | .cm-s-erlang-dark span.cm-bracket { color: #ff9d00; } 12 | .cm-s-erlang-dark span.cm-builtin { color: #eaa; } 13 | .cm-s-erlang-dark span.cm-comment { color: #77f; } 14 | .cm-s-erlang-dark span.cm-def { color: #e7a; } 15 | .cm-s-erlang-dark span.cm-keyword { color: #ffee80; } 16 | .cm-s-erlang-dark span.cm-meta { color: #50fefe; } 17 | .cm-s-erlang-dark span.cm-number { color: #ffd0d0; } 18 | .cm-s-erlang-dark span.cm-operator { color: #d55; } 19 | .cm-s-erlang-dark span.cm-property { color: #ccc; } 20 | .cm-s-erlang-dark span.cm-qualifier { color: #ccc; } 21 | .cm-s-erlang-dark span.cm-quote { color: #ccc; } 22 | .cm-s-erlang-dark span.cm-special { color: #ffbbbb; } 23 | .cm-s-erlang-dark span.cm-string { color: #3ad900; } 24 | .cm-s-erlang-dark span.cm-string-2 { color: #ccc; } 25 | .cm-s-erlang-dark span.cm-tag { color: #9effff; } 26 | .cm-s-erlang-dark span.cm-variable { color: #50fe50; } 27 | .cm-s-erlang-dark span.cm-variable-2 { color: #e0e; } 28 | .cm-s-erlang-dark span.cm-variable-3 { color: #ccc; } 29 | .cm-s-erlang-dark span.cm-error { color: #9d1e15; } 30 | 31 | .cm-s-erlang-dark .CodeMirror-activeline-background {background: #013461 !important;} 32 | .cm-s-erlang-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} 33 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/tomorrow-night-eighties.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Tomorrow Night - Eighties 4 | Author: Chris Kempson 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-tomorrow-night-eighties.CodeMirror {background: #000000; color: #CCCCCC;} 12 | .cm-s-tomorrow-night-eighties div.CodeMirror-selected {background: #2D2D2D !important;} 13 | .cm-s-tomorrow-night-eighties .CodeMirror-gutters {background: #000000; border-right: 0px;} 14 | .cm-s-tomorrow-night-eighties .CodeMirror-guttermarker { color: #f2777a; } 15 | .cm-s-tomorrow-night-eighties .CodeMirror-guttermarker-subtle { color: #777; } 16 | .cm-s-tomorrow-night-eighties .CodeMirror-linenumber {color: #515151;} 17 | .cm-s-tomorrow-night-eighties .CodeMirror-cursor {border-left: 1px solid #6A6A6A !important;} 18 | 19 | .cm-s-tomorrow-night-eighties span.cm-comment {color: #d27b53;} 20 | .cm-s-tomorrow-night-eighties span.cm-atom {color: #a16a94;} 21 | .cm-s-tomorrow-night-eighties span.cm-number {color: #a16a94;} 22 | 23 | .cm-s-tomorrow-night-eighties span.cm-property, .cm-s-tomorrow-night-eighties span.cm-attribute {color: #99cc99;} 24 | .cm-s-tomorrow-night-eighties span.cm-keyword {color: #f2777a;} 25 | .cm-s-tomorrow-night-eighties span.cm-string {color: #ffcc66;} 26 | 27 | .cm-s-tomorrow-night-eighties span.cm-variable {color: #99cc99;} 28 | .cm-s-tomorrow-night-eighties span.cm-variable-2 {color: #6699cc;} 29 | .cm-s-tomorrow-night-eighties span.cm-def {color: #f99157;} 30 | .cm-s-tomorrow-night-eighties span.cm-bracket {color: #CCCCCC;} 31 | .cm-s-tomorrow-night-eighties span.cm-tag {color: #f2777a;} 32 | .cm-s-tomorrow-night-eighties span.cm-link {color: #a16a94;} 33 | .cm-s-tomorrow-night-eighties span.cm-error {background: #f2777a; color: #6A6A6A;} 34 | 35 | .cm-s-tomorrow-night-eighties .CodeMirror-activeline-background {background: #343600 !important;} 36 | .cm-s-tomorrow-night-eighties .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 37 | -------------------------------------------------------------------------------- /assets/static/css/jquery.Jcrop.min.css: -------------------------------------------------------------------------------- 1 | /* jquery.Jcrop.min.css v0.9.12 (build:20130126) */ 2 | .jcrop-holder{direction:ltr;text-align:left;} 3 | .jcrop-vline,.jcrop-hline{background:#FFF url(Jcrop.gif);font-size:0;position:absolute;} 4 | .jcrop-vline{height:100%;width:1px!important;} 5 | .jcrop-vline.right{right:0;} 6 | .jcrop-hline{height:1px!important;width:100%;} 7 | .jcrop-hline.bottom{bottom:0;} 8 | .jcrop-tracker{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;height:100%;width:100%;} 9 | .jcrop-handle{background-color:#333;border:1px #EEE solid;font-size:1px;height:7px;width:7px;} 10 | .jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0;} 11 | .jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px;} 12 | .jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%;} 13 | .jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%;} 14 | .jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0;} 15 | .jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0;} 16 | .jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0;} 17 | .jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px;} 18 | .jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%;} 19 | .jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px;} 20 | .jcrop-dragbar.ord-n{margin-top:-4px;} 21 | .jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px;} 22 | .jcrop-dragbar.ord-e{margin-right:-4px;right:0;} 23 | .jcrop-dragbar.ord-w{margin-left:-4px;} 24 | .jcrop-light .jcrop-vline,.jcrop-light .jcrop-hline{background:#FFF;filter:alpha(opacity=70)!important;opacity:.70!important;} 25 | .jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#FFF;border-radius:3px;} 26 | .jcrop-dark .jcrop-vline,.jcrop-dark .jcrop-hline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important;} 27 | .jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#FFF;border-color:#000;border-radius:3px;} 28 | .solid-line .jcrop-vline,.solid-line .jcrop-hline{background:#FFF;} 29 | .jcrop-holder img,img.jcrop-preview{max-width:none;} 30 | -------------------------------------------------------------------------------- /form/templates/bootstrap.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block metas %} 4 | {{ super() }} 5 | 6 | {% endblock %} 7 | 8 | {% block styles %} 9 | 10 | {% endblock %} 11 | 12 | {% block nav %}{% endblock %} 13 | 14 | {% block content %} 15 |
16 |
17 | ← Return 18 |

Bootstrap Style Form

19 |
20 |
21 | {{ form.csrf_token }} 22 |
23 | {{ form.username.label }} 24 | {% if form.username.errors %} 25 | {{ form.username(class='form-control is-invalid') }} 26 | {% for error in form.username.errors %} 27 |
28 | {{ error }} 29 |
30 | {% endfor %} 31 | {% else %} 32 | {{ form.username(class='form-control') }} 33 | {% endif %} 34 |
35 |
36 | {{ form.password.label }} 37 | {% if form.password.errors %} 38 | {{ form.password(class='form-control is-invalid') }} 39 | {% for error in form.password.errors %} 40 |
41 | {{ error }} 42 |
43 | {% endfor %} 44 | {% else %} 45 | {{ form.password(class='form-control') }} 46 | {% endif %} 47 |
48 |
49 | {{ form.remember(class='form-check-input') }} 50 | {{ form.remember.label }} 51 |
52 | {{ form.submit(class='btn btn-primary') }} 53 |
54 |
55 | {% endblock %} 56 | 57 | {% block footer %}{% endblock %} 58 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/specialchar/dialogs/lang/ja.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang("specialchar","ja",{euro:"ユーロ記号",lsquo:"左シングル引用符",rsquo:"右シングル引用符",ldquo:"左ダブル引用符",rdquo:"右ダブル引用符",ndash:"半角ダッシュ",mdash:"全角ダッシュ",iexcl:"逆さ感嘆符",cent:"セント記号",pound:"ポンド記号",curren:"通貨記号",yen:"円記号",brvbar:"上下に分かれた縦棒",sect:"節記号",uml:"分音記号(ウムラウト)",copy:"著作権表示記号",ordf:"女性序数標識",laquo:" 始め二重山括弧引用記号",not:"論理否定記号",reg:"登録商標記号",macr:"長音符",deg:"度記号",sup2:"上つき2, 2乗",sup3:"上つき3, 3乗",acute:"揚音符",micro:"ミクロン記号",para:"段落記号",middot:"中黒",cedil:"セディラ",sup1:"上つき1",ordm:"男性序数標識",raquo:"終わり二重山括弧引用記号", 6 | frac14:"四分の一",frac12:"二分の一",frac34:"四分の三",iquest:"逆疑問符",Agrave:"抑音符つき大文字A",Aacute:"揚音符つき大文字A",Acirc:"曲折アクセントつき大文字A",Atilde:"チルダつき大文字A",Auml:"分音記号つき大文字A",Aring:"リングつき大文字A",AElig:"AとEの合字",Ccedil:"セディラつき大文字C",Egrave:"抑音符つき大文字E",Eacute:"揚音符つき大文字E",Ecirc:"曲折アクセントつき大文字E",Euml:"分音記号つき大文字E",Igrave:"抑音符つき大文字I",Iacute:"揚音符つき大文字I",Icirc:"曲折アクセントつき大文字I",Iuml:"分音記号つき大文字I",ETH:"[アイスランド語]大文字ETH",Ntilde:"チルダつき大文字N",Ograve:"抑音符つき大文字O",Oacute:"揚音符つき大文字O",Ocirc:"曲折アクセントつき大文字O",Otilde:"チルダつき大文字O",Ouml:" 分音記号つき大文字O", 7 | times:"乗算記号",Oslash:"打ち消し線つき大文字O",Ugrave:"抑音符つき大文字U",Uacute:"揚音符つき大文字U",Ucirc:"曲折アクセントつき大文字U",Uuml:"分音記号つき大文字U",Yacute:"揚音符つき大文字Y",THORN:"[アイスランド語]大文字THORN",szlig:"ドイツ語エスツェット",agrave:"抑音符つき小文字a",aacute:"揚音符つき小文字a",acirc:"曲折アクセントつき小文字a",atilde:"チルダつき小文字a",auml:"分音記号つき小文字a",aring:"リングつき小文字a",aelig:"aとeの合字",ccedil:"セディラつき小文字c",egrave:"抑音符つき小文字e",eacute:"揚音符つき小文字e",ecirc:"曲折アクセントつき小文字e",euml:"分音記号つき小文字e",igrave:"抑音符つき小文字i",iacute:"揚音符つき小文字i",icirc:"曲折アクセントつき小文字i",iuml:"分音記号つき小文字i",eth:"アイスランド語小文字eth", 8 | ntilde:"チルダつき小文字n",ograve:"抑音符つき小文字o",oacute:"揚音符つき小文字o",ocirc:"曲折アクセントつき小文字o",otilde:"チルダつき小文字o",ouml:"分音記号つき小文字o",divide:"除算記号",oslash:"打ち消し線つき小文字o",ugrave:"抑音符つき小文字u",uacute:"揚音符つき小文字u",ucirc:"曲折アクセントつき小文字u",uuml:"分音記号つき小文字u",yacute:"揚音符つき小文字y",thorn:"アイスランド語小文字thorn",yuml:"分音記号つき小文字y",OElig:"OとEの合字",oelig:"oとeの合字",372:"曲折アクセントつき大文字W",374:"曲折アクセントつき大文字Y",373:"曲折アクセントつき小文字w",375:"曲折アクセントつき小文字y",sbquo:"シングル下引用符",8219:"左右逆の左引用符",bdquo:"ダブル下引用符",hellip:"三点リーダ",trade:"商標記号",9658:"右黒三角ポインタ",bull:"黒丸", 9 | rarr:"右矢印",rArr:"右二重矢印",hArr:"左右二重矢印",diams:"ダイヤ",asymp:"漸近"}); -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/pastel-on-dark.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Pastel On Dark theme ported from ACE editor 3 | * @license MIT 4 | * @copyright AtomicPages LLC 2014 5 | * @author Dennis Thompson, AtomicPages LLC 6 | * @version 1.1 7 | * @source https://github.com/atomicpages/codemirror-pastel-on-dark-theme 8 | */ 9 | 10 | .cm-s-pastel-on-dark.CodeMirror { 11 | background: #2c2827; 12 | color: #8F938F; 13 | line-height: 1.5; 14 | font-size: 14px; 15 | } 16 | .cm-s-pastel-on-dark div.CodeMirror-selected { background: rgba(221,240,255,0.2) !important; } 17 | .cm-s-pastel-on-dark .CodeMirror-gutters { 18 | background: #34302f; 19 | border-right: 0px; 20 | padding: 0 3px; 21 | } 22 | .cm-s-pastel-on-dark .CodeMirror-guttermarker { color: white; } 23 | .cm-s-pastel-on-dark .CodeMirror-guttermarker-subtle { color: #8F938F; } 24 | .cm-s-pastel-on-dark .CodeMirror-linenumber { color: #8F938F; } 25 | .cm-s-pastel-on-dark .CodeMirror-cursor { border-left: 1px solid #A7A7A7 !important; } 26 | .cm-s-pastel-on-dark span.cm-comment { color: #A6C6FF; } 27 | .cm-s-pastel-on-dark span.cm-atom { color: #DE8E30; } 28 | .cm-s-pastel-on-dark span.cm-number { color: #CCCCCC; } 29 | .cm-s-pastel-on-dark span.cm-property { color: #8F938F; } 30 | .cm-s-pastel-on-dark span.cm-attribute { color: #a6e22e; } 31 | .cm-s-pastel-on-dark span.cm-keyword { color: #AEB2F8; } 32 | .cm-s-pastel-on-dark span.cm-string { color: #66A968; } 33 | .cm-s-pastel-on-dark span.cm-variable { color: #AEB2F8; } 34 | .cm-s-pastel-on-dark span.cm-variable-2 { color: #BEBF55; } 35 | .cm-s-pastel-on-dark span.cm-variable-3 { color: #DE8E30; } 36 | .cm-s-pastel-on-dark span.cm-def { color: #757aD8; } 37 | .cm-s-pastel-on-dark span.cm-bracket { color: #f8f8f2; } 38 | .cm-s-pastel-on-dark span.cm-tag { color: #C1C144; } 39 | .cm-s-pastel-on-dark span.cm-link { color: #ae81ff; } 40 | .cm-s-pastel-on-dark span.cm-qualifier,.cm-s-pastel-on-dark span.cm-builtin { color: #C1C144; } 41 | .cm-s-pastel-on-dark span.cm-error { 42 | background: #757aD8; 43 | color: #f8f8f0; 44 | } 45 | .cm-s-pastel-on-dark .CodeMirror-activeline-background { background: rgba(255, 255, 255, 0.031) !important; } 46 | .cm-s-pastel-on-dark .CodeMirror-matchingbracket { 47 | border: 1px solid rgba(255,255,255,0.25); 48 | color: #8F938F !important; 49 | margin: -1px -1px 0 -1px; 50 | } 51 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/lesser-dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | http://lesscss.org/ dark theme 3 | Ported to CodeMirror by Peter Kroon 4 | */ 5 | .cm-s-lesser-dark { 6 | line-height: 1.3em; 7 | } 8 | .cm-s-lesser-dark.CodeMirror { background: #262626; color: #EBEFE7; text-shadow: 0 -1px 1px #262626; } 9 | .cm-s-lesser-dark div.CodeMirror-selected {background: #45443B !important;} /* 33322B*/ 10 | .cm-s-lesser-dark .CodeMirror-cursor { border-left: 1px solid white !important; } 11 | .cm-s-lesser-dark pre { padding: 0 8px; }/*editable code holder*/ 12 | 13 | .cm-s-lesser-dark.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/ 14 | 15 | .cm-s-lesser-dark .CodeMirror-gutters { background: #262626; border-right:1px solid #aaa; } 16 | .cm-s-lesser-dark .CodeMirror-guttermarker { color: #599eff; } 17 | .cm-s-lesser-dark .CodeMirror-guttermarker-subtle { color: #777; } 18 | .cm-s-lesser-dark .CodeMirror-linenumber { color: #777; } 19 | 20 | .cm-s-lesser-dark span.cm-keyword { color: #599eff; } 21 | .cm-s-lesser-dark span.cm-atom { color: #C2B470; } 22 | .cm-s-lesser-dark span.cm-number { color: #B35E4D; } 23 | .cm-s-lesser-dark span.cm-def {color: white;} 24 | .cm-s-lesser-dark span.cm-variable { color:#D9BF8C; } 25 | .cm-s-lesser-dark span.cm-variable-2 { color: #669199; } 26 | .cm-s-lesser-dark span.cm-variable-3 { color: white; } 27 | .cm-s-lesser-dark span.cm-property {color: #92A75C;} 28 | .cm-s-lesser-dark span.cm-operator {color: #92A75C;} 29 | .cm-s-lesser-dark span.cm-comment { color: #666; } 30 | .cm-s-lesser-dark span.cm-string { color: #BCD279; } 31 | .cm-s-lesser-dark span.cm-string-2 {color: #f50;} 32 | .cm-s-lesser-dark span.cm-meta { color: #738C73; } 33 | .cm-s-lesser-dark span.cm-qualifier {color: #555;} 34 | .cm-s-lesser-dark span.cm-builtin { color: #ff9e59; } 35 | .cm-s-lesser-dark span.cm-bracket { color: #EBEFE7; } 36 | .cm-s-lesser-dark span.cm-tag { color: #669199; } 37 | .cm-s-lesser-dark span.cm-attribute {color: #00c;} 38 | .cm-s-lesser-dark span.cm-header {color: #a0a;} 39 | .cm-s-lesser-dark span.cm-quote {color: #090;} 40 | .cm-s-lesser-dark span.cm-hr {color: #999;} 41 | .cm-s-lesser-dark span.cm-link {color: #00c;} 42 | .cm-s-lesser-dark span.cm-error { color: #9d1e15; } 43 | 44 | .cm-s-lesser-dark .CodeMirror-activeline-background {background: #3C3A3A !important;} 45 | .cm-s-lesser-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} 46 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/theme/xq-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2011 by MarkLogic Corporation 3 | Author: Mike Brevoort 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | */ 23 | .cm-s-xq-light span.cm-keyword {line-height: 1em; font-weight: bold; color: #5A5CAD; } 24 | .cm-s-xq-light span.cm-atom {color: #6C8CD5;} 25 | .cm-s-xq-light span.cm-number {color: #164;} 26 | .cm-s-xq-light span.cm-def {text-decoration:underline;} 27 | .cm-s-xq-light span.cm-variable {color: black; } 28 | .cm-s-xq-light span.cm-variable-2 {color:black;} 29 | .cm-s-xq-light span.cm-variable-3 {color: black; } 30 | .cm-s-xq-light span.cm-property {} 31 | .cm-s-xq-light span.cm-operator {} 32 | .cm-s-xq-light span.cm-comment {color: #0080FF; font-style: italic;} 33 | .cm-s-xq-light span.cm-string {color: red;} 34 | .cm-s-xq-light span.cm-meta {color: yellow;} 35 | .cm-s-xq-light span.cm-qualifier {color: grey} 36 | .cm-s-xq-light span.cm-builtin {color: #7EA656;} 37 | .cm-s-xq-light span.cm-bracket {color: #cc7;} 38 | .cm-s-xq-light span.cm-tag {color: #3F7F7F;} 39 | .cm-s-xq-light span.cm-attribute {color: #7F007F;} 40 | .cm-s-xq-light span.cm-error {color: #f00;} 41 | 42 | .cm-s-xq-light .CodeMirror-activeline-background {background: #e8f2ff !important;} 43 | .cm-s-xq-light .CodeMirror-matchingbracket {outline:1px solid grey;color:black !important;background:yellow;} 44 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/specialchar/dialogs/lang/zh.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang("specialchar","zh",{euro:"歐元符號",lsquo:"左單引號",rsquo:"右單引號",ldquo:"左雙引號",rdquo:"右雙引號",ndash:"短破折號",mdash:"長破折號",iexcl:"倒置的驚嘆號",cent:"美分符號",pound:"英鎊符號",curren:"貨幣符號",yen:"日圓符號",brvbar:"破折號",sect:"章節符號",uml:"分音符號",copy:"版權符號",ordf:"雌性符號",laquo:"左雙角括號",not:"Not 符號",reg:"註冊商標符號",macr:"長音符號",deg:"度數符號",sup2:"上標字 2",sup3:"上標字 3",acute:"尖音符號",micro:"微",para:"段落符號",middot:"中間點",cedil:"字母 C 下面的尾型符號 ",sup1:"上標",ordm:"雄性符號",raquo:"右雙角括號",frac14:"四分之一符號",frac12:"二分之一符號",frac34:"四分之三符號", 6 | iquest:"倒置的問號",Agrave:"拉丁大寫字母 A 帶抑音符號",Aacute:"拉丁大寫字母 A 帶尖音符號",Acirc:"拉丁大寫字母 A 帶揚抑符",Atilde:"拉丁大寫字母 A 帶波浪號",Auml:"拉丁大寫字母 A 帶分音符號",Aring:"拉丁大寫字母 A 帶上圓圈",AElig:"拉丁大寫字母 Æ",Ccedil:"拉丁大寫字母 C 帶下尾符號",Egrave:"拉丁大寫字母 E 帶抑音符號",Eacute:"拉丁大寫字母 E 帶尖音符號",Ecirc:"拉丁大寫字母 E 帶揚抑符",Euml:"拉丁大寫字母 E 帶分音符號",Igrave:"拉丁大寫字母 I 帶抑音符號",Iacute:"拉丁大寫字母 I 帶尖音符號",Icirc:"拉丁大寫字母 I 帶揚抑符",Iuml:"拉丁大寫字母 I 帶分音符號",ETH:"拉丁大寫字母 Eth",Ntilde:"拉丁大寫字母 N 帶波浪號",Ograve:"拉丁大寫字母 O 帶抑音符號",Oacute:"拉丁大寫字母 O 帶尖音符號",Ocirc:"拉丁大寫字母 O 帶揚抑符",Otilde:"拉丁大寫字母 O 帶波浪號", 7 | Ouml:"拉丁大寫字母 O 帶分音符號",times:"乘號",Oslash:"拉丁大寫字母 O 帶粗線符號",Ugrave:"拉丁大寫字母 U 帶抑音符號",Uacute:"拉丁大寫字母 U 帶尖音符號",Ucirc:"拉丁大寫字母 U 帶揚抑符",Uuml:"拉丁大寫字母 U 帶分音符號",Yacute:"拉丁大寫字母 Y 帶尖音符號",THORN:"拉丁大寫字母 Thorn",szlig:"拉丁小寫字母 s",agrave:"拉丁小寫字母 a 帶抑音符號",aacute:"拉丁小寫字母 a 帶尖音符號",acirc:"拉丁小寫字母 a 帶揚抑符",atilde:"拉丁小寫字母 a 帶波浪號",auml:"拉丁小寫字母 a 帶分音符號",aring:"拉丁小寫字母 a 帶上圓圈",aelig:"拉丁小寫字母 æ",ccedil:"拉丁小寫字母 c 帶下尾符號",egrave:"拉丁小寫字母 e 帶抑音符號",eacute:"拉丁小寫字母 e 帶尖音符號",ecirc:"拉丁小寫字母 e 帶揚抑符",euml:"拉丁小寫字母 e 帶分音符號",igrave:"拉丁小寫字母 i 帶抑音符號", 8 | iacute:"拉丁小寫字母 i 帶尖音符號",icirc:"拉丁小寫字母 i 帶揚抑符",iuml:"拉丁小寫字母 i 帶分音符號",eth:"拉丁小寫字母 eth",ntilde:"拉丁小寫字母 n 帶波浪號",ograve:"拉丁小寫字母 o 帶抑音符號",oacute:"拉丁小寫字母 o 帶尖音符號",ocirc:"拉丁小寫字母 o 帶揚抑符",otilde:"拉丁小寫字母 o 帶波浪號",ouml:"拉丁小寫字母 o 帶分音符號",divide:"除號",oslash:"拉丁小寫字母 o 帶粗線符號",ugrave:"拉丁小寫字母 u 帶抑音符號",uacute:"拉丁小寫字母 u 帶尖音符號",ucirc:"拉丁小寫字母 u 帶揚抑符",uuml:"拉丁小寫字母 u 帶分音符號",yacute:"拉丁小寫字母 y 帶尖音符號",thorn:"拉丁小寫字母 thorn",yuml:"拉丁小寫字母 y 帶分音符號",OElig:"拉丁大寫字母 OE",oelig:"拉丁小寫字母 oe",372:"拉丁大寫字母 W 帶揚抑符",374:"拉丁大寫字母 Y 帶揚抑符",373:"拉丁小寫字母 w 帶揚抑符", 9 | 375:"拉丁小寫字母 y 帶揚抑符",sbquo:"低 9 單引號",8219:"高 9 反轉單引號",bdquo:"低 9 雙引號",hellip:"水平刪節號",trade:"商標符號",9658:"黑色向右指箭號",bull:"項目符號",rarr:"向右箭號",rArr:"向右雙箭號",hArr:"左右雙箭號",diams:"黑鑽套裝",asymp:"約等於"}); -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/markdown/README.md: -------------------------------------------------------------------------------- 1 | # CKEditor-Markdown-Plugin 2 | Markdown Plugin for CKEditor 3 | This is a plugin for CKEditor, you can use `markdown` mode in CKEditor. Moreover, your article in `WYSIWYG` mode can be translated to `markdown`. 4 | 5 | ## Get Started 6 | It needs [ckeditor standard version](http://download.cksource.com/CKEditor/CKEditor/CKEditor%204.4.7/ckeditor_4.4.7_standard.zip) 7 | 8 | You can see the [DEMO](http://hectorguo.github.io/CKEditor-Markdown-Plugin/) 9 | 10 | ## Usage 11 | 1. Create a folder named `markdown` in `ckeditor/plugins` path; 12 | 2. Download the source, and uncompress it in the folder; 13 | 3. Edit `config.js` (such as `ckeditor/config.js`): 14 | ```javascript 15 | config.extraPlugins = 'markdown'; // add this plugin 16 | ``` 17 | Enjoy it! 18 | 19 | `config.js` example: 20 | ```javascript 21 | CKEDITOR.editorConfig = function( config ) { 22 | // Define changes to default configuration here. 23 | // For complete reference see: 24 | // http://docs.ckeditor.com/#!/api/CKEDITOR.config 25 | 26 | // The toolbar groups arrangement, optimized for two toolbar rows. 27 | config.toolbarGroups = [ 28 | // { name: 'clipboard', groups: [ 'clipboard', 'undo' ] }, 29 | // { name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ] }, 30 | // { name: 'links' }, 31 | // { name: 'insert' }, 32 | // { name: 'forms' }, 33 | { name: 'tools' }, 34 | // { name: 'document', groups: [ 'mode', 'document', 'doctools' ] }, 35 | 36 | // '/', 37 | { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] }, 38 | // { name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] }, 39 | { name: 'styles' }, 40 | { name: 'others' } 41 | // { name: 'colors' }, 42 | // { name: 'about' } 43 | ]; 44 | 45 | // Remove some buttons provided by the standard plugins, which are 46 | // not needed in the Standard(s) toolbar. 47 | config.removeButtons = 'Underline,Subscript,Superscript'; 48 | config.extraPlugins = 'markdown'; // this is the point! 49 | // Set the most common block elements. 50 | config.format_tags = 'p;h1;h2;h3;pre'; 51 | 52 | // Simplify the dialog windows. 53 | config.removeDialogTabs = 'image:advanced;link:advanced'; 54 | }; 55 | ``` 56 | 57 | ## Thanks 58 | - [marked](https://github.com/chjj/marked) 59 | - [to-markdown](http://domchristie.github.io/to-markdown) 60 | - [codemirror](https://github.com/codemirror/CodeMirror) 61 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang("specialchar","zh-cn",{euro:"欧元符号",lsquo:"左单引号",rsquo:"右单引号",ldquo:"左双引号",rdquo:"右双引号",ndash:"短划线",mdash:"长划线",iexcl:"竖翻叹号",cent:"分币符号",pound:"英镑符号",curren:"货币符号",yen:"日元符号",brvbar:"间断条",sect:"节标记",uml:"分音符",copy:"版权所有标记",ordf:"阴性顺序指示符",laquo:"左指双尖引号",not:"非标记",reg:"注册标记",macr:"长音符",deg:"度标记",sup2:"上标二",sup3:"上标三",acute:"锐音符",micro:"微符",para:"段落标记",middot:"中间点",cedil:"下加符",sup1:"上标一",ordm:"阳性顺序指示符",raquo:"右指双尖引号",frac14:"普通分数四分之一",frac12:"普通分数二分之一",frac34:"普通分数四分之三",iquest:"竖翻问号", 6 | Agrave:"带抑音符的拉丁文大写字母 A",Aacute:"带锐音符的拉丁文大写字母 A",Acirc:"带扬抑符的拉丁文大写字母 A",Atilde:"带颚化符的拉丁文大写字母 A",Auml:"带分音符的拉丁文大写字母 A",Aring:"带上圆圈的拉丁文大写字母 A",AElig:"拉丁文大写字母 Æ",Ccedil:"带下加符的拉丁文大写字母 C",Egrave:"带抑音符的拉丁文大写字母 E",Eacute:"带锐音符的拉丁文大写字母 E",Ecirc:"带扬抑符的拉丁文大写字母 E",Euml:"带分音符的拉丁文大写字母 E",Igrave:"带抑音符的拉丁文大写字母 I",Iacute:"带锐音符的拉丁文大写字母 I",Icirc:"带扬抑符的拉丁文大写字母 I",Iuml:"带分音符的拉丁文大写字母 I",ETH:"拉丁文大写字母 Eth",Ntilde:"带颚化符的拉丁文大写字母 N",Ograve:"带抑音符的拉丁文大写字母 O",Oacute:"带锐音符的拉丁文大写字母 O",Ocirc:"带扬抑符的拉丁文大写字母 O",Otilde:"带颚化符的拉丁文大写字母 O", 7 | Ouml:"带分音符的拉丁文大写字母 O",times:"乘号",Oslash:"带粗线的拉丁文大写字母 O",Ugrave:"带抑音符的拉丁文大写字母 U",Uacute:"带锐音符的拉丁文大写字母 U",Ucirc:"带扬抑符的拉丁文大写字母 U",Uuml:"带分音符的拉丁文大写字母 U",Yacute:"带抑音符的拉丁文大写字母 Y",THORN:"拉丁文大写字母 Thorn",szlig:"拉丁文小写字母清音 S",agrave:"带抑音符的拉丁文小写字母 A",aacute:"带锐音符的拉丁文小写字母 A",acirc:"带扬抑符的拉丁文小写字母 A",atilde:"带颚化符的拉丁文小写字母 A",auml:"带分音符的拉丁文小写字母 A",aring:"带上圆圈的拉丁文小写字母 A",aelig:"拉丁文小写字母 Ae",ccedil:"带下加符的拉丁文小写字母 C",egrave:"带抑音符的拉丁文小写字母 E",eacute:"带锐音符的拉丁文小写字母 E",ecirc:"带扬抑符的拉丁文小写字母 E",euml:"带分音符的拉丁文小写字母 E",igrave:"带抑音符的拉丁文小写字母 I", 8 | iacute:"带锐音符的拉丁文小写字母 I",icirc:"带扬抑符的拉丁文小写字母 I",iuml:"带分音符的拉丁文小写字母 I",eth:"拉丁文小写字母 Eth",ntilde:"带颚化符的拉丁文小写字母 N",ograve:"带抑音符的拉丁文小写字母 O",oacute:"带锐音符的拉丁文小写字母 O",ocirc:"带扬抑符的拉丁文小写字母 O",otilde:"带颚化符的拉丁文小写字母 O",ouml:"带分音符的拉丁文小写字母 O",divide:"除号",oslash:"带粗线的拉丁文小写字母 O",ugrave:"带抑音符的拉丁文小写字母 U",uacute:"带锐音符的拉丁文小写字母 U",ucirc:"带扬抑符的拉丁文小写字母 U",uuml:"带分音符的拉丁文小写字母 U",yacute:"带抑音符的拉丁文小写字母 Y",thorn:"拉丁文小写字母 Thorn",yuml:"带分音符的拉丁文小写字母 Y",OElig:"拉丁文大写连字 Oe",oelig:"拉丁文小写连字 Oe",372:"带扬抑符的拉丁文大写字母 W",374:"带扬抑符的拉丁文大写字母 Y", 9 | 373:"带扬抑符的拉丁文小写字母 W",375:"带扬抑符的拉丁文小写字母 Y",sbquo:"单下 9 形引号",8219:"单高横翻 9 形引号",bdquo:"双下 9 形引号",hellip:"水平省略号",trade:"商标标志",9658:"实心右指指针",bull:"加重号",rarr:"向右箭头",rArr:"向右双线箭头",hArr:"左右双线箭头",diams:"实心方块纸牌",asymp:"约等于"}); -------------------------------------------------------------------------------- /assets/static/ckeditor/skins/moono-lisa/readme.md: -------------------------------------------------------------------------------- 1 | "Moono-lisa" Skin 2 | ================= 3 | 4 | This skin has been made a **default skin** starting from CKEditor 4.6.0 and is maintained by the core developers. 5 | 6 | For more information about skins, please check the [CKEditor Skin SDK](https://docs.ckeditor.com/ckeditor4/docs/#!/guide/skin_sdk_intro) 7 | documentation. 8 | 9 | Features 10 | ------------------- 11 | "Moono-lisa" is a monochromatic skin, which offers a modern, flat and minimalistic look which blends very well in modern design. 12 | It comes with the following features: 13 | 14 | - Chameleon feature with brightness. 15 | - High-contrast compatibility. 16 | - Graphics source provided in SVG. 17 | 18 | Directory Structure 19 | ------------------- 20 | 21 | CSS parts: 22 | - **editor.css**: the main CSS file. It's simply loading several other files, for easier maintenance, 23 | - **mainui.css**: the file contains styles of entire editor outline structures, 24 | - **toolbar.css**: the file contains styles of the editor toolbar space (top), 25 | - **richcombo.css**: the file contains styles of the rich combo ui elements on toolbar, 26 | - **panel.css**: the file contains styles of the rich combo drop-down, it's not loaded 27 | until the first panel open up, 28 | - **elementspath.css**: the file contains styles of the editor elements path bar (bottom), 29 | - **menu.css**: the file contains styles of all editor menus including context menu and button drop-down, 30 | it's not loaded until the first menu open up, 31 | - **dialog.css**: the CSS files for the dialog UI, it's not loaded until the first dialog open, 32 | - **reset.css**: the file defines the basis of style resets among all editor UI spaces, 33 | - **preset.css**: the file defines the default styles of some UI elements reflecting the skin preference, 34 | - **editor_XYZ.css** and **dialog_XYZ.css**: browser specific CSS hacks. 35 | 36 | Other parts: 37 | - **skin.js**: the only JavaScript part of the skin that registers the skin, its browser specific files and its icons and defines the Chameleon feature, 38 | - **images/**: contains a fill general used images, 39 | - **dev/**: contains SVG and PNG source of the skin icons. 40 | 41 | License 42 | ------- 43 | 44 | Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 45 | 46 | For licensing, see LICENSE.md or [https://ckeditor.com/legal/ckeditor-oss-license](https://ckeditor.com/legal/ckeditor-oss-license) 47 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/wsc/dialogs/tmpFrameset.html: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /template/app.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | :author: Grey Li (李辉) 4 | :url: http://greyli.com 5 | :copyright: © 2019 Grey Li 6 | :license: MIT, see LICENSE for more details. 7 | """ 8 | import os 9 | from flask import Flask, render_template, flash, redirect, url_for, Markup 10 | 11 | app = Flask(__name__) 12 | app.secret_key = os.getenv('SECRET_KEY', 'secret string') 13 | 14 | user = { 15 | 'username': 'Grey Li', 16 | 'bio': 'A boy who loves movies and music.', 17 | } 18 | 19 | movies = [ 20 | {'name': 'My Neighbor Totoro', 'year': '1988'}, 21 | {'name': 'Three Colours trilogy', 'year': '1993'}, 22 | {'name': 'Forrest Gump', 'year': '1994'}, 23 | {'name': 'Perfect Blue', 'year': '1997'}, 24 | {'name': 'The Matrix', 'year': '1999'}, 25 | {'name': 'Memento', 'year': '2000'}, 26 | {'name': 'The Bucket list', 'year': '2007'}, 27 | {'name': 'Black Swan', 'year': '2010'}, 28 | {'name': 'Gone Girl', 'year': '2014'}, 29 | {'name': 'CoCo', 'year': '2017'}, 30 | ] 31 | 32 | 33 | @app.route('/watchlist') 34 | def watchlist(): 35 | return render_template('watchlist.html', user=user, movies=movies) 36 | 37 | 38 | @app.route('/') 39 | def index(): 40 | return render_template('index.html') 41 | 42 | 43 | # register template context handler 44 | @app.context_processor 45 | def inject_info(): 46 | foo = 'I am foo.' 47 | return dict(foo=foo) # equal to: return {'foo': foo} 48 | 49 | 50 | # register template global function 51 | @app.template_global() 52 | def bar(): 53 | return 'I am bar.' 54 | 55 | 56 | # register template filter 57 | @app.template_filter() 58 | def musical(s): 59 | return s + Markup(' ♫') 60 | 61 | 62 | # register template test 63 | @app.template_test() 64 | def baz(n): 65 | if n == 'baz': 66 | return True 67 | return False 68 | 69 | 70 | @app.route('/watchlist2') 71 | def watchlist_with_static(): 72 | return render_template('watchlist_with_static.html', user=user, movies=movies) 73 | 74 | 75 | # message flashing 76 | @app.route('/flash') 77 | def just_flash(): 78 | flash('I am flash, who is looking for me?') 79 | return redirect(url_for('index')) 80 | 81 | 82 | # 404 error handler 83 | @app.errorhandler(404) 84 | def page_not_found(e): 85 | return render_template('errors/404.html'), 404 86 | 87 | 88 | # 500 error handler 89 | @app.errorhandler(500) 90 | def internal_server_error(e): 91 | return render_template('errors/500.html'), 500 92 | -------------------------------------------------------------------------------- /cache/app.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | :author: Grey Li (李辉) 4 | :url: http://greyli.com 5 | :copyright: © 2019 Grey Li 6 | :license: MIT, see LICENSE for more details. 7 | """ 8 | import time 9 | 10 | from flask import Flask, url_for, redirect, request, flash, render_template 11 | from flask_caching import Cache 12 | from flask_debugtoolbar import DebugToolbarExtension 13 | 14 | app = Flask(__name__) 15 | 16 | app.config['SECRET_KEY'] = 'dev key' 17 | 18 | app.config['CACHE_TYPE'] = 'simple' 19 | app.config['DEBUG_TB_INTERCEPT_REDIRECTS'] = False 20 | 21 | cache = Cache(app) 22 | toolbar = DebugToolbarExtension(app) 23 | 24 | 25 | @app.route('/') 26 | def index(): 27 | return render_template('index.html') 28 | 29 | 30 | @app.route('/foo') 31 | def foo(): 32 | time.sleep(1) 33 | return render_template('foo.html') 34 | 35 | 36 | @app.route('/bar') 37 | @cache.cached(timeout=10 * 60) 38 | def bar(): 39 | time.sleep(1) 40 | return render_template('bar.html') 41 | 42 | 43 | @app.route('/baz') 44 | @cache.cached(timeout=60 * 60) 45 | def baz(): 46 | time.sleep(1) 47 | return render_template('baz.html') 48 | 49 | 50 | @app.route('/qux') 51 | @cache.cached(query_string=True) 52 | def qux(): 53 | time.sleep(1) 54 | page = request.args.get('page', 1) 55 | return render_template('qux.html', page=page) 56 | 57 | 58 | @app.route('/update/bar') 59 | def update_bar(): 60 | cache.delete('view/%s' % url_for('bar')) 61 | flash('Cached data for bar have been deleted.') 62 | return redirect(url_for('index')) 63 | 64 | 65 | @app.route('/update/baz') 66 | def update_baz(): 67 | cache.delete('view/%s' % url_for('baz')) 68 | flash('Cached data for baz have been deleted.') 69 | return redirect(url_for('index')) 70 | 71 | 72 | @app.route('/update/all') 73 | def update_all(): 74 | cache.clear() 75 | flash('All cached data deleted.') 76 | return redirect(url_for('index')) 77 | 78 | 79 | # cache other function 80 | @cache.cached(key_prefix='add') 81 | def add(a, b): 82 | time.sleep(2) 83 | return a + b 84 | 85 | 86 | # cache memorize (with argument) 87 | @cache.memoize() 88 | def add_pro(a, b): 89 | time.sleep(2) 90 | return a + b 91 | 92 | 93 | def del_add_cache(): 94 | cache.delete('add') 95 | 96 | 97 | # delete memorized cache 98 | def del_pro_cache(): 99 | cache.delete_memoized(add_pro) 100 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang("a11yhelp","zh-cn",{title:"辅助功能说明",contents:"帮助内容。要关闭此对话框请按 ESC 键。",legend:[{name:"常规",items:[{name:"编辑器工具栏",legend:"按 ${toolbarFocus} 切换到工具栏,使用 TAB 键和 SHIFT+TAB 组合键移动到上一个和下一个工具栏组。使用左右箭头键移动到上一个或下一个工具栏按钮。按空格键或回车键以选中工具栏按钮。"},{name:"编辑器对话框",legend:"在对话框内,按 TAB 键移动到下一个字段,按 SHIFT + TAB 组合键移动到上一个字段,按 ENTER 键提交对话框,按 ESC 键取消对话框。对于有多选项卡的对话框,可以按 ALT + F10 直接切换到或者按 TAB 键逐步移到选项卡列表,当焦点移到选项卡列表时可以用左右箭头键来移动到前后的选项卡。"},{name:"编辑器上下文菜单",legend:"用 ${contextMenu} 或者“应用程序键”打开上下文菜单。然后用 TAB 键或者下箭头键来移动到下一个菜单项;SHIFT + TAB 组合键或者上箭头键移动到上一个菜单项。用 SPACE 键或者 ENTER 键选择菜单项。用 SPACE 键,ENTER 键或者右箭头键打开子菜单。返回菜单用 ESC 键或者左箭头键。用 ESC 键关闭上下文菜单。"}, 6 | {name:"编辑器列表框",legend:"在列表框中,移到下一列表项用 TAB 键或者下箭头键。移到上一列表项用SHIFT+TAB 组合键或者上箭头键,用 SPACE 键或者 ENTER 键选择列表项。用 ESC 键收起列表框。"},{name:"编辑器元素路径栏",legend:"按 ${elementsPathFocus} 以导航到元素路径栏,使用 TAB 键或右箭头键选择下一个元素,使用 SHIFT+TAB 组合键或左箭头键选择上一个元素,按空格键或回车键以选定编辑器里的元素。"}]},{name:"命令",items:[{name:" 撤消命令",legend:"按 ${undo}"},{name:" 重做命令",legend:"按 ${redo}"},{name:" 加粗命令",legend:"按 ${bold}"},{name:" 倾斜命令",legend:"按 ${italic}"},{name:" 下划线命令",legend:"按 ${underline}"},{name:" 链接命令",legend:"按 ${link}"},{name:" 工具栏折叠命令",legend:"按 ${toolbarCollapse}"}, 7 | {name:"访问前一个焦点区域的命令",legend:"按 ${accessPreviousSpace} 访问^符号前最近的不可访问的焦点区域,例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。"},{name:"访问下一个焦点区域命令",legend:"按 ${accessNextSpace} 以访问^符号后最近的不可访问的焦点区域。例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。"},{name:"辅助功能帮助",legend:"按 ${a11yHelp}"},{name:"粘贴为纯文本",legend:"按 ${pastetext}",legendEdge:"按 ${pastetext},然后再按 ${paste}"}]}],tab:"Tab 键",pause:"暂停键",capslock:"大写锁定键",escape:"Esc 键",pageUp:"上翻页键",pageDown:"下翻页键",leftArrow:"向左箭头键",upArrow:"向上箭头键",rightArrow:"向右箭头键",downArrow:"向下箭头键",insert:"插入键", 8 | leftWindowKey:"左 WIN 键",rightWindowKey:"右 WIN 键",selectKey:"选择键",numpad0:"小键盘 0 键",numpad1:"小键盘 1 键",numpad2:"小键盘 2 键",numpad3:"小键盘 3 键",numpad4:"小键盘 4 键",numpad5:"小键盘 5 键",numpad6:"小键盘 6 键",numpad7:"小键盘 7 键",numpad8:"小键盘 8 键",numpad9:"小键盘 9 键",multiply:"星号键",add:"加号键",subtract:"减号键",decimalPoint:"小数点键",divide:"除号键",f1:"F1 键",f2:"F2 键",f3:"F3 键",f4:"F4 键",f5:"F5 键",f6:"F6 键",f7:"F7 键",f8:"F8 键",f9:"F9 键",f10:"F10 键",f11:"F11 键",f12:"F12 键",numLock:"数字锁定键",scrollLock:"滚动锁定键",semiColon:"分号键",equalSign:"等号键", 9 | comma:"逗号键",dash:"短划线键",period:"句号键",forwardSlash:"斜杠键",graveAccent:"重音符键",openBracket:"左中括号键",backSlash:"反斜杠键",closeBracket:"右中括号键",singleQuote:"单引号键"}); -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/old/appendto.html: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | Append To Page Element Using JavaScript Code — CKEditor Sample 10 | 11 | 12 | 13 | 14 |

15 | CKEditor Samples » Append To Page Element Using JavaScript Code 16 |

17 |
18 | This sample is not maintained anymore. Check out the brand new samples in CKEditor SDK. 19 |
20 |
21 |
22 |

23 | The CKEDITOR.appendTo() method serves to to place editors inside existing DOM elements. Unlike CKEDITOR.replace(), 24 | a target container to be replaced is no longer necessary. A new editor 25 | instance is inserted directly wherever it is desired. 26 |

27 |
CKEDITOR.appendTo( 'container_id',
28 | 	{ /* Configuration options to be used. */ }
29 | 	'Editor content to be used.'
30 | );
31 |
32 | 46 |
47 |
48 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | CKEDITOR.plugins.setLang("a11yhelp","zh",{title:"輔助工具指南",contents:"說明內容。若要關閉此對話框請按「ESC」。",legend:[{name:"一般",items:[{name:"編輯器工具列",legend:"請按 ${toolbarFocus} 以導覽到工具列。利用 TAB 或 SHIFT+TAB 以便移動到下一個及前一個工具列群組。利用右方向鍵或左方向鍵以便移動到下一個及上一個工具列按鈕。按下空白鍵或 ENTER 鍵啟用工具列按鈕。"},{name:"編輯器對話方塊",legend:"在對話框中,按下 TAB 鍵以導覽到下一個對話框元素,按下 SHIFT+TAB 以移動到上一個對話框元素,按下 ENTER 以遞交對話框,按下 ESC 以取消對話框。當對話框有多個分頁時,可以使用 ALT+F10 或是在對話框分頁順序中的一部份按下 TAB 以使用分頁列表。焦點在分頁列表上時,分別使用右方向鍵及左方向鍵移動到下一個及上一個分頁。"},{name:"編輯器內容功能表",legend:"請按下「${contextMenu}」或是「應用程式鍵」以開啟內容選單。以「TAB」或是「↓」鍵移動到下一個選單選項。以「SHIFT + TAB」或是「↑」鍵移動到上一個選單選項。按下「空白鍵」或是「ENTER」鍵以選取選單選項。以「空白鍵」或「ENTER」或「→」開啟目前選項之子選單。以「ESC」或「←」回到父選單。以「ESC」鍵關閉內容選單」。"}, 6 | {name:"編輯器清單方塊",legend:"在清單方塊中,使用 TAB 或下方向鍵移動到下一個列表項目。使用 SHIFT+TAB 或上方向鍵移動到上一個列表項目。按下空白鍵或 ENTER 以選取列表選項。按下 ESC 以關閉清單方塊。"},{name:"編輯器元件路徑工具列",legend:"請按 ${elementsPathFocus} 以瀏覽元素路徑列。利用 TAB 或右方向鍵以便移動到下一個元素按鈕。利用 SHIFT 或左方向鍵以便移動到上一個按鈕。按下空白鍵或 ENTER 鍵來選取在編輯器中的元素。"}]},{name:"命令",items:[{name:"復原命令",legend:"請按下「${undo}」"},{name:"重複命令",legend:"請按下「 ${redo}」"},{name:"粗體命令",legend:"請按下「${bold}」"},{name:"斜體",legend:"請按下「${italic}」"},{name:"底線命令",legend:"請按下「${underline}」"},{name:"連結",legend:"請按下「${link}」"}, 7 | {name:"隱藏工具列",legend:"請按下「${toolbarCollapse}」"},{name:"存取前一個焦點空間命令",legend:"請按下 ${accessPreviousSpace} 以存取最近但無法靠近之插字符號前的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。"},{name:"存取下一個焦點空間命令",legend:"請按下 ${accessNextSpace} 以存取最近但無法靠近之插字符號後的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。"},{name:"協助工具說明",legend:"請按下「${a11yHelp}」"},{name:"以純文字貼上",legend:"按 ${pastetext}",legendEdge:"按 ${pastetext},再來是 ${paste}"}]}],tab:"Tab",pause:"Pause",capslock:"Caps Lock",escape:"Esc",pageUp:"Page Up",pageDown:"Page Down",leftArrow:"向左箭號", 8 | upArrow:"向上鍵號",rightArrow:"向右鍵號",downArrow:"向下鍵號",insert:"插入",leftWindowKey:"左方 Windows 鍵",rightWindowKey:"右方 Windows 鍵",selectKey:"選擇鍵",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"乘號",add:"新增",subtract:"減號",decimalPoint:"小數點",divide:"除號",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock", 9 | scrollLock:"Scroll Lock",semiColon:"分號",equalSign:"等號",comma:"逗號",dash:"虛線",period:"句點",forwardSlash:"斜線",graveAccent:"抑音符號",openBracket:"左方括號",backSlash:"反斜線",closeBracket:"右方括號",singleQuote:"單引號"}); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Flask Examples 2 | 3 | Example applications for Flask beginners. 4 | 5 | ## Installation 6 | 7 | First, you need to clone this repository: 8 | 9 | ```bash 10 | git clone git@github.com:greyli/flask-examples.git 11 | ``` 12 | 13 | Or: 14 | 15 | ```bash 16 | git clone https://github.com/helloflask/flask-examples.git 17 | ``` 18 | 19 | Then change into the `flask-examples` folder: 20 | 21 | ```bash 22 | cd flask-examples 23 | ``` 24 | 25 | Now, we will need to create a virtual environment and install all the dependencies: 26 | 27 | ```bash 28 | python3 -m venv venv # on Windows, use "python -m venv venv" instead 29 | . venv/bin/activate # on Windows, use "venv\Scripts\activate" instead 30 | pip install -r requirements.txt 31 | ``` 32 | 33 | ## How to Run a Specific Example Application? 34 | 35 | **Before run a specific example application, make sure you have activated the virtual enviroment.** 36 | 37 | For example, if you want to run the Hello application, just execute these commands: 38 | 39 | ```bash 40 | cd hello 41 | flask run 42 | ``` 43 | 44 | Similarly, you can run HTTP application like this: 45 | 46 | ```bash 47 | cd http 48 | flask run 49 | ``` 50 | 51 | The applications will always running on http://localhost:5000. 52 | 53 | ## Example Applications Menu 54 | 55 | - Hello (`/hello`): Say hello with Flask. 56 | - HTTP (`/http`): HTTP handing in Flask. 57 | - Templates (`/templates`): Templating with Flask and Jinja2. 58 | - Form (`/form`): Form handing with Flask-WTF (WTForms), File upload and integrating with Flask-CKEditor, Flask-Dropzone. 59 | - Database (`/database`): Database with Flask-SQLAlchemy (SQLAlchemy). 60 | - Email (`/email`): Email with Flask-Mail, SendGrid 61 | - Assets (`/assets`): Assets profiling with Flask-Assets. 62 | - Cache (`/cache`): Cache with Flask-Caching. 63 | 64 | ## Advanced Examples Flask Applications 65 | 66 | - [SayHello](https://github.com/greyli/sayhello): A simple message board. 67 | - [Bluelog](https://github.com/greyli/bluelog): A blog engine that supports category and resource management. 68 | - [Albumy](https://github.com/greyli/albumy): A full-featured photo-sharing social networking. 69 | - [Todoism](https://github.com/greyli/todoism): A to-do application implements as SPA, it supports i18n and provides web APIs. 70 | - [CatChat](https://github.com/greyli/catchat): A chat room based on WebSocket. 71 | 72 | ## Contributions 73 | 74 | Any contribution is welcome, just fork and submit your PR. 75 | 76 | ## License 77 | 78 | This project is licensed under the MIT License (see the `LICENSE` file for details). 79 | -------------------------------------------------------------------------------- /assets/static/ckeditor/plugins/popup/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. 3 | * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license 4 | */ 5 | 6 | CKEDITOR.plugins.add( 'popup' ); 7 | 8 | CKEDITOR.tools.extend( CKEDITOR.editor.prototype, { 9 | /** 10 | * Opens Browser in a popup. The `width` and `height` parameters accept 11 | * numbers (pixels) or percent (of screen size) values. 12 | * 13 | * @member CKEDITOR.editor 14 | * @param {String} url The url of the external file browser. 15 | * @param {Number/String} [width='80%'] Popup window width. 16 | * @param {Number/String} [height='70%'] Popup window height. 17 | * @param {String} [options='location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes'] 18 | * Popup window features. 19 | */ 20 | popup: function( url, width, height, options ) { 21 | width = width || '80%'; 22 | height = height || '70%'; 23 | 24 | if ( typeof width == 'string' && width.length > 1 && width.substr( width.length - 1, 1 ) == '%' ) 25 | width = parseInt( window.screen.width * parseInt( width, 10 ) / 100, 10 ); 26 | 27 | if ( typeof height == 'string' && height.length > 1 && height.substr( height.length - 1, 1 ) == '%' ) 28 | height = parseInt( window.screen.height * parseInt( height, 10 ) / 100, 10 ); 29 | 30 | if ( width < 640 ) 31 | width = 640; 32 | 33 | if ( height < 420 ) 34 | height = 420; 35 | 36 | var top = parseInt( ( window.screen.height - height ) / 2, 10 ), 37 | left = parseInt( ( window.screen.width - width ) / 2, 10 ); 38 | 39 | options = ( options || 'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes' ) + ',width=' + width + 40 | ',height=' + height + 41 | ',top=' + top + 42 | ',left=' + left; 43 | 44 | var popupWindow = window.open( '', null, options, true ); 45 | 46 | // Blocked by a popup blocker. 47 | if ( !popupWindow ) 48 | return false; 49 | 50 | try { 51 | // Chrome is problematic with moveTo/resizeTo, but it's not really needed here (https://dev.ckeditor.com/ticket/8855). 52 | var ua = navigator.userAgent.toLowerCase(); 53 | if ( ua.indexOf( ' chrome/' ) == -1 ) { 54 | popupWindow.moveTo( left, top ); 55 | popupWindow.resizeTo( width, height ); 56 | } 57 | popupWindow.focus(); 58 | popupWindow.location.href = url; 59 | } catch ( e ) { 60 | popupWindow = window.open( url, null, options, true ); 61 | } 62 | 63 | return true; 64 | } 65 | } ); 66 | -------------------------------------------------------------------------------- /assets/static/ckeditor/samples/old/tabindex.html: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | TAB Key-Based Navigation — CKEditor Sample 10 | 11 | 12 | 22 | 42 | 43 | 44 |

45 | CKEditor Samples » TAB Key-Based Navigation 46 |

47 |
48 | This sample is not maintained anymore. Check out its brand new version in CKEditor SDK. 49 |
50 |
51 |

52 | This sample shows how tab key navigation among editor instances is 53 | affected by the tabIndex attribute from 54 | the original page element. Use TAB key to move between the editors. 55 |

56 |
57 |

58 | 59 |

60 |
61 |

62 | 63 |

64 |

65 | 66 |

67 | 77 | 78 | 79 | --------------------------------------------------------------------------------