your_platform 0.0.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -0
- data/Rakefile +39 -5
- data/app/controllers/application_controller.rb +9 -1
- data/app/controllers/search_controller.rb +4 -4
- data/app/helpers/sublime_helper.rb +1 -1
- data/app/models/active_record_json_url_extension.rb +14 -17
- data/app/models/attachment.rb +1 -1
- data/app/models/bookmark.rb +1 -1
- data/app/models/cache_store_extension.rb +7 -7
- data/app/models/concerns/user_avatar.rb +1 -1
- data/app/models/concerns/user_corporations.rb +1 -1
- data/app/models/dag_link.rb +1 -1
- data/app/models/event.rb +1 -1
- data/app/models/flag.rb +1 -1
- data/app/models/geo_location.rb +1 -1
- data/app/models/group.rb +14 -12
- data/app/models/group_mixins/memberships.rb +1 -1
- data/app/models/last_seen_activity.rb +1 -1
- data/app/models/nav_node.rb +1 -1
- data/app/models/page.rb +1 -1
- data/app/models/post.rb +1 -1
- data/app/models/profile_field.rb +3 -8
- data/app/models/profile_field_mixins/has_child_profile_fields.rb +1 -1
- data/app/models/profile_field_types/address.rb +1 -1
- data/app/models/relationship.rb +1 -1
- data/app/models/setting.rb +1 -1
- data/app/models/status_group_membership.rb +1 -1
- data/app/models/status_group_membership_info.rb +0 -2
- data/app/models/user.rb +9 -7
- data/app/models/user_account.rb +1 -1
- data/app/models/user_group_membership.rb +1 -1
- data/app/models/workflow.rb +1 -1
- data/config/environment.rb +3 -3
- data/config/initializers/assets.rb +7 -0
- data/config/initializers/best_in_place_display_definitions.rb +6 -6
- data/config/initializers/protected_attributes.rb +7 -0
- data/config/routes.rb +2 -2
- data/db/migrate/20130309193623_add_devise_to_user_accounts.rb +7 -1
- data/lib/best_in_place/controller_extensions.rb +15 -15
- data/lib/best_in_place/helper.rb +11 -104
- data/lib/your_platform/engine.rb +1 -2
- data/lib/your_platform/version.rb +1 -1
- data/spec/models/active_record_json_url_extension_spec.rb +4 -4
- data/spec/models/bookmark_spec.rb +2 -2
- data/spec/models/corporation_spec.rb +3 -2
- data/spec/models/event_spec.rb +3 -3
- data/spec/models/group_mixins/corporations_spec.rb +1 -1
- data/spec/models/profileable_spec.rb +1 -1
- data/spec/models/structureable_mixins/has_special_groups_spec.rb +1 -1
- data/spec/models/user_group_membership_mixins/validity_range_for_indirect_memberships_spec.rb +6 -1
- data/spec/models/user_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +14 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bdb2a476e0a91647e85d31eb03cd09af8a3734c5
|
4
|
+
data.tar.gz: 133ef1bc00d68b4f1220107aa59f606cb1d7e410
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 157f81d8d96f7ab2b1a69743dd03b9874367f9a4ba09adc265353661574cacdc0aa9a234b35553e0d0f0415e332374f9d1e1bafc8f53bb9d7e34f1808f03e721
|
7
|
+
data.tar.gz: 347e57de5ce3d7a4c598095fe4a181df8244537563b40374fd6b67dce612691888426ca473f92d11fef0bb4296db50c2b51a30b476194af8a608cea5ecfb85e0
|
data/README.md
CHANGED
@@ -35,6 +35,16 @@ If you have any troubles, **feel free to contact us on our [gitter channel](http
|
|
35
35
|
|
36
36
|
Our [code documentation can be found on rubydoc.info](http://www.rubydoc.info/github/fiedl/your_platform).
|
37
37
|
|
38
|
+
## Versioning
|
39
|
+
|
40
|
+
* Have a quick look at [rubygem's short explanation of semantic versioning](http://guides.rubygems.org/patterns/#semantic-versioning).
|
41
|
+
* The version can be bumped using one of these:
|
42
|
+
|
43
|
+
```
|
44
|
+
rake version:bump:major
|
45
|
+
rake version:bump:minor
|
46
|
+
rake version:bump:patch
|
47
|
+
```
|
38
48
|
|
39
49
|
## Contributing
|
40
50
|
|
@@ -44,6 +54,7 @@ Our [code documentation can be found on rubydoc.info](http://www.rubydoc.info/gi
|
|
44
54
|
4. Push to the branch (`git push origin my-new-feature`)
|
45
55
|
5. Create new Pull Request
|
46
56
|
|
57
|
+
|
47
58
|
## Authors and License
|
48
59
|
|
49
60
|
**Copyright** (c) 2012-2015, Sebastian Fiedlschuster
|
data/Rakefile
CHANGED
@@ -1,15 +1,49 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
2
|
|
3
|
+
# Load demo application environment.
|
4
|
+
#
|
3
5
|
require File.expand_path('../demo_app/my_platform/config/application', __FILE__)
|
4
|
-
require 'rspec/core/rake_task'
|
5
|
-
require 'rspec-rerun'
|
6
6
|
|
7
|
-
MyPlatform::Application.load_tasks
|
8
7
|
|
9
|
-
|
8
|
+
# Do not load the application tasks for the moment, which would
|
9
|
+
# invoke test:prepare, which has been dropped.
|
10
|
+
#
|
11
|
+
# # MyPlatform::Application.load_tasks
|
12
|
+
|
13
|
+
|
14
|
+
# Use rspec-rerun as default task.
|
15
|
+
#
|
16
|
+
# - rake
|
17
|
+
# - rake rspec-rerun:spec
|
18
|
+
#
|
19
|
+
require 'rspec/core/rake_task'
|
20
|
+
require 'rspec-rerun'
|
10
21
|
|
11
22
|
ENV['RSPEC_RERUN_RETRY_COUNT'] ||= '3'
|
12
|
-
ENV['RSPEC_RERUN_PATTERN'] ||=
|
23
|
+
ENV['RSPEC_RERUN_PATTERN'] ||= "{./spec/**/*_spec.rb}"
|
13
24
|
|
14
25
|
task default: 'rspec-rerun:spec'
|
15
26
|
|
27
|
+
|
28
|
+
# Version bumping mechanism.
|
29
|
+
# See: https://gist.github.com/grosser/1261469
|
30
|
+
#
|
31
|
+
# - rake version:bump:major
|
32
|
+
# - rake version:bump:minor
|
33
|
+
# - rake version:bump:patch
|
34
|
+
#
|
35
|
+
rule /^version:bump:.*/ do |t|
|
36
|
+
sh "git status | grep 'nothing to commit'" # ensure we are not dirty
|
37
|
+
index = ['major', 'minor','patch'].index(t.name.split(':').last)
|
38
|
+
file = 'lib/your_platform/version.rb'
|
39
|
+
|
40
|
+
version_file = File.read(file)
|
41
|
+
old_version, *version_parts = version_file.match(/(\d+)\.(\d+)\.(\d+)/).to_a
|
42
|
+
version_parts[index] = version_parts[index].to_i + 1
|
43
|
+
version_parts[2] = 0 if index < 2
|
44
|
+
version_parts[1] = 0 if index < 1
|
45
|
+
new_version = version_parts * '.'
|
46
|
+
File.open(file,'w'){|f| f.write(version_file.sub(old_version, new_version)) }
|
47
|
+
|
48
|
+
sh "bundle && git add #{file} Gemfile.lock && git commit -m 'bump version to #{new_version}.'"
|
49
|
+
end
|
@@ -3,6 +3,7 @@ class ApplicationController < ActionController::Base
|
|
3
3
|
|
4
4
|
layout "bootstrap"
|
5
5
|
|
6
|
+
|
6
7
|
# TODO: Change before_filter to before_action (http://stackoverflow.com/questions/16519828)
|
7
8
|
#
|
8
9
|
before_filter :redirect_www_subdomain, :set_locale
|
@@ -17,6 +18,7 @@ class ApplicationController < ActionController::Base
|
|
17
18
|
|
18
19
|
# https://github.com/ryanb/cancan
|
19
20
|
#
|
21
|
+
before_action :configure_permitted_devise_parameters, if: :devise_controller?
|
20
22
|
check_authorization(:unless => :devise_controller?)
|
21
23
|
rescue_from CanCan::AccessDenied do |exception|
|
22
24
|
session['return_to_after_login'] = request.fullpath
|
@@ -156,7 +158,7 @@ class ApplicationController < ActionController::Base
|
|
156
158
|
# If the current_user can? :read the :mini_profiler, is defined in the Ability class.
|
157
159
|
#
|
158
160
|
def authorize_miniprofiler
|
159
|
-
Rack::MiniProfiler.authorize_request if can? :use, Rack::MiniProfiler
|
161
|
+
#Rack::MiniProfiler.authorize_request if can? :use, Rack::MiniProfiler
|
160
162
|
end
|
161
163
|
|
162
164
|
|
@@ -232,5 +234,11 @@ class ApplicationController < ActionController::Base
|
|
232
234
|
def after_sign_in_path_for(resource)
|
233
235
|
session['return_to_after_login'] || root_path
|
234
236
|
end
|
237
|
+
|
238
|
+
protected
|
239
|
+
|
240
|
+
def configure_permitted_devise_parameters
|
241
|
+
devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :password) }
|
242
|
+
end
|
235
243
|
|
236
244
|
end
|
@@ -42,10 +42,10 @@ class SearchController < ApplicationController
|
|
42
42
|
|
43
43
|
# eleminiate duplicate results
|
44
44
|
#
|
45
|
-
@users.uniq
|
46
|
-
@pages.uniq
|
47
|
-
@groups.uniq
|
48
|
-
@events.uniq
|
45
|
+
@users = @users.uniq
|
46
|
+
@pages = @pages.uniq
|
47
|
+
@groups = @groups.uniq
|
48
|
+
@events = @events.uniq
|
49
49
|
|
50
50
|
# AUTHORIZATION
|
51
51
|
#
|
@@ -1,16 +1,16 @@
|
|
1
1
|
module ActiveRecordJsonUrlExtension
|
2
2
|
extend ActiveSupport::Concern
|
3
3
|
|
4
|
-
def serializable_hash(
|
5
|
-
options[
|
6
|
-
options[
|
7
|
-
options[
|
8
|
-
raise 'options[
|
4
|
+
def serializable_hash(options = {})
|
5
|
+
options[:methods] = [:url] if not options[:methods]
|
6
|
+
options[:methods] = [options[:methods]] if options[:methods].kind_of? Symbol
|
7
|
+
options[:methods] << :url if options[:methods]
|
8
|
+
raise 'options[:methods] should be an array' unless options[:methods].kind_of? Array
|
9
9
|
super options
|
10
10
|
end
|
11
11
|
|
12
12
|
def url
|
13
|
-
UrlHelper.new(
|
13
|
+
UrlHelper.new(self).url
|
14
14
|
end
|
15
15
|
|
16
16
|
# The following class generates a scope that prevents the url helpers
|
@@ -22,30 +22,27 @@ module ActiveRecordJsonUrlExtension
|
|
22
22
|
#
|
23
23
|
# my_instance = MyModel.create()
|
24
24
|
#
|
25
|
-
# You may call
|
26
|
-
#
|
25
|
+
# You may call `my_instance.url()` to get the same result as for
|
26
|
+
# `url_for(my_instance)`.
|
27
27
|
# But you should not be able to call, for example,
|
28
|
-
#
|
28
|
+
# `my_instance.my_model_path( ... )`.
|
29
29
|
#
|
30
30
|
class UrlHelper
|
31
|
-
|
32
31
|
include Rails.application.routes.url_helpers
|
33
32
|
include ActionDispatch::Routing::UrlFor
|
34
33
|
|
35
|
-
def initialize(
|
34
|
+
def initialize(obj)
|
36
35
|
@obj = obj
|
37
36
|
end
|
38
37
|
|
39
38
|
def url_options
|
40
|
-
Rails.application.config.action_mailer.default_url_options
|
39
|
+
Rails.application.config.action_mailer.default_url_options || raise("Please set 'config.action_mailer.default_url_options = {host: ...}' in the application config.")
|
41
40
|
end
|
42
|
-
|
41
|
+
|
43
42
|
def url
|
44
|
-
url_for
|
43
|
+
url_for(@obj)
|
45
44
|
end
|
46
|
-
|
47
45
|
end
|
48
|
-
|
49
46
|
end
|
50
47
|
|
51
|
-
ActiveRecord::Base.send(
|
48
|
+
ActiveRecord::Base.send(:include, ActiveRecordJsonUrlExtension)
|
data/app/models/attachment.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class Attachment < ActiveRecord::Base
|
2
|
-
attr_accessible :description, :file, :parent_id, :parent_type, :title, :author
|
2
|
+
attr_accessible :description, :file, :parent_id, :parent_type, :title, :author if defined? attr_accessible
|
3
3
|
|
4
4
|
belongs_to :parent, polymorphic: true
|
5
5
|
belongs_to :author, :class_name => "User", foreign_key: 'author_user_id'
|
data/app/models/bookmark.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# Such bookmarkable objects may be other users, or pages, groups, et cetera.
|
7
7
|
#
|
8
8
|
class Bookmark < ActiveRecord::Base
|
9
|
-
attr_accessible :bookmarkable_id, :bookmarkable_type, :user_id, :user, :bookmarkable
|
9
|
+
attr_accessible :bookmarkable_id, :bookmarkable_type, :user_id, :user, :bookmarkable if defined? attr_accessible
|
10
10
|
|
11
11
|
belongs_to :bookmarkable, polymorphic: true
|
12
12
|
belongs_to :user
|
@@ -10,13 +10,13 @@ module CacheStoreExtension
|
|
10
10
|
return result
|
11
11
|
end
|
12
12
|
|
13
|
-
def fetch(key, options = {}, &block)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
13
|
+
#def fetch(key, options = {}, &block)
|
14
|
+
# rescue_from_undefined_class_or_module do
|
15
|
+
# rescue_from_other_errors(block) do
|
16
|
+
# super(key, {force: @ignore_cache}.merge(options), &block)
|
17
|
+
# end
|
18
|
+
# end
|
19
|
+
#end
|
20
20
|
|
21
21
|
def delete_regex(regex)
|
22
22
|
if @data
|
data/app/models/dag_link.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
class DagLink < ActiveRecord::Base
|
3
3
|
|
4
|
-
attr_accessible :ancestor_id, :ancestor_type, :count, :descendant_id, :descendant_type, :direct
|
4
|
+
attr_accessible :ancestor_id, :ancestor_type, :count, :descendant_id, :descendant_type, :direct if defined? attr_accessible
|
5
5
|
acts_as_dag_links polymorphic: true
|
6
6
|
|
7
7
|
# We have to workaround a bug in Rails 3 here. But, since Rails 3 is no longer fully supported,
|
data/app/models/event.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class Event < ActiveRecord::Base
|
2
|
-
attr_accessible :description, :location, :end_at, :name, :start_at, :localized_start_at, :localized_end_at, :publish_on_local_website, :publish_on_global_website
|
2
|
+
attr_accessible :description, :location, :end_at, :name, :start_at, :localized_start_at, :localized_end_at, :publish_on_local_website, :publish_on_global_website if defined? attr_accessible
|
3
3
|
|
4
4
|
is_structureable ancestor_class_names: %w(Group), descendant_class_names: %w(Group Page)
|
5
5
|
is_navable
|
data/app/models/flag.rb
CHANGED
data/app/models/geo_location.rb
CHANGED
data/app/models/group.rb
CHANGED
@@ -6,17 +6,19 @@
|
|
6
6
|
#
|
7
7
|
class Group < ActiveRecord::Base
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
9
|
+
if defined? attr_accessible
|
10
|
+
attr_accessible( :name, # just the name of the group; example: 'Corporation A'
|
11
|
+
:body, # a description text displayed on the groups pages top
|
12
|
+
:token, # (optional) a short-name, abbreviation of the group's name, in
|
13
|
+
# a global context; example: 'A'
|
14
|
+
:internal_token, # (optional) an internal abbreviation, i.e. used by the
|
15
|
+
# members of the group; example: 'AC'
|
16
|
+
:extensive_name, # (optional) a long version of the group's name;
|
17
|
+
# example: 'The Corporation of A'
|
18
|
+
:direct_members_titles_string # Used for inline-editing: The comma-separated
|
19
|
+
# titles of the child users of the group.
|
20
|
+
)
|
21
|
+
end
|
20
22
|
|
21
23
|
include ActiveModel::ForbiddenAttributesProtection # TODO: Move into initializer
|
22
24
|
|
@@ -70,7 +72,7 @@ class Group < ActiveRecord::Base
|
|
70
72
|
name + (parent_events.first ? ": " + parent_events.first.name : '')
|
71
73
|
elsif has_flag? :contact_people
|
72
74
|
name + (parent_events.first ? ": " + parent_events.first.name : '')
|
73
|
-
elsif has_flag?
|
75
|
+
elsif has_flag?(:admins_parent) && parent_groups.first.parent_groups.first
|
74
76
|
name + ": " + parent_groups.first.parent_groups.first.name
|
75
77
|
elsif super.present?
|
76
78
|
super
|
@@ -95,7 +95,7 @@ module GroupMixins::Memberships
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def memberships_including_members
|
98
|
-
memberships.includes(:descendant).order(
|
98
|
+
memberships.includes(:descendant).order(valid_from: :desc)
|
99
99
|
end
|
100
100
|
|
101
101
|
# This returns the memberships that appear in the member list
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class LastSeenActivity < ActiveRecord::Base
|
2
|
-
attr_accessible :description, :link_to_object_id, :link_to_object_type, :user_id
|
2
|
+
attr_accessible :description, :link_to_object_id, :link_to_object_type, :user_id if defined? attr_accessible
|
3
3
|
|
4
4
|
belongs_to :user
|
5
5
|
belongs_to :link_to_object, polymorphic: true
|
data/app/models/nav_node.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
# relevant to the position of the Navable object within the navigational structure.
|
5
5
|
#
|
6
6
|
class NavNode < ActiveRecord::Base
|
7
|
-
attr_accessible :breadcrumb_item, :hidden_menu, :menu_item, :slim_breadcrumb, :slim_menu, :slim_url, :url_component
|
7
|
+
attr_accessible :breadcrumb_item, :hidden_menu, :menu_item, :slim_breadcrumb, :slim_menu, :slim_url, :url_component if defined? attr_accessible
|
8
8
|
|
9
9
|
belongs_to :navable, polymorphic: true
|
10
10
|
|
data/app/models/page.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
class Page < ActiveRecord::Base
|
2
2
|
|
3
|
-
attr_accessible :content, :title, :redirect_to, :author
|
3
|
+
attr_accessible :content, :title, :redirect_to, :author if defined? attr_accessible
|
4
4
|
|
5
5
|
is_structureable ancestor_class_names: %w(Page User Group Event), descendant_class_names: %w(Page User Group)
|
6
6
|
is_navable
|
data/app/models/post.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class Post < ActiveRecord::Base
|
2
|
-
attr_accessible :author_user_id, :external_author, :group_id, :sent_at, :sticky, :subject, :text
|
2
|
+
attr_accessible :author_user_id, :external_author, :group_id, :sent_at, :sticky, :subject, :text if defined? attr_accessible
|
3
3
|
belongs_to :group
|
4
4
|
belongs_to :author, :class_name => "User", foreign_key: 'author_user_id'
|
5
5
|
|
data/app/models/profile_field.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
class ProfileField < ActiveRecord::Base
|
3
3
|
|
4
|
-
attr_accessible :label, :type, :value, :key, :profileable_id, :profileable_type
|
4
|
+
attr_accessible :label, :type, :value, :key, :profileable_id, :profileable_type if defined? attr_accessible
|
5
5
|
|
6
6
|
belongs_to :profileable, polymorphic: true
|
7
7
|
|
8
|
+
after_commit :delete_cache
|
9
|
+
|
8
10
|
include ProfileFieldMixins::HasChildProfileFields
|
9
11
|
|
10
12
|
# Only allow the type column to be an existing class name.
|
@@ -88,13 +90,6 @@ class ProfileField < ActiveRecord::Base
|
|
88
90
|
end
|
89
91
|
end
|
90
92
|
|
91
|
-
# Overwrite save to ensure that the cache is deleted in case of changes.
|
92
|
-
#
|
93
|
-
def save( *args )
|
94
|
-
delete_cache
|
95
|
-
super( *args )
|
96
|
-
end
|
97
|
-
|
98
93
|
def delete_cache
|
99
94
|
super
|
100
95
|
parent.try(:delete_cache)
|
@@ -28,7 +28,7 @@ module ProfileFieldMixins::HasChildProfileFields
|
|
28
28
|
before_save :build_child_fields_if_absent
|
29
29
|
after_save :save_child_profile_fields
|
30
30
|
|
31
|
-
attr_accessible *keys
|
31
|
+
attr_accessible *keys if defined? attr_accessible
|
32
32
|
|
33
33
|
include HasChildProfileFieldsInstanceMethods
|
34
34
|
|
@@ -5,7 +5,7 @@ module ProfileFieldTypes
|
|
5
5
|
class Address < ProfileField
|
6
6
|
def self.model_name; ProfileField.model_name; end
|
7
7
|
|
8
|
-
attr_accessible :postal_address
|
8
|
+
attr_accessible :postal_address if defined? attr_accessible
|
9
9
|
|
10
10
|
# Google Maps integration
|
11
11
|
# see: http://rubydoc.info/gems/gmaps4rails/
|
data/app/models/relationship.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
#
|
11
11
|
class Relationship < ActiveRecord::Base
|
12
12
|
|
13
|
-
attr_accessible :user1, :user2, :name, :who, :is, :of, :who_by_title, :of_by_title
|
13
|
+
attr_accessible :user1, :user2, :name, :who, :is, :of, :who_by_title, :of_by_title if defined? attr_accessible
|
14
14
|
|
15
15
|
belongs_to :user1, class_name: "User", inverse_of: :relationships_as_first_user
|
16
16
|
belongs_to :user2, class_name: "User", inverse_of: :relationships_as_second_user
|
data/app/models/setting.rb
CHANGED
@@ -18,7 +18,7 @@ class StatusGroupMembership < UserGroupMembership
|
|
18
18
|
:event, :event=, # alias methods
|
19
19
|
to: :find_or_create_status_group_membership_info )
|
20
20
|
|
21
|
-
attr_accessible :event_by_name
|
21
|
+
attr_accessible :event_by_name if defined? attr_accessible
|
22
22
|
|
23
23
|
# Alias Methods For Delegated Methods
|
24
24
|
# ==========================================================================================
|
@@ -1,7 +1,5 @@
|
|
1
1
|
class StatusGroupMembershipInfo < ActiveRecord::Base
|
2
2
|
|
3
|
-
attr_accessible
|
4
|
-
|
5
3
|
belongs_to :membership, touch: true, class_name: "StatusGroupMembership", inverse_of: :status_group_membership_info
|
6
4
|
|
7
5
|
belongs_to :promoted_by_workflow, foreign_key: 'promoted_by_workflow_id', class_name: "Workflow"
|
data/app/models/user.rb
CHANGED
@@ -1,16 +1,18 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
class User < ActiveRecord::Base
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
if defined? attr_accessible
|
5
|
+
attr_accessible :first_name, :last_name, :name, :alias, :email, :create_account, :female, :add_to_group,
|
6
|
+
:add_to_corporation, :date_of_birth, :localized_date_of_birth,
|
7
|
+
:aktivmeldungsdatum, :study_address, :home_address, :work_address, :phone, :mobile
|
8
|
+
end
|
7
9
|
|
8
10
|
attr_accessor :create_account, :add_to_group, :add_to_corporation
|
9
11
|
# Boolean, der vormerkt, ob dem (neuen) Benutzer ein Account hinzugefügt werden soll.
|
10
12
|
|
11
13
|
validates_presence_of :first_name, :last_name
|
12
|
-
validates_format_of :first_name, with:
|
13
|
-
validates_format_of :last_name, with:
|
14
|
+
validates_format_of :first_name, with: /\A[^\,]*\z/ # The name must not contain a comma.
|
15
|
+
validates_format_of :last_name, with: /\A[^\,]*\z/
|
14
16
|
|
15
17
|
validates_uniqueness_of :alias, :if => Proc.new { |user| user.account and user.alias.present? }
|
16
18
|
validates_format_of :email, :with => Devise::email_regexp, :if => Proc.new { |user| user.email.present? }, judge: :ignore
|
@@ -289,7 +291,7 @@ class User < ActiveRecord::Base
|
|
289
291
|
unless readonly?
|
290
292
|
if description and not self.incognito?
|
291
293
|
activity = find_or_build_last_seen_activity
|
292
|
-
activity.touch # even if the attributes didn't change. The user probably hit 'reload' then.
|
294
|
+
activity.touch unless activity.new_record? # even if the attributes didn't change. The user probably hit 'reload' then.
|
293
295
|
activity.description = description
|
294
296
|
activity.link_to_object = object
|
295
297
|
activity.save
|
@@ -393,7 +395,7 @@ class User < ActiveRecord::Base
|
|
393
395
|
cached do
|
394
396
|
if first_corporation
|
395
397
|
my_memberships = UserGroupMembership.find_all_by_user( self )
|
396
|
-
my_memberships = my_memberships.now.reorder
|
398
|
+
my_memberships = my_memberships.now.reorder(:valid_from)
|
397
399
|
my_groups = my_memberships.collect { |membership| membership.try( :group ) } if my_memberships
|
398
400
|
my_groups ||= []
|
399
401
|
my_groups.select do |group|
|
data/app/models/user_account.rb
CHANGED
@@ -33,7 +33,7 @@ class UserAccount < ActiveRecord::Base
|
|
33
33
|
# Can unlock via email or after a specified time period.
|
34
34
|
#
|
35
35
|
devise :database_authenticatable, :recoverable, :rememberable, :validatable, :registerable
|
36
|
-
attr_accessible :password, :password_confirmation, :remember_me
|
36
|
+
attr_accessible :login, :password, :password_confirmation, :remember_me if defined? attr_accessible
|
37
37
|
|
38
38
|
# Virtual attribute for authenticating by either username, alias or email
|
39
39
|
attr_accessor :login
|
data/app/models/workflow.rb
CHANGED
data/config/environment.rb
CHANGED
@@ -0,0 +1,7 @@
|
|
1
|
+
# This file lists the assets that need to be compiled into separate files.
|
2
|
+
|
3
|
+
# Layout
|
4
|
+
Rails.application.config.assets.precompile += %w( bootstrap_setup.css bootstrap_layout.css )
|
5
|
+
|
6
|
+
# Galleria
|
7
|
+
Rails.application.config.assets.precompile += %w( galleria-classic.js galleria/classic-loader.gif galleria/classic-map.png )
|
@@ -19,13 +19,13 @@
|
|
19
19
|
|
20
20
|
# This calls the instance method on the model: ProfileField#display_html
|
21
21
|
#
|
22
|
-
BestInPlace::DisplayMethods.add_model_method(
|
22
|
+
BestInPlace::DisplayMethods.add_model_method(ProfileField, :value, :display_html)
|
23
23
|
|
24
24
|
# This calls a helper method `markup(str)`.
|
25
25
|
#
|
26
|
-
BestInPlace::DisplayMethods.add_helper_method(
|
27
|
-
BestInPlace::DisplayMethods.add_helper_method(
|
28
|
-
BestInPlace::DisplayMethods.add_helper_method(
|
26
|
+
BestInPlace::DisplayMethods.add_helper_method(Page, :content, :markup)
|
27
|
+
BestInPlace::DisplayMethods.add_helper_method(Group, :body, :markup)
|
28
|
+
BestInPlace::DisplayMethods.add_helper_method(Event, :description, :markup)
|
29
29
|
|
30
|
-
BestInPlace::DisplayMethods.add_helper_method(
|
31
|
-
BestInPlace::DisplayMethods.add_helper_method(
|
30
|
+
BestInPlace::DisplayMethods.add_helper_method(Group, :direct_members_titles_string, :add_quick_links_to_comma_separated_list)
|
31
|
+
BestInPlace::DisplayMethods.add_helper_method(User, :corporation_name, :add_quick_link)
|
data/config/routes.rb
CHANGED
@@ -13,8 +13,8 @@ Rails.application.routes.draw do
|
|
13
13
|
# Users should be allowed to change their password(update registration), but not to sign up(create registration)
|
14
14
|
devise_for :user_accounts, :controllers => {:sessions => 'sessions'}, :skip => [:registrations]
|
15
15
|
devise_scope :user_account do
|
16
|
-
|
17
|
-
|
16
|
+
get 'sign_in' => 'devise/sessions#new', as: :sign_in
|
17
|
+
delete 'sign_out' => 'devise/sessions#destroy', as: :sign_out
|
18
18
|
get 'change_password' => 'devise/registrations#edit', :as => 'edit_registration'
|
19
19
|
get 'change_password' => 'devise/registrations#edit', :as => 'edit_password'
|
20
20
|
get 'change_password' => 'devise/registrations#edit', :as => 'change_password'
|
@@ -3,7 +3,13 @@ class AddDeviseToUserAccounts < ActiveRecord::Migration
|
|
3
3
|
change_table(:user_accounts) do |t|
|
4
4
|
## Database authenticatable
|
5
5
|
#t.string :email, :null => false, :default => ""
|
6
|
-
|
6
|
+
if Rails.version.starts_with?("3")
|
7
|
+
t.string :encrypted_password, :null => false, :default => ""
|
8
|
+
else
|
9
|
+
# https://github.com/fiedl/wingolfsplattform/commit/01f7d3182387aaca99564216661bb7b222fee084#diff-e7267e28ca9cf34b8ba67e6b088344caR5
|
10
|
+
# http://stackoverflow.com/a/12990129/2066546
|
11
|
+
t.change :encrypted_password, :string, null: false, default: ""
|
12
|
+
end
|
7
13
|
|
8
14
|
## Recoverable
|
9
15
|
t.string :reset_password_token
|
@@ -5,21 +5,21 @@ module BestInPlace
|
|
5
5
|
module ControllerExtensions
|
6
6
|
|
7
7
|
private
|
8
|
-
def respond_bip_ok(obj)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
end
|
8
|
+
# def respond_bip_ok(obj)
|
9
|
+
# #if obj.respond_to?(:id)
|
10
|
+
# # klass = "#{obj.class}_#{obj.id}"
|
11
|
+
# #else
|
12
|
+
# # klass = obj.class.to_s
|
13
|
+
# #end
|
14
|
+
# param_key = BestInPlace::Utils.object_to_key(obj)
|
15
|
+
# updating_attr = params[param_key].keys.first
|
16
|
+
#
|
17
|
+
# if renderer = BestInPlace::DisplayMethods.lookup(obj.class.name, updating_attr) || BestInPlace::DisplayMethods.lookup(obj.class.base_class.name, updating_attr)
|
18
|
+
# render :json => renderer.render_json(obj)
|
19
|
+
# else
|
20
|
+
# head :no_content
|
21
|
+
# end
|
22
|
+
# end
|
23
23
|
|
24
24
|
end
|
25
25
|
end
|
data/lib/best_in_place/helper.rb
CHANGED
@@ -2,115 +2,22 @@ require 'best_in_place'
|
|
2
2
|
require_dependency(Gem::Specification.find_by_name('best_in_place').gem_dir + '/' + 'lib/best_in_place/helper')
|
3
3
|
|
4
4
|
module BestInPlace
|
5
|
-
module
|
6
|
-
|
7
|
-
def best_in_place(object, field, opts = {})
|
8
|
-
if opts[:display_as] && opts[:display_with]
|
9
|
-
raise ArgumentError, "Can't use both 'display_as' and 'display_with' options at the same time"
|
10
|
-
end
|
11
|
-
|
12
|
-
if opts[:display_with] && !opts[:display_with].is_a?(Proc) && !ViewHelpers.respond_to?(opts[:display_with])
|
13
|
-
raise ArgumentError, "Can't find helper #{opts[:display_with]}"
|
14
|
-
end
|
15
|
-
|
16
|
-
real_object = real_object_for object
|
17
|
-
opts[:type] ||= :input
|
18
|
-
opts[:collection] ||= []
|
19
|
-
field = field.to_s
|
20
|
-
|
21
|
-
display_value = build_value_for(real_object, field, opts)
|
22
|
-
|
23
|
-
collection = nil
|
24
|
-
value = nil
|
25
|
-
if opts[:type] == :select && !opts[:collection].blank?
|
26
|
-
value = real_object.send(field)
|
27
|
-
display_value = Hash[opts[:collection]].stringify_keys[value.to_s]
|
28
|
-
collection = opts[:collection].to_json
|
29
|
-
end
|
30
|
-
if opts[:type] == :checkbox
|
31
|
-
value = !!real_object.send(field)
|
32
|
-
if opts[:collection].blank? || opts[:collection].size != 2
|
33
|
-
opts[:collection] = ["No", "Yes"]
|
34
|
-
end
|
35
|
-
display_value = value ? opts[:collection][1] : opts[:collection][0]
|
36
|
-
collection = opts[:collection].to_json
|
37
|
-
end
|
38
|
-
classes = ["best_in_place"]
|
39
|
-
unless opts[:classes].nil?
|
40
|
-
# the next three lines enable this opt to handle both a stings and a arrays
|
41
|
-
classes << opts[:classes]
|
42
|
-
classes.flatten!
|
43
|
-
end
|
44
|
-
|
45
|
-
out = "<span class='#{classes.join(" ")}'"
|
46
|
-
out << " id='#{BestInPlace::Utils.build_best_in_place_id(real_object, field)}'"
|
47
|
-
out << " data-url='#{opts[:path].blank? ? url_for(object) : url_for(opts[:path])}'"
|
48
|
-
out << " data-object='#{opts[:object_name] || BestInPlace::Utils.object_to_key(real_object)}'"
|
49
|
-
out << " data-collection='#{attribute_escape(collection)}'" unless collection.blank?
|
50
|
-
out << " data-attribute='#{field}'"
|
51
|
-
out << " data-activator='#{opts[:activator]}'" unless opts[:activator].blank?
|
52
|
-
out << " data-ok-button='#{opts[:ok_button]}'" unless opts[:ok_button].blank?
|
53
|
-
out << " data-ok-button-class='#{opts[:ok_button_class]}'" unless opts[:ok_button_class].blank?
|
54
|
-
out << " data-cancel-button='#{opts[:cancel_button]}'" unless opts[:cancel_button].blank?
|
55
|
-
out << " data-cancel-button-class='#{opts[:cancel_button_class]}'" unless opts[:cancel_button_class].blank?
|
56
|
-
out << " data-nil='#{attribute_escape(opts[:nil])}'" unless opts[:nil].blank?
|
57
|
-
out << " data-use-confirm='#{opts[:use_confirm]}'" unless opts[:use_confirm].nil?
|
58
|
-
out << " data-type='#{opts[:type]}'"
|
59
|
-
out << " data-inner-class='#{opts[:inner_class]}'" if opts[:inner_class]
|
60
|
-
out << " data-html-attrs='#{opts[:html_attrs].to_json}'" unless opts[:html_attrs].blank?
|
61
|
-
out << " data-original-content='#{attribute_escape(real_object.send(field))}'" #if opts[:display_as] || opts[:display_with]
|
62
|
-
out << " data-value='#{attribute_escape(value)}'" if value
|
63
|
-
|
64
|
-
if opts[:data] && opts[:data].is_a?(Hash)
|
65
|
-
opts[:data].each do |k, v|
|
66
|
-
if !v.is_a?(String) && !v.is_a?(Symbol)
|
67
|
-
v = v.to_json
|
68
|
-
end
|
69
|
-
out << %( data-#{k.to_s.dasherize}="#{v}")
|
70
|
-
end
|
71
|
-
end
|
72
|
-
if !opts[:sanitize].nil? && !opts[:sanitize]
|
73
|
-
out << " data-sanitize='false'>"
|
74
|
-
out << display_value.to_s
|
75
|
-
else
|
76
|
-
out << ">#{h(display_value.to_s)}"
|
77
|
-
end
|
78
|
-
out << "</span>"
|
79
|
-
raw out
|
80
|
-
end
|
5
|
+
module Helper
|
81
6
|
|
82
7
|
private
|
83
8
|
|
84
|
-
|
9
|
+
# This overrides the lookup for best in place displays.
|
10
|
+
# The original method is defined here:
|
11
|
+
# https://github.com/bernat/best_in_place/blob/master/lib/best_in_place/helper.rb#L93
|
12
|
+
#
|
13
|
+
# This is needed in order to render according to the definitions of
|
14
|
+
# config/initializers/best_in_place_display_definitions.rb
|
15
|
+
#
|
16
|
+
def best_in_place_build_value_for(object, field, opts)
|
85
17
|
return "" if object.send(field).blank?
|
86
|
-
|
87
|
-
# klass = if object.respond_to?(:id)
|
88
|
-
# "#{object.class}_#{object.id}"
|
89
|
-
# else
|
90
|
-
# object.class.to_s
|
91
|
-
# end
|
92
|
-
#
|
93
|
-
# if opts[:display_as]
|
94
|
-
# BestInPlace::DisplayMethods.add_model_method(klass, field, opts[:display_as])
|
95
|
-
# object.send(opts[:display_as]).to_s
|
96
|
-
#
|
97
|
-
# elsif opts[:display_with].try(:is_a?, Proc)
|
98
|
-
# BestInPlace::DisplayMethods.add_helper_proc(klass, field, opts[:display_with])
|
99
|
-
# opts[:display_with].call(object.send(field))
|
100
|
-
#
|
101
|
-
# elsif opts[:display_with]
|
102
|
-
# BestInPlace::DisplayMethods.add_helper_method(klass, field, opts[:display_with], opts[:helper_options])
|
103
|
-
# if opts[:helper_options]
|
104
|
-
# BestInPlace::ViewHelpers.send(opts[:display_with], object.send(field), opts[:helper_options])
|
105
|
-
# else
|
106
|
-
# BestInPlace::ViewHelpers.send(opts[:display_with], object.send(field))
|
107
|
-
# end
|
108
|
-
#
|
109
|
-
# else
|
110
|
-
# object.send(field).to_s
|
111
|
-
# end
|
112
18
|
|
113
|
-
renderer = BestInPlace::DisplayMethods.lookup(object.class
|
19
|
+
renderer = BestInPlace::DisplayMethods.lookup(object.class, field) || BestInPlace::DisplayMethods.lookup(object.class.base_class, field)
|
20
|
+
|
114
21
|
if renderer.nil?
|
115
22
|
return object.send(field).to_s
|
116
23
|
elsif renderer.opts[:type] == :helper
|
data/lib/your_platform/engine.rb
CHANGED
@@ -7,7 +7,7 @@ require 'rubygems'
|
|
7
7
|
|
8
8
|
# Rails and Additions
|
9
9
|
require 'rails-i18n'
|
10
|
-
require 'strong_parameters'
|
10
|
+
require 'strong_parameters' unless defined? ActionController::Parameters
|
11
11
|
|
12
12
|
# JavaScript
|
13
13
|
require 'jquery-ui-rails'
|
@@ -54,7 +54,6 @@ require 'gmaps4rails'
|
|
54
54
|
|
55
55
|
# Form Helpers
|
56
56
|
require 'formtastic'
|
57
|
-
require 'judge/formtastic'
|
58
57
|
|
59
58
|
# File Uploads
|
60
59
|
require 'carrierwave'
|
@@ -42,7 +42,7 @@ describe ActiveRecordJsonUrlExtension do
|
|
42
42
|
subject { @user.serializable_hash }
|
43
43
|
it { should be_kind_of Hash }
|
44
44
|
it "should include the url" do
|
45
|
-
subject[
|
45
|
+
subject['url'].should == @user.url
|
46
46
|
end
|
47
47
|
|
48
48
|
describe "for associated objects" do
|
@@ -52,16 +52,16 @@ describe ActiveRecordJsonUrlExtension do
|
|
52
52
|
end
|
53
53
|
subject { @user.serializable_hash( :include => :parent_groups ) }
|
54
54
|
it "should include the urls of the associated objects" do
|
55
|
-
subject[
|
55
|
+
subject['parent_groups'][0]['url'].should == @group.url
|
56
56
|
end
|
57
57
|
|
58
58
|
describe "with other methods being included as well" do
|
59
59
|
subject { @user.serializable_hash( :include => { :parent_groups => { :methods => :title } } ) }
|
60
60
|
it "should include the other methods" do
|
61
|
-
subject[
|
61
|
+
subject['parent_groups'][0]['title'].should == @group.title
|
62
62
|
end
|
63
63
|
it "should include the url" do
|
64
|
-
subject[
|
64
|
+
subject['parent_groups'][0]['url'].should == @group.url
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -57,12 +57,12 @@ describe Bookmark do
|
|
57
57
|
describe "#serializable_hash" do
|
58
58
|
it "should include the bookmarkable object's title" do
|
59
59
|
@bookmarks.each do |bookmark| # check it for several types of bookmarks
|
60
|
-
bookmark.serializable_hash[
|
60
|
+
bookmark.serializable_hash['bookmarkable']['title'].should == bookmark.bookmarkable.title
|
61
61
|
end
|
62
62
|
end
|
63
63
|
it "should include the bookmarkable object's url" do
|
64
64
|
@bookmarks.each do |bookmark|
|
65
|
-
bookmark.serializable_hash[
|
65
|
+
bookmark.serializable_hash['bookmarkable']['url'].should == bookmark.bookmarkable.url
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
@@ -25,7 +25,8 @@ describe Corporation do
|
|
25
25
|
it { should_not include @group }
|
26
26
|
|
27
27
|
it "should return an array of Corporation-type objects" do
|
28
|
-
subject.should be_kind_of
|
28
|
+
subject.should be_kind_of ActiveRecord::Relation
|
29
|
+
subject.to_a.should be_kind_of Array
|
29
30
|
subject.first.should be_kind_of Corporation
|
30
31
|
end
|
31
32
|
it "should not find the officers_parent group of the corporations_parent" do
|
@@ -121,7 +122,7 @@ describe Corporation do
|
|
121
122
|
specify "the cache should be updated after a status group is renamed" do
|
122
123
|
@corporation.status_groups # This created the cached version.
|
123
124
|
@status_group.update_attributes name: 'New Status Name'
|
124
|
-
subject.map(&:name).should include 'New Status Name'
|
125
|
+
subject.reload.map(&:name).should include 'New Status Name'
|
125
126
|
end
|
126
127
|
end
|
127
128
|
|
data/spec/models/event_spec.rb
CHANGED
@@ -43,7 +43,7 @@ describe Event do
|
|
43
43
|
subject.should == @event.parent_groups
|
44
44
|
end
|
45
45
|
it "should return an array of the associated groups" do
|
46
|
-
subject.should be_kind_of Array
|
46
|
+
subject.to_a.should be_kind_of Array
|
47
47
|
subject.should include @group
|
48
48
|
end
|
49
49
|
end
|
@@ -125,8 +125,8 @@ describe Event do
|
|
125
125
|
describe "chained with .find_all_by_group" do
|
126
126
|
subject { Event.find_all_by_group( @group ).upcoming }
|
127
127
|
it "should commute with find_all_by_group" do
|
128
|
-
Event.find_all_by_group(
|
129
|
-
Event.upcoming.find_all_by_group(
|
128
|
+
Event.find_all_by_group(@group).upcoming.to_a.should ==
|
129
|
+
Event.upcoming.find_all_by_group(@group).to_a
|
130
130
|
end
|
131
131
|
it "should return associated events starting in the future" do
|
132
132
|
subject.should include @upcoming_event
|
@@ -57,7 +57,7 @@ describe GroupMixins::Corporations do
|
|
57
57
|
subject.should == Group.find_corporation_groups
|
58
58
|
end
|
59
59
|
it "should be of the proper type" do # bug test: is the `corporations` method overridden correctly?
|
60
|
-
subject.should be_kind_of Array
|
60
|
+
subject.to_a.should be_kind_of Array
|
61
61
|
subject.first.should_not be_kind_of User
|
62
62
|
subject.first.should be_kind_of Group
|
63
63
|
end
|
@@ -120,7 +120,7 @@ describe Profileable do
|
|
120
120
|
end
|
121
121
|
subject { @profileable.profile_fields }
|
122
122
|
it "should be an Array of ProfileFields" do
|
123
|
-
subject.should be_kind_of Array
|
123
|
+
subject.to_a.should be_kind_of Array
|
124
124
|
subject.first.should be_kind_of ProfileField
|
125
125
|
end
|
126
126
|
describe "#to_json" do
|
@@ -390,7 +390,7 @@ describe StructureableMixins::HasSpecialGroups do
|
|
390
390
|
it { should == @my_structureable.testers }
|
391
391
|
end
|
392
392
|
context "for an absent special group" do
|
393
|
-
|
393
|
+
its(:to_a) { should be_kind_of Array }
|
394
394
|
it { should_not == nil }
|
395
395
|
end
|
396
396
|
end
|
data/spec/models/user_group_membership_mixins/validity_range_for_indirect_memberships_spec.rb
CHANGED
@@ -36,6 +36,11 @@ describe UserGroupMembershipMixins::ValidityRangeForIndirectMemberships do
|
|
36
36
|
@direct_membership_a.update_attribute(:valid_to, @t2)
|
37
37
|
@direct_membership_b.update_attribute(:valid_from, @t2)
|
38
38
|
@direct_membership_b.update_attribute(:valid_to, @t3)
|
39
|
+
@indirect_membership.delete_cache
|
40
|
+
|
41
|
+
@direct_membership_a.reload
|
42
|
+
@direct_membership_b.reload
|
43
|
+
@indirect_membership.reload
|
39
44
|
end
|
40
45
|
|
41
46
|
specify "preliminaries" do
|
@@ -98,7 +103,7 @@ describe UserGroupMembershipMixins::ValidityRangeForIndirectMemberships do
|
|
98
103
|
@direct_membership_b.update_attribute(:valid_from, @t2)
|
99
104
|
@direct_membership_b.update_attribute(:valid_to, @t3)
|
100
105
|
end
|
101
|
-
subject { @indirect_membership.recalculate_validity_range_from_direct_memberships; @indirect_membership.reload }
|
106
|
+
subject { @indirect_membership.reload.recalculate_validity_range_from_direct_memberships; @indirect_membership.reload }
|
102
107
|
it "should make the indirect validity range match the direct memberships' combined range" do
|
103
108
|
subject
|
104
109
|
@indirect_membership.valid_from.to_i.should == @t1.to_i
|
data/spec/models/user_spec.rb
CHANGED
@@ -1665,7 +1665,7 @@ describe User do
|
|
1665
1665
|
it { should include @hidden_user }
|
1666
1666
|
it { should_not include @visible_user }
|
1667
1667
|
it "should be chainable" do
|
1668
|
-
subject.where(id: @hidden_user.id).should == User.where(id: @hidden_user.id).hidden
|
1668
|
+
subject.where(id: @hidden_user.id).to_a.should == User.where(id: @hidden_user.id).hidden.to_a
|
1669
1669
|
subject.count.should > 0
|
1670
1670
|
end
|
1671
1671
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -171,7 +171,7 @@ Spork.prefork do
|
|
171
171
|
# in the specs.
|
172
172
|
#
|
173
173
|
config.include RSpec::Matchers
|
174
|
-
config.include Rails.application.routes.url_helpers
|
174
|
+
config.include Rails.application.routes.url_helpers if Rails.version.starts_with?("3")
|
175
175
|
config.include FactoryGirl::Syntax::Methods
|
176
176
|
config.include EmailSpec::Helpers
|
177
177
|
config.include EmailSpec::Matchers
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: your_platform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sebastian Fiedlschuster
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 3.2.21
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.2.21
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -182,14 +182,14 @@ dependencies:
|
|
182
182
|
name: devise
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
|
-
- - "
|
185
|
+
- - ">="
|
186
186
|
- !ruby/object:Gem::Version
|
187
187
|
version: 2.2.5
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
|
-
- - "
|
192
|
+
- - ">="
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: 2.2.5
|
195
195
|
- !ruby/object:Gem::Dependency
|
@@ -238,16 +238,16 @@ dependencies:
|
|
238
238
|
name: rails-settings-cached
|
239
239
|
requirement: !ruby/object:Gem::Requirement
|
240
240
|
requirements:
|
241
|
-
- -
|
241
|
+
- - ">="
|
242
242
|
- !ruby/object:Gem::Version
|
243
|
-
version: 0
|
243
|
+
version: '0'
|
244
244
|
type: :runtime
|
245
245
|
prerelease: false
|
246
246
|
version_requirements: !ruby/object:Gem::Requirement
|
247
247
|
requirements:
|
248
|
-
- -
|
248
|
+
- - ">="
|
249
249
|
- !ruby/object:Gem::Version
|
250
|
-
version: 0
|
250
|
+
version: '0'
|
251
251
|
- !ruby/object:Gem::Dependency
|
252
252
|
name: haml
|
253
253
|
requirement: !ruby/object:Gem::Requirement
|
@@ -322,14 +322,14 @@ dependencies:
|
|
322
322
|
name: best_in_place
|
323
323
|
requirement: !ruby/object:Gem::Requirement
|
324
324
|
requirements:
|
325
|
-
- - "
|
325
|
+
- - ">="
|
326
326
|
- !ruby/object:Gem::Version
|
327
327
|
version: 2.1.0
|
328
328
|
type: :runtime
|
329
329
|
prerelease: false
|
330
330
|
version_requirements: !ruby/object:Gem::Requirement
|
331
331
|
requirements:
|
332
|
-
- - "
|
332
|
+
- - ">="
|
333
333
|
- !ruby/object:Gem::Version
|
334
334
|
version: 2.1.0
|
335
335
|
- !ruby/object:Gem::Dependency
|
@@ -388,20 +388,6 @@ dependencies:
|
|
388
388
|
- - ">="
|
389
389
|
- !ruby/object:Gem::Version
|
390
390
|
version: '0'
|
391
|
-
- !ruby/object:Gem::Dependency
|
392
|
-
name: judge-formtastic
|
393
|
-
requirement: !ruby/object:Gem::Requirement
|
394
|
-
requirements:
|
395
|
-
- - ">="
|
396
|
-
- !ruby/object:Gem::Version
|
397
|
-
version: '0'
|
398
|
-
type: :runtime
|
399
|
-
prerelease: false
|
400
|
-
version_requirements: !ruby/object:Gem::Requirement
|
401
|
-
requirements:
|
402
|
-
- - ">="
|
403
|
-
- !ruby/object:Gem::Version
|
404
|
-
version: '0'
|
405
391
|
- !ruby/object:Gem::Dependency
|
406
392
|
name: carrierwave
|
407
393
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1148,6 +1134,7 @@ files:
|
|
1148
1134
|
- config/initializers/active_record_structureable_extension.rb
|
1149
1135
|
- config/initializers/active_record_update_attributes_bip_extension.rb
|
1150
1136
|
- config/initializers/array_extension.rb
|
1137
|
+
- config/initializers/assets.rb
|
1151
1138
|
- config/initializers/best_in_place_display_definitions.rb
|
1152
1139
|
- config/initializers/cache_store_extension.rb
|
1153
1140
|
- config/initializers/devise.rb
|
@@ -1157,6 +1144,7 @@ files:
|
|
1157
1144
|
- config/initializers/mime_types.rb
|
1158
1145
|
- config/initializers/mini_profiler.rb
|
1159
1146
|
- config/initializers/object_to_b_extension.rb
|
1147
|
+
- config/initializers/protected_attributes.rb
|
1160
1148
|
- config/initializers/refile.rb
|
1161
1149
|
- config/initializers/sidekiq.rb
|
1162
1150
|
- config/locales/attachments/de.yml
|