├── 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 |
{% trans 'Loading...' %}
-------------------------------------------------------------------------------- /cms/templates/admin/cms/page/widgets/placeholder_editor.html: -------------------------------------------------------------------------------- 1 | {% include "admin/cms/page/widgets/plugin_editor.html" %} -------------------------------------------------------------------------------- /docs/images/it-works-cms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/images/it-works-cms.png -------------------------------------------------------------------------------- /docs/images/my-first-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/images/my-first-page.png -------------------------------------------------------------------------------- /tests/project/templates/menu/test_language_chooser.html: -------------------------------------------------------------------------------- 1 | {% for language in languages %}{{ language.0 }}{% endfor %} -------------------------------------------------------------------------------- /cms/app_base.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | class CMSApp(object): 3 | name = None 4 | urls = None 5 | menus = [] -------------------------------------------------------------------------------- /cms/media/cms/images/close.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/close.gif -------------------------------------------------------------------------------- /cms/media/cms/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/icons.png -------------------------------------------------------------------------------- /cms/media/cms/images/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/image.png -------------------------------------------------------------------------------- /cms/media/cms/images/italic.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/italic.gif -------------------------------------------------------------------------------- /cms/media/cms/images/nav-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/nav-bg.gif -------------------------------------------------------------------------------- /docs/images/hello-cms-world.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/images/hello-cms-world.png -------------------------------------------------------------------------------- /cms/media/cms/images/indicator.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/indicator.gif -------------------------------------------------------------------------------- /cms/media/cms/images/page_find.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/page_find.gif -------------------------------------------------------------------------------- /cms/media/cms/images/unordered.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/unordered.gif -------------------------------------------------------------------------------- /cms/plugins/inherit/templates/cms/plugins/inherit_plugins.html: -------------------------------------------------------------------------------- 1 | {% if parent_output %}{{parent_output|safeseq|join:""}}{% endif %} -------------------------------------------------------------------------------- /cms/toolbar/constants.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | LEFT = 'left' 4 | RIGHT = 'right' 5 | 6 | ALIGNMENTS = (LEFT, RIGHT) -------------------------------------------------------------------------------- /docs/images/first-placeholders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/images/first-placeholders.png -------------------------------------------------------------------------------- /cms/locale/ar/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/ar/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/ar/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/ar/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/bg/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/bg/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/bg/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/bg/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/bn/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/bn/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/bn/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/bn/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/ca/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/ca/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/ca/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/ca/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/cs/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/cs/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/cs/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/cs/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/cy/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/cy/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/cy/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/cy/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/da/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/da/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/da/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/da/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/de/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/de/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/de/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/de/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/el/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/el/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/el/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/el/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/en/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/en/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/en/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/en/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/es/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/es/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/es/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/es/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/et/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/et/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/et/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/et/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/eu/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/eu/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/eu/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/eu/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/fa/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/fa/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/fa/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/fa/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/fi/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/fi/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/fi/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/fi/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/fr/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/fr/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/fr/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/fr/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/gu/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/gu/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/gu/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/gu/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/he/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/he/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/he/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/he/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/hi/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/hi/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/hi/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/hi/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/hu/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/hu/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/hu/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/hu/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/it/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/it/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/it/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/it/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/ja/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/ja/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/ja/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/ja/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/nl/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/nl/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/nl/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/nl/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/no/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/no/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/no/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/no/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/pl/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/pl/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/pl/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/pl/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/pt/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/pt/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/pt/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/pt/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/ro/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/ro/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/ru/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/ru/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/ru/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/ru/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/sk/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/sk/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/sk/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/sk/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/sv/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/sv/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/sv/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/sv/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/tr/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/tr/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/tr/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/tr/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/media/cms/images/cms_toolbar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/cms_toolbar.gif -------------------------------------------------------------------------------- /cms/media/cms/images/cms_toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/cms_toolbar.png -------------------------------------------------------------------------------- /cms/media/cms/images/icon_addlink.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/icon_addlink.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/tabs.png -------------------------------------------------------------------------------- /cms/media/cms/images/plugins/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/plugins/file.png -------------------------------------------------------------------------------- /cms/media/cms/images/plugins/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/plugins/link.png -------------------------------------------------------------------------------- /cms/media/cms/images/sitemap-exim.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/sitemap-exim.gif -------------------------------------------------------------------------------- /cms/media/cms/images/sitemap-exlm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/sitemap-exlm.gif -------------------------------------------------------------------------------- /cms/media/cms/images/sitemap-extm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/sitemap-extm.gif -------------------------------------------------------------------------------- /cms/media/cms/swf/expressInstall.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/swf/expressInstall.swf -------------------------------------------------------------------------------- /cms/templates/tests/rendering/base.html: -------------------------------------------------------------------------------- 1 | {% load cms_tags %}|{% placeholder "main" %}|{% placeholder "sub" %}|{% placeholder "empty" %} -------------------------------------------------------------------------------- /tests/project/templates/add_placeholder.html: -------------------------------------------------------------------------------- 1 | {% load cms_tags %} 2 | {% placeholder my_placeholder %} 3 | -------------------------------------------------------------------------------- /cms/locale/es_AR/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/es_AR/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/pt_BR/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/pt_BR/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/zh_CN/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/zh_CN/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/locale/zh_TW/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/zh_TW/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/flv.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/flv.gif -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/gif.gif -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/jpg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/jpg.gif -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/mp3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/mp3.png -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/ods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/ods.png -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/odt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/odt.png -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/pdf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/pdf.gif -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/php.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/php.gif -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/png.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/png.gif -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/swf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/swf.gif -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/tgz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/tgz.png -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/ttf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/ttf.gif -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/txt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/txt.gif -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/txt.png -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/wav.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/wav.gif -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/zip.png -------------------------------------------------------------------------------- /cms/media/cms/images/icon_extension.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/icon_extension.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/nav-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/nav-bg.gif -------------------------------------------------------------------------------- /cms/media/cms/images/plugins/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/plugins/image.png -------------------------------------------------------------------------------- /cms/media/cms/images/sitemap-li-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/sitemap-li-bg.jpg -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/loader.gif -------------------------------------------------------------------------------- /cms/locale/es_AR/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/es_AR/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/pt_BR/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/pt_BR/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/zh_CN/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/zh_CN/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/locale/zh_TW/LC_MESSAGES/djangojs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/locale/zh_TW/LC_MESSAGES/djangojs.mo -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/html.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/html.gif -------------------------------------------------------------------------------- /cms/media/cms/images/file_icons/java.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/file_icons/java.gif -------------------------------------------------------------------------------- /cms/media/cms/images/icon_deletelink.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/icon_deletelink.gif -------------------------------------------------------------------------------- /cms/media/cms/images/icon_pluginedit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/icon_pluginedit.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/default-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/default-bg.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/dialog-e.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/dialog-e.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/dialog-n.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/dialog-n.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/dialog-ne.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/dialog-ne.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/dialog-nw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/dialog-nw.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/dialog-s.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/dialog-s.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/dialog-se.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/dialog-se.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/dialog-sw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/dialog-sw.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/dialog-w.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/dialog-w.gif -------------------------------------------------------------------------------- /cms/media/cms/images/pluginlist-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/pluginlist-delete.png -------------------------------------------------------------------------------- /cms/media/cms/images/plugins/snippet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/plugins/snippet.png -------------------------------------------------------------------------------- /cms/media/cms/images/sitemap-li-drag.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/sitemap-li-drag.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/f.png -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/li.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/li.gif -------------------------------------------------------------------------------- /tests/project/templates/sidebar_submenu.html: -------------------------------------------------------------------------------- 1 | {% load i18n cms_tags menu_tags %} 2 | 3 | {% show_menu 1 100 0 1 "sidebar_submenu_root.html" %} -------------------------------------------------------------------------------- /cms/media/cms/css/tinymce_toolbar.css: -------------------------------------------------------------------------------- 1 | .mceToolbar span.plugin_edit_button {background:url(../images/icon_pluginedit.gif) no-repeat 3px 4px;} 2 | -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/dialog-title.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/dialog-title.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/resizable-e.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/resizable-e.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/resizable-n.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/resizable-n.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/resizable-ne.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/resizable-ne.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/resizable-nw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/resizable-nw.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/resizable-s.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/resizable-s.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/resizable-se.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/resizable-se.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/resizable-sw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/resizable-sw.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/resizable-w.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/resizable-w.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/slider-bg-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/slider-bg-1.png -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/slider-bg-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/slider-bg-2.png -------------------------------------------------------------------------------- /cms/media/cms/images/sitemap-li-collapse.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/sitemap-li-collapse.gif -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/toolbar_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/toolbar_bg.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/classic/plus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/classic/plus.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/dot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/dot.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/plus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/plus.gif -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/accordion-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/accordion-left.png -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/accordion-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/accordion-right.png -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/slider-handle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/slider-handle.gif -------------------------------------------------------------------------------- /cms/media/cms/images/pluginlist-holder-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/pluginlist-holder-bg.gif -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/frame_shadow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/frame_shadow.gif -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/sprite_toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/sprite_toolbar.png -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/classic/folder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/classic/folder.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/classic/minus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/classic/minus.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/context.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/context.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/create.png -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/fminus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/fminus.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/fplus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/fplus.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/lastli.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/lastli.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/marker.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/marker.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/remove.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/remove.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/remove.png -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/rename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/rename.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/compact/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/skins/compact/icons.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/default/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/skins/default/icons.png -------------------------------------------------------------------------------- /docs/images/frontend-placeholder-add-plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/docs/images/frontend-placeholder-add-plugin.png -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/accordion-middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/accordion-middle.png -------------------------------------------------------------------------------- /cms/media/cms/images/plugins/get_flash_player.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/plugins/get_flash_player.gif -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/icons/icon_admin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/icons/icon_admin.png -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/icons/icon_child.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/icons/icon_child.png -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/icons/icon_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/icons/icon_edit.png -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/icons/icon_lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/icons/icon_lock.png -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/icons/icon_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/icons/icon_page.png -------------------------------------------------------------------------------- /cms/media/cms/js/wymeditor/skins/django/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/js/wymeditor/skins/django/icons.png -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/fplus_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/fplus_rtl.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/throbber.gif -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/iframe/default/lbl-h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/iframe/default/lbl-h1.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/iframe/default/lbl-h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/iframe/default/lbl-h2.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/iframe/default/lbl-h3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/iframe/default/lbl-h3.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/iframe/default/lbl-h4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/iframe/default/lbl-h4.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/iframe/default/lbl-h5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/iframe/default/lbl-h5.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/iframe/default/lbl-h6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/iframe/default/lbl-h6.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/iframe/default/lbl-p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/iframe/default/lbl-p.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/twopanels/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/skins/twopanels/icons.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/wymeditor_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/skins/wymeditor_icon.png -------------------------------------------------------------------------------- /cms/media/cms/images/changelist-filter-button-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/changelist-filter-button-bg.jpg -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/accordion-left-act.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/accordion-left-act.png -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/accordion-left-over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/accordion-left-over.png -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/accordion-middle-act.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/accordion-middle-act.png -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/accordion-right-act.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/accordion-right-act.png -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/accordion-right-over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/accordion-right-over.png -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/icons/icon_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/icons/icon_delete.png -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/icons/icon_history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/icons/icon_history.png -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/icons/icon_sibling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/icons/icon_sibling.png -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/icons/icon_sitemap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/icons/icon_sitemap.png -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/icons/icon_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/icons/icon_template.png -------------------------------------------------------------------------------- /cms/media/cms/images/toolbar/sprite_toolbar-ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/toolbar/sprite_toolbar-ie.png -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/classic/folderopen.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/classic/folderopen.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/fminus_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/fminus_rtl.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/lastli_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/lastli_rtl.gif -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/default/marker_rtl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/jstree/themes/default/marker_rtl.gif -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/iframe/default/lbl-pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/iframe/default/lbl-pre.png -------------------------------------------------------------------------------- /menus/exceptions.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | class NamespaceAllreadyRegistered(Exception): 3 | pass 4 | 5 | class NoParentFound(Exception): 6 | pass -------------------------------------------------------------------------------- /tests/project/sampleapp/media/sampleapp/img/gift.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/tests/project/sampleapp/media/sampleapp/img/gift.jpg -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/nested_super_level4.html: -------------------------------------------------------------------------------- 1 | {% load cms_tags %} 2 | 3 | {% block one %} 4 | {% placeholder "level4" %} 5 | {% endblock %} -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/accordion-middle-over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/accordion-middle-over.png -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/dialog-titlebar-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/dialog-titlebar-close.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/iframe/default/lbl-blockquote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/iframe/default/lbl-blockquote.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/silver/images/bg.header.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/skins/silver/images/bg.header.gif -------------------------------------------------------------------------------- /cms/media/cms/css/plugin_forms.css: -------------------------------------------------------------------------------- 1 | body, #content{margin:0;padding:0;} 2 | #content{padding:10px 0px 0px 10px;} 3 | h2 { 4 | font-size:14px; 5 | margin:0em 0 0.5em; 6 | } 7 | -------------------------------------------------------------------------------- /cms/media/cms/images/jquery/dialog-titlebar-close-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/images/jquery/dialog-titlebar-close-hover.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/minimal/images/bg.header.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/skins/minimal/images/bg.header.gif -------------------------------------------------------------------------------- /tests/project/sampleapp/templates/sampleapp/category_view.html: -------------------------------------------------------------------------------- 1 | {% extends 'index.html' %} 2 | 3 | {% block content %} 4 |

{{ category.get_title }}

