Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
O
OHR Support
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
97
Issues
97
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
OHR Support
Commits
c83c1d9a
Commit
c83c1d9a
authored
May 20, 2011
by
Eric Davis
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'ticket/unstable/406-journals-controller-aaj' into unstable
parents
c04ff93f
8994a0b5
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
114 additions
and
25 deletions
+114
-25
journals_controller.rb
app/controllers/journals_controller.rb
+76
-15
_notes_form.rhtml
app/views/journals/_notes_form.rhtml
+10
-0
diff.html.erb
app/views/journals/diff.html.erb
+0
-10
journals_controller_test.rb
test/functional/journals_controller_test.rb
+28
-0
No files found.
app/controllers/journals_controller.rb
View file @
c83c1d9a
# This file is part of the acts_as_journalized plugin for the redMine
# project management software
#
# Copyright (C) 2006-2008 Jean-Philippe Lang
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either
journal
2
# of the License, or (at your option) any later
journal
.
#
# as published by the Free Software Foundation; either
version
2
# of the License, or (at your option) any later
version
.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class
JournalsController
<
ApplicationController
unloadable
before_filter
:find_journal
before_filter
:find_journal
,
:only
=>
[
:edit
,
:diff
]
before_filter
:find_issue
,
:only
=>
[
:new
]
before_filter
:find_optional_project
,
:only
=>
[
:index
]
before_filter
:authorize
,
:only
=>
[
:new
,
:edit
,
:diff
]
accept_key_auth
:index
menu_item
:issues
include
QueriesHelper
include
SortHelper
def
index
retrieve_query
sort_init
'id'
,
'desc'
sort_update
(
@query
.
sortable_columns
)
if
@query
.
valid?
@journals
=
@query
.
issue_journals
(
:order
=>
"
#{
Journal
.
table_name
}
.created_at DESC"
,
:limit
=>
25
)
end
@title
=
(
@project
?
@project
.
name
:
Setting
.
app_title
)
+
": "
+
(
@query
.
new_record?
?
l
(:
label_changes_details
)
:
@query
.
name
)
render
:layout
=>
false
,
:content_type
=>
'application/atom+xml'
rescue
ActiveRecord
::
RecordNotFound
render_404
end
# Used when replying to an issue or journal
def
new
journal
=
Journal
.
find
(
params
[
:journal_id
])
if
params
[
:journal_id
]
if
journal
user
=
journal
.
user
text
=
journal
.
notes
else
user
=
@issue
.
author
text
=
@issue
.
description
end
# Replaces pre blocks with [...]
text
=
text
.
to_s
.
strip
.
gsub
(
%r{<pre>((.|
\s
)*?)</pre>}m
,
'[...]'
)
content
=
"
#{
ll
(
Setting
.
default_language
,
:text_user_wrote
,
user
)
}
\n
> "
content
<<
text
.
gsub
(
/(\r?\n|\r\n?)/
,
"
\n
> "
)
+
"
\n\n
"
render
(
:update
)
{
|
page
|
page
.
<
<
"$('notes').value =
\"
#{
escape_javascript
content
}
\"
;"
page
.
show
'update'
page
<<
"Form.Element.focus('notes');"
page
<<
"Element.scrollTo('update');"
page
<<
"$('notes').scrollTop = $('notes').scrollHeight - $('notes').clientHeight;"
}
end
def
edit
(
render_403
;
return
false
)
unless
@journal
.
editable_by?
(
User
.
current
)
if
request
.
post?
@journal
.
update_attribute
(
:notes
,
params
[
:notes
])
if
params
[
:notes
]
@journal
.
destroy
if
@journal
.
details
.
empty?
&&
@journal
.
notes
.
blank?
call_hook
(
:controller_journals_edit_post
,
{
:journal
=>
@journal
,
:params
=>
params
})
respond_to
do
|
format
|
format
.
html
{
redirect_to
:controller
=>
@journal
.
journaled
.
class
.
name
.
pluralize
.
downcase
,
:action
=>
'show'
,
:id
=>
@journal
.
journaled_id
}
:action
=>
'show'
,
:id
=>
@journal
.
journaled_id
}
format
.
js
{
render
:action
=>
'update'
}
end
else
respond_to
do
|
format
|
format
.
html
{
# TODO: implement non-JS journal update
render
:nothing
=>
true
}
format
.
js
end
end
end
private
private
def
find_journal
@journal
=
Journal
.
find
(
params
[
:id
])
(
render_403
;
return
false
)
unless
@journal
.
editable_by?
(
User
.
current
)
@project
=
@journal
.
project
@project
=
@journal
.
journalized
.
project
rescue
ActiveRecord
::
RecordNotFound
render_404
end
# TODO: duplicated in IssuesController
def
find_issue
@issue
=
Issue
.
find
(
params
[
:id
],
:include
=>
[
:project
,
:tracker
,
:status
,
:author
,
:priority
,
:category
])
@project
=
@issue
.
project
rescue
ActiveRecord
::
RecordNotFound
render_404
end
...
...
app/views/journals/_notes_form.rhtml
View file @
c83c1d9a
...
...
@@ -3,6 +3,16 @@
:rows
=>
(
@journal
.
notes
.
blank?
?
10
:
[[
10
,
@journal
.
notes
.
length
/
50
].
max
,
100
].
min
)
%>
<%=
call_hook
(
:view_journals_notes_form_after_notes
,
{
:journal
=>
@journal
})
%>
<p>
<%=
submit_tag
l
(
:button_save
)
%>
<%=
link_to_remote
l
(
:label_preview
),
{
:url
=>
preview_issue_path
(
:project_id
=>
@project
,
:id
=>
@journal
.
issue
),
:method
=>
'post'
,
:update
=>
"journal_
#{
@journal
.
id
}
_preview"
,
:with
=>
"Form.serialize('journal-
#{
@journal
.
id
}
-form')"
,
:complete
=>
"Element.scrollTo('journal_
#{
@journal
.
id
}
_preview')"
},
:accesskey
=>
accesskey
(
:preview
)
%>
|
<%=
link_to
l
(
:button_cancel
),
'#'
,
:onclick
=>
"Element.remove('journal-
#{
@journal
.
id
}
-form'); "
+
"Element.show('journal-
#{
@journal
.
id
}
-notes'); return false;"
%>
</p>
<div
id=
"journal_
<%=
@journal
.
id
%>
_preview"
class=
"wiki"
></div>
<%
end
%>
app/views/journals/diff.html.erb
deleted
100644 → 0
View file @
c04ff93f
<h2>
<%=
h
@issue
.
tracker
%>
#
<%=
@issue
.
id
%>
</h2>
<p>
<%=
authoring
@journal
.
created_on
,
@journal
.
user
,
:label
=>
:label_updated_time_by
%>
</p>
<div
class=
"text-diff"
>
<%=
simple_format_without_paragraph
@diff
.
to_html
%>
</div>
<p>
<%=
link_to
l
(
:button_back
),
issue_path
(
@issue
),
:onclick
=>
'history.back(); return false;'
%>
</p>
<%
html_title
"
#{
@issue
.
tracker
.
name
}
#
#{
@issue
.
id
}
:
#{
@issue
.
subject
}
"
%>
test/functional/journals_controller_test.rb
View file @
c83c1d9a
...
...
@@ -56,4 +56,32 @@ class JournalsControllerTest < ActionController::TestCase
assert_select_rjs
:remove
,
'change-2'
assert_nil
Journal
.
find_by_id
(
2
)
end
def
test_index
get
:index
,
:project_id
=>
1
assert_response
:success
assert_not_nil
assigns
(
:journals
)
assert_equal
'application/atom+xml'
,
@response
.
content_type
end
def
test_reply_to_issue
@request
.
session
[
:user_id
]
=
2
get
:new
,
:id
=>
6
assert_response
:success
assert_select_rjs
:show
,
"update"
end
def
test_reply_to_issue_without_permission
@request
.
session
[
:user_id
]
=
7
get
:new
,
:id
=>
6
assert_response
403
end
def
test_reply_to_note
@request
.
session
[
:user_id
]
=
2
get
:new
,
:id
=>
6
,
:journal_id
=>
4
assert_response
:success
assert_select_rjs
:show
,
"update"
end
end
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