├── menus ├── __init__.py ├── migrations │ └── __init__.py ├── templates │ └── menu │ │ ├── empty.html │ │ ├── dummy.html │ │ ├── sub_menu.html │ │ ├── breadcrumb.html │ │ ├── language_chooser.html │ │ └── menu.html ├── templatetags │ └── __init__.py ├── exceptions.py └── models.py ├── cms ├── cache │ └── __init__.py ├── plugins │ ├── __init__.py │ ├── file │ │ ├── __init__.py │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ ├── 0002_freeze.py │ │ │ └── 0001_initial.py │ │ ├── templates │ │ │ └── cms │ │ │ │ └── plugins │ │ │ │ └── file.html │ │ └── cms_plugins.py │ ├── link │ │ ├── __init__.py │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ └── 0002_link_rename.py │ │ ├── templates │ │ │ └── cms │ │ │ │ └── plugins │ │ │ │ └── link.html │ │ ├── forms.py │ │ └── models.py │ ├── text │ │ ├── __init__.py │ │ ├── widgets │ │ │ └── __init__.py │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ ├── 0002_freeze.py │ │ │ └── 0001_initial.py │ │ ├── templates │ │ │ └── cms │ │ │ │ └── plugins │ │ │ │ ├── text.html │ │ │ │ ├── text_plugin_change_form.html │ │ │ │ └── text_plugin_fieldset.html │ │ └── forms.py │ ├── flash │ │ ├── __init__.py │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ └── 0002_freeze.py │ │ ├── forms.py │ │ ├── cms_plugins.py │ │ └── models.py │ ├── googlemap │ │ ├── __init__.py │ │ ├── migrations │ │ │ └── __init__.py │ │ └── cms_plugins.py │ ├── inherit │ │ ├── __init__.py │ │ ├── migrations │ │ │ └── __init__.py │ │ ├── templates │ │ │ └── cms │ │ │ │ └── plugins │ │ │ │ └── inherit_plugins.html │ │ ├── models.py │ │ └── forms.py │ ├── picture │ │ ├── __init__.py │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ ├── 0002_link_rename.py │ │ │ └── 0003_freeze.py │ │ ├── templates │ │ │ └── cms │ │ │ │ └── plugins │ │ │ │ └── picture.html │ │ └── cms_plugins.py │ ├── snippet │ │ ├── __init__.py │ │ ├── migrations │ │ │ └── __init__.py │ │ ├── templates │ │ │ └── cms │ │ │ │ └── plugins │ │ │ │ └── snippet.html │ │ └── admin.py │ ├── teaser │ │ ├── __init__.py │ │ ├── migrations │ │ │ └── __init__.py │ │ ├── templates │ │ │ └── cms │ │ │ │ └── plugins │ │ │ │ └── teaser.html │ │ ├── cms_plugins.py │ │ └── models.py │ ├── twitter │ │ ├── __init__.py │ │ ├── migrations │ │ │ └── __init__.py │ │ ├── templates │ │ │ └── cms │ │ │ │ └── plugins │ │ │ │ └── twitter_search.html │ │ ├── cms_plugins.py │ │ └── models.py │ ├── video │ │ ├── __init__.py │ │ ├── migrations │ │ │ └── __init__.py │ │ ├── forms.py │ │ └── settings.py │ └── utils.py ├── publisher │ ├── models.py │ ├── __init__.py │ ├── errors.py │ ├── query.py │ └── manager.py ├── toolbar │ ├── __init__.py │ └── constants.py ├── admin │ ├── dialog │ │ ├── __init__.py │ │ └── forms.py │ ├── __init__.py │ └── models.py ├── forms │ └── __init__.py ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ ├── subcommands │ │ ├── __init__.py │ │ ├── moderator.py │ │ └── list.py │ │ └── cms.py ├── middleware │ ├── __init__.py │ ├── user.py │ └── page.py ├── migrations │ ├── __init__.py │ └── 0003_remove_placeholder.py ├── templatetags │ ├── __init__.py │ ├── js.py │ └── placeholder_tags.py ├── test_utils │ ├── __init__.py │ ├── util │ │ ├── __init__.py │ │ ├── mock.py │ │ └── menu_extender.py │ ├── fixtures │ │ ├── __init__.py │ │ ├── fakemlng.py │ │ ├── templatetags.py │ │ └── navextenders.py │ └── .coveragerc ├── templates │ ├── cms │ │ ├── content.html │ │ ├── dummy.html │ │ └── toolbar │ │ │ ├── items │ │ │ ├── status.html │ │ │ ├── _post_button_hidden.html │ │ │ ├── switcher.html │ │ │ ├── anchor.html │ │ │ ├── button.html │ │ │ ├── list.html │ │ │ └── login.html │ │ │ ├── placeholder_wrapper.html │ │ │ └── placeholder.html │ ├── admin │ │ ├── cms │ │ │ ├── page │ │ │ │ ├── loading.html │ │ │ │ ├── widgets │ │ │ │ │ ├── placeholder_editor.html │ │ │ │ │ ├── plugin_item.html │ │ │ │ │ ├── plugin_editor.html │ │ │ │ │ └── installed_plugins_inc.html │ │ │ │ ├── dialog │ │ │ │ │ ├── base.html │ │ │ │ │ └── copy.html │ │ │ │ ├── menu.html │ │ │ │ ├── moderation_messages.html │ │ │ │ ├── plugin_forms_history.html │ │ │ │ ├── plugin_forms_ok.html │ │ │ │ ├── recover_form.html │ │ │ │ ├── revision_form.html │ │ │ │ ├── includes │ │ │ │ │ └── fieldset.html │ │ │ │ └── change_list_tree.html │ │ │ └── mail │ │ │ │ ├── page_user_change.txt │ │ │ │ ├── base.txt │ │ │ │ ├── page_user_change.html │ │ │ │ ├── approvement_required.txt │ │ │ │ └── approvement_required.html │ │ └── page_submit_line.html │ └── tests │ │ └── rendering │ │ └── base.html ├── sitemaps │ ├── __init__.py │ └── cms_sitemap.py ├── media │ └── cms │ │ ├── images │ │ ├── bold.gif │ │ ├── copy.gif │ │ ├── cut.gif │ │ ├── link.png │ │ ├── logo.jpg │ │ ├── pony.jpg │ │ ├── close.gif │ │ ├── icons.png │ │ ├── image.png │ │ ├── italic.gif │ │ ├── nav-bg.gif │ │ ├── indicator.gif │ │ ├── page_find.gif │ │ ├── unordered.gif │ │ ├── cms_toolbar.gif │ │ ├── cms_toolbar.png │ │ ├── icon_addlink.gif │ │ ├── jquery │ │ │ ├── tabs.png │ │ │ ├── nav-bg.gif │ │ │ ├── default-bg.gif │ │ │ ├── dialog-e.gif │ │ │ ├── dialog-n.gif │ │ │ ├── dialog-ne.gif │ │ │ ├── dialog-nw.gif │ │ │ ├── dialog-s.gif │ │ │ ├── dialog-se.gif │ │ │ ├── dialog-sw.gif │ │ │ ├── dialog-w.gif │ │ │ ├── dialog-title.gif │ │ │ ├── resizable-e.gif │ │ │ ├── resizable-n.gif │ │ │ ├── resizable-ne.gif │ │ │ ├── resizable-nw.gif │ │ │ ├── resizable-s.gif │ │ │ ├── resizable-se.gif │ │ │ ├── resizable-sw.gif │ │ │ ├── resizable-w.gif │ │ │ ├── slider-bg-1.png │ │ │ ├── slider-bg-2.png │ │ │ ├── accordion-left.png │ │ │ ├── accordion-right.png │ │ │ ├── slider-handle.gif │ │ │ ├── accordion-middle.png │ │ │ ├── accordion-left-act.png │ │ │ ├── accordion-left-over.png │ │ │ ├── accordion-middle-act.png │ │ │ ├── accordion-right-act.png │ │ │ ├── accordion-right-over.png │ │ │ ├── accordion-middle-over.png │ │ │ ├── dialog-titlebar-close.png │ │ │ └── dialog-titlebar-close-hover.png │ │ ├── plugins │ │ │ ├── file.png │ │ │ ├── link.png │ │ │ ├── image.png │ │ │ ├── snippet.png │ │ │ └── get_flash_player.gif │ │ ├── sitemap-exim.gif │ │ ├── sitemap-exlm.gif │ │ ├── sitemap-extm.gif │ │ ├── file_icons │ │ │ ├── flv.gif │ │ │ ├── gif.gif │ │ │ ├── jpg.gif │ │ │ ├── mp3.png │ │ │ ├── ods.png │ │ │ ├── odt.png │ │ │ ├── pdf.gif │ │ │ ├── php.gif │ │ │ ├── png.gif │ │ │ ├── swf.gif │ │ │ ├── tgz.png │ │ │ ├── ttf.gif │ │ │ ├── txt.gif │ │ │ ├── txt.png │ │ │ ├── wav.gif │ │ │ ├── zip.png │ │ │ ├── html.gif │ │ │ └── java.gif │ │ ├── icon_extension.gif │ │ ├── sitemap-li-bg.jpg │ │ ├── toolbar │ │ │ ├── loader.gif │ │ │ ├── toolbar_bg.gif │ │ │ ├── frame_shadow.gif │ │ │ ├── sprite_toolbar.png │ │ │ ├── icons │ │ │ │ ├── icon_admin.png │ │ │ │ ├── icon_child.png │ │ │ │ ├── icon_edit.png │ │ │ │ ├── icon_lock.png │ │ │ │ ├── icon_page.png │ │ │ │ ├── icon_delete.png │ │ │ │ ├── icon_history.png │ │ │ │ ├── icon_sibling.png │ │ │ │ ├── icon_sitemap.png │ │ │ │ └── icon_template.png │ │ │ └── sprite_toolbar-ie.png │ │ ├── icon_deletelink.gif │ │ ├── icon_pluginedit.gif │ │ ├── pluginlist-delete.png │ │ ├── sitemap-li-drag.gif │ │ ├── sitemap-li-collapse.gif │ │ ├── pluginlist-holder-bg.gif │ │ └── changelist-filter-button-bg.jpg │ │ ├── swf │ │ ├── player.swf │ │ └── expressInstall.swf │ │ ├── jstree │ │ ├── themes │ │ │ ├── default │ │ │ │ ├── f.png │ │ │ │ ├── li.gif │ │ │ │ ├── dot.gif │ │ │ │ ├── plus.gif │ │ │ │ ├── context.gif │ │ │ │ ├── create.png │ │ │ │ ├── fminus.gif │ │ │ │ ├── fplus.gif │ │ │ │ ├── lastli.gif │ │ │ │ ├── marker.gif │ │ │ │ ├── remove.gif │ │ │ │ ├── remove.png │ │ │ │ ├── rename.png │ │ │ │ ├── fplus_rtl.gif │ │ │ │ ├── throbber.gif │ │ │ │ ├── fminus_rtl.gif │ │ │ │ ├── lastli_rtl.gif │ │ │ │ └── marker_rtl.gif │ │ │ └── classic │ │ │ │ ├── plus.gif │ │ │ │ ├── folder.gif │ │ │ │ ├── minus.gif │ │ │ │ ├── folderopen.gif │ │ │ │ └── style.css │ │ └── _lib │ │ │ └── jquery.log.js │ │ ├── css │ │ ├── tinymce_toolbar.css │ │ ├── plugin_forms.css │ │ ├── jquery │ │ │ └── cupertino │ │ │ │ └── images │ │ │ │ ├── ui-icons_2694e8_256x240.png │ │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ │ ├── ui-icons_3d80b3_256x240.png │ │ │ │ ├── ui-icons_72a7cf_256x240.png │ │ │ │ ├── ui-icons_ffffff_256x240.png │ │ │ │ ├── ui-bg_flat_15_cd0a0a_40x100.png │ │ │ │ ├── ui-bg_glass_100_e4f1fb_1x400.png │ │ │ │ ├── ui-bg_glass_50_3baae3_1x400.png │ │ │ │ ├── ui-bg_glass_80_d7ebf9_1x400.png │ │ │ │ ├── ui-bg_highlight-hard_70_000000_1x100.png │ │ │ │ ├── ui-bg_highlight-soft_25_ffef8f_1x100.png │ │ │ │ ├── ui-bg_diagonals-thick_90_eeeeee_40x40.png │ │ │ │ ├── ui-bg_highlight-hard_100_f2f5f7_1x100.png │ │ │ │ └── ui-bg_highlight-soft_100_deedf7_1x100.png │ │ ├── jquery.tooltip.css │ │ ├── rte.css │ │ └── change_form.css │ │ ├── wymeditor │ │ ├── skins │ │ │ ├── compact │ │ │ │ ├── icons.png │ │ │ │ └── skin.js │ │ │ ├── default │ │ │ │ └── icons.png │ │ │ ├── twopanels │ │ │ │ └── icons.png │ │ │ ├── wymeditor_icon.png │ │ │ ├── silver │ │ │ │ ├── images │ │ │ │ │ ├── bg.header.gif │ │ │ │ │ ├── bg.wymeditor.png │ │ │ │ │ ├── icons.silver.gif │ │ │ │ │ └── bg.selector.silver.gif │ │ │ │ └── README │ │ │ └── minimal │ │ │ │ ├── images │ │ │ │ ├── bg.header.gif │ │ │ │ ├── bg.wymeditor.png │ │ │ │ ├── icons.silver.gif │ │ │ │ └── bg.selector.silver.gif │ │ │ │ └── skin.js │ │ ├── iframe │ │ │ └── default │ │ │ │ ├── lbl-h1.png │ │ │ │ ├── lbl-h2.png │ │ │ │ ├── lbl-h3.png │ │ │ │ ├── lbl-h4.png │ │ │ │ ├── lbl-h5.png │ │ │ │ ├── lbl-h6.png │ │ │ │ ├── lbl-p.png │ │ │ │ ├── lbl-pre.png │ │ │ │ ├── lbl-blockquote.png │ │ │ │ └── wymiframe.html │ │ ├── plugins │ │ │ └── fullscreen │ │ │ │ └── icon_fullscreen.gif │ │ └── lang │ │ │ └── zh_cn.js │ │ └── js │ │ ├── wymeditor │ │ └── skins │ │ │ └── django │ │ │ └── icons.png │ │ ├── lib │ │ ├── jquery.bind.js │ │ └── functional.js │ │ ├── csrf.js │ │ └── plugins │ │ └── jquery.cookie.js ├── app_base.py ├── locale │ ├── ar │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── bg │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── bn │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── ca │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── cs │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── cy │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── da │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── de │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── el │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── en │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ ├── djangojs.mo │ │ │ └── djangojs.po │ ├── es │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── et │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── eu │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── fa │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── fi │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── fr │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── gu │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── he │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── hi │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── hu │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── it │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── ja │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── nl │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── no │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── pl │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── pt │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── ro │ │ └── LC_MESSAGES │ │ │ └── django.mo │ ├── ru │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── sk │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── sv │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── tr │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── es_AR │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── pt_BR │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ ├── zh_CN │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── djangojs.mo │ └── zh_TW │ │ └── LC_MESSAGES │ │ ├── django.mo │ │ └── djangojs.mo ├── context_processors.py ├── menu_bases.py ├── __init__.py ├── tests │ ├── mail.py │ ├── __init__.py │ └── docs.py ├── exceptions.py ├── urls.py ├── utils │ └── copy_plugins.py ├── plugin_processors.py ├── conf │ └── __init__.py └── models │ └── metaclasses.py ├── tests ├── project │ ├── models.py │ ├── __init__.py │ ├── fileapp │ │ ├── __init__.py │ │ └── models.py │ ├── fakemlng │ │ ├── __init__.py │ │ └── models.py │ ├── pluginapp │ │ ├── __init__.py │ │ ├── plugins │ │ │ ├── __init__.py │ │ │ └── manytomany_rel │ │ │ │ ├── __init__.py │ │ │ │ ├── models.py │ │ │ │ └── cms_plugins.py │ │ └── models.py │ ├── sampleapp │ │ ├── __init__.py │ │ ├── media │ │ │ └── sampleapp │ │ │ │ └── img │ │ │ │ └── gift.jpg │ │ ├── templates │ │ │ └── sampleapp │ │ │ │ ├── category_view.html │ │ │ │ └── home.html │ │ ├── admin.py │ │ ├── cms_app.py │ │ ├── views.py │ │ ├── urls.py │ │ └── models.py │ ├── placeholderapp │ │ └── __init__.py │ ├── templates │ │ ├── menu │ │ │ ├── sub_menu.html │ │ │ ├── test_language_chooser.html │ │ │ ├── breadcrumb.html │ │ │ ├── language_chooser.html │ │ │ └── menu.html │ │ ├── extra_context.html │ │ ├── placeholder_tests │ │ │ ├── child.html │ │ │ ├── nested_super_level4.html │ │ │ ├── test_eleven.html │ │ │ ├── nested_super_level1.html │ │ │ ├── nested_super_level2.html │ │ │ ├── nested_super_level3.html │ │ │ ├── outside_base.html │ │ │ ├── base.html │ │ │ ├── test_one.html │ │ │ ├── outside.html │ │ │ ├── test_three.html │ │ │ ├── test_two.html │ │ │ ├── test_seven.html │ │ │ ├── test_five.html │ │ │ ├── test_four.html │ │ │ └── test_six.html │ │ ├── unicode_placeholder.html │ │ ├── add_placeholder.html │ │ ├── sidebar_submenu.html │ │ ├── sidebar_submenu_root.html │ │ ├── 404.html │ │ ├── col_two.html │ │ └── col_three.html │ ├── noadmin_urls.py │ ├── testrunner.py │ ├── nonroot_urls.py │ ├── urls.py │ ├── urls_for_apphook_tests.py │ ├── second_urls_for_apphook_tests.py │ ├── manage.py │ ├── cms_urls_for_apphook_tests.py │ └── second_cms_urls_for_apphook_tests.py ├── .coveragerc ├── django-12.cfg ├── django-13.cfg ├── django-124.cfg ├── django-trunk.cfg └── buildout.cfg ├── docs ├── static │ ├── file.png │ ├── minus.png │ ├── plus.png │ ├── screen1.png │ ├── screen2.png │ └── screen3.png ├── images │ ├── cmsapphook.png │ ├── edit-banner.png │ ├── first-admin.png │ ├── it-worked.png │ ├── it-works-cms.png │ ├── my-first-page.png │ ├── hello-cms-world.png │ ├── first-placeholders.png │ └── frontend-placeholder-add-plugin.png ├── templates │ ├── page.html │ └── genindex-split.html ├── upgrade │ └── index.rst ├── extending_cms │ └── searchdocs.rst ├── _ext │ └── djangocms.py └── advanced │ └── sitemap.rst ├── .hgignore ├── .hgtags ├── MANIFEST.in ├── .tx └── config └── .gitignore /menus/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/cache/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/publisher/models.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/toolbar/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/project/models.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/admin/dialog/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/forms/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cms/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/middleware/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/file/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/link/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/text/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/test_utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /menus/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/project/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/flash/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/googlemap/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/inherit/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/picture/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/snippet/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/teaser/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/twitter/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/video/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/test_utils/util/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /menus/templates/menu/empty.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /menus/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/project/fileapp/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/text/widgets/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/test_utils/fixtures/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/project/fakemlng/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/project/pluginapp/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/project/sampleapp/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/file/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/flash/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/inherit/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/link/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/picture/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/snippet/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/teaser/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/text/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/twitter/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/video/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/templates/cms/content.html: -------------------------------------------------------------------------------- 1 | {{ content }} -------------------------------------------------------------------------------- /tests/project/placeholderapp/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/project/pluginapp/plugins/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/management/commands/subcommands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/googlemap/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/templates/cms/dummy.html: -------------------------------------------------------------------------------- 1 | {% extends template %} -------------------------------------------------------------------------------- /menus/templates/menu/dummy.html: -------------------------------------------------------------------------------- 1 | {% extends template %} -------------------------------------------------------------------------------- /tests/project/pluginapp/plugins/manytomany_rel/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/plugins/text/templates/cms/plugins/text.html: -------------------------------------------------------------------------------- 1 | {{ body|safe }} -------------------------------------------------------------------------------- /cms/plugins/snippet/templates/cms/plugins/snippet.html: -------------------------------------------------------------------------------- 1 | {{ content|safe }} -------------------------------------------------------------------------------- /tests/project/templates/menu/sub_menu.html: -------------------------------------------------------------------------------- 1 | {% include "menu/menu.html" %} -------------------------------------------------------------------------------- /cms/sitemaps/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from cms_sitemap import * -------------------------------------------------------------------------------- /menus/templates/menu/sub_menu.html: -------------------------------------------------------------------------------- 1 | {% include "menu/menu.html" %} 2 | 3 | -------------------------------------------------------------------------------- /tests/project/templates/extra_context.html: -------------------------------------------------------------------------------- 1 | {% load cms_tags %}{% placeholder "extra_context" %} -------------------------------------------------------------------------------- /docs/static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/static/file.png -------------------------------------------------------------------------------- /docs/static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/static/minus.png -------------------------------------------------------------------------------- /docs/static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/static/plus.png -------------------------------------------------------------------------------- /docs/static/screen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/static/screen1.png -------------------------------------------------------------------------------- /docs/static/screen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/static/screen2.png -------------------------------------------------------------------------------- /docs/static/screen3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/static/screen3.png -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/child.html: -------------------------------------------------------------------------------- 1 | {% load cms_tags %} 2 | 3 | {% placeholder "child" %} -------------------------------------------------------------------------------- /tests/project/templates/unicode_placeholder.html: -------------------------------------------------------------------------------- 1 | {% load cms_tags %} 2 | 3 | {% placeholder "nöd gültig" %} -------------------------------------------------------------------------------- /docs/images/cmsapphook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/images/cmsapphook.png -------------------------------------------------------------------------------- /docs/images/edit-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/images/edit-banner.png -------------------------------------------------------------------------------- /docs/images/first-admin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/images/first-admin.png -------------------------------------------------------------------------------- /docs/images/it-worked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/images/it-worked.png -------------------------------------------------------------------------------- /docs/templates/page.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | {% block body %} 3 | {{ body }} 4 | {% endblock %} 5 | -------------------------------------------------------------------------------- /cms/media/cms/images/bold.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/bold.gif -------------------------------------------------------------------------------- /cms/media/cms/images/copy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/copy.gif -------------------------------------------------------------------------------- /cms/media/cms/images/cut.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/cut.gif -------------------------------------------------------------------------------- /cms/media/cms/images/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/link.png -------------------------------------------------------------------------------- /cms/media/cms/images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/logo.jpg -------------------------------------------------------------------------------- /cms/media/cms/images/pony.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/pony.jpg -------------------------------------------------------------------------------- /cms/media/cms/swf/player.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/swf/player.swf -------------------------------------------------------------------------------- /cms/plugins/link/templates/cms/plugins/link.html: -------------------------------------------------------------------------------- 1 | {{ name }} -------------------------------------------------------------------------------- /cms/plugins/twitter/templates/cms/plugins/twitter_search.html: -------------------------------------------------------------------------------- 1 | {% include "cms/plugins/twitter_recent_entries.html" %} -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/loading.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 |
Page not found!
10 || {% trans 'Username:' %} | 8 |{{ user.username }} | 9 |
| {% trans 'Password:' %} | 12 |{{ password }} | 13 |
{{ object.description }}
10 | {% endif %} 11 | {% if link %}{% trans "more" %} »{% endif %} -------------------------------------------------------------------------------- /cms/templates/admin/cms/mail/approvement_required.txt: -------------------------------------------------------------------------------- 1 | {% extends 'admin/cms/mail/base.txt' %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 | {% blocktrans %}Page {{ page }} may require approvement by you.{% endblocktrans %} 6 | 7 | {% if page.pagemoderatorstate_set.count %}{% trans 'Last changes' %} 8 | -------------------- 9 | {% include 'admin/cms/page/moderation_messages.html' %} 10 | {% endif %} 11 | {% endblock %} -------------------------------------------------------------------------------- /tests/project/pluginapp/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | 4 | class Section(models.Model): 5 | name = models.CharField(max_length=50) 6 | 7 | def __unicode__(self): 8 | return self.name 9 | 10 | class Article(models.Model): 11 | title = models.CharField(max_length=50) 12 | section = models.ForeignKey(Section) 13 | 14 | def __unicode__(self): 15 | return u"%s -- %s" % (self.title, self.section) 16 | -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/test_seven.html: -------------------------------------------------------------------------------- 1 | {% load cms_tags %} 2 | 3 | {% comment %} 4 | 5 | This file should result in following placeholders: 6 | 7 | - new_one (from this) 8 | - new_two (from this) 9 | - new_three (from this) 10 | 11 | {% endcomment %} 12 | 13 | {% if something %} 14 |{% blocktrans %}Page {{ page }} may require approvement by you.{% endblocktrans %}
6 | 7 | {% if page.pagemoderatorstate_set.count %} 8 || {% trans 'Action' %} | 5 |{% trans 'Created' %} | 6 |{% trans 'User' %} | 7 |{% trans 'Message' %} | 8 |
|---|---|---|---|
| {{ state.get_action_display }} | 12 |{{ state.created }} | 13 |{{ state.user }} | 14 | 15 |
ENGLISH
') 13 | add_plugin(fr.placeholder, 'TextPlugin', 'fr', body='FRENCH
') -------------------------------------------------------------------------------- /cms/media/cms/css/rte.css: -------------------------------------------------------------------------------- 1 | 2 | .frameBody { 3 | font-family:"Lucida Grande",Verdana,Arial,sans-serif; 4 | font-size:11px; 5 | font-weight:normal; 6 | margin:0; 7 | padding:2px 3px; 8 | width:98%; 9 | height:98%; 10 | } 11 | 12 | .frameBody p { 13 | border-left:1px #bbb solid; 14 | padding-left:2px; 15 | } 16 | 17 | iframe.rte { 18 | width:100%; 19 | border:1px #ccc solid; 20 | } 21 | 22 | .rte-toolbar { 23 | overflow:hidden; 24 | width:100%; 25 | clear:both; 26 | } 27 | 28 | .rte-toolbar a, .rte-toolbar a img { 29 | border:0; 30 | } 31 | 32 | form .rte-toolbar p { 33 | float:left; 34 | margin:0; 35 | padding:0; 36 | padding-right:5px; 37 | } 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /cms/plugins/googlemap/cms_plugins.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | from cms.plugin_pool import plugin_pool 3 | from cms.plugin_base import CMSPluginBase 4 | from django.utils.translation import ugettext_lazy as _ 5 | from cms.plugins.googlemap.models import GoogleMap 6 | from django.forms.widgets import Media 7 | 8 | class GoogleMapPlugin(CMSPluginBase): 9 | model = GoogleMap 10 | name = _("Google Map") 11 | render_template = "cms/plugins/googlemap.html" 12 | 13 | def render(self, context, instance, placeholder): 14 | context.update({ 15 | 'object':instance, 16 | 'placeholder':placeholder, 17 | }) 18 | return context 19 | 20 | plugin_pool.register_plugin(GoogleMapPlugin) -------------------------------------------------------------------------------- /tests/project/sampleapp/templates/sampleapp/home.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load cms_tags %} 3 | 4 | {% block content %} 5 |
21 | {% endblock content %}
--------------------------------------------------------------------------------
/tests/project/sampleapp/urls.py:
--------------------------------------------------------------------------------
1 | from django.conf.urls.defaults import *
2 |
3 | """
4 | Also used in cms.tests.ApphooksTestCase
5 | """
6 |
7 | urlpatterns = patterns('project.sampleapp.views',
8 | url(r'^$', 'sample_view', {'message': 'sample root page',}, name='sample-root'),
9 | url(r'^settings/$', 'sample_view', kwargs={'message': 'sample settings page'}, name='sample-settings'),
10 | url(r'^account/$', 'sample_view', {'message': 'sample account page'}, name='sample-account'),
11 | url(r'^account/my_profile/$', 'sample_view', {'message': 'sample my profile page'}, name='sample-profile'),
12 | url(r'(?P{% blocktrans %}Press the save button below to recover this version of the object.{% endblocktrans %}
25 | {% endblock %} -------------------------------------------------------------------------------- /cms/publisher/manager.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from django.db import models 3 | from cms.publisher.query import PublisherQuerySet 4 | 5 | class PublisherManager(models.Manager): 6 | """Manager with some support handling publisher. 7 | """ 8 | def get_query_set(self): 9 | """Change standard model queryset to our own. 10 | """ 11 | return PublisherQuerySet(self.model) 12 | 13 | def drafts(self): 14 | return self.filter(publisher_is_draft=True) 15 | 16 | def public(self): 17 | return self.filter(publisher_is_draft=False) 18 | 19 | """ 20 | def all(self): 21 | raise NotImplementedError, ("Calling all() on manager of publisher " 22 | "object is not allowed. Please use drafts() or public() method " 23 | "instead. If this isn't accident use get_query_set().all() for " 24 | "all instances.") 25 | """ 26 | -------------------------------------------------------------------------------- /tests/project/templates/col_three.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n cms_tags %} 3 | 4 | {% block tpl_id %}tpl_col_three{% endblock %} 5 | 6 | {% block content %} 7 |{% blocktrans %}Press the save button below to revert to this version of the object.{% endblocktrans %}
25 | {{ block.super }} 26 | {% endblock %} 27 | 28 | -------------------------------------------------------------------------------- /tests/project/cms_urls_for_apphook_tests.py: -------------------------------------------------------------------------------- 1 | from cms.apphook_pool import apphook_pool 2 | from cms.views import details 3 | from django.conf import settings 4 | from django.conf.urls.defaults import url, patterns 5 | 6 | if settings.APPEND_SLASH: 7 | reg = url(r'^(?P{% blocktrans %}Choose copy options{% endblocktrans %}
{% endblock %} 7 | 8 | {% block script %}{% endblock %} -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/minimal/skin.js: -------------------------------------------------------------------------------- 1 | jQuery.fn.selectify = function() { 2 | return this.each(function() { 3 | jQuery(this).hover( 4 | function() { 5 | jQuery("h2", this).css("background-position", "0px -18px"); 6 | jQuery("ul", this).fadeIn("fast"); 7 | }, 8 | function() { 9 | jQuery("h2", this).css("background-position", ""); 10 | jQuery("ul", this).fadeOut("fast"); 11 | } 12 | ); 13 | }); 14 | }; 15 | 16 | WYMeditor.SKINS['minimal'] = { 17 | //placeholder for the skin JS, if needed 18 | 19 | //init the skin 20 | //wym is the WYMeditor.editor instance 21 | init: function(wym) { 22 | 23 | //render following sections as dropdown menus 24 | jQuery(wym._box).find(wym._options.toolsSelector + ', ' + wym._options.containersSelector + ', ' + wym._options.classesSelector) 25 | .addClass("wym_dropdown") 26 | .selectify(); 27 | 28 | 29 | } 30 | }; 31 | -------------------------------------------------------------------------------- /cms/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from cms.tests.admin import * 4 | from cms.tests.api import * 5 | from cms.tests.apphooks import * 6 | from cms.tests.docs import * 7 | from cms.tests.forms import * 8 | from cms.tests.mail import * 9 | from cms.tests.menu import * 10 | from cms.tests.menu_utils import * 11 | from cms.tests.middleware import * 12 | from cms.tests.multilingual import * 13 | from cms.tests.navextender import * 14 | from cms.tests.nonroot import * 15 | from cms.tests.page import * 16 | from cms.tests.permmod import * 17 | from cms.tests.placeholder import * 18 | from cms.tests.plugins import * 19 | from cms.tests.po import * 20 | from cms.tests.publisher import * 21 | from cms.tests.rendering import * 22 | from cms.tests.reversion_tests import * 23 | from cms.tests.security import * 24 | from cms.tests.settings import * 25 | from cms.tests.site import * 26 | from cms.tests.templatetags import * 27 | from cms.tests.toolbar import * 28 | from cms.tests.urlutils import * 29 | from cms.tests.views import * 30 | from cms.tests.management import * -------------------------------------------------------------------------------- /cms/plugin_processors.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from django.utils.safestring import mark_safe 3 | 4 | def plugin_meta_context_processor(instance, placeholder): 5 | return { 6 | 'plugin_index': instance._render_meta.index, # deprecated template variable 7 | 'plugin': { 8 | 'counter': instance._render_meta.index + 1, 9 | 'counter0': instance._render_meta.index, 10 | 'revcounter': instance._render_meta.total - instance._render_meta.index, 11 | 'revcounter0': instance._render_meta.total - instance._render_meta.index - 1, 12 | 'first': instance._render_meta.index == 0, 13 | 'last': instance._render_meta.index == instance._render_meta.total - 1, 14 | 'total': instance._render_meta.total, 15 | 'id_attr': 'plugin_%i_%i' % (instance.placeholder.pk, instance.pk), 16 | 'instance': instance, 17 | } 18 | } 19 | 20 | def mark_safe_plugin_processor(instance, placeholder, rendered_content, original_context): 21 | return mark_safe(rendered_content) -------------------------------------------------------------------------------- /cms/media/cms/js/lib/functional.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | $.curry = function(fn) { 3 | if (arguments.length < 2) return fn; 4 | args = $.makeArray(arguments).slice(1, arguments.length); 5 | return function() { 6 | return fn.apply(this, args.concat($.makeArray(arguments))); 7 | } 8 | } 9 | 10 | $.__callbackPool = {}; 11 | 12 | $.callbackRegister = function(name, fn /*, arg0, arg1, ..*/){ 13 | if (arguments.length > 2) { 14 | // create curried function 15 | fn = $.curry.apply(this, $.makeArray(arguments).slice(1, arguments.length)); 16 | } 17 | $.__callbackPool[name] = fn; 18 | return name; 19 | } 20 | 21 | $.callbackCall = function(name/*, extra arg0, extra arg1, ..*/){ 22 | if (!name || !name in $.__callbackPool) { 23 | throw "No callback registered with name: " + name; 24 | } 25 | $.__callbackPool[name].apply(this, $.makeArray(arguments).slice(1, arguments.length)); 26 | $.callbackRemove(name); 27 | return name; 28 | } 29 | 30 | $.callbackRemove = function(name) { 31 | delete $.__callbackPool[name]; 32 | } 33 | 34 | })(jQuery); -------------------------------------------------------------------------------- /docs/advanced/sitemap.rst: -------------------------------------------------------------------------------- 1 | ############# 2 | Sitemap Guide 3 | ############# 4 | 5 | 6 | ******* 7 | Sitemap 8 | ******* 9 | 10 | Sitemaps are XML files used by Google to index your website by using their 11 | **Webmaster Tools** and telling them the location of your sitemap. 12 | 13 | The :class:`CMSSitemap` will create a sitemap with all the published pages of 14 | your CMS 15 | 16 | 17 | ************* 18 | Configuration 19 | ************* 20 | 21 | * Add :mod:`django.contrib.sitemaps` to your project's :setting:`django:INSTALLED_APPS` 22 | setting. 23 | * Add ``from cms.sitemaps import CMSSitemap`` to the top of your main ``urls.py``. 24 | * Add ``url(r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': {'cmspages': CMSSitemap}}),`` 25 | to your urlpatterns. 26 | 27 | 28 | *********************** 29 | django.contrib.sitemaps 30 | *********************** 31 | 32 | More information about :mod:`django.contrib.sitemaps` can be found in the official 33 | `Django documentation{{ _('Index pages by letter') }}:
8 | 9 |{% for key, dummy in genindexentries -%} 10 | {{ key }} 11 | {% if not loop.last %}| {% endif %} 12 | {%- endfor %}
13 | 14 |{{ _('Full index on one page') }} 15 | ({{ _('can be huge') }})
16 | 17 | {% endblock %} 18 | 19 | {% block sidebarrel %} 20 | {% if split_index %} 21 |{% for key, dummy in genindexentries -%} 23 | {{ key }} 24 | {% if not loop.last %}| {% endif %} 25 | {%- endfor %}
26 | 27 |{{ _('Full index on one page') }}
28 | {% endif %} 29 | {{ super() }} 30 | {% endblock %} 31 | -------------------------------------------------------------------------------- /cms/conf/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from django.conf import settings 3 | from patch import pre_patch, post_patch, post_patch_check 4 | 5 | 6 | 7 | def patch_settings(): 8 | """Merge settings with global cms settings, so all required attributes 9 | will exist. Never override, just append non existing settings. 10 | 11 | Also check for setting inconstistence if settings.DEBUG 12 | """ 13 | if patch_settings.ALREADY_PATCHED: 14 | return 15 | patch_settings.ALREADY_PATCHED = True 16 | 17 | from cms.conf import global_settings 18 | # patch settings 19 | 20 | pre_patch() 21 | 22 | # merge with global cms settings 23 | for attr in dir(global_settings): 24 | if attr == attr.upper() and not hasattr(settings, attr): 25 | setattr(settings._wrapped, attr, getattr(global_settings, attr)) 26 | 27 | 28 | post_patch() 29 | 30 | if settings.DEBUG: 31 | # check if settings are correct, call this only if debugging is enabled 32 | post_patch_check() 33 | patch_settings.ALREADY_PATCHED = False -------------------------------------------------------------------------------- /cms/management/commands/subcommands/list.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from cms.management.commands.subcommands.base import SubcommandsCommand 3 | from cms.models.pluginmodel import CMSPlugin 4 | from cms.models.titlemodels import Title 5 | from django.core.management.base import NoArgsCommand 6 | 7 | 8 | class ListApphooksCommand(NoArgsCommand): 9 | 10 | help = 'Lists all apphooks in pages' 11 | def handle_noargs(self, **options): 12 | urls = Title.objects.values_list("application_urls", flat=True) 13 | for url in urls: 14 | self.stdout.write(url+'\n') 15 | 16 | class ListPluginsCommand(NoArgsCommand): 17 | 18 | help = 'Lists all plugins in CMSPlugin' 19 | def handle_noargs(self, **options): 20 | plugins = CMSPlugin.objects.distinct().values_list("plugin_type", flat=True) 21 | for plugin in plugins: 22 | self.stdout.write(plugin+'\n') 23 | 24 | class ListCommand(SubcommandsCommand): 25 | help = 'List commands' 26 | subcommands = { 27 | 'apphooks': ListApphooksCommand, 28 | 'plugins': ListPluginsCommand 29 | } -------------------------------------------------------------------------------- /cms/plugins/file/migrations/0002_freeze.py: -------------------------------------------------------------------------------- 1 | 2 | from south.db import db 3 | from django.db import models 4 | from cms.plugins.file.models import * 5 | 6 | class Migration: 7 | 8 | def forwards(self, orm): 9 | "Write your forwards migration here" 10 | 11 | 12 | def backwards(self, orm): 13 | "Write your backwards migration here" 14 | 15 | 16 | models = { 17 | 'file.file': { 18 | 'cmsplugin_ptr': ('models.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), 19 | 'file': ('models.FileField', [], {'max_length': '100'}), 20 | 'title': ('models.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}) 21 | }, 22 | 'cms.cmsplugin': { 23 | '_stub': True, 24 | 'id': ('models.AutoField', [], {'primary_key': 'True', 'blank': 'True'}) 25 | }, 26 | 'cms.page': { 27 | '_stub': True, 28 | 'id': ('models.AutoField', [], {'primary_key': 'True', 'blank': 'True'}) 29 | } 30 | } 31 | 32 | complete_apps = ['file'] 33 | -------------------------------------------------------------------------------- /cms/plugins/inherit/forms.py: -------------------------------------------------------------------------------- 1 | from cms.models import Page 2 | from cms.plugins.inherit.models import InheritPagePlaceholder 3 | from django import forms 4 | from django.forms.models import ModelForm 5 | from django.forms.util import ErrorList 6 | from django.utils.translation import ugettext_lazy as _ 7 | 8 | class InheritForm(ModelForm): 9 | from_page = forms.ModelChoiceField(label=_("page"), queryset=Page.objects.drafts(), required=False) 10 | 11 | class Meta: 12 | model = InheritPagePlaceholder 13 | exclude = ('page', 'position', 'placeholder', 'language', 'plugin_type') 14 | 15 | def for_site(self, site): 16 | # override the page_link fields queryset to containt just pages for 17 | # current site 18 | self.fields['from_page'].queryset = Page.objects.drafts().on_site(site) 19 | 20 | def clean(self): 21 | cleaned_data = super(InheritForm, self).clean() 22 | if not cleaned_data['from_page'] and not cleaned_data['from_language']: 23 | self._errors['from_page'] = ErrorList([_("Language or Page must be filled out")]) 24 | return cleaned_data -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/widgets/plugin_editor.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | {% if not add %} 3 |{% blocktrans %}You must save the page first to add plugins.{% endblocktrans %}
13 | {% else %} 14 | {% if plugin_list %} 15 |{% blocktrans %}No Plugin selected. Selected one on the left side{% endblocktrans %}
16 | {% else %} 17 |{% blocktrans %}No Plugins present. Add a plugin to this placeholder-slot.{% endblocktrans %}
18 | {% endif %} 19 | {% endif %} 20 |{% trans "Delete" %} 6 | {% if show_delete_translation %} 7 | {% blocktrans with language_name as language %}Delete {{ language }} translation{% endblocktrans %} 8 | {% endif %} 9 |
10 | {% endif %} 11 | {% if show_save_as_new %}{%endif%} 12 | {% if show_save_and_add_another %}{% endif %} 13 | {% if show_save_and_continue %}{% endif %} 14 |