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
79ed4920
Commit
79ed4920
authored
May 21, 2011
by
Felix Schäfer
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'unstable' of github.com:chiliproject/chiliproject into unstable
parents
6f809b82
1d5d73af
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
160 additions
and
38 deletions
+160
-38
journals_controller.rb
app/controllers/journals_controller.rb
+76
-15
issue.rb
app/models/issue.rb
+8
-1
_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
repositories_filesystem_controller_test.rb
test/functional/repositories_filesystem_controller_test.rb
+1
-1
search_controller_test.rb
test/functional/search_controller_test.rb
+4
-3
wiki_controller_test.rb
test/functional/wiki_controller_test.rb
+2
-2
database_test.rb
test/unit/lib/chili_project/database_test.rb
+30
-6
acts_as_journalized.rb
...or/plugins/acts_as_journalized/lib/acts_as_journalized.rb
+1
-0
No files found.
app/controllers/journals_controller.rb
View file @
79ed4920
# 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
...
...
@@ -18,10 +16,57 @@
# 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?
...
...
@@ -31,14 +76,30 @@ class JournalsController < ApplicationController
: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/models/issue.rb
View file @
79ed4920
...
...
@@ -39,7 +39,14 @@ class Issue < ActiveRecord::Base
acts_as_watchable
acts_as_journalized
:event_title
=>
Proc
.
new
{
|
o
|
"
#{
o
.
tracker
.
name
}
#
#{
o
.
journaled_id
}
(
#{
o
.
status
}
):
#{
o
.
subject
}
"
},
:event_type
=>
Proc
.
new
{
|
o
|
'issue'
+
(
o
.
closed?
?
' closed'
:
''
)}
:event_type
=>
Proc
.
new
{
|
o
|
t
=
'issue'
if
o
.
changes
.
empty?
t
<<
'-note'
unless
o
.
initial?
else
t
<<
(
IssueStatus
.
find_by_id
(
o
.
new_value_for
(
:status_id
)).
try
(
:is_closed?
)
?
'-closed'
:
'-edit'
)
end
t
}
register_on_journal_formatter
(
:id
,
'parent_id'
)
register_on_journal_formatter
(
:named_association
,
'project_id'
,
'status_id'
,
'tracker_id'
,
'assigned_to_id'
,
...
...
app/views/journals/_notes_form.rhtml
View file @
79ed4920
...
...
@@ -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 @
6f809b82
<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 @
79ed4920
...
...
@@ -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
test/functional/repositories_filesystem_controller_test.rb
View file @
79ed4920
...
...
@@ -37,7 +37,7 @@ class RepositoriesFilesystemControllerTest < ActionController::TestCase
@repository
=
Repository
::
Filesystem
.
create
(
:project
=>
Project
.
find
(
PRJ_ID
),
:url
=>
REPOSITORY_PATH
,
:path_encoding
=>
''
:path_encoding
=>
nil
)
assert
@repository
end
...
...
test/functional/search_controller_test.rb
View file @
79ed4920
...
...
@@ -52,8 +52,9 @@ class SearchControllerTest < ActionController::TestCase
assert
assigns
(
:results
).
include?
(
Issue
.
find
(
8
))
assert
assigns
(
:results
).
include?
(
Issue
.
find
(
5
))
assert_tag
:dt
,
:attributes
=>
{
:class
=>
/issue closed/
},
:child
=>
{
:tag
=>
'a'
,
:content
=>
/Closed/
}
assert_select
"dt.issue"
do
assert_select
"a"
,
:text
=>
/Closed/
end
end
def
test_search_project_and_subprojects
...
...
test/functional/wiki_controller_test.rb
View file @
79ed4920
...
...
@@ -88,7 +88,7 @@ class WikiControllerTest < ActionController::TestCase
page
=
Project
.
find
(
1
).
wiki
.
find_page
(
'New page'
)
assert
!
page
.
new_record?
assert_not_nil
page
.
content
assert_equal
'Created the page'
,
page
.
content
.
comment
s
assert_equal
'Created the page'
,
page
.
content
.
last_journal
.
note
s
end
def
test_create_page_with_attachments
...
...
@@ -128,7 +128,7 @@ class WikiControllerTest < ActionController::TestCase
page
=
Wiki
.
find
(
1
).
pages
.
find_by_title
(
'Another_page'
)
assert_equal
"edited"
,
page
.
content
.
text
assert_equal
2
,
page
.
content
.
version
assert_equal
"my comments"
,
page
.
content
.
comment
s
assert_equal
"my comments"
,
page
.
content
.
last_journal
.
note
s
end
def
test_update_page_with_failure
...
...
test/unit/lib/chili_project/database_test.rb
View file @
79ed4920
...
...
@@ -16,12 +16,10 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require
File
.
expand_path
(
'../../../../test_helper'
,
__FILE__
)
require
'sqlite3_api'
class
ChiliProject
::
DatabaseTest
<
ActiveSupport
::
TestCase
setup
do
ChiliProject
::
Database
.
stubs
(
:adapter_name
).
returns
"SQLite"
SQLite3
::
Driver
::
Native
::
API
.
stubs
(
:sqlite3_libversion
).
returns
"3.6.12"
end
should
"return the correct identifier"
do
...
...
@@ -34,13 +32,31 @@ class ChiliProject::DatabaseTest < ActiveSupport::TestCase
assert_equal
true
,
ChiliProject
::
Database
.
sqlite?
end
should
"return a version string"
do
assert_equal
"3.6.12"
,
ChiliProject
::
Database
.
version
should
"return a version string for SQLite3"
do
begin
ChiliProject
::
Database
.
stubs
(
:adapter_name
).
returns
"SQLite"
# if we run the tests on sqlite, just stub the version method
if
Object
.
const_defined?
'SQLite3'
SQLite3
::
Driver
::
Native
::
API
.
stubs
(
:sqlite3_libversion
).
returns
"1.2.3"
else
# if we don't have any sqlite3 module, stub the whole module
module
::
SQLite3
;
module
Driver
;
module
Native
;
module
API
def
self
.
sqlite3_libversion
;
"1.2.3"
;
end
end
;
end
;
end
;
end
created_stub
=
true
end
should
"return long version string for raw==true"
do
ChiliProject
::
Database
.
stubs
(
:adapter_name
).
returns
"PostgreSQL"
assert_equal
"1.2.3"
,
ChiliProject
::
Database
.
version
assert_equal
"1.2.3"
,
ChiliProject
::
Database
.
version
(
true
)
ensure
# Clean up after us
Object
.
instance_eval
{
remove_const
:SQLite3
}
if
created_stub
end
end
should
"return a version string for PostgreSQL"
do
ChiliProject
::
Database
.
stubs
(
:adapter_name
).
returns
"PostgreSQL"
raw_version
=
"PostgreSQL 8.3.11 on x86_64-pc-linux-gnu, compiled by GCC gcc-4.3.real (Debian 4.3.2-1.1) 4.3.2"
ActiveRecord
::
Base
.
connection
.
stubs
(
:select_value
).
returns
raw_version
...
...
@@ -48,4 +64,12 @@ class ChiliProject::DatabaseTest < ActiveSupport::TestCase
assert_equal
raw_version
,
ChiliProject
::
Database
.
version
(
true
)
end
should
"return a version string for MySQL"
do
ChiliProject
::
Database
.
stubs
(
:adapter_name
).
returns
"MySQL"
ActiveRecord
::
Base
.
connection
.
stubs
(
:select_value
).
returns
"5.1.2"
assert_equal
"5.1.2"
,
ChiliProject
::
Database
.
version
assert_equal
"5.1.2"
,
ChiliProject
::
Database
.
version
(
true
)
end
end
vendor/plugins/acts_as_journalized/lib/acts_as_journalized.rb
View file @
79ed4920
...
...
@@ -172,6 +172,7 @@ module Redmine
:anchor
=>
(
"note-
#{
journal
.
anchor
}
"
unless
journal
.
initial?
)
}
end
end
options
[
:type
]
||=
self
.
name
.
underscore
.
dasherize
# Make sure the name of the journalized model and not the name of the journal is used for events
{
:description
=>
:notes
,
:author
=>
:user
}.
reverse_merge
options
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