your_platform 0.0.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|