Guest User

Untitled

a guest
Jun 19th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.15 KB | None | 0 0
  1. diff --git a/zinnia/admin/entry.py b/zinnia/admin/entry.py
  2. index 858ac76..435d713 100644
  3. --- a/zinnia/admin/entry.py
  4. +++ b/zinnia/admin/entry.py
  5. @@ -12,6 +12,7 @@ from django.utils.translation import ugettext_lazy as _
  6. from django.core.urlresolvers import reverse, NoReverseMatch
  7.  
  8. from tagging.models import Tag
  9. +from cms.admin.placeholderadmin import PlaceholderAdmin
  10.  
  11. from zinnia import settings
  12. from zinnia.managers import HIDDEN
  13. @@ -20,12 +21,13 @@ from zinnia.ping import DirectoryPinger
  14. from zinnia.admin.forms import EntryAdminForm
  15.  
  16.  
  17. -class EntryAdmin(admin.ModelAdmin):
  18. +class EntryAdmin(PlaceholderAdmin):
  19. """Admin for Entry model"""
  20. form = EntryAdminForm
  21. date_hierarchy = 'creation_date'
  22. - fieldsets = ((_('Content'), {'fields': ('title', 'content',
  23. - 'image', 'status')}),
  24. + fieldsets = ((_('Content'), {'fields': ('title', 'image', 'status', 'content')}),
  25. + (None, {'fields': ('placeholder',),
  26. + 'classes': ('plugin-holder', 'plugin-holder-nopage')}),
  27. (_('Options'), {'fields': ('excerpt', 'template', 'related',
  28. 'authors', 'creation_date',
  29. 'start_publication',
  30. @@ -141,19 +143,36 @@ class EntryAdmin(admin.ModelAdmin):
  31. {'url': short_url}
  32. get_short_url.allow_tags = True
  33. get_short_url.short_description = _('short url')
  34. +
  35. + def get_placeholder_content(self, entry):
  36. + """Use render_placeholder to parse placeholder content and give the
  37. + result to entry content field"""
  38. + content = render_placeholder(entry.placeholder, context)
  39.  
  40. # Custom Methods
  41. def save_model(self, request, entry, form, change):
  42. - """Save the authors, update time, make an excerpt"""
  43. + """Save the authors, update time, make an excerpt.
  44. + If ZINNIA_WYSIWYG = 'placeholders' render placeholder to content."""
  45. +
  46. + if settings.WYSIWYG == 'placeholder' :
  47. + try:
  48. + from cms.plugin_rendering import render_placeholder
  49. + except ImportError:
  50. + raise ImproperlyConfigured, "Could not load cms.plugin_rendering"
  51. +
  52. + context = {}
  53. + context['request'] = request
  54. + entry.content = render_placeholder(entry.placeholder, context)
  55. +
  56. if not form.cleaned_data.get('excerpt') and entry.status == PUBLISHED:
  57. entry.excerpt = truncate_words(strip_tags(entry.content), 50)
  58.  
  59. if entry.pk and not request.user.has_perm('zinnia.can_change_author'):
  60. form.cleaned_data['authors'] = entry.authors.all()
  61. -
  62. +
  63. if not form.cleaned_data.get('authors'):
  64. form.cleaned_data['authors'].append(request.user)
  65. -
  66. +
  67. entry.last_update = datetime.now()
  68. entry.save()
  69.  
  70. @@ -164,16 +183,16 @@ class EntryAdmin(admin.ModelAdmin):
  71. return queryset
  72. return request.user.entry_set.all()
  73.  
  74. - def formfield_for_manytomany(self, db_field, request, **kwargs):
  75. - """Filters the disposable authors"""
  76. - if db_field.name == 'authors':
  77. - if request.user.has_perm('zinnia.can_change_author'):
  78. - kwargs['queryset'] = User.objects.filter(is_staff=True)
  79. - else:
  80. - kwargs['queryset'] = User.objects.filter(pk=request.user.pk)
  81. +# def formfield_for_manytomany(self, db_field, request, **kwargs):
  82. +# """Filters the disposable authors"""
  83. +# if db_field.name == 'authors':
  84. +# if request.user.has_perm('zinnia.can_change_author'):
  85. +# kwargs['queryset'] = User.objects.filter(is_staff=True)
  86. +# else:
  87. +# kwargs['queryset'] = User.objects.filter(pk=request.user.pk)
  88.  
  89. - return super(EntryAdmin, self).formfield_for_manytomany(
  90. - db_field, request, **kwargs)
  91. +# return super(EntryAdmin, self).formfield_for_manytomany(
  92. +# db_field, request, **kwargs)
  93.  
  94. def get_actions(self, request):
  95. """Define user actions by permissions"""
  96. @@ -250,34 +269,34 @@ class EntryAdmin(admin.ModelAdmin):
  97. ping_directories.short_description = _('Ping Directories for ' \
  98. 'selected entries')
  99.  
  100. - def get_urls(self):
  101. - entry_admin_urls = super(EntryAdmin, self).get_urls()
  102. - urls = patterns('django.views.generic.simple',
  103. - url(r'^autocomplete_tags/$', 'direct_to_template',
  104. - {'template': 'admin/zinnia/entry/autocomplete_tags.js',
  105. - 'mimetype': 'application/javascript'},
  106. - name='zinnia_entry_autocomplete_tags'),
  107. - url(r'^wymeditor/$', 'direct_to_template',
  108. - {'template': 'admin/zinnia/entry/wymeditor.js',
  109. - 'mimetype': 'application/javascript'},
  110. - name='zinnia_entry_wymeditor'),)
  111. - return urls + entry_admin_urls
  112. -
  113. - def _media(self):
  114. - MEDIA_URL = settings.MEDIA_URL
  115. - media = super(EntryAdmin, self).media + \
  116. - Media(css={'all': ('%scss/jquery.autocomplete.css' % MEDIA_URL,)},
  117. - js=('%sjs/jquery.js' % MEDIA_URL,
  118. - '%sjs/jquery.bgiframe.js' % MEDIA_URL,
  119. - '%sjs/jquery.autocomplete.js' % MEDIA_URL,
  120. - reverse('admin:zinnia_entry_autocomplete_tags'),))
  121. -
  122. - if settings.WYSIWYG == 'wymeditor':
  123. - media += Media(js=('%sjs/wymeditor/jquery.wymeditor.pack.js' % MEDIA_URL,
  124. - reverse('admin:zinnia_entry_wymeditor')))
  125. - elif settings.WYSIWYG == 'tinymce':
  126. - from tinymce.widgets import TinyMCE
  127. - media += TinyMCE().media + Media(
  128. - js=(reverse('tinymce-js', args=('admin/zinnia/entry',)),))
  129. - return media
  130. - media = property(_media)
  131. +# def get_urls(self):
  132. +# entry_admin_urls = super(EntryAdmin, self).get_urls()
  133. +# urls = patterns('django.views.generic.simple',
  134. +# url(r'^autocomplete_tags/$', 'direct_to_template',
  135. +# {'template': 'admin/zinnia/entry/autocomplete_tags.js',
  136. +# 'mimetype': 'application/javascript'},
  137. +# name='zinnia_entry_autocomplete_tags'),
  138. +# url(r'^wymeditor/$', 'direct_to_template',
  139. +# {'template': 'admin/zinnia/entry/wymeditor.js',
  140. +# 'mimetype': 'application/javascript'},
  141. +# name='zinnia_entry_wymeditor'),)
  142. +# return urls + entry_admin_urls
  143. +
  144. +# def _media(self):
  145. +# MEDIA_URL = settings.MEDIA_URL
  146. +# media = super(EntryAdmin, self).media + \
  147. +# Media(css={'all': ('%scss/jquery.autocomplete.css' % MEDIA_URL,)},
  148. +# js=('%sjs/jquery.js' % MEDIA_URL,
  149. +# '%sjs/jquery.bgiframe.js' % MEDIA_URL,
  150. +# '%sjs/jquery.autocomplete.js' % MEDIA_URL,
  151. +# reverse('admin:zinnia_entry_autocomplete_tags'),))
  152. +
  153. +# if settings.WYSIWYG == 'wymeditor':
  154. +# media += Media(js=('%sjs/wymeditor/jquery.wymeditor.pack.js' % MEDIA_URL,
  155. +# reverse('admin:zinnia_entry_wymeditor')))
  156. +# elif settings.WYSIWYG == 'tinymce':
  157. +# from tinymce.widgets import TinyMCE
  158. +# media += TinyMCE().media + Media(
  159. +# js=(reverse('tinymce-js', args=('admin/zinnia/entry',)),))
  160. +# return media
  161. +# media = property(_media)
  162. diff --git a/zinnia/models.py b/zinnia/models.py
  163. index 120c01b..3cd7f1a 100644
  164. --- a/zinnia/models.py
  165. +++ b/zinnia/models.py
  166. @@ -16,6 +16,7 @@ try:
  167. except ImportError:
  168. MPTTModel = models.Model
  169. from tagging.fields import TagField
  170. +from cms.models.fields import PlaceholderField
  171.  
  172. from zinnia.settings import USE_BITLY
  173. from zinnia.settings import UPLOAD_TO
  174. @@ -80,7 +81,8 @@ class Entry(models.Model):
  175.  
  176. image = models.ImageField(_('image'), upload_to=UPLOAD_TO,
  177. blank=True, help_text=_('used for illustration'))
  178. - content = models.TextField(_('content'))
  179. + content = models.TextField(_('content'), blank=True)
  180. + placeholder = PlaceholderField('content')
  181. excerpt = models.TextField(_('excerpt'), blank=True,
  182. help_text=_('optional element'))
  183.  
  184. diff --git a/zinnia/settings.py b/zinnia/settings.py
  185. index 0eb8dfa..5685e72 100644
  186. --- a/zinnia/settings.py
  187. +++ b/zinnia/settings.py
  188. @@ -18,7 +18,7 @@ ADVANCED_SEARCH = getattr(settings, 'ZINNIA_ADVANCED_SEARCH', True)
  189.  
  190. WYSIWYG = getattr(settings, 'ZINNIA_WYSIWYG',
  191. 'tinymce' in settings.INSTALLED_APPS \
  192. - and 'tinymce' or 'wymeditor')
  193. + and 'tinymce' or 'wymeditor' or 'placeholder')
  194.  
  195. MAIL_COMMENT = getattr(settings, 'ZINNIA_MAIL_COMMENT', True)
  196. MAIL_COMMENT_REPLY = getattr(settings, 'ZINNIA_MAIL_COMMENT_REPLY', False)
  197. diff --git a/zinnia/templates/zinnia/_entry_detail.html b/zinnia/templates/zinnia/_entry_detail.html
  198. index b90028c..9f6fd7f 100644
  199. --- a/zinnia/templates/zinnia/_entry_detail.html
  200. +++ b/zinnia/templates/zinnia/_entry_detail.html
  201. @@ -1,4 +1,4 @@
  202. -{% load tagging_tags comments i18n %}
  203. +{% load tagging_tags comments i18n placeholder_tags %}
  204.  
  205. <div class="entry-header span-16 last">
  206. <h2 class="entry-title">
  207. @@ -41,7 +41,8 @@
  208. </div>
  209. {% endif %}
  210. <div class="entry-content">
  211. - {{ object_content }}
  212. + {% comment %}{% render_placeholder object.content "640" %}{% endcomment %}
  213. + {{ object_content }}
  214. </div>
  215. </div>
  216.  
  217. diff --git a/zinnia/templatetags/zinnia_tags.py b/zinnia/templatetags/zinnia_tags.py
  218. index 2b1752b..2558d93 100644
  219. --- a/zinnia/templatetags/zinnia_tags.py
  220. +++ b/zinnia/templatetags/zinnia_tags.py
  221. @@ -23,7 +23,7 @@ from zinnia.comparison import pearson_score
  222. register = Library()
  223.  
  224. VECTORS = VectorBuilder({'queryset': Entry.published.all(),
  225. - 'fields': ['title', 'excerpt', 'content']})
  226. + 'fields': ['title', 'excerpt']})
  227. CACHE_ENTRIES_RELATED = {}
Add Comment
Please, Sign In to add comment