5 | {% endblock %} -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/plugins/fullscreen/icon_fullscreen.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/plugins/fullscreen/icon_fullscreen.gif -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/minimal/images/bg.wymeditor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/skins/minimal/images/bg.wymeditor.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/minimal/images/icons.silver.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/skins/minimal/images/icons.silver.gif -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/silver/images/bg.wymeditor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/skins/silver/images/bg.wymeditor.png -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/silver/images/icons.silver.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/skins/silver/images/icons.silver.gif -------------------------------------------------------------------------------- /tests/.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | branch = True 3 | source = 4 | cms 5 | menus 6 | omit = 7 | ../*migrations* 8 | ../*tests* 9 | [report] 10 | precision = 2 11 | -------------------------------------------------------------------------------- /tests/django-12.cfg: -------------------------------------------------------------------------------- 1 | [buildout] 2 | extends = buildout.cfg 3 | 4 | [versions] 5 | coverage = 3.4 6 | unittest-xml-reporting = 1.0.3 7 | django-reversion = 1.4 8 | django = 1.2.5 9 | -------------------------------------------------------------------------------- /tests/django-13.cfg: -------------------------------------------------------------------------------- 1 | [buildout] 2 | extends = buildout.cfg 3 | 4 | [versions] 5 | coverage = 3.4 6 | unittest-xml-reporting = 1.0.3 7 | django-reversion = 1.4 8 | django = 1.3 9 | -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/test_eleven.html: -------------------------------------------------------------------------------- 1 | {% load cms_tags %} 2 | {% block "myblock" %} 3 | {{ block.super }} 4 | {% placeholder "myplaceholder" %} 5 | {% endblock %} -------------------------------------------------------------------------------- /cms/test_utils/.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | branch = True 3 | source = 4 | cms 5 | menus 6 | publisher 7 | omit = 8 | ../*migrations* 9 | [report] 10 | precision = 2 11 | -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/minimal/images/bg.selector.silver.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/skins/minimal/images/bg.selector.silver.gif -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/silver/images/bg.selector.silver.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/wymeditor/skins/silver/images/bg.selector.silver.gif -------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-icons_2694e8_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-icons_2694e8_256x240.png -------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-icons_3d80b3_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-icons_3d80b3_256x240.png -------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-icons_72a7cf_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-icons_72a7cf_256x240.png -------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /.hgignore: -------------------------------------------------------------------------------- 1 | # use glob syntax. 2 | syntax: glob 3 | 4 | *.elc 5 | *.pyc 6 | *~ 7 | *.DS_Store 8 | .* 9 | cms/media/cms_page_media/ 10 | cms/docs/build 11 | syntax: regexp 12 | ^example/dev\.db$ -------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-bg_flat_15_cd0a0a_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-bg_flat_15_cd0a0a_40x100.png -------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png -------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-bg_glass_50_3baae3_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-bg_glass_50_3baae3_1x400.png -------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png -------------------------------------------------------------------------------- /cms/plugins/snippet/admin.py: -------------------------------------------------------------------------------- 1 | from models import Snippet 2 | from django.contrib import admin 3 | 4 | class SnippetAdmin(admin.ModelAdmin): 5 | pass 6 | 7 | admin.site.register(Snippet, SnippetAdmin) 8 | -------------------------------------------------------------------------------- /tests/django-124.cfg: -------------------------------------------------------------------------------- 1 | [buildout] 2 | extends = buildout.cfg 3 | 4 | [django] 5 | recipe = djangorecipe 6 | version = 1.2.4 7 | project = project 8 | settings = settings 9 | eggs = ${buildout:eggs} 10 | -------------------------------------------------------------------------------- /cms/publisher/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from django.conf import settings 3 | from manager import PublisherManager 4 | 5 | __all__ = ('PublisherManager', 'VERSION') 6 | 7 | VERSION = (0, 4, 'sintab') 8 | -------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png -------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png -------------------------------------------------------------------------------- /cms/templates/cms/toolbar/items/status.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 |

{% trans "Status" %}: {% for state in request.toolbar.states %}{{ state.get_action_display }} {% endfor %}

-------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png -------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png -------------------------------------------------------------------------------- /cms/media/cms/css/jquery/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/django-cms/develop/cms/media/cms/css/jquery/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png -------------------------------------------------------------------------------- /cms/templates/cms/toolbar/items/_post_button_hidden.html: -------------------------------------------------------------------------------- 1 | {% for name in single %}{% endfor %}{% for name, value in double.items %}{% endfor %} -------------------------------------------------------------------------------- /menus/templates/menu/breadcrumb.html: -------------------------------------------------------------------------------- 1 | {% for ance in ancestors %} 2 |
  • {% if not forloop.last %}{{ ance.get_menu_title }} » {% else %}{{ ance.get_menu_title }}{% endif %}
  • 3 | {% endfor %} -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/nested_super_level1.html: -------------------------------------------------------------------------------- 1 | {% extends "placeholder_tests/nested_super_level2.html" %} 2 | {% load cms_tags %} 3 | 4 | {% block one %} 5 | {% placeholder "level1" %} 6 | {{ block.super }} 7 | {% endblock %} -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/nested_super_level2.html: -------------------------------------------------------------------------------- 1 | {% extends "placeholder_tests/nested_super_level3.html" %} 2 | {% load cms_tags %} 3 | 4 | {% block one %} 5 | {% placeholder "level2" %} 6 | {{ block.super }} 7 | {% endblock %} -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/nested_super_level3.html: -------------------------------------------------------------------------------- 1 | {% extends "placeholder_tests/nested_super_level4.html" %} 2 | {% load cms_tags %} 3 | 4 | {% block one %} 5 | {% placeholder "level3" %} 6 | {{ block.super }} 7 | {% endblock %} -------------------------------------------------------------------------------- /tests/project/templates/sidebar_submenu_root.html: -------------------------------------------------------------------------------- 1 | {% if children %} 2 | 9 | {% else %}{% endif %} -------------------------------------------------------------------------------- /cms/templates/admin/cms/mail/page_user_change.txt: -------------------------------------------------------------------------------- 1 | {% extends 'admin/cms/mail/base.txt' %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 | {% trans 'Username:' %} {{ user.username }} 6 | {% trans 'Password:' %} {{ password }} 7 | {% endblock %} -------------------------------------------------------------------------------- /cms/templates/cms/toolbar/placeholder_wrapper.html: -------------------------------------------------------------------------------- 1 |
    {{ rendered_content }}
    -------------------------------------------------------------------------------- /tests/project/templates/menu/breadcrumb.html: -------------------------------------------------------------------------------- 1 | {% for ance in ancestors %} 2 |
  • {% if not forloop.last %}{{ ance.get_menu_title }}{% else %}{{ ance.get_menu_title }}{% endif %}
  • 3 | {% endfor %} -------------------------------------------------------------------------------- /cms/media/cms/css/jquery.tooltip.css: -------------------------------------------------------------------------------- 1 | #tooltip { 2 | position: absolute; 3 | z-index: 3000; 4 | border: 1px solid #111; 5 | background-color: #eee; 6 | padding: 5px; 7 | opacity: 0.85; 8 | } 9 | #tooltip h3, #tooltip div { margin: 0; } 10 | -------------------------------------------------------------------------------- /menus/templates/menu/language_chooser.html: -------------------------------------------------------------------------------- 1 | {% load menu_tags %} 2 | {% for language in languages %} 3 | {{ language.1 }} 4 | {% endfor %} -------------------------------------------------------------------------------- /cms/context_processors.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from django.conf import settings 3 | 4 | def media(request): 5 | """ 6 | Adds media-related context variables to the context. 7 | """ 8 | return {'CMS_MEDIA_URL': settings.CMS_MEDIA_URL} 9 | -------------------------------------------------------------------------------- /docs/upgrade/index.rst: -------------------------------------------------------------------------------- 1 | ################################### 2 | Upgrading a django CMS installation 3 | ################################### 4 | 5 | *********** 6 | 2.2 Release 7 | *********** 8 | 9 | .. toctree:: 10 | :maxdepth: 1 11 | 12 | 2.2 -------------------------------------------------------------------------------- /tests/project/fileapp/models.py: -------------------------------------------------------------------------------- 1 | from cms.utils.helpers import reversion_register 2 | from django.db import models 3 | 4 | class FileModel(models.Model): 5 | test_file = models.FileField(upload_to='fileapp/', blank=True, null=True) 6 | 7 | reversion_register(FileModel) 8 | -------------------------------------------------------------------------------- /tests/project/templates/menu/language_chooser.html: -------------------------------------------------------------------------------- 1 | {% load menu_tags %} 2 | {% for language in languages %} 3 |
  • {{ language.0 }}
  • 4 | {% endfor %} -------------------------------------------------------------------------------- /cms/plugins/flash/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | from cms.plugins.flash.models import Flash 3 | 4 | class FlashForm(forms.ModelForm): 5 | 6 | class Meta: 7 | model = Flash 8 | exclude = ('page', 'position', 'placeholder', 'language', 'plugin_type') -------------------------------------------------------------------------------- /cms/plugins/video/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | from cms.plugins.video.models import Video 3 | 4 | class VideoForm(forms.ModelForm): 5 | 6 | class Meta: 7 | model = Video 8 | exclude = ('page', 'position', 'placeholder', 'language', 'plugin_type') -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/outside_base.html: -------------------------------------------------------------------------------- 1 | {% load cms_tags %} 2 | 3 | {% block one %} 4 | {% placeholder "one" %} 5 | {% endblock %} 6 | 7 | {% block two %} 8 | {% placeholder "two" %} 9 | {% endblock %} 10 | 11 | {% placeholder "base_outside" %} 12 | -------------------------------------------------------------------------------- /tests/project/templates/404.html: -------------------------------------------------------------------------------- 1 | {% extends "col_two.html" %} 2 | {% load i18n cms_tags %} 3 | 4 | {% block tpl_id %}tpl_404{% endblock %} 5 | 6 | {% block content %} 7 |
    8 |

    404

    9 |

    Page not found!

    10 |
    11 | {% endblock %} -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/base.html: -------------------------------------------------------------------------------- 1 | {% load cms_tags %} 2 | 3 | {% block one %} 4 | {% placeholder "one" %} 5 | {% endblock %} 6 | 7 | {% block two %} 8 | {% placeholder "two" %} 9 | {% endblock %} 10 | 11 | {% block three %} 12 | {% placeholder "three" %} 13 | {% endblock %} -------------------------------------------------------------------------------- /.hgtags: -------------------------------------------------------------------------------- 1 | 76041929a5286ab89eb804cfa5726fd2d49b2dc3 master 2 | 65e312a37054f0878769a282503fc147c4de9c85 master 3 | 76041929a5286ab89eb804cfa5726fd2d49b2dc3 master 4 | 0000000000000000000000000000000000000000 master 5 | c43c35faee5e486ea74eb4557eb2b124b69307e2 master 6 | 0000000000000000000000000000000000000000 master 7 | -------------------------------------------------------------------------------- /cms/templates/admin/cms/mail/base.txt: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | 3 | {{ title }} 4 | -------------- 5 | {% block header %}{% endblock %} 6 | {% block content %}{% endblock %} 7 | 8 | {% blocktrans %}Login url: {{ login_url }}{% endblocktrans %} 9 | 10 | [Generated by: http://www.django-cms.org {% now "d.m.Y H:i:s" %}.] 11 | -------------------------------------------------------------------------------- /cms/templates/cms/toolbar/items/switcher.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 |
    3 | [title] 4 | {% trans "Switch on/off" %} 5 |
    -------------------------------------------------------------------------------- /cms/publisher/errors.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | class PublisherCantPublish(Exception): 3 | """Publisher can not publish instance, because there is something wrong""" 4 | 5 | class MpttPublisherCantPublish(PublisherCantPublish): 6 | """Node is under mptt and can't be published because node parent isn't 7 | published.""" 8 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include AUTHORS 2 | include LICENSE 3 | include README.rst 4 | include CHANGELOG.txt 5 | recursive-include cms/locale * 6 | recursive-include cms/templates * 7 | recursive-include cms/media * 8 | recursive-include cms/plugins * 9 | recursive-include menus/templates * 10 | recursive-include docs * 11 | recursive-exclude * *.pyc -------------------------------------------------------------------------------- /cms/admin/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import pageadmin 3 | import useradmin 4 | import permissionadmin 5 | 6 | # Piggyback off admin.autodiscover() to discover cms plugins 7 | from cms import plugin_pool 8 | from cms.apphook_pool import apphook_pool 9 | plugin_pool.plugin_pool.discover_plugins() 10 | 11 | apphook_pool.discover_apps() -------------------------------------------------------------------------------- /cms/plugins/text/forms.py: -------------------------------------------------------------------------------- 1 | from django.forms.models import ModelForm 2 | from cms.plugins.text.models import Text 3 | from django import forms 4 | 5 | 6 | class TextForm(ModelForm): 7 | body = forms.CharField() 8 | 9 | class Meta: 10 | model = Text 11 | exclude = ('page', 'position', 'placeholder', 'language', 'plugin_type') -------------------------------------------------------------------------------- /tests/django-trunk.cfg: -------------------------------------------------------------------------------- 1 | [buildout] 2 | extends = buildout.cfg 3 | develop += 4 | parts/svn/django/ 5 | parts += 6 | svn 7 | 8 | [svn] 9 | recipe = infrae.subversion 10 | urls = 11 | http://code.djangoproject.com/svn/django/trunk/ django 12 | 13 | [versions] 14 | coverage = 3.4 15 | unittest-xml-reporting = 1.0.3 16 | django-reversion = 1.4 17 | -------------------------------------------------------------------------------- /cms/plugins/picture/templates/cms/plugins/picture.html: -------------------------------------------------------------------------------- 1 | 2 | {% if link %}{% endif %} 3 | {{ picture.alt }} 4 | {% if link %}{% endif %} 5 | -------------------------------------------------------------------------------- /docs/extending_cms/searchdocs.rst: -------------------------------------------------------------------------------- 1 | ######################### 2 | Search and the Django-CMS 3 | ######################### 4 | 5 | For powerful full-text search in with the django CMS, we suggest using 6 | `Haystack`_ together with `django-cms-search`. 7 | 8 | .. _Haystack: http://haystacksearch.org/ 9 | .. _django-cms-search: https://github.com/piquadrat/django-cms-search -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/widgets/plugin_item.html: -------------------------------------------------------------------------------- 1 | {% for plugin in plugin_list %} 2 |
  • {{ plugin.get_plugin_name }}{% if plugin.get_short_description %} [ {{ plugin.get_short_description }} ]{% endif %}
  • 3 | {% endfor %} -------------------------------------------------------------------------------- /cms/templates/cms/toolbar/items/anchor.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 |   5 |  [title] 6 | 7 | 8 |
    -------------------------------------------------------------------------------- /.tx/config: -------------------------------------------------------------------------------- 1 | [django-cms.js] 2 | file_filter = cms/locale//LC_MESSAGES/djangojs.po 3 | source_file = cms/locale/en/LC_MESSAGES/djangojs.po 4 | source_lang = en 5 | 6 | [main] 7 | host = http://www.transifex.net 8 | 9 | [django-cms.core] 10 | file_filter = cms/locale//LC_MESSAGES/django.po 11 | source_file = cms/locale/en/LC_MESSAGES/django.po 12 | source_lang = en 13 | 14 | -------------------------------------------------------------------------------- /cms/publisher/query.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from django.db.models.query import QuerySet 3 | 4 | class PublisherQuerySet(QuerySet): 5 | """Added publisher specific filters to queryset. 6 | """ 7 | def drafts(self): 8 | return self.filter(publisher_is_draft=True) 9 | 10 | def public(self): 11 | return self.filter(publisher_is_draft=False) 12 | -------------------------------------------------------------------------------- /cms/templates/admin/cms/mail/page_user_change.html: -------------------------------------------------------------------------------- 1 | {% extends 'admin/cms/mail/base.html' %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
    {% trans 'Username:' %}{{ user.username }}
    {% trans 'Password:' %}{{ password }}
    15 | {% endblock %} -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/dialog/base.html: -------------------------------------------------------------------------------- 1 |
    2 | {% block content %} 3 | {% block header %}{% endblock %} 4 | 5 | {% block form %}{% if form %}
    {% csrf_token %}{{ form.as_p }}
    {% endif %}{% endblock %} 6 | {% endblock %} 7 |
    8 | 9 | {% block script %}{% endblock %} 10 | -------------------------------------------------------------------------------- /tests/project/sampleapp/admin.py: -------------------------------------------------------------------------------- 1 | from cms.admin.placeholderadmin import PlaceholderAdmin 2 | from django.contrib import admin 3 | from project.sampleapp.models import Picture, Category 4 | 5 | class PictureInline(admin.StackedInline): 6 | model = Picture 7 | 8 | class CategoryAdmin(PlaceholderAdmin): 9 | inlines = [PictureInline] 10 | 11 | admin.site.register(Category, CategoryAdmin) 12 | -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/test_one.html: -------------------------------------------------------------------------------- 1 | {% extends "placeholder_tests/base.html" %} 2 | 3 | {% load cms_tags %} 4 | 5 | {% comment %} 6 | This files hould result in following placeholders: 7 | 8 | - new_one (from this) 9 | - two (from base.html) 10 | - three (from base.html) 11 | 12 | {% endcomment %} 13 | 14 | {% block one %} 15 | {% placeholder "new_one" %} 16 | {% endblock %} -------------------------------------------------------------------------------- /cms/plugins/link/migrations/0002_link_rename.py: -------------------------------------------------------------------------------- 1 | 2 | from south.db import db 3 | from django.db import models 4 | from cms.plugins.link.models import * 5 | 6 | class Migration: 7 | 8 | def forwards(self, orm): 9 | db.rename_column('link_link', 'link', 'url') 10 | 11 | 12 | def backwards(self, orm): 13 | db.rename_column('link_link', 'url', 'link') 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/outside.html: -------------------------------------------------------------------------------- 1 | {% extends "placeholder_tests/outside_base.html" %} 2 | {% load cms_tags %} 3 | 4 | {% comment %} 5 | This files hould result in following placeholders: 6 | 7 | - new_one (from this) 8 | - two (from base.html) 9 | - base_end (from base.html) 10 | {% endcomment %} 11 | 12 | {% block one %} 13 | {% placeholder "new_one" %} 14 | {% endblock %} 15 | -------------------------------------------------------------------------------- /cms/plugins/picture/migrations/0002_link_rename.py: -------------------------------------------------------------------------------- 1 | 2 | from south.db import db 3 | from django.db import models 4 | from cms.plugins.picture.models import * 5 | 6 | class Migration: 7 | 8 | def forwards(self, orm): 9 | db.rename_column('picture_picture', 'link', 'url') 10 | 11 | 12 | def backwards(self, orm): 13 | db.rename_column('picture_picture', 'url', 'link') 14 | -------------------------------------------------------------------------------- /tests/project/sampleapp/cms_app.py: -------------------------------------------------------------------------------- 1 | from cms.app_base import CMSApp 2 | from project.sampleapp.menu import SampleAppMenu 3 | from cms.apphook_pool import apphook_pool 4 | from django.utils.translation import ugettext_lazy as _ 5 | 6 | class SampleApp(CMSApp): 7 | name = _("Sample App") 8 | urls = ["project.sampleapp.urls"] 9 | menus = [SampleAppMenu] 10 | 11 | apphook_pool.register(SampleApp) 12 | -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/test_three.html: -------------------------------------------------------------------------------- 1 | {% extends "placeholder_tests/test_one.html" %} 2 | 3 | {% load cms_tags %} 4 | 5 | {% comment %} 6 | 7 | This file should result in following placeholders: 8 | 9 | - new_one (from test_one.html) 10 | - two (from base.html) 11 | - new_three (from this) 12 | 13 | {% endcomment %} 14 | 15 | {% block three %} 16 | {% placeholder "new_three" %} 17 | {% endblock %} -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/test_two.html: -------------------------------------------------------------------------------- 1 | {% extends "placeholder_tests/base.html" %} 2 | 3 | {% load cms_tags %} 4 | 5 | {% comment %} 6 | This files hould result in following placeholders: 7 | 8 | - child (from child.html) 9 | - three (from base.html) 10 | 11 | {% endcomment %} 12 | 13 | {% block one %} 14 | {% include "placeholder_tests/child.html" %} 15 | {% endblock %} 16 | 17 | {% block two %}{% endblock %} -------------------------------------------------------------------------------- /cms/templatetags/js.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from django import template 3 | from django.utils import simplejson 4 | from django.core.serializers.json import DjangoJSONEncoder 5 | 6 | register = template.Library() 7 | 8 | @register.filter 9 | def js(value): 10 | return simplejson.dumps(value, cls=DjangoJSONEncoder) 11 | 12 | @register.filter 13 | def bool(value): 14 | return value and "true" or "false" 15 | 16 | -------------------------------------------------------------------------------- /cms/middleware/user.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """This is ugly, but seems there's no other way how to do what we need for 3 | permission system. 4 | 5 | This middleware is required only when CMS_PERMISSION = True. 6 | """ 7 | 8 | class CurrentUserMiddleware(object): 9 | def process_request(self, request): 10 | from cms.utils.permissions import set_current_user 11 | set_current_user(getattr(request, 'user', None)) 12 | -------------------------------------------------------------------------------- /cms/plugins/teaser/templates/cms/plugins/teaser.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 |

    {{ object.title|title }}

    3 | {% if object.image %} 4 | {% if link %}{% endif %} 5 | {{ object.title }} 6 | {% if link %}{% endif %} 7 | {% endif %} 8 | {% if object.description %} 9 |

    {{ 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 |
    {% placeholder "one" %}
    15 | {% else %} 16 |
    {% placeholder "one" %}
    17 | {% endif %} -------------------------------------------------------------------------------- /cms/templates/admin/cms/mail/approvement_required.html: -------------------------------------------------------------------------------- 1 | {% extends 'admin/cms/mail/base.html' %} 2 | {% load i18n %} 3 | 4 | {% block content %} 5 |

    {% blocktrans %}Page {{ page }} may require approvement by you.{% endblocktrans %}

    6 | 7 | {% if page.pagemoderatorstate_set.count %} 8 |

    {% trans 'Last changes' %}

    9 | {% include 'admin/cms/page/moderation_messages.html' %} 10 | {% endif %} 11 | {% endblock %} -------------------------------------------------------------------------------- /cms/templates/cms/toolbar/items/button.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | [hidden] 4 | {% csrf_token %} 5 | 6 | 7 |   8 |  [title] 9 | 10 | 11 |
    12 |
    -------------------------------------------------------------------------------- /tests/project/fakemlng/models.py: -------------------------------------------------------------------------------- 1 | from cms.models.fields import PlaceholderField 2 | from django.db import models 3 | 4 | 5 | class MainModel(models.Model): 6 | pass 7 | 8 | class Translations(models.Model): 9 | master = models.ForeignKey(MainModel) 10 | language_code = models.CharField(max_length=15, db_index=True) 11 | placeholder = PlaceholderField('translated', null=True) 12 | 13 | class Meta: 14 | unique_together = [('master', 'language_code')] 15 | -------------------------------------------------------------------------------- /cms/menu_bases.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from menus.base import Menu 3 | from django.core.exceptions import ValidationError 4 | 5 | class CMSAttachMenu(Menu): 6 | cms_enabled = True 7 | name = None 8 | 9 | def __init__(self, *args, **kwargs): 10 | super(CMSAttachMenu, self).__init__(*args, **kwargs) 11 | if self.cms_enabled and not self.name: 12 | raise ValidationError("the menu %s is a CMSAttachMenu but has no name defined!" % self.__class__.__name__) 13 | -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/test_five.html: -------------------------------------------------------------------------------- 1 | {% extends "placeholder_tests/base.html" %} 2 | 3 | {% load cms_tags %} 4 | 5 | {% comment %} 6 | 7 | This file should result in following placeholders: 8 | 9 | - one (from base.html) 10 | - extra_one (from this) 11 | - two (from base.html) 12 | - three (from base.html) 13 | 14 | {% endcomment %} 15 | 16 | {% block one %} 17 | {% if something %} 18 | {{ block.super }} 19 | {% endif %} 20 | {% placeholder "extra_one" %} 21 | {% endblock %} -------------------------------------------------------------------------------- /tests/project/pluginapp/plugins/manytomany_rel/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from cms.models import CMSPlugin 4 | 5 | from project.pluginapp.models import Section 6 | 7 | 8 | class ArticlePluginModel(CMSPlugin): 9 | title = models.CharField(max_length=50) 10 | sections = models.ManyToManyField(Section) 11 | 12 | def __unicode__(self): 13 | return self.title 14 | 15 | def copy_relations(self, oldinstance): 16 | self.sections = oldinstance.sections.all() 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.swp 3 | *.lock 4 | *.pid 5 | cms/django 6 | *.DS_Store 7 | *.svn 8 | .* 9 | *.xml 10 | cms.sqlite 11 | cms/media/cms_page_media/ 12 | cms/docs/build 13 | example/run 14 | example/local_settings.py 15 | reversion/ 16 | htmlcov 17 | build 18 | dist 19 | .ropeproject 20 | .project 21 | .pydevproject 22 | .settings 23 | *.egg-info 24 | develop-eggs 25 | downloads 26 | eggs 27 | parts 28 | bin 29 | /dist 30 | *.rst~ 31 | /docs/*.html 32 | distribute-*.tar.gz 33 | include/ 34 | lib/ 35 | man/ 36 | share/ 37 | -------------------------------------------------------------------------------- /cms/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __version__ = '2.2.dev0' 3 | 4 | # patch settings 5 | try: 6 | from django.conf import settings 7 | if 'cms' in settings.INSTALLED_APPS: 8 | from conf import patch_settings 9 | patch_settings() 10 | except ImportError: # pragma: no cover 11 | """ 12 | This exception means that either the application is being built, or is 13 | otherwise installed improperly. Both make running patch_settings 14 | irrelevant. 15 | """ 16 | pass 17 | 18 | -------------------------------------------------------------------------------- /cms/plugins/file/templates/cms/plugins/file.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | {% if object.file.url %} 3 |

    4 | 5 | {% if object.get_icon_url %}{% endif %} 6 | {% if object.title %}{{ object.title }}{% else %}{{ object.get_file_name }}{% endif %} {% if object.file_exists %}({{ object.file.size|filesizeformat }}){% else %}({% trans "file missing!" %}){% endif %} 7 | 8 |

    9 | {% endif %} -------------------------------------------------------------------------------- /cms/media/cms/jstree/_lib/jquery.log.js: -------------------------------------------------------------------------------- 1 | (function($){ // block scope 2 | jQuery.fn.log = function (msg) { 3 | if (!window.console || !console) return; 4 | if (window.console || console.firebug){ 5 | msg = msg || ''; 6 | if(msg !== '') msg += ': '; 7 | console.log("%s%o", msg, this); 8 | } 9 | return this; 10 | }; 11 | $.extend({ 12 | log : function (msg) { 13 | if (!window.console || !console) return; 14 | if (window.console || console.firebug) { 15 | console.log("%s", msg); 16 | } 17 | } 18 | }); 19 | })(jQuery); -------------------------------------------------------------------------------- /cms/media/cms/js/lib/jquery.bind.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author trixta 3 | */ 4 | (function($){ 5 | 6 | $.bind = function(object, method){ 7 | var args = Array.prototype.slice.call(arguments, 2); 8 | if(args.length){ 9 | return function() { 10 | var args2 = [this].concat(args, $.makeArray( arguments )); 11 | return method.apply(object, args2); 12 | }; 13 | } else { 14 | return function() { 15 | var args2 = [this].concat($.makeArray( arguments )); 16 | return method.apply(object, args2); 17 | }; 18 | } 19 | }; 20 | 21 | })(jQuery); 22 | -------------------------------------------------------------------------------- /cms/sitemaps/cms_sitemap.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from django.contrib.sitemaps import Sitemap 3 | 4 | class CMSSitemap(Sitemap): 5 | changefreq = "monthly" 6 | priority = 0.5 7 | 8 | def items(self): 9 | from cms.utils.moderator import get_page_queryset 10 | page_queryset = get_page_queryset(None) 11 | all_pages = page_queryset.published().filter(login_required=False) 12 | return all_pages 13 | 14 | def lastmod(self, page): 15 | return page.publication_date or page.creation_date 16 | 17 | -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/test_four.html: -------------------------------------------------------------------------------- 1 | {% extends "placeholder_tests/test_three.html" %} 2 | 3 | {% load cms_tags %} 4 | 5 | {% comment %} 6 | 7 | This file should result in following placeholders: 8 | 9 | - new_one (from test_one.html) 10 | - child (from child.html) 11 | - four (from this) 12 | 13 | {% endcomment %} 14 | 15 | {% block three %} 16 | {% block subblockthree %} 17 | {% placeholder "four" %} 18 | {% endblock %} 19 | {% endblock %} 20 | {% block two %} 21 | {% include "placeholder_tests/child.html" %} 22 | {% endblock %} -------------------------------------------------------------------------------- /menus/templates/menu/menu.html: -------------------------------------------------------------------------------- 1 | {% load menu_tags %} 2 | {% for child in children %} 3 |
  • 4 | {{ child.get_menu_title }} 5 | {% if child.children %} 6 |
      7 | {% show_menu from_level to_level extra_inactive extra_active template "" "" child %} 8 |
    9 | {% endif %} 10 |
  • 11 | {% endfor %} 12 | -------------------------------------------------------------------------------- /tests/project/templates/placeholder_tests/test_six.html: -------------------------------------------------------------------------------- 1 | {% extends "placeholder_tests/base.html" %} 2 | 3 | {% load cms_tags %} 4 | 5 | {% comment %} 6 | 7 | This file should result in following placeholders: 8 | 9 | - new_one (from this) 10 | - new_two (from this) 11 | - new_three (from this) 12 | 13 | {% endcomment %} 14 | 15 | {% block one %} 16 | {% placeholder "new_one" %} 17 | 18 | {% block two %} 19 | {% placeholder "new_two" %} 20 | 21 | {% block three %} 22 | {% placeholder "new_three" %} 23 | {% endblock %} 24 | {% endblock %} 25 | {% endblock %} -------------------------------------------------------------------------------- /cms/templates/cms/toolbar/items/list.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/_ext/djangocms.py: -------------------------------------------------------------------------------- 1 | def setup(app): 2 | app.add_crossref_type( 3 | directivename = "setting", 4 | rolename = "setting", 5 | indextemplate = "pair: %s; setting", 6 | ) 7 | app.add_crossref_type( 8 | directivename = "templatetag", 9 | rolename = "ttag", 10 | indextemplate = "pair: %s; template tag" 11 | ) -------------------------------------------------------------------------------- /tests/project/noadmin_urls.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | from django.conf.urls.defaults import handler500, handler404, patterns, include, \ 3 | url 4 | 5 | 6 | urlpatterns = patterns('', 7 | url(r'^jsi18n/(?P\S+?)/$', 'django.views.i18n.javascript_catalog'), 8 | url(r'^media/cms/(?P.*)$', 'django.views.static.serve', 9 | {'document_root': settings.CMS_MEDIA_ROOT, 'show_indexes': True}), 10 | url(r'^media/(?P.*)$', 'django.views.static.serve', 11 | {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), 12 | url(r'^', include('cms.urls')), 13 | ) 14 | -------------------------------------------------------------------------------- /cms/test_utils/util/mock.py: -------------------------------------------------------------------------------- 1 | class AttributeObject(object): 2 | """ 3 | mock = AttributeObject(hello='world') 4 | mock.hello # 'world' 5 | """ 6 | def __init__(self, **kwargs): 7 | self.kwargs = kwargs 8 | for key, value in kwargs.items(): 9 | setattr(self, key, value) 10 | 11 | def __repr__(self): 12 | return '' % self.kwargs 13 | 14 | 15 | class DefaultAttributeObject(AttributeObject): 16 | def __init__(self, default, **kwargs): 17 | self.__default = default 18 | super(DefaultAttributeObject, self).__init__(**kwargs) 19 | -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/menu.html: -------------------------------------------------------------------------------- 1 | {% load cms_admin i18n adminmedia %}
  • 2 | 3 | {% include 'admin/cms/page/menu_item.html' %} 4 | 5 | {% with page.childrens as children %} 6 | {% if children %}{% for child in children %} 7 | {% show_admin_menu child %}{% endfor %} 8 | {% endif %} 9 | {% endwith %} 10 |
  • 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/project/testrunner.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | from django.test.simple import DjangoTestSuiteRunner 3 | 4 | try: 5 | from xmlrunner import XMLTestRunner as runner 6 | except: 7 | runner = False 8 | 9 | class CMSTestSuiteRunner(DjangoTestSuiteRunner): 10 | use_runner = runner 11 | 12 | def run_suite(self, suite, **kwargs): 13 | if self.use_runner and not self.failfast: 14 | return self.use_runner( 15 | output=getattr(settings, 'JUNIT_OUTPUT_DIR', '.') 16 | ).run(suite) 17 | else: 18 | return super(CMSTestSuiteRunner, self).run_suite(suite, **kwargs) 19 | -------------------------------------------------------------------------------- /cms/plugins/text/templates/cms/plugins/text_plugin_change_form.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/cms/page/plugin_change_form.html" %} 2 | {% load adminmedia %} 3 | 4 | {% block fieldsets %} 5 | {% for fieldset in adminform %} 6 | {% include "cms/plugins/text_plugin_fieldset.html" %} 7 | {% endfor %} 8 | 9 | 10 | 16 | {% endblock %} -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/moderation_messages.html: -------------------------------------------------------------------------------- 1 | {% load i18n cms_admin %} 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | {% for state in page.pagemoderatorstate_set.all %} 11 | 12 | 13 | 14 | 15 | 16 | {% endfor %} 17 | 18 |
    {% trans 'Action' %}{% trans 'Created' %}{% trans 'User' %}{% trans 'Message' %}
    {{ state.get_action_display }}{{ state.created }}{{ state.user }}{{ state.message }}
    19 | -------------------------------------------------------------------------------- /cms/plugins/flash/cms_plugins.py: -------------------------------------------------------------------------------- 1 | from cms.plugin_pool import plugin_pool 2 | from cms.plugin_base import CMSPluginBase 3 | from django.utils.translation import ugettext_lazy as _ 4 | from models import Flash 5 | from cms.plugins.flash.forms import FlashForm 6 | 7 | class FlashPlugin(CMSPluginBase): 8 | model = Flash 9 | name = _("Flash") 10 | form = FlashForm 11 | 12 | render_template = "cms/plugins/flash.html" 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(FlashPlugin) -------------------------------------------------------------------------------- /cms/tests/mail.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from cms.api import create_page_user 3 | from cms.test_utils.testcases import CMSTestCase 4 | from cms.utils.mail import mail_page_user_change 5 | from django.core import mail 6 | 7 | from django.contrib.auth.models import User 8 | 9 | 10 | class MailTestCase(CMSTestCase): 11 | def setUp(self): 12 | mail.outbox = [] # reset outbox 13 | 14 | def test_mail_page_user_change(self): 15 | user = User.objects.create_superuser("username", "username@django-cms.org", "username") 16 | user = create_page_user(user, user, grant_all=True) 17 | mail_page_user_change(user) 18 | self.assertEqual(len(mail.outbox), 1) 19 | -------------------------------------------------------------------------------- /tests/project/nonroot_urls.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | from django.conf.urls.defaults import handler500, handler404, patterns, include, \ 3 | url 4 | from django.contrib import admin 5 | 6 | admin.autodiscover() 7 | 8 | urlpatterns = patterns('', 9 | (r'^admin/', include(admin.site.urls)), 10 | (r'^jsi18n/(?P\S+?)/$', 'django.views.i18n.javascript_catalog'), 11 | url(r'^media/cms/(?P.*)$', 'django.views.static.serve', {'document_root': settings.CMS_MEDIA_ROOT, 'show_indexes': True}), 12 | url(r'^media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), 13 | url(r'^content/', include('cms.urls')), 14 | ) 15 | -------------------------------------------------------------------------------- /tests/project/sampleapp/views.py: -------------------------------------------------------------------------------- 1 | # Create your views here. 2 | from django.http import Http404 3 | from django.shortcuts import render_to_response 4 | from django.template.context import RequestContext 5 | from menus.utils import simple_language_changer 6 | from project.sampleapp.models import Category 7 | 8 | @simple_language_changer 9 | def sample_view(request, **kw): 10 | context = RequestContext(request, kw) 11 | return render_to_response("sampleapp/home.html", context) 12 | 13 | def category_view(request, id): 14 | return render_to_response('sampleapp/category_view.html', RequestContext(request, {'category':Category.objects.get(pk=id)})) 15 | 16 | def notfound(request): 17 | raise Http404 18 | -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/plugin_forms_history.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/change_form.html" %} 2 | {% load i18n admin_modify adminmedia cms_tags %} 3 | {% block title %}{% trans "Change a page" %}{% endblock %} 4 | 5 | {% block extrahead %} 6 | 7 | {% endblock %} 8 | 9 | {% block content_title %}{% trans "An old revision of a plugin can not be saved!" %}{% endblock %} 10 | 11 | {% block content %} 12 | 21 | {% endblock %} -------------------------------------------------------------------------------- /tests/project/templates/col_two.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load i18n cms_tags %} 3 | 4 | {% block tpl_id %}tpl_col_two{% endblock %} 5 | 6 | {% block content %} 7 |
    8 | {% include "sidebar_submenu.html" %} 9 | {% block col_sidebar %} 10 | {% with "220" as width %} 11 | {% placeholder col_sidebar %} 12 | {% endwith %} 13 | {% endblock %} 14 |
    15 | 16 |
    17 | {% block page_title %}

    {% page_attribute title %}

    {% endblock %} 18 | {% block col_left %} 19 | {% with "640" as width %} 20 | {% placeholder col_left %} 21 | {% endwith %} 22 | {% endblock %} 23 |
    24 | {% endblock %} -------------------------------------------------------------------------------- /tests/project/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | from django.conf.urls.defaults import handler500, handler404, patterns, include, \ 3 | url 4 | from django.contrib import admin 5 | 6 | admin.autodiscover() 7 | 8 | urlpatterns = patterns('', 9 | url(r'^admin/', include(admin.site.urls)), 10 | url(r'^jsi18n/(?P\S+?)/$', 'django.views.i18n.javascript_catalog'), 11 | url(r'^media/cms/(?P.*)$', 'django.views.static.serve', 12 | {'document_root': settings.CMS_MEDIA_ROOT, 'show_indexes': True}), 13 | url(r'^media/(?P.*)$', 'django.views.static.serve', 14 | {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), 15 | url(r'^', include('cms.urls')), 16 | ) 17 | -------------------------------------------------------------------------------- /cms/plugins/inherit/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.utils.translation import ugettext_lazy as _ 3 | from cms.models import CMSPlugin, Page 4 | from cms import settings 5 | 6 | class InheritPagePlaceholder(CMSPlugin): 7 | """ 8 | Provides the ability to inherit plugins for a certain placeholder from an associated "parent" page instance 9 | """ 10 | from_page = models.ForeignKey(Page, null=True, blank=True, help_text=_("Choose a page to include its plugins into this placeholder, empty will choose current page")) 11 | from_language = models.CharField(_("language"), max_length=5, choices=settings.CMS_LANGUAGES, blank=True, null=True, help_text=_("Optional: the language of the plugins you want")) 12 | -------------------------------------------------------------------------------- /cms/test_utils/fixtures/fakemlng.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from cms.api import add_plugin 3 | from project.fakemlng.models import MainModel, Translations 4 | 5 | class FakemlngFixtures(object): 6 | def create_fixtures(self): 7 | main = MainModel.objects.create() 8 | en = Translations.objects.create(master=main, language_code='en') 9 | Translations.objects.create(master=main, language_code='de') 10 | Translations.objects.create(master=main, language_code='nl') 11 | fr = Translations.objects.create(master=main, language_code='fr') 12 | add_plugin(en.placeholder, 'TextPlugin', 'en', body='

    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 |

    Sample application home page - on page {% page_attribute page_title %}

    6 |

    {{ message }}

    7 | {{ block.super }} 8 | 19 |

    Sample image - appmedia works?

    20 | gift 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[0-9]+)/$', 'category_view', name='category_view'), 13 | url(r'notfound/$', 'notfound', name='notfound'), 14 | ) 15 | -------------------------------------------------------------------------------- /cms/plugins/link/forms.py: -------------------------------------------------------------------------------- 1 | from django.forms.models import ModelForm 2 | from django.utils.translation import ugettext_lazy as _ 3 | from cms.plugins.link.models import Link 4 | from django import forms 5 | from cms.models import Page 6 | 7 | 8 | class LinkForm(ModelForm): 9 | page_link = forms.ModelChoiceField(label=_("page"), queryset=Page.objects.drafts(), required=False) 10 | 11 | def for_site(self, site): 12 | # override the page_link fields queryset to containt just pages for 13 | # current site 14 | self.fields['page_link'].queryset = Page.objects.drafts().on_site(site) 15 | 16 | class Meta: 17 | model = Link 18 | exclude = ('page', 'position', 'placeholder', 'language', 'plugin_type') -------------------------------------------------------------------------------- /tests/project/urls_for_apphook_tests.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | from django.conf.urls.defaults import handler500, handler404, patterns, include, \ 3 | url 4 | from django.contrib import admin 5 | 6 | admin.autodiscover() 7 | 8 | urlpatterns = patterns('', 9 | url(r'^admin/', include(admin.site.urls)), 10 | url(r'^jsi18n/(?P\S+?)/$', 'django.views.i18n.javascript_catalog'), 11 | url(r'^media/cms/(?P.*)$', 'django.views.static.serve', 12 | {'document_root': settings.CMS_MEDIA_ROOT, 'show_indexes': True}), 13 | url(r'^media/(?P.*)$', 'django.views.static.serve', 14 | {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), 15 | url(r'^', include('project.cms_urls_for_apphook_tests')), 16 | ) 17 | -------------------------------------------------------------------------------- /tests/project/second_urls_for_apphook_tests.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | from django.conf.urls.defaults import handler500, handler404, patterns, include, \ 3 | url 4 | from django.contrib import admin 5 | 6 | admin.autodiscover() 7 | 8 | urlpatterns = patterns('', 9 | url(r'^admin/', include(admin.site.urls)), 10 | url(r'^jsi18n/(?P\S+?)/$', 'django.views.i18n.javascript_catalog'), 11 | url(r'^media/cms/(?P.*)$', 'django.views.static.serve', 12 | {'document_root': settings.CMS_MEDIA_ROOT, 'show_indexes': True}), 13 | url(r'^media/(?P.*)$', 'django.views.static.serve', 14 | {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), 15 | url(r'^', include('project.second_cms_urls_for_apphook_tests')), 16 | ) 17 | -------------------------------------------------------------------------------- /cms/test_utils/fixtures/templatetags.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from cms.api import create_page, create_title 3 | from cms.test_utils.util.context_managers import SettingsOverride 4 | 5 | 6 | class TwoPagesFixture(object): 7 | def create_fixtures(self): 8 | defaults = { 9 | 'template': 'nav_playground.html', 10 | 'published': True, 11 | 'in_navigation': True, 12 | } 13 | with SettingsOverride(CMS_MODERATOR=False, CMS_PERMISSION=False): 14 | first = create_page('first', language='en', **defaults) 15 | create_title('de', 'erste', first) 16 | second = create_page('second', language='en', reverse_id='myreverseid', **defaults) 17 | create_title('de', 'zweite', second) 18 | -------------------------------------------------------------------------------- /cms/test_utils/util/menu_extender.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from menus.base import NavigationNode 3 | from menus.menu_pool import menu_pool 4 | from cms.menu_bases import CMSAttachMenu 5 | 6 | 7 | class TestMenu(CMSAttachMenu): 8 | name = "test menu" 9 | 10 | def get_nodes(self, request): 11 | nodes = [] 12 | n = NavigationNode('sample root page', "/", 1) 13 | n2 = NavigationNode('sample settings page', "/bye/", 2) 14 | n3 = NavigationNode('sample account page', "/hello/", 3) 15 | n4 = NavigationNode('sample my profile page', "/hello/world/", 4, 3) 16 | nodes.append(n) 17 | nodes.append(n2) 18 | nodes.append(n3) 19 | nodes.append(n4) 20 | return nodes 21 | 22 | menu_pool.register_menu(TestMenu) 23 | -------------------------------------------------------------------------------- /tests/buildout.cfg: -------------------------------------------------------------------------------- 1 | [buildout] 2 | parts = 3 | python 4 | django 5 | eggs = 6 | django-cms 7 | coverage 8 | unittest-xml-reporting 9 | django-mptt 10 | django-reversion 11 | django-classy-tags 12 | django 13 | South 14 | sphinx 15 | extra-paths = 16 | project 17 | develop = 18 | ../ 19 | versions = versions 20 | 21 | [python] 22 | recipe = zc.recipe.egg 23 | interpreter = python 24 | eggs = ${buildout:eggs} 25 | scripts = 26 | coverage 27 | 28 | 29 | [django] 30 | recipe = djangoprojectrecipe 31 | project = project 32 | settings = settings 33 | eggs = ${buildout:eggs} 34 | extra-paths = ${buildout:extra-paths} 35 | 36 | [versions] 37 | coverage = 3.4 38 | unittest-xml-reporting = 1.0.3 39 | django-reversion = 1.4 40 | django = 1.2.5 41 | -------------------------------------------------------------------------------- /cms/plugins/link/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.utils.translation import ugettext_lazy as _ 3 | from cms.models import CMSPlugin, Page 4 | 5 | class Link(CMSPlugin): 6 | """ 7 | A link to an other page or to an external website 8 | """ 9 | 10 | name = models.CharField(_("name"), max_length=256) 11 | url = models.URLField(_("link"), verify_exists=False, blank=True, null=True) 12 | page_link = models.ForeignKey(Page, verbose_name=_("page"), blank=True, null=True, help_text=_("A link to a page has priority over a text link.")) 13 | mailto = models.EmailField(_("mailto"), blank=True, null=True, help_text=_("An email adress has priority over a text link.")) 14 | 15 | def __unicode__(self): 16 | return self.name 17 | 18 | search_fields = ('name',) 19 | -------------------------------------------------------------------------------- /cms/templatetags/placeholder_tags.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from classytags.arguments import Argument 3 | from classytags.core import Tag, Options 4 | from django import template 5 | from django.template.defaultfilters import safe 6 | 7 | register = template.Library() 8 | 9 | 10 | class RenderPlaceholder(Tag): 11 | name = 'render_placeholder' 12 | options = Options( 13 | Argument('placeholder'), 14 | Argument('width', default=None, required=False), 15 | ) 16 | 17 | def render_tag(self, context, placeholder, width): 18 | request = context.get('request', None) 19 | if not request: 20 | return '' 21 | if not placeholder: 22 | return '' 23 | return safe(placeholder.render(context, width)) 24 | register.tag(RenderPlaceholder) -------------------------------------------------------------------------------- /cms/management/commands/subcommands/moderator.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from cms.management.commands.subcommands.base import SubcommandsCommand 3 | from cms.models.pagemodel import Page 4 | from django.conf import settings 5 | from django.core.management.base import NoArgsCommand 6 | 7 | 8 | class ModeratorOnCommand(NoArgsCommand): 9 | help = 'Turn moderation on, run AFTER setting CMS_MODERATOR = True' 10 | 11 | def handle_noargs(self, **options): 12 | assert settings.CMS_MODERATOR == True, 'Command can only be run if CMS_MODERATOR is True' 13 | for page in Page.objects.filter(published=True): 14 | page.publish() 15 | 16 | 17 | class ModeratorCommand(SubcommandsCommand): 18 | help = 'Moderator utilities' 19 | subcommands = { 20 | 'on': ModeratorOnCommand, 21 | } 22 | -------------------------------------------------------------------------------- /cms/templates/cms/toolbar/items/login.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 |
    3 |
    4 | {% csrf_token %} 5 | 6 |
    7 | 8 |
    9 | 10 | {% trans "Login" %} 11 | 12 | 13 |
    14 |
    -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/plugin_forms_ok.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/change_form.html" %} 2 | {% load i18n admin_modify adminmedia %} 3 | 4 | {% block title %}{% trans "Change a page" %}{% endblock %} 5 | 6 | {% block extrahead %} 7 | 8 | {{ media }} 9 | {% endblock %} 10 | 11 | {% block content_title %}{% endblock %} 12 | 13 | {% block content %} 14 | 26 | {% endblock %} -------------------------------------------------------------------------------- /tests/project/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import sys 3 | import os 4 | appdir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../')) 5 | projectdir = os.path.abspath(os.path.join(appdir, '../')) 6 | sys.path = [projectdir, appdir] + sys.path 7 | from django.core.management import execute_manager 8 | try: 9 | import settings # Assumed to be in the same directory. 10 | except ImportError: # pragma: no cover 11 | import sys 12 | sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__) 13 | sys.exit(1) 14 | 15 | if __name__ == "__main__": 16 | execute_manager(settings) 17 | -------------------------------------------------------------------------------- /cms/middleware/page.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from cms.appresolver import applications_page_check 3 | 4 | class LazyPage(object): 5 | def __get__(self, request, obj_type=None): 6 | from cms.utils.page_resolver import get_page_from_request 7 | if not hasattr(request, '_current_page_cache'): 8 | request._current_page_cache = get_page_from_request(request) 9 | if not request._current_page_cache: 10 | # if this is in a apphook 11 | # find the page the apphook is attached to 12 | request._current_page_cache = applications_page_check(request) 13 | return request._current_page_cache 14 | 15 | class CurrentPageMiddleware(object): 16 | def process_request(self, request): 17 | request.__class__.current_page = LazyPage() 18 | return None -------------------------------------------------------------------------------- /cms/plugins/teaser/cms_plugins.py: -------------------------------------------------------------------------------- 1 | from cms.plugin_pool import plugin_pool 2 | from cms.plugin_base import CMSPluginBase 3 | from django.utils.translation import ugettext_lazy as _ 4 | from cms.plugins.teaser.models import Teaser 5 | 6 | class TeaserPlugin(CMSPluginBase): 7 | model = Teaser 8 | name = _("Teaser") 9 | render_template = "cms/plugins/teaser.html" 10 | 11 | def render(self, context, instance, placeholder): 12 | if instance.url: 13 | link = instance.url 14 | elif instance.page_link: 15 | link = instance.page_link.get_absolute_url() 16 | else: 17 | link = "" 18 | context.update({ 19 | 'object':instance, 20 | 'placeholder':placeholder, 21 | 'link':link 22 | }) 23 | return context 24 | 25 | plugin_pool.register_plugin(TeaserPlugin) -------------------------------------------------------------------------------- /cms/exceptions.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | class PluginAlreadyRegistered(Exception): 3 | pass 4 | 5 | class PluginNotRegistered(Exception): 6 | pass 7 | 8 | class AppAllreadyRegistered(Exception): 9 | pass 10 | 11 | class NotImplemented(Exception): 12 | pass 13 | 14 | class SubClassNeededError(Exception): 15 | pass 16 | 17 | class MissingFormError(Exception): 18 | pass 19 | 20 | class NoHomeFound(Exception): 21 | pass 22 | 23 | 24 | class PermissionsException(Exception): 25 | """Base permission exception 26 | """ 27 | 28 | class NoPermissionsException(PermissionsException): 29 | """Can be fired when some violate action is performed on permission system. 30 | """ 31 | 32 | class Deprecated(Exception): pass 33 | 34 | class DuplicatePlaceholderWarning(Warning): pass 35 | 36 | class DontUsePageAttributeWarning(Warning): pass -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/silver/README: -------------------------------------------------------------------------------- 1 | /** 2 | * @version Alpha 0.1 2008-05-10 23:28:43 $ 3 | * @package Silver skin for WYMeditor 4 | * @copyright Copyright (C) 2008 Scott Edwin Lewis. All rights reserved. 5 | * @license GNU/GPL, see COPYING 6 | * Silver skin for WYMeditor is free software and is licensed under the 7 | * GNU General Public License. See COPYING for copyright notices and details. 8 | */ 9 | 10 | Adds custom buttons and color palette to the WYMeditor XHTML Editor. 11 | 12 | INSTALLATION: 13 | 14 | 1. Copy the entire /silver/ directory to /wymeditor/skins/ 15 | 2. Initialize the WYMeditor 'skin' option as below: 16 | 17 | 26 | 27 | That's it. You're done. 28 | -------------------------------------------------------------------------------- /tests/project/templates/menu/menu.html: -------------------------------------------------------------------------------- 1 | {% load menu_tags cache %} 2 | {% for child in children %} 3 | 4 |
  • 5 | {% if not child.is_leaf_node %}+{% endif %}{{ child.get_menu_title }} 6 | 7 | {% if child.selected %}selected{% endif %} 8 | {% if child.ancestor %}ancestor{% endif %} 9 | {% if child.sibling %}sibling{% endif %} 10 | {% if child.descendant %}descendant{% endif %} 11 | {% if child.soft_root %}(softroot){% endif %} 12 | (Level: {{ child.menu_level }} {{ child.level }}) 13 | 14 | 15 | {% if child.children %} 16 |
      17 | {% show_menu from_level to_level extra_inactive extra_active template "" "" child %} 18 |
    19 | {% endif %} 20 |
  • 21 | 22 | {% endfor %} 23 | -------------------------------------------------------------------------------- /cms/admin/dialog/forms.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from django import forms 3 | from django.utils.translation import ugettext_lazy as _ 4 | 5 | class PermissionForm(forms.Form): 6 | ''' 7 | Holds the specific field for permissions 8 | ''' 9 | copy_permissions = forms.BooleanField(label=_('Copy permissions'), 10 | required=False, initial=True) 11 | 12 | class ModeratorForm(forms.Form): 13 | ''' 14 | Holds the specific field for moderator 15 | ''' 16 | copy_moderation = forms.BooleanField(label=_('Copy moderation'), 17 | required=False, initial=True) 18 | 19 | class PermissionAndModeratorForm(PermissionForm, ModeratorForm): 20 | ''' 21 | Subclass of both ModeratorForm AND PermissionForm, thus it inherits both 22 | fields 23 | ''' 24 | pass 25 | -------------------------------------------------------------------------------- /cms/plugins/flash/models.py: -------------------------------------------------------------------------------- 1 | import re 2 | from django.db import models 3 | from django.utils.translation import ugettext_lazy as _ 4 | from cms.models import CMSPlugin 5 | from os.path import basename 6 | 7 | class Flash(CMSPlugin): 8 | file = models.FileField(_('file'), upload_to=CMSPlugin.get_media_path, help_text=_('use swf file')) 9 | width = models.CharField(_('width'), max_length=6) 10 | height = models.CharField(_('height'), max_length=6) 11 | 12 | def get_height(self): 13 | return fix_unit(self.height) 14 | 15 | def get_width(self): 16 | return fix_unit(self.width) 17 | 18 | def __unicode__(self): 19 | return u"%s" % basename(self.file.path) 20 | 21 | def fix_unit(value): 22 | if not re.match(r'.*[0-9]$', value): 23 | # no unit, add px 24 | return value + "px" 25 | return value 26 | -------------------------------------------------------------------------------- /cms/plugins/file/cms_plugins.py: -------------------------------------------------------------------------------- 1 | from cms.plugin_pool import plugin_pool 2 | from cms.plugin_base import CMSPluginBase 3 | from django.utils.translation import ugettext_lazy as _ 4 | from models import File 5 | from django.conf import settings 6 | 7 | class FilePlugin(CMSPluginBase): 8 | model = File 9 | name = _("File") 10 | render_template = "cms/plugins/file.html" 11 | text_enabled = True 12 | 13 | def render(self, context, instance, placeholder): 14 | context.update({ 15 | 'object':instance, 16 | 'placeholder':placeholder 17 | }) 18 | return context 19 | 20 | def icon_src(self, instance): 21 | file_icon = instance.get_icon_url() 22 | if file_icon: return file_icon 23 | return settings.CMS_MEDIA_URL + u"images/plugins/file.png" 24 | 25 | plugin_pool.register_plugin(FilePlugin) 26 | -------------------------------------------------------------------------------- /tests/project/sampleapp/models.py: -------------------------------------------------------------------------------- 1 | from cms.models.fields import PlaceholderField 2 | from django.core.urlresolvers import reverse 3 | from django.db import models 4 | import mptt 5 | 6 | class Category(models.Model): 7 | parent = models.ForeignKey('self', blank=True, null=True) 8 | name = models.CharField(max_length=20) 9 | description = PlaceholderField('category_description', 600) 10 | 11 | def __unicode__(self): 12 | return self.name 13 | 14 | def get_absolute_url(self): 15 | return reverse('category_view', args=[self.pk]) 16 | 17 | class Meta: 18 | verbose_name_plural = 'categories' 19 | 20 | try: 21 | mptt.register(Category) 22 | except mptt.AlreadyRegistered: 23 | pass 24 | 25 | class Picture(models.Model): 26 | image = models.ImageField(upload_to="pictures") 27 | category = models.ForeignKey(Category) 28 | -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/recover_form.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/cms/page/revision_form.html" %} 2 | {% load i18n %} 3 | 4 | 5 | {% block extrahead %} 6 | {{block.super}} 7 | 8 | {{media}} 9 | {% endblock %} 10 | 11 | 12 | {% block breadcrumbs %} 13 | 20 | {% endblock %} 21 | 22 | 23 | {% block form_top %} 24 |

    {% 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 |
    8 | {% include "sidebar_submenu.html" %} 9 | {% block col_sidebar %} 10 | {% with "220" as width %} 11 | {% placeholder col_sidebar %} 12 | {% endwith %} 13 | {% endblock %} 14 |
    15 | 16 |
    17 | {% block page_title %}

    {% page_attribute title %}

    {% endblock %} 18 | {% block col_left %} 19 | {% with "340" as width %} 20 | {% placeholder col_left %} 21 | {% endwith %} 22 | {% endblock %} 23 |
    24 | 25 |
    26 | {% block col_right %} 27 | {% with "220" as width %} 28 | {% placeholder col_right %} 29 | {% endwith %} 30 | {% endblock %} 31 |
    32 | {% endblock %} -------------------------------------------------------------------------------- /tests/project/pluginapp/plugins/manytomany_rel/cms_plugins.py: -------------------------------------------------------------------------------- 1 | from django.utils.translation import ugettext as _ 2 | 3 | from cms.plugin_base import CMSPluginBase 4 | from cms.plugin_pool import plugin_pool 5 | 6 | from project.pluginapp.plugins.manytomany_rel.models import ArticlePluginModel 7 | from project.pluginapp.models import Article 8 | 9 | 10 | 11 | class ArticlePlugin(CMSPluginBase): 12 | model = ArticlePluginModel 13 | name = _("Articles") 14 | render_template = "newsroom/plugins/articles.html" 15 | admin_preview = False 16 | 17 | def render(self, context, instance, placeholder): 18 | article_qs = Article.published_objects.all(section__name__in=instance.sections) 19 | context.update({'instance':instance, 20 | 'article_qs':article_qs, 21 | 'placeholder':placeholder}) 22 | return context 23 | 24 | plugin_pool.register_plugin(ArticlePlugin) 25 | -------------------------------------------------------------------------------- /cms/urls.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from cms.apphook_pool import apphook_pool 3 | from cms.views import details 4 | from django.conf import settings 5 | from django.conf.urls.defaults import url, patterns 6 | 7 | if settings.APPEND_SLASH: 8 | reg = url(r'^(?P[0-9A-Za-z-_.//]+)/$', details, name='pages-details-by-slug') 9 | else: 10 | reg = url(r'^(?P[0-9A-Za-z-_.//]+)$', details, name='pages-details-by-slug') 11 | 12 | urlpatterns = [ 13 | # Public pages 14 | url(r'^$', details, {'slug':''}, name='pages-root'), 15 | reg, 16 | ] 17 | 18 | if apphook_pool.get_apphooks(): 19 | """If there are some application urls, add special resolver, so we will 20 | have standard reverse support. 21 | """ 22 | from cms.appresolver import get_app_patterns 23 | urlpatterns = get_app_patterns() + urlpatterns 24 | #urlpatterns = (dynamic_app_regex_url_resolver, ) + urlpatterns 25 | 26 | urlpatterns = patterns('', *urlpatterns) -------------------------------------------------------------------------------- /cms/migrations/0003_remove_placeholder.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from south.db import db 3 | from django.db import models 4 | from cms.models import * 5 | 6 | class Migration: 7 | 8 | def forwards(self, orm): 9 | # Deleting model 'Placeholder' 10 | db.delete_table('cms_placeholder') 11 | 12 | 13 | def backwards(self, orm): 14 | 15 | # Adding model 'Placeholder' 16 | db.create_table('cms_placeholder', ( 17 | ('body', models.TextField()), 18 | ('language', models.CharField(_("language"), db_index=True, max_length=3, editable=False, blank=False)), 19 | ('id', models.AutoField(primary_key=True)), 20 | ('name', models.CharField(_("slot"), max_length=50, editable=False, db_index=True)), 21 | ('page', models.ForeignKey(orm.Page, editable=False, verbose_name=_("page"))), 22 | )) 23 | db.send_create_signal('cms', ['Placeholder']) 24 | -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/revision_form.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/cms/page/change_form.html" %} 2 | {% load i18n %} 3 | 4 | {% block breadcrumbs %} 5 | 13 | {% endblock %} 14 | 15 | 16 | {% block content %} 17 | {% with 1 as is_popup %} 18 | {{block.super}} 19 | {% endwith %} 20 | {% endblock %} 21 | 22 | 23 | {% block form_top %} 24 |

    {% 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[0-9A-Za-z-_.//]+)/$', details, name='pages-details-by-slug') 8 | else: 9 | reg = url(r'^(?P[0-9A-Za-z-_.//]+)$', details, name='pages-details-by-slug') 10 | 11 | urlpatterns = [ 12 | # Public pages 13 | url(r'^$', details, {'slug':''}, name='pages-root'), 14 | reg, 15 | ] 16 | 17 | if apphook_pool.get_apphooks(): 18 | """If there are some application urls, add special resolver, so we will 19 | have standard reverse support. 20 | """ 21 | from cms.appresolver import get_app_patterns 22 | urlpatterns = get_app_patterns() + urlpatterns 23 | #urlpatterns = (dynamic_app_regex_url_resolver, ) + urlpatterns 24 | 25 | urlpatterns = patterns('', *urlpatterns) 26 | -------------------------------------------------------------------------------- /tests/project/second_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[0-9A-Za-z-_.//]+)/$', details, name='pages-details-by-slug') 8 | else: 9 | reg = url(r'^(?P[0-9A-Za-z-_.//]+)$', details, name='pages-details-by-slug') 10 | 11 | urlpatterns = [ 12 | # Public pages 13 | url(r'^$', details, {'slug':''}, name='pages-root'), 14 | reg, 15 | ] 16 | 17 | if apphook_pool.get_apphooks(): 18 | """If there are some application urls, add special resolver, so we will 19 | have standard reverse support. 20 | """ 21 | from cms.appresolver import get_app_patterns 22 | urlpatterns = get_app_patterns() + urlpatterns 23 | #urlpatterns = (dynamic_app_regex_url_resolver, ) + urlpatterns 24 | 25 | urlpatterns = patterns('', *urlpatterns) 26 | -------------------------------------------------------------------------------- /cms/utils/copy_plugins.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | def copy_plugins_to(plugin_list, to_placeholder, to_language = None): 3 | """ 4 | Copies a list of plugins to a placeholder to a language. 5 | """ 6 | ptree = [] 7 | plugins_ziplist = [] 8 | for old_plugin in plugin_list: 9 | if to_language: 10 | plugin_language = to_language 11 | else: 12 | plugin_language = old_plugin.language 13 | # do the simple copying 14 | new_plugin = old_plugin.copy_plugin(to_placeholder, plugin_language, ptree) 15 | plugins_ziplist.append((new_plugin, old_plugin)) 16 | # this magic is needed for advanced plugins like Text Plugins that can have 17 | # nested plugins and need to update their content based on the new plugins. 18 | for new_plugin, old_plugin in plugins_ziplist: 19 | new_instance = new_plugin.get_plugin_instance()[0] 20 | if new_instance: 21 | new_instance.post_copy(old_plugin, plugins_ziplist) -------------------------------------------------------------------------------- /cms/plugins/teaser/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.utils.translation import ugettext_lazy as _ 3 | from cms.models import CMSPlugin, Page 4 | 5 | class Teaser(CMSPlugin): 6 | """ 7 | A Teaser 8 | """ 9 | title = models.CharField(_("title"), max_length=255) 10 | image = models.ImageField(_("image"), upload_to=CMSPlugin.get_media_path, blank=True, null=True) 11 | page_link = models.ForeignKey( 12 | Page, 13 | verbose_name=_("page"), 14 | help_text=_("If present image will be clickable"), 15 | blank=True, 16 | null=True, 17 | limit_choices_to={'publisher_is_draft': True} 18 | ) 19 | url = models.CharField(_("link"), max_length=255, blank=True, null=True, help_text=_("If present image will be clickable.")) 20 | description = models.TextField(_("description"), blank=True, null=True) 21 | 22 | def __unicode__(self): 23 | return self.title 24 | 25 | search_fields = ('description',) 26 | -------------------------------------------------------------------------------- /cms/plugins/text/migrations/0002_freeze.py: -------------------------------------------------------------------------------- 1 | 2 | from south.db import db 3 | from django.db import models 4 | from cms.plugins.text.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 | 'cms.cmsplugin': { 18 | '_stub': True, 19 | 'id': ('models.AutoField', [], {'primary_key': 'True', 'blank': 'True'}) 20 | }, 21 | 'text.text': { 22 | 'body': ('models.TextField', [], {}), 23 | 'cmsplugin_ptr': ('models.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}) 24 | }, 25 | 'cms.page': { 26 | '_stub': True, 27 | 'id': ('models.AutoField', [], {'primary_key': 'True', 'blank': 'True'}) 28 | } 29 | } 30 | 31 | complete_apps = ['text'] 32 | -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/iframe/default/wymiframe.html: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | WYMeditor iframe 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /cms/management/commands/cms.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import absolute_import 3 | from cms.management.commands.subcommands.base import SubcommandsCommand 4 | from cms.management.commands.subcommands.list import ListCommand 5 | from cms.management.commands.subcommands.moderator import ModeratorCommand 6 | from cms.management.commands.subcommands.uninstall import UninstallCommand 7 | from django.core.management.base import BaseCommand 8 | from optparse import make_option 9 | 10 | 11 | class Command(SubcommandsCommand): 12 | 13 | option_list = BaseCommand.option_list + ( 14 | make_option('--noinput', action='store_false', dest='interactive', default=True, 15 | help='Tells django-cms to NOT prompt the user for input of any kind. '), 16 | ) 17 | 18 | command_name = 'cms' 19 | 20 | help = 'Various django-cms commands' 21 | subcommands = { 22 | 'uninstall': UninstallCommand, 23 | 'list': ListCommand, 24 | 'moderator': ModeratorCommand, 25 | } -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/dialog/copy.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/cms/page/dialog/base.html" %} 2 | {% load i18n %} 3 | 4 | {% block title %}{% trans 'Copy options' %}{% endblock %} 5 | 6 | {% block header %}

    {% 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 `_. 34 | 35 | 36 | -------------------------------------------------------------------------------- /docs/templates/genindex-split.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | {% set title = _('Index') %} 3 | {% block body %} 4 | 5 |

    {{ _('Index') }}

    6 | 7 |

    {{ _('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 |

    Index

    22 |

    {% 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 |
    4 |
      5 | {% include "admin/cms/page/widgets/plugin_item.html" %} 6 |
    7 | {% include "admin/cms/page/widgets/installed_plugins_inc.html" %} 8 |
    9 | {% endif %} 10 |
    11 | {% if add %} 12 |

    {% 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 |
    21 | -------------------------------------------------------------------------------- /cms/media/cms/js/csrf.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | $.fn.cmsPatchCSRF = function () { 3 | $.ajaxSetup({ 4 | beforeSend: function(xhr, settings) { 5 | function getCookie(name) { 6 | var cookieValue = null; 7 | if (document.cookie && document.cookie != '') { 8 | var cookies = document.cookie.split(';'); 9 | for (var i = 0; i < cookies.length; i++) { 10 | var cookie = $.trim(cookies[i]); 11 | // Does this cookie string begin with the name we want? 12 | if (cookie.substring(0, name.length + 1) == (name + '=')) { 13 | cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 14 | break; 15 | } 16 | } 17 | } 18 | return cookieValue; 19 | } 20 | var base_doc_url = document.URL.match(/^http[s]{0,1}:\/\/[^\/]+\//)[0]; 21 | var base_settings_url = settings.url.match(/^http[s]{0,1}:\/\/[^\/]+\//); 22 | if (base_settings_url != null) { 23 | base_settings_url = base_settings_url[0]; 24 | } 25 | if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url)) || base_doc_url == base_settings_url) { 26 | // Only send the token to relative URLs i.e. locally. 27 | xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); 28 | } 29 | } 30 | }); 31 | }; 32 | })(jQuery); -------------------------------------------------------------------------------- /cms/plugins/picture/cms_plugins.py: -------------------------------------------------------------------------------- 1 | from cms.plugin_pool import plugin_pool 2 | from cms.plugin_base import CMSPluginBase 3 | from django.utils.translation import ugettext_lazy as _ 4 | from cms.plugins.picture.models import Picture 5 | from django.conf import settings 6 | 7 | class PicturePlugin(CMSPluginBase): 8 | model = Picture 9 | name = _("Picture") 10 | render_template = "cms/plugins/picture.html" 11 | text_enabled = True 12 | 13 | def render(self, context, instance, placeholder): 14 | if instance.url: 15 | link = instance.url 16 | elif instance.page_link: 17 | link = instance.page_link.get_absolute_url() 18 | else: 19 | link = "" 20 | context.update({ 21 | 'picture': instance, 22 | 'link': link, 23 | 'placeholder': placeholder 24 | }) 25 | return context 26 | 27 | def icon_src(self, instance): 28 | # TODO - possibly use 'instance' and provide a thumbnail image 29 | return settings.CMS_MEDIA_URL + u"images/plugins/image.png" 30 | 31 | plugin_pool.register_plugin(PicturePlugin) 32 | -------------------------------------------------------------------------------- /cms/tests/docs.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import with_statement 3 | import cms 4 | from cms.test_utils.testcases import CMSTestCase 5 | from cms.test_utils.util.context_managers import TemporaryDirectory 6 | from sphinx.application import Sphinx 7 | import os 8 | try: 9 | from cStringIO import StringIO 10 | except ImportError: 11 | from StringIO import StringIO 12 | 13 | ROOT_DIR = os.path.dirname(cms.__file__) 14 | DOCS_DIR = os.path.abspath(os.path.join(ROOT_DIR, '..', 'docs')) 15 | 16 | 17 | class DocsTestCase(CMSTestCase): 18 | """ 19 | Test docs building correctly for HTML 20 | """ 21 | def test_html(self): 22 | nullout = StringIO() 23 | with TemporaryDirectory() as OUT_DIR: 24 | app = Sphinx( 25 | DOCS_DIR, 26 | DOCS_DIR, 27 | OUT_DIR, 28 | OUT_DIR, 29 | "html", 30 | warningiserror=True, 31 | status=nullout, 32 | ) 33 | try: 34 | app.build() 35 | except: 36 | print nullout.getvalue() 37 | raise 38 | -------------------------------------------------------------------------------- /cms/plugins/text/templates/cms/plugins/text_plugin_fieldset.html: -------------------------------------------------------------------------------- 1 |
    2 | {% if fieldset.name %}

    {{ fieldset.name }}

    {% endif %} 3 | {% if fieldset.description %}
    {{ fieldset.description|safe }}
    {% endif %} 4 | {% for line in fieldset %} 5 |
    6 | {{ line.errors }} 7 | {% for field in line %} 8 | {% if not field.field.is_hidden %} 9 | {% endif %} 10 | {% if field.is_checkbox %} 11 | {{ field.field }}{{ field.label_tag }} 12 | {% else %} 13 | {% if field.field.is_hidden %} 14 | {{ field.field }} 15 | {% else %} 16 | {{ field.field }} 17 | {% endif %} 18 | {% endif %} 19 | {% if not field.field.is_hidden %} 20 | {% if field.field.field.help_text %}

    {{ field.field.field.help_text|safe }}

    {% endif %} 21 |
    22 | {% endif %} 23 | {% endfor %} 24 | 25 | {% endfor %} 26 |
    -------------------------------------------------------------------------------- /cms/plugins/utils.py: -------------------------------------------------------------------------------- 1 | from cms.utils import get_language_from_request 2 | from cms.utils.moderator import get_cmsplugin_queryset 3 | 4 | def get_plugins(request, placeholder, lang=None): 5 | if not placeholder: 6 | return [] 7 | lang = lang or get_language_from_request(request) 8 | if not hasattr(placeholder, '_%s_plugins_cache' % lang): 9 | setattr(placeholder, '_%s_plugins_cache' % lang, get_cmsplugin_queryset(request).filter( 10 | placeholder=placeholder, language=lang, parent__isnull=True 11 | ).order_by('placeholder', 'position').select_related()) 12 | return getattr(placeholder, '_%s_plugins_cache' % lang) 13 | 14 | def get_plugins_for_page(request, page, lang=None): 15 | if not page: 16 | return [] 17 | lang = lang or get_language_from_request(request) 18 | if not hasattr(page, '_%s_plugins_cache' % lang): 19 | setattr(page, '_%s_plugins_cache' % lang, get_cmsplugin_queryset(request).filter( 20 | placeholder__page=page, language=lang, parent__isnull=True 21 | ).order_by('placeholder', 'position').select_related()) 22 | return getattr(page, '_%s_plugins_cache' % lang) -------------------------------------------------------------------------------- /cms/plugins/flash/migrations/0002_freeze.py: -------------------------------------------------------------------------------- 1 | 2 | from south.db import db 3 | from django.db import models 4 | from cms.plugins.flash.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 | 'flash.flash': { 18 | 'cmsplugin_ptr': ('models.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), 19 | 'file': ('models.FileField', [], {'max_length': '100'}), 20 | 'height': ('models.CharField', [], {'max_length': '6'}), 21 | 'width': ('models.CharField', [], {'max_length': '6'}) 22 | }, 23 | 'cms.cmsplugin': { 24 | '_stub': True, 25 | 'id': ('models.AutoField', [], {'primary_key': 'True', 'blank': 'True'}) 26 | }, 27 | 'cms.page': { 28 | '_stub': True, 29 | 'id': ('models.AutoField', [], {'primary_key': 'True', 'blank': 'True'}) 30 | } 31 | } 32 | 33 | complete_apps = ['flash'] 34 | -------------------------------------------------------------------------------- /cms/plugins/text/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | 2 | from south.db import db 3 | from django.db import models 4 | from cms.plugins.text.models import * 5 | 6 | class Migration: 7 | 8 | depends_on = ( 9 | ("cms", "0005_mptt_added_to_plugins"), 10 | ) 11 | 12 | def forwards(self, orm): 13 | 14 | # Adding model 'Text' 15 | db.create_table('text_text', ( 16 | ('body', models.TextField(_("body"))), 17 | ('cmsplugin_ptr', models.OneToOneField(orm['cms.CMSPlugin'])), 18 | )) 19 | db.send_create_signal('text', ['Text']) 20 | 21 | 22 | 23 | def backwards(self, orm): 24 | 25 | # Deleting model 'Text' 26 | db.delete_table('text_text') 27 | 28 | 29 | 30 | models = { 31 | 'cms.cmsplugin': { 32 | '_stub': True, 33 | 'id': ('models.AutoField', [], {'primary_key': 'True'}) 34 | }, 35 | 'cms.page': { 36 | 'Meta': {'ordering': "('tree_id','lft')"}, 37 | '_stub': True, 38 | 'id': ('models.AutoField', [], {'primary_key': 'True'}) 39 | } 40 | } 41 | 42 | 43 | -------------------------------------------------------------------------------- /cms/plugins/video/settings.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | 3 | VIDEO_AUTOPLAY = getattr(settings, "VIDEO_AUTOPLAY", False) 4 | VIDEO_AUTOHIDE = getattr(settings, "VIDEO_AUTOHIDE", False) 5 | VIDEO_FULLSCREEN = getattr(settings, "VIDEO_FULLSCREEN", True) 6 | VIDEO_LOOP = getattr(settings, "VIDEO_LOOP", False) 7 | VIDEO_AUTOPLAY = getattr(settings, "VIDEO_AUTOPLAY", False) 8 | VIDEO_AUTOPLAY = getattr(settings, "VIDEO_AUTOPLAY", False) 9 | 10 | VIDEO_BG_COLOR = getattr(settings, "VIDEO_BG_COLOR", "000000") 11 | VIDEO_TEXT_COLOR = getattr(settings, "VIDEO_TEXT_COLOR", "FFFFFF") 12 | VIDEO_SEEKBAR_COLOR = getattr(settings, "VIDEO_SEEKBAR_COLOR", "13ABEC") 13 | VIDEO_SEEKBARBG_COLOR = getattr(settings, "VIDEO_SEEKBARBG_COLOR", "333333") 14 | VIDEO_LOADINGBAR_COLOR = getattr(settings, "VIDEO_LOADINGBAR_COLOR", "828282") 15 | VIDEO_BUTTON_OUT_COLOR = getattr(settings, "VIDEO_BUTTON_OUT_COLOR", "333333") 16 | VIDEO_BUTTON_OVER_COLOR = getattr(settings, "VIDEO_BUTTON_OVER_COLOR", "000000") 17 | VIDEO_BUTTON_HIGHLIGHT_COLOR = getattr(settings, "VIDEO_BUTTON_HIGHLIGHT_COLOR", "FFFFFF") 18 | 19 | VIDEO_PLUGIN_ENABLE_ADVANCED_SETTINGS = getattr(settings, "VIDEO_PLUGIN_ENABLE_ADVANCED_SETTINGS", True) 20 | -------------------------------------------------------------------------------- /cms/plugins/twitter/cms_plugins.py: -------------------------------------------------------------------------------- 1 | from django.utils.translation import ugettext_lazy as _ 2 | from cms.plugin_base import CMSPluginBase 3 | from cms.plugins.twitter.models import TwitterRecentEntries, TwitterSearch 4 | from cms.plugin_pool import plugin_pool 5 | from django.conf import settings 6 | from django.forms.widgets import Media 7 | 8 | class TwitterRecentEntriesPlugin(CMSPluginBase): 9 | model = TwitterRecentEntries 10 | name = _("Twitter") 11 | render_template = "cms/plugins/twitter_recent_entries.html" 12 | 13 | def render(self, context, instance, placeholder): 14 | context.update({ 15 | 'object': instance, 16 | }) 17 | return context 18 | 19 | plugin_pool.register_plugin(TwitterRecentEntriesPlugin) 20 | 21 | class TwitterSearchPlugin(CMSPluginBase): 22 | model = TwitterSearch 23 | name = _("Twitter Search") 24 | render_template = "cms/plugins/twitter_search.html" 25 | admin_preview = False 26 | 27 | def render(self, context, instance, placeholder): 28 | context.update({ 29 | 'object': instance, 30 | }) 31 | return context 32 | plugin_pool.register_plugin(TwitterSearchPlugin) -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/lang/zh_cn.js: -------------------------------------------------------------------------------- 1 | WYMeditor.STRINGS['zh_cn'] = { 2 | Strong: '加粗', 3 | Emphasis: '斜体', 4 | Superscript: '上标', 5 | Subscript: '下标', 6 | Ordered_List: '有序列表', 7 | Unordered_List: '无序列表', 8 | Indent: '增加缩进', 9 | Outdent: '减少缩进', 10 | Undo: '撤消', 11 | Redo: '重做', 12 | Link: '链接', 13 | Unlink: '取消链接', 14 | Image: '图片', 15 | Table: '表格', 16 | HTML: 'HTML源代码', 17 | Paragraph: '段落', 18 | Heading_1: '标题 1', 19 | Heading_2: '标题 2', 20 | Heading_3: '标题 3', 21 | Heading_4: '标题 4', 22 | Heading_5: '标题 5', 23 | Heading_6: '标题 6', 24 | Preformatted: '原始文本', 25 | Blockquote: '引语', 26 | Table_Header: '表头', 27 | URL: '地址', 28 | Title: '提示文字', 29 | Alternative_Text: '失效文字', 30 | Caption: '标题', 31 | Summary: 'Summary', 32 | Number_Of_Rows: '行数', 33 | Number_Of_Cols: '列数', 34 | Submit: '提交', 35 | Cancel: '放弃', 36 | Choose: '选择', 37 | Preview: '预览', 38 | Paste_From_Word: '从Word粘贴纯文本', 39 | Tools: '工具', 40 | Containers: '容器', 41 | Classes: '预定义样式', 42 | Status: '状态', 43 | Source_Code: '源代码', 44 | Attachment: '附件', 45 | NewParagraph: '新段落' 46 | }; 47 | 48 | -------------------------------------------------------------------------------- /menus/models.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from django.db import models 3 | 4 | class CacheKeyManager(models.Manager): 5 | def get_keys(self, site_id=None, language=None): 6 | ret = self.none() 7 | if not site_id and not language: 8 | # Both site and language are None - return everything 9 | ret = self.all() 10 | elif not site_id: 11 | ret = self.filter(language=language) 12 | elif not language: 13 | ret = self.filter(site=site_id) 14 | else: 15 | # Filter by site_id *and* by language. 16 | ret = self.filter(site=site_id).filter(language=language) 17 | return ret 18 | 19 | class CacheKey(models.Model): 20 | ''' 21 | This is to store a "set" of cache keys in a fashion where it's accessible 22 | by multiple processes / machines. 23 | Multiple Django instances will then share the keys. 24 | This allows for selective invalidation of the menu trees (per site, per 25 | language), in the cache. 26 | ''' 27 | language = models.CharField(max_length=255) 28 | site = models.PositiveIntegerField() 29 | key = models.CharField(max_length=255) 30 | objects = CacheKeyManager() -------------------------------------------------------------------------------- /cms/admin/models.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from django.forms.models import BaseInlineFormSet 3 | 4 | class BaseInlineFormSetWithQuerySet(BaseInlineFormSet): 5 | """Overriden BaseInlineFormSet, so we can pass queryset to it instead of 6 | _default_manager, see django bug #11019 for more details. 7 | """ 8 | def __init__(self, data=None, files=None, instance=None, 9 | save_as_new=False, prefix=None, queryset=None): 10 | from django.db.models.fields.related import RelatedObject 11 | if instance is None: 12 | self.instance = self.model() 13 | else: 14 | self.instance = instance 15 | self.save_as_new = save_as_new 16 | # is there a better way to get the object descriptor? 17 | self.rel_name = RelatedObject(self.fk.rel.to, self.model, self.fk).get_accessor_name() 18 | if hasattr(self, 'use_queryset'): 19 | qs = self.use_queryset 20 | else: 21 | qs = self.model._default_manager 22 | qs = qs.filter(**{self.fk.name: self.instance}) 23 | super(BaseInlineFormSet, self).__init__(data, files, prefix=prefix or self.rel_name, 24 | queryset=qs) -------------------------------------------------------------------------------- /cms/media/cms/js/plugins/jquery.cookie.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery Cookie plugin 3 | * 4 | * Copyright (c) 2010 Klaus Hartl (stilbuero.de) 5 | * Dual licensed under the MIT and GPL licenses: 6 | * http://www.opensource.org/licenses/mit-license.php 7 | * http://www.gnu.org/licenses/gpl.html 8 | * 9 | */ 10 | (function ($) {jQuery.cookie = function (key, value, options) {if (arguments.length > 1 && String(value) !== "[object Object]") {options = jQuery.extend({}, options);if (value === null || value === undefined) {options.expires = -1;}if (typeof options.expires === 'number') {var days = options.expires, t = options.expires = new Date();t.setDate(t.getDate() + days);}value = String(value);return (document.cookie = [encodeURIComponent(key), '=',options.raw ? value : encodeURIComponent(value),options.expires ? '; expires=' + options.expires.toUTCString() : '',options.path ? '; path=' + options.path : '',options.domain ? '; domain=' + options.domain : '',options.secure ? '; secure' : ''].join(''));}options = value || {};var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;};})(jQuery); -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/widgets/installed_plugins_inc.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 |
    3 | 14 | {% if not add %} 15 | {% trans "Add Plugin" %} 16 | {% if show_copy %} 17 | 25 | {% trans "Copy Plugins" %} 26 | {% endif %} 27 | 28 | {% endif %} 29 |
    -------------------------------------------------------------------------------- /cms/plugins/twitter/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.utils.translation import ugettext_lazy as _ 3 | from cms.models.pluginmodel import CMSPlugin 4 | 5 | class TwitterRecentEntries(CMSPlugin): 6 | title = models.CharField(_('title'), max_length=75, blank=True) 7 | twitter_user = models.CharField(_('twitter user'), max_length=75) 8 | count = models.PositiveSmallIntegerField(_('count'), help_text=_('Number of entries to display'), default=3) 9 | link_hint = models.CharField(_('link hint'), max_length=75, blank=True, help_text=_('If given, the hint is displayed as link to your Twitter profile.')) 10 | 11 | def __unicode__(self): 12 | return self.title 13 | 14 | class TwitterSearch(CMSPlugin): 15 | title = models.CharField(_('title'), max_length=75, blank=True) 16 | query = models.CharField(_('query'), max_length=200, blank=True, default='', help_text=_('Example: "brains AND zombies AND from:umbrella AND to:nemesis": tweets from the user "umbrella" to the user "nemesis" that contain the words "brains" and "zombies"')) 17 | count = models.PositiveSmallIntegerField(_('count'), help_text=_('Number of entries to display'), default=3) 18 | 19 | def __unicode__(self): 20 | return self.title -------------------------------------------------------------------------------- /cms/plugins/picture/migrations/0003_freeze.py: -------------------------------------------------------------------------------- 1 | 2 | from south.db import db 3 | from django.db import models 4 | from cms.plugins.picture.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 | 'cms.cmsplugin': { 18 | '_stub': True, 19 | 'id': ('models.AutoField', [], {'primary_key': 'True', 'blank': 'True'}) 20 | }, 21 | 'picture.picture': { 22 | 'alt': ('models.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), 23 | 'cmsplugin_ptr': ('models.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), 24 | 'image': ('models.ImageField', [], {'max_length': '100'}), 25 | 'url': ('models.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}) 26 | }, 27 | 'cms.page': { 28 | '_stub': True, 29 | 'id': ('models.AutoField', [], {'primary_key': 'True', 'blank': 'True'}) 30 | } 31 | } 32 | 33 | complete_apps = ['picture'] 34 | -------------------------------------------------------------------------------- /cms/media/cms/jstree/themes/classic/style.css: -------------------------------------------------------------------------------- 1 | .tree .tree-classic li.open { 2 | background:url("minus.gif") 2px 5px no-repeat; 3 | } 4 | .tree .tree-classic li.closed { 5 | background:url("plus.gif") 2px 5px no-repeat; 6 | } 7 | .tree .tree-classic #dragged li.open { 8 | background:url("plus.gif") 2px 5px no-repeat; 9 | } 10 | 11 | .tree .tree-classic li.open a { 12 | background-image:url("folderopen.gif"); 13 | } 14 | .tree .tree-classic li.closed a { 15 | background-image:url("folder.gif"); 16 | } 17 | .tree .tree-classic li.leaf a { 18 | background-image:url("folder.gif"); 19 | } 20 | 21 | .tree .tree-classic li a { 22 | -moz-border-radius:0; 23 | } 24 | 25 | .tree .tree-classic li a:hover { 26 | background-color:white; 27 | border-color:white; 28 | } 29 | .tree .tree-classic li a.clicked, 30 | .tree .tree-classic li span.clicked { 31 | background-color:navy; 32 | border-color:navy; 33 | color:white; 34 | } 35 | 36 | .rtl .tree-classic li.open { 37 | background-position:right 5px; 38 | margin-right:-3px; 39 | padding-right:19px; 40 | } 41 | .rtl .tree-classic li.closed { 42 | background-position:right 5px; 43 | margin-right:-3px; 44 | padding-right:19px; 45 | } 46 | .rtl .tree-classic #dragged li.open { 47 | background-position: right 5px; 48 | } -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/includes/fieldset.html: -------------------------------------------------------------------------------- 1 |
    2 | {% if fieldset.name %}

    {{ fieldset.name }}

    {% endif %} 3 | {% if fieldset.description %} 4 |
    {{ fieldset.description|safe }}
    5 | {% endif %} 6 | {% for line in fieldset %} 7 |
    8 | {{ line.errors }} 9 | {% for field in line %} 10 | {% if not field.field.is_hidden %} 11 | {% endif %} 12 | {% if field.is_checkbox %} 13 | {{ field.field }}{{ field.label_tag }} 14 | {% else %} 15 | {% if field.field.is_hidden %} 16 | {{ field.field }} 17 | {% else %} 18 | {{ field.label_tag }}{{ field.field }} 19 | {% endif %} 20 | {% endif %} 21 | {% if not field.field.is_hidden %} 22 | {% if field.field.field.help_text %}

    {{ field.field.field.help_text|safe }}

    {% endif %} 23 |
    24 | {% endif %} 25 | {% endfor %} 26 | 27 | {% endfor %} 28 |
    29 | -------------------------------------------------------------------------------- /cms/test_utils/fixtures/navextenders.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from cms.api import create_page 3 | from cms.models.pagemodel import Page 4 | from cms.test_utils.util.context_managers import SettingsOverride 5 | 6 | 7 | class NavextendersFixture(object): 8 | def create_fixtures(self): 9 | """ 10 | Tree from fixture: 11 | 12 | page1 13 | page2 14 | page3 15 | page4 16 | page5 17 | """ 18 | defaults = { 19 | 'template': 'nav_playground.html', 20 | 'language': 'en', 21 | } 22 | with SettingsOverride(CMS_MODERATOR=False, CMS_PERMISSION=False): 23 | p1 = create_page('page1', published=True, in_navigation=True, **defaults) 24 | p4 = create_page('page4', published=True, in_navigation=True, **defaults) 25 | p1 = Page.objects.get(pk=p1.pk) 26 | p2 = create_page('page2', published=True, in_navigation=True, parent=p1, **defaults) 27 | create_page('page3', published=True, in_navigation=True, parent=p2, **defaults) 28 | p4 = Page.objects.get(pk=p4.pk) 29 | create_page('page5', published=True, in_navigation=True, parent=p4, **defaults) 30 | -------------------------------------------------------------------------------- /cms/templates/cms/toolbar/placeholder.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | 3 |
    4 |
    {{ placeholder_label }}
    5 |
    6 | 7 | 8 |  {% trans "Add" %} 9 | - 10 | 11 | 12 |
      13 | {% regroup installed_plugins by module as module_list %} 14 | {% for module in module_list %} 15 |
    • {% if module.grouper %}{{ module.grouper|capfirst }}{% else %}{% trans "Available plugins" %}{% endif %} 16 |
        17 | {% for p in module.list %} 18 | {{ p.name }} 19 | {% endfor %} 20 |
      21 |
    • 22 | {% endfor %} 23 |
    24 |
    25 |
    -------------------------------------------------------------------------------- /cms/models/metaclasses.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from django.conf import settings 3 | from django.db.models.base import ModelBase 4 | from cms.publisher.manager import PublisherManager 5 | from mptt.models import MPTTModelBase 6 | from cms.publisher.options import PublisherOptions 7 | 8 | 9 | class PageMetaClass(MPTTModelBase): 10 | def __new__(cls, name, bases, attrs): 11 | super_new = super(PageMetaClass, cls).__new__ 12 | if not settings.CMS_MODERATOR: 13 | return super_new(cls, name, bases, attrs) 14 | 15 | if 'objects' in attrs: 16 | if not isinstance(attrs['objects'], PublisherManager): 17 | raise ValueError, ("Model %s extends Publisher, " + 18 | "so its 'objects' manager must be " + 19 | "a subclass of publisher.PublisherManager") % (name,) 20 | else: 21 | attrs['objects'] = PublisherManager() 22 | 23 | attrs['_is_publisher_model'] = lambda self: True 24 | 25 | # build meta object 26 | publisher_meta = attrs.pop('PublisherMeta', None) 27 | attrs['_publisher_meta'] = PublisherOptions(name, bases, publisher_meta) 28 | 29 | return super_new(cls, name, bases, attrs) 30 | -------------------------------------------------------------------------------- /cms/templates/admin/page_submit_line.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 |
    3 | {% if show_save %}{% endif %} 4 | {% if show_delete_link %} 5 | 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 |
    15 | -------------------------------------------------------------------------------- /cms/locale/en/LC_MESSAGES/djangojs.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: PACKAGE VERSION\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2011-02-07 07:22-0600\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: \n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | 20 | #: media/cms/js/change_form.js:31 21 | msgid "" 22 | "Are you sure you want to change the %(field_name)s without saving the page " 23 | "first?" 24 | msgstr "" 25 | 26 | #: media/cms/js/change_form.js:69 27 | msgid "" 28 | "Not all plugins are saved. Are you sure you want to save the page?\n" 29 | "All unsaved plugin content will tried to save." 30 | msgstr "" 31 | 32 | #: media/cms/js/change_form.js:127 33 | msgid "Are you sure you want to change tabs without saving the page first?" 34 | msgstr "" 35 | 36 | #: media/cms/js/plugin_editor.js:125 37 | msgid "Are you sure you want to delete this plugin?" 38 | msgstr "" 39 | -------------------------------------------------------------------------------- /cms/plugins/file/migrations/0001_initial.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 | depends_on = ( 9 | ("cms", "0001_initial"), 10 | ) 11 | 12 | def forwards(self, orm): 13 | 14 | # Adding model 'File' 15 | db.create_table('file_file', ( 16 | ('cmsplugin_ptr', models.OneToOneField(orm['cms.CMSPlugin'])), 17 | ('file', models.FileField(_("file"), upload_to=CMSPlugin.get_media_path)), 18 | ('title', models.CharField(_("title"), max_length=255, null=True, blank=True)), 19 | )) 20 | db.send_create_signal('file', ['File']) 21 | 22 | 23 | 24 | def backwards(self, orm): 25 | 26 | # Deleting model 'File' 27 | db.delete_table('file_file') 28 | 29 | 30 | 31 | models = { 32 | 'cms.cmsplugin': { 33 | '_stub': True, 34 | 'id': ('models.AutoField', [], {'primary_key': 'True'}) 35 | }, 36 | 'cms.page': { 37 | 'Meta': {'ordering': "('tree_id','lft')"}, 38 | '_stub': True, 39 | 'id': ('models.AutoField', [], {'primary_key': 'True'}) 40 | } 41 | } 42 | 43 | 44 | -------------------------------------------------------------------------------- /cms/templates/admin/cms/page/change_list_tree.html: -------------------------------------------------------------------------------- 1 | {% load i18n cms_admin %} 2 | -------------------------------------------------------------------------------- /cms/media/cms/css/change_form.css: -------------------------------------------------------------------------------- 1 | h1 span { font-size: 10px; color: #999; font-weight: normal;} 2 | h1 span.moderation-requires-approvement { color: #f60; } 3 | h1.moderation-approve-deletion { color: #c00; } 4 | div fieldset.module.hidden { position: absolute; left: -1000em; } 5 | 6 | 7 | /* Page form */ 8 | 9 | 10 | ul#page_form_lang_tabs { 11 | text-align: left; 12 | margin: 0px; 13 | font-size: 12px; 14 | font-weight: bold; 15 | border-bottom: 5px solid #C6DBEE; 16 | list-style-type: none; 17 | padding: 5px 10px 3px 0px; 18 | } 19 | 20 | ul#page_form_lang_tabs li { 21 | display: inline; 22 | } 23 | 24 | 25 | ul#page_form_lang_tabs li a { 26 | padding: 3px 4px; 27 | margin-right: 0px; 28 | text-decoration: none; 29 | 30 | background-color: #fff; 31 | color: #000; 32 | 33 | border: 1px solid #d8d8e3; 34 | border-bottom: 0px; 35 | } 36 | 37 | ul#page_form_lang_tabs li.active_tab a { 38 | background-color: #C6DBEE; 39 | color: #fff; 40 | } 41 | 42 | ul#page_form_lang_tabs a:hover { 43 | background: #fff; 44 | } 45 | 46 | 47 | .language_button.selected { 48 | margin-bottom:-2px; 49 | border-bottom:0px !important; 50 | color:#fff; 51 | background:#bcd2e9 !important; 52 | } 53 | 54 | .deletetranslation { margin-left: 30px; } 55 | -------------------------------------------------------------------------------- /cms/media/cms/wymeditor/skins/compact/skin.js: -------------------------------------------------------------------------------- 1 | WYMeditor.SKINS['compact'] = { 2 | 3 | init: function(wym) { 4 | 5 | //move the containers panel to the top area 6 | jQuery(wym._options.containersSelector + ', ' 7 | + wym._options.classesSelector, wym._box) 8 | .appendTo( jQuery("div.wym_area_top", wym._box) ) 9 | .addClass("wym_dropdown") 10 | .css({"margin-right": "10px", "width": "120px", "float": "left"}); 11 | 12 | //render following sections as buttons 13 | jQuery(wym._options.toolsSelector, wym._box) 14 | .addClass("wym_buttons") 15 | .css({"margin-right": "10px", "float": "left"}); 16 | 17 | //make hover work under IE < 7 18 | jQuery(".wym_section", wym._box).hover(function(){ 19 | jQuery(this).addClass("hover"); 20 | },function(){ 21 | jQuery(this).removeClass("hover"); 22 | }); 23 | 24 | var postInit = wym._options.postInit; 25 | wym._options.postInit = function(wym) { 26 | 27 | if(postInit) postInit.call(wym, wym); 28 | var rule = { 29 | name: 'body', 30 | css: 'background-color: #f0f0f0;' 31 | }; 32 | wym.addCssRule( wym._doc.styleSheets[0], rule); 33 | }; 34 | } 35 | }; 36 | --------------------------------------------------------------------------------