Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-wiki
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
django-wiki
Commits
7c1542c0
Commit
7c1542c0
authored
Aug 19, 2012
by
benjaoming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Adding new image revisions and better looks for history page
parent
fcc466d5
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
131 additions
and
37 deletions
+131
-37
testproject/testproject/db/prepopulated.db
+0
-0
wiki/plugins/images/forms.py
+23
-2
wiki/plugins/images/templates/wiki/plugins/images/index.html
+22
-22
wiki/plugins/images/templates/wiki/plugins/images/revision_add.html
+31
-0
wiki/plugins/images/templates/wiki/plugins/images/sidebar.html
+4
-2
wiki/plugins/images/templatetags/wiki_images_tags.py
+1
-1
wiki/plugins/images/views.py
+40
-3
wiki/plugins/images/wiki_plugin.py
+2
-1
wiki/templates/wiki/history.html
+8
-6
No files found.
testproject/testproject/db/prepopulated.db
View file @
7c1542c0
No preview for this file type
wiki/plugins/images/forms.py
View file @
7c1542c0
...
@@ -21,10 +21,32 @@ class SidebarForm(forms.ModelForm, PluginSidebarFormMixin):
...
@@ -21,10 +21,32 @@ class SidebarForm(forms.ModelForm, PluginSidebarFormMixin):
image
.
article
=
self
.
article
image
.
article
=
self
.
article
kwargs
[
'commit'
]
=
False
kwargs
[
'commit'
]
=
False
revision
=
super
(
SidebarForm
,
self
)
.
save
(
*
args
,
**
kwargs
)
revision
=
super
(
SidebarForm
,
self
)
.
save
(
*
args
,
**
kwargs
)
revision
.
set_from_request
(
self
.
request
)
image
.
add_revision
(
self
.
instance
,
save
=
True
)
image
.
add_revision
(
self
.
instance
,
save
=
True
)
return
revision
return
revision
return
super
(
SidebarForm
,
self
)
.
save
(
*
args
,
**
kwargs
)
return
super
(
SidebarForm
,
self
)
.
save
(
*
args
,
**
kwargs
)
class
Meta
:
class
Meta
:
model
=
models
.
ImageRevision
model
=
models
.
ImageRevision
fields
=
(
'image'
,)
fields
=
(
'image'
,)
\ No newline at end of file
class
RevisionForm
(
forms
.
ModelForm
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
self
.
image
=
kwargs
.
pop
(
'image'
)
self
.
request
=
kwargs
.
pop
(
'request'
)
super
(
RevisionForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
save
(
self
,
*
args
,
**
kwargs
):
if
not
self
.
instance
.
id
:
kwargs
[
'commit'
]
=
False
revision
=
super
(
RevisionForm
,
self
)
.
save
(
*
args
,
**
kwargs
)
revision
.
set_from_request
(
self
.
request
)
self
.
image
.
add_revision
(
self
.
instance
,
save
=
True
)
return
revision
return
super
(
SidebarForm
,
self
)
.
save
(
*
args
,
**
kwargs
)
class
Meta
:
model
=
models
.
ImageRevision
fields
=
(
'image'
,)
wiki/plugins/images/templates/wiki/plugins/images/index.html
View file @
7c1542c0
...
@@ -16,37 +16,37 @@
...
@@ -16,37 +16,37 @@
{% for image in images %}
{% for image in images %}
{% with image.current_revision.imagerevision as revision %}
{% with image.current_revision.imagerevision as revision %}
<tr>
<tr>
<th>
{{ revision.get_filename }}
</th>
<th>
{{ revision.get_filename
|default:_("No file")
}}
</th>
<th>
{% trans "Markdown tag" %}
</th>
<th>
{% trans "Markdown tag" %}
</th>
<th>
{% trans "Uploaded by" %}
</th>
<th>
{% trans "Uploaded by" %}
</th>
<th>
{% trans "Size" %}
</th>
<th>
{% trans "Size" %}
</th>
</tr>
</tr>
<tr>
<tr>
<td
rowspan=
"3"
>
<td
rowspan=
"3"
>
{% thumbnail revision.image "250x150" crop="center" as thumb %}
<p
class=
"thumbnail"
>
<p
class=
"thumbnail"
>
<img
src=
"{{ thumb.url }}"
alt=
"{{ revision.get_filename }}"
/>
{% thumbnail revision.image "250x250" as thumb %}
<img
src=
"{{ thumb.url }}"
alt=
"{{ revision.get_filename }}"
/>
{% endthumbnail %}
</p>
{% if image|can_write:user %}
<p>
<a
href=
"{% url 'wiki:images_add_revision' path=urlpath.path article_id=article.id image_id=image.id %}"
>
<span
class=
"icon-upload"
></span>
{% trans "Upload new image" %}
</a>
<br
/>
{% if revision.deleted %}
<a
href=
"{% url 'wiki:images_restore' path=urlpath.path article_id=article.id image_id=image.id %}"
>
<span
class=
"icon-repeat"
></span>
{% trans "Restore image" %}
</a>
{% else %}
<a
href=
"{% url 'wiki:images_delete' path=urlpath.path article_id=article.id image_id=image.id %}"
>
<span
class=
"icon-remove"
></span>
{% trans "Remove image" %}
</a>
{% endif %}
</p>
</p>
{% endthumbnail %}
{% if image|can_write:user %}
<p>
<a
href=
"#"
>
<span
class=
"icon-upload"
></span>
{% trans "Upload new file" %}
</a>
<br
/>
{% if revision.deleted %}
<a
href=
"{% url 'wiki:images_restore' path=urlpath.path article_id=article.id image_id=image.id %}"
>
<span
class=
"icon-repeat"
></span>
{% trans "Restore image" %}
</a>
{% else %}
<a
href=
"{% url 'wiki:images_delete' path=urlpath.path article_id=article.id image_id=image.id %}"
>
<span
class=
"icon-remove"
></span>
{% trans "Remove image" %}
</a>
{% endif %}
{% endif %}
</p>
{% endif %}
</td>
</td>
<td><code>
[image:{{ image.id }}]
</code></td>
<td><code>
[image:{{ image.id }}]
</code></td>
<td>
<td>
...
...
wiki/plugins/images/templates/wiki/plugins/images/revision_add.html
0 → 100644
View file @
7c1542c0
{% extends "wiki/article.html" %}
{% load wiki_tags i18n humanize thumbnail %}
{% load url from future %}
{% block pagetitle %}{% trans "Replace image" %}: {{ image }}{% endblock %}
{% block wiki_contents_tab %}
{% thumbnail image.current_revision.imagerevision.image "250x250" as thumb %}
<p
class=
"thumbnail pull-right"
>
<img
src=
"{{ thumb.url }}"
alt=
"{{ revision.get_filename }}"
/>
</p>
{% endthumbnail %}
<p
class=
"lead"
>
{% trans "Choose an image file to replace current image." %}
</p>
<form
method=
"POST"
class=
"form-horizontal"
enctype=
"multipart/form-data"
>
{% wiki_form form %}
<div
class=
"form-actions"
>
<a
href=
"{% url 'wiki:images_index' path=urlpath.path article_id=article.id %}"
class=
"btn"
>
<span
class=
"icon-arrow-left"
></span>
{% trans "Go back" %}
</a>
<button
class=
"btn btn-primary"
>
<span
class=
"icon-upload"
></span>
{% trans "Upload replacement" %}
</button>
</div>
</form>
{% endblock %}
wiki/plugins/images/templates/wiki/plugins/images/sidebar.html
View file @
7c1542c0
...
@@ -14,8 +14,10 @@
...
@@ -14,8 +14,10 @@
<td
style=
"white-space: nowrap;"
>
<td
style=
"white-space: nowrap;"
>
<p>
{{ revision.get_filename|truncatechars:30 }}
</p>
<p>
{{ revision.get_filename|truncatechars:30 }}
</p>
<p>
<p>
<a
href=
""
><span
class=
"icon-edit"
></span>
{% trans "Insert" %}
</a>
<br
/>
<a
href=
""
><span
class=
"icon-edit"
></span>
{% trans "Insert" %}
</a><br
/>
<a
href=
""
><span
class=
"icon-edit"
></span>
{% trans "Replace" %}
</a>
{% if image|can_write:user %}
<a
href=
"{% url 'wiki:images_add_revision' path=urlpath.path article_id=article.id image_id=image.id %}"
><span
class=
"icon-edit"
></span>
{% trans "Replace" %}
</a>
{% endif %}
</p>
</p>
</td>
</td>
<td>
<td>
...
...
wiki/plugins/images/templatetags/wiki_images_tags.py
View file @
7c1542c0
...
@@ -7,7 +7,7 @@ register = template.Library()
...
@@ -7,7 +7,7 @@ register = template.Library()
@register.filter
@register.filter
def
images_for_article
(
article
):
def
images_for_article
(
article
):
return
models
.
Image
.
objects
.
filter
(
article
=
article
)
.
order_by
(
'-current_revision__created'
)
return
models
.
Image
.
objects
.
filter
(
article
=
article
,
current_revision__deleted
=
False
)
.
order_by
(
'-current_revision__created'
)
@register.filter
@register.filter
def
images_can_add
(
article
,
user
):
def
images_can_add
(
article
,
user
):
...
...
wiki/plugins/images/views.py
View file @
7c1542c0
from
django.contrib
import
messages
from
django.contrib
import
messages
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
from
django.shortcuts
import
get_object_or_404
from
django.shortcuts
import
get_object_or_404
,
redirect
from
django.utils.decorators
import
method_decorator
from
django.utils.decorators
import
method_decorator
from
django.utils.translation
import
ugettext
as
_
from
django.utils.translation
import
ugettext
as
_
from
django.views.generic.base
import
RedirectView
from
django.views.generic.base
import
RedirectView
from
django.views.generic.list
import
ListView
from
django.views.generic.list
import
ListView
from
wiki.conf
import
settings
as
wiki_settings
from
wiki.decorators
import
get_article
from
wiki.decorators
import
get_article
from
wiki.plugins.images
import
forms
from
wiki.plugins.images
import
models
from
wiki.plugins.images
import
models
from
wiki.views.mixins
import
ArticleMixin
from
wiki.views.mixins
import
ArticleMixin
from
django.views.generic.edit
import
FormView
class
ImageView
(
ArticleMixin
,
ListView
):
class
ImageView
(
ArticleMixin
,
ListView
):
...
@@ -56,9 +59,9 @@ class DeleteView(ArticleMixin, RedirectView):
...
@@ -56,9 +59,9 @@ class DeleteView(ArticleMixin, RedirectView):
self
.
image
.
current_revision
=
new_revision
self
.
image
.
current_revision
=
new_revision
self
.
image
.
save
()
self
.
image
.
save
()
if
self
.
restore
:
if
self
.
restore
:
messages
.
info
(
self
.
request
,
_
(
'
%
s has been marked as deleted'
)
%
new_revision
.
get_filename
())
else
:
messages
.
info
(
self
.
request
,
_
(
'
%
s has been restored'
)
%
new_revision
.
get_filename
())
messages
.
info
(
self
.
request
,
_
(
'
%
s has been restored'
)
%
new_revision
.
get_filename
())
else
:
messages
.
info
(
self
.
request
,
_
(
'
%
s has been marked as deleted'
)
%
new_revision
.
get_filename
())
if
self
.
urlpath
:
if
self
.
urlpath
:
return
reverse
(
'wiki:images_index'
,
kwargs
=
{
'path'
:
self
.
urlpath
.
path
})
return
reverse
(
'wiki:images_index'
,
kwargs
=
{
'path'
:
self
.
urlpath
.
path
})
return
reverse
(
'wiki:images_index'
,
kwargs
=
{
'article_id'
:
self
.
article
.
id
})
return
reverse
(
'wiki:images_index'
,
kwargs
=
{
'article_id'
:
self
.
article
.
id
})
...
@@ -85,3 +88,37 @@ class RevisionChangeView(ArticleMixin, RedirectView):
...
@@ -85,3 +88,37 @@ class RevisionChangeView(ArticleMixin, RedirectView):
if
self
.
urlpath
:
if
self
.
urlpath
:
return
reverse
(
'wiki:images_index'
,
kwargs
=
{
'path'
:
self
.
urlpath
.
path
})
return
reverse
(
'wiki:images_index'
,
kwargs
=
{
'path'
:
self
.
urlpath
.
path
})
return
reverse
(
'wiki:images_index'
,
kwargs
=
{
'article_id'
:
self
.
article
.
id
})
return
reverse
(
'wiki:images_index'
,
kwargs
=
{
'article_id'
:
self
.
article
.
id
})
class
RevisionAddView
(
ArticleMixin
,
FormView
):
template_name
=
"wiki/plugins/images/revision_add.html"
form_class
=
forms
.
RevisionForm
@method_decorator
(
get_article
(
can_write
=
True
))
def
dispatch
(
self
,
request
,
article
,
*
args
,
**
kwargs
):
self
.
image
=
get_object_or_404
(
models
.
Image
,
article
=
article
,
id
=
kwargs
.
get
(
'image_id'
,
None
))
if
not
self
.
image
.
can_write
(
user
=
request
.
user
):
return
redirect
(
wiki_settings
.
LOGIN_URL
)
return
ArticleMixin
.
dispatch
(
self
,
request
,
article
,
*
args
,
**
kwargs
)
def
get_form_kwargs
(
self
,
**
kwargs
):
kwargs
=
super
(
RevisionAddView
,
self
)
.
get_form_kwargs
(
**
kwargs
)
kwargs
[
'image'
]
=
self
.
image
kwargs
[
'request'
]
=
self
.
request
return
kwargs
def
get_context_data
(
self
,
**
kwargs
):
kwargs
=
super
(
RevisionAddView
,
self
)
.
get_context_data
(
**
kwargs
)
kwargs
[
'image'
]
=
self
.
image
return
kwargs
def
form_valid
(
self
,
form
,
**
kwargs
):
form
.
save
()
messages
.
info
(
self
.
request
,
_
(
'
%(file)
s has been saved.'
)
%
{
'file'
:
self
.
image
.
current_revision
.
imagerevision
.
get_filename
(),
})
if
self
.
urlpath
:
return
redirect
(
'wiki:edit'
,
path
=
self
.
urlpath
.
path
)
return
redirect
(
'wiki:edit'
,
article_id
=
self
.
article
.
id
)
wiki/plugins/images/wiki_plugin.py
View file @
7c1542c0
...
@@ -35,7 +35,8 @@ class ImagePlugin(BasePlugin):
...
@@ -35,7 +35,8 @@ class ImagePlugin(BasePlugin):
url
(
'^$'
,
views
.
ImageView
.
as_view
(),
name
=
'images_index'
),
url
(
'^$'
,
views
.
ImageView
.
as_view
(),
name
=
'images_index'
),
url
(
'^delete/(?P<image_id>
\
d+)/$'
,
views
.
DeleteView
.
as_view
(),
name
=
'images_delete'
),
url
(
'^delete/(?P<image_id>
\
d+)/$'
,
views
.
DeleteView
.
as_view
(),
name
=
'images_delete'
),
url
(
'^restore/(?P<image_id>
\
d+)/$'
,
views
.
DeleteView
.
as_view
(),
name
=
'images_restore'
,
kwargs
=
{
'restore'
:
True
}),
url
(
'^restore/(?P<image_id>
\
d+)/$'
,
views
.
DeleteView
.
as_view
(),
name
=
'images_restore'
,
kwargs
=
{
'restore'
:
True
}),
url
(
'^restore/(?P<image_id>
\
d+)/set-revision/(?P<rev_id>
\
d+)/$'
,
views
.
RevisionChangeView
.
as_view
(),
name
=
'images_restore'
),
url
(
'^(?P<image_id>
\
d+)/revision/change/(?P<rev_id>
\
d+)/$'
,
views
.
RevisionChangeView
.
as_view
(),
name
=
'images_restore'
),
url
(
'^(?P<image_id>
\
d+)/revision/add/$'
,
views
.
RevisionAddView
.
as_view
(),
name
=
'images_add_revision'
),
)
)
#markdown_extensions = [AttachmentExtension()]
#markdown_extensions = [AttachmentExtension()]
...
...
wiki/templates/wiki/history.html
View file @
7c1542c0
...
@@ -52,6 +52,9 @@
...
@@ -52,6 +52,9 @@
</style>
</style>
{% endaddtoblock %}
{% endaddtoblock %}
<p
class=
"lead"
>
{% trans "Click each revision to see a list of edited lines. Click the Preview button to see how the article looked at this stage. At the bottom of this page, you can change to a particular revision or merge an old revision with the current one." %}
</p>
<form
method=
"GET"
>
<form
method=
"GET"
>
<div
class=
"tab-content"
style=
"overflow: visible;"
>
<div
class=
"tab-content"
style=
"overflow: visible;"
>
...
@@ -60,11 +63,14 @@
...
@@ -60,11 +63,14 @@
<div
class=
"accordion-group"
>
<div
class=
"accordion-group"
>
<div
class=
"accordion-heading"
>
<div
class=
"accordion-heading"
>
<a
class=
"accordion-toggle"
style=
"float: left;"
href=
"#collapse{{ revision.revision_number }}"
onclick=
"get_diff_json('{% url 'wiki:diff' revision.id %}', $('#collapse{{ revision.revision_number }}'))"
>
<a
class=
"accordion-toggle"
style=
"float: left;"
href=
"#collapse{{ revision.revision_number }}"
onclick=
"get_diff_json('{% url 'wiki:diff' revision.id %}', $('#collapse{{ revision.revision_number }}'))"
>
<span
class=
"icon-plus"
></span>
{% include "wiki/includes/revision_info.html" with current_revision=article.current_revision %}
{% include "wiki/includes/revision_info.html" with current_revision=article.current_revision %}
<div
style=
"color: #CCC;"
>
<div
style=
"color: #CCC;"
>
<small>
<small>
{% if revision.user_message %}
{% if revision.user_message %}
{{ revision.user_message }}
{{ revision.user_message }}
{% elif revision.automatic_log %}
{{ revision.automatic_log }}
{% else %}
{% else %}
({% trans "no log message" %})
({% trans "no log message" %})
{% endif %}
{% endif %}
...
@@ -78,18 +84,14 @@
...
@@ -78,18 +84,14 @@
{% if revision == article.current_revision %}
{% if revision == article.current_revision %}
<a
href=
"#"
class=
"btn disabled"
>
<a
href=
"#"
class=
"btn disabled"
>
<span
class=
"icon-lock"
></span>
<span
class=
"icon-lock"
></span>
{% trans "Preview this
ver
sion" %}
{% trans "Preview this
revi
sion" %}
</a>
</a>
{% else %}
{% else %}
<button
type=
"submit"
class=
"btn"
onclick=
"$('#previewModal').modal('show'); this.form.target='previewWindow'; this.form.r.value='{{ revision.id }}'; this.form.action='{% url 'wiki:preview_revision' article.id %}'; $('#previewModal .switch-to-revision').attr('href', '{% url 'wiki:change_revision' path=urlpath.path article_id=article.id revision_id=revision.id %}')"
>
<button
type=
"submit"
class=
"btn"
onclick=
"$('#previewModal').modal('show'); this.form.target='previewWindow'; this.form.r.value='{{ revision.id }}'; this.form.action='{% url 'wiki:preview_revision' article.id %}'; $('#previewModal .switch-to-revision').attr('href', '{% url 'wiki:change_revision' path=urlpath.path article_id=article.id revision_id=revision.id %}')"
>
<span
class=
"icon-eye-open"
></span>
<span
class=
"icon-eye-open"
></span>
{% trans "Preview this
ver
sion" %}
{% trans "Preview this
revi
sion" %}
</button>
</button>
{% endif %}
{% endif %}
<a
class=
"btn btn-info"
href=
"#collapse{{ revision.revision_number }}"
onclick=
"get_diff_json('{% url 'wiki:diff' revision_id=revision.id %}', $('#collapse{{ revision.revision_number }}'))"
>
<span
class=
"icon-list-alt"
></span>
{% trans "Show changes" %}
</a>
{% if article|can_write:user %}
{% if article|can_write:user %}
<input
type=
"radio"
{%
if
revision =
=
article
.
current_revision
%}
disabled=
"true"
{%
endif
%}
style=
"margin: 0 10px;"
value=
"{{ revision.id }}"
name=
"revision_id"
switch-button-href=
"{% url 'wiki:change_revision' path=urlpath.path revision_id=revision.id %}"
merge-button-href=
"{% url 'wiki:merge_revision_preview' article_id=article.id revision_id=revision.id %}"
merge-button-commit-href=
"{% url 'wiki:merge_revision' path=urlpath.path article_id=article.id revision_id=revision.id %}"
/>
<input
type=
"radio"
{%
if
revision =
=
article
.
current_revision
%}
disabled=
"true"
{%
endif
%}
style=
"margin: 0 10px;"
value=
"{{ revision.id }}"
name=
"revision_id"
switch-button-href=
"{% url 'wiki:change_revision' path=urlpath.path revision_id=revision.id %}"
merge-button-href=
"{% url 'wiki:merge_revision_preview' article_id=article.id revision_id=revision.id %}"
merge-button-commit-href=
"{% url 'wiki:merge_revision' path=urlpath.path article_id=article.id revision_id=revision.id %}"
/>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment