forked from bofh/fetsite
Compare commits
25 Commits
stable-pro
...
prep_upgra
| Author | SHA1 | Date | |
|---|---|---|---|
| f52ec0411d | |||
| 92d63b71ed | |||
| 30cbe8923f | |||
| 1b15fdf385 | |||
| d7c8342817 | |||
| 71d14c83ae | |||
| fea219ba92 | |||
| 1b065cd3f0 | |||
| 67bfa0f699 | |||
| ff20774889 | |||
| f7f8937197 | |||
| c713fdd0d0 | |||
| bc8f4cfce3 | |||
| 5759ba79e0 | |||
| 70e415446a | |||
| 82cd127370 | |||
| 72e18f9e29 | |||
| e873916095 | |||
| 6ebb36d840 | |||
| f6c3cda045 | |||
| a20c6fa673 | |||
|
|
52ffe0c701 | ||
|
|
52fcabf2dc | ||
|
|
c03a60c236 | ||
| 1cf84c90ae |
11
.gitignore
vendored
11
.gitignore
vendored
@@ -28,7 +28,7 @@
|
||||
/db/schema.rb
|
||||
/db/structure.sql
|
||||
/config/initializers/devise.rb
|
||||
Gemfile.lock
|
||||
|
||||
# Ignore all logfiles and tempfiles.
|
||||
/log/*.log
|
||||
/tmp
|
||||
@@ -40,16 +40,23 @@ console
|
||||
/server
|
||||
/public/uploads/
|
||||
/public/sitemap*
|
||||
/public/assets/
|
||||
/vendor/*
|
||||
/bak/*
|
||||
/solr/*
|
||||
/log/*
|
||||
*#
|
||||
Gemfile.lock
|
||||
|
||||
/config/database.yml
|
||||
/config/start_topic.yml
|
||||
/config/contact_topic.yml
|
||||
/config/etherpad/APIKEY.*
|
||||
/config/page.yml
|
||||
|
||||
.#*
|
||||
.*
|
||||
!/.gitignore
|
||||
*.pid
|
||||
|
||||
/doc/app
|
||||
coverage/*
|
||||
1
Gemfile
1
Gemfile
@@ -96,6 +96,7 @@ gem 'rspec-activemodel-mocks', '~>1.0.1'
|
||||
gem 'rspec-html-matchers', '~>0.7.0'
|
||||
gem 'rspec-expectations', '~>3.3.1'
|
||||
gem 'capybara', '~>2.5.0'
|
||||
gem 'simplecov'
|
||||
end
|
||||
|
||||
gem "simple_calendar", "~> 0.1.9"
|
||||
|
||||
456
Gemfile.lock
Normal file
456
Gemfile.lock
Normal file
@@ -0,0 +1,456 @@
|
||||
GIT
|
||||
remote: git://github.com/matenia/bootstrap-kaminari-views.git
|
||||
revision: 9df61d400fc144c3f33d65f3f97e4867b8e68273
|
||||
specs:
|
||||
bootstrap-kaminari-views (0.0.5)
|
||||
kaminari (>= 0.13)
|
||||
rails (>= 3.1)
|
||||
|
||||
GIT
|
||||
remote: git://github.com/rgrove/sanitize
|
||||
revision: acc7e6440139379a0c6b4b76b662ed90acd4b923
|
||||
specs:
|
||||
sanitize (4.6.4)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.4.4)
|
||||
nokogumbo (~> 1.4)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
actionmailer (3.2.13)
|
||||
actionpack (= 3.2.13)
|
||||
mail (~> 2.5.3)
|
||||
actionpack (3.2.13)
|
||||
activemodel (= 3.2.13)
|
||||
activesupport (= 3.2.13)
|
||||
builder (~> 3.0.0)
|
||||
erubis (~> 2.7.0)
|
||||
journey (~> 1.0.4)
|
||||
rack (~> 1.4.5)
|
||||
rack-cache (~> 1.2)
|
||||
rack-test (~> 0.6.1)
|
||||
sprockets (~> 2.2.1)
|
||||
active_record_query_trace (1.5.4)
|
||||
activemodel (3.2.13)
|
||||
activesupport (= 3.2.13)
|
||||
builder (~> 3.0.0)
|
||||
activerecord (3.2.13)
|
||||
activemodel (= 3.2.13)
|
||||
activesupport (= 3.2.13)
|
||||
arel (~> 3.0.2)
|
||||
tzinfo (~> 0.3.29)
|
||||
activeresource (3.2.13)
|
||||
activemodel (= 3.2.13)
|
||||
activesupport (= 3.2.13)
|
||||
activesupport (3.2.13)
|
||||
i18n (= 0.6.1)
|
||||
multi_json (~> 1.0)
|
||||
acts_as_votable (0.11.1)
|
||||
addressable (2.5.2)
|
||||
public_suffix (>= 2.0.2, < 4.0)
|
||||
aes_key_wrap (1.0.1)
|
||||
annotate (2.6.10)
|
||||
activerecord (>= 3.2, <= 4.3)
|
||||
rake (~> 10.4)
|
||||
arel (3.0.3)
|
||||
attr_required (1.0.1)
|
||||
awesome_nested_set (2.1.6)
|
||||
activerecord (>= 3.0.0)
|
||||
bcrypt (3.1.11)
|
||||
bcrypt-ruby (3.1.5)
|
||||
bcrypt (>= 3.1.3)
|
||||
bindata (2.4.3)
|
||||
blueimp-gallery (2.11.0.1)
|
||||
railties (>= 3.1.0)
|
||||
blueimp-gallery-rails (2.7.0)
|
||||
railties (>= 3.0, < 5.0)
|
||||
bootstrap-addons-rails (0.1.2)
|
||||
rails
|
||||
bootstrap-sass (2.3.2.2)
|
||||
sass (~> 3.2)
|
||||
builder (3.0.4)
|
||||
cancan (1.6.10)
|
||||
capybara (2.5.0)
|
||||
mime-types (>= 1.16)
|
||||
nokogiri (>= 1.3.3)
|
||||
rack (>= 1.0.0)
|
||||
rack-test (>= 0.5.4)
|
||||
xpath (~> 2.0)
|
||||
carrierwave (0.9.0)
|
||||
activemodel (>= 3.2.0)
|
||||
activesupport (>= 3.2.0)
|
||||
json (>= 1.7)
|
||||
chronic (0.10.2)
|
||||
climate_control (0.2.0)
|
||||
cocaine (0.5.8)
|
||||
climate_control (>= 0.0.3, < 1.0)
|
||||
coffee-rails (3.2.2)
|
||||
coffee-script (>= 2.2.0)
|
||||
railties (~> 3.2.0)
|
||||
coffee-script (2.4.1)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.12.2)
|
||||
crass (1.0.4)
|
||||
devise (2.2.8)
|
||||
bcrypt-ruby (~> 3.0)
|
||||
orm_adapter (~> 0.1)
|
||||
railties (~> 3.1)
|
||||
warden (~> 1.2.1)
|
||||
diff-lcs (1.3)
|
||||
docile (1.3.1)
|
||||
domain_name (0.5.20180417)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
erubis (2.7.0)
|
||||
etherpad-lite (0.3.0)
|
||||
rest-client (>= 1.6)
|
||||
execjs (1.4.1)
|
||||
multi_json (~> 1.0)
|
||||
factory_girl (4.5.0)
|
||||
activesupport (>= 3.0.0)
|
||||
factory_girl_rails (4.5.0)
|
||||
factory_girl (~> 4.5.0)
|
||||
railties (>= 3.0.0)
|
||||
faraday (0.12.2)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
fb_graph (2.7.17)
|
||||
httpclient (>= 2.4)
|
||||
multi_json (>= 1.3)
|
||||
rack-oauth2 (>= 0.14.4)
|
||||
tzinfo
|
||||
ffi (1.9.23)
|
||||
font-awesome-rails (4.7.0.4)
|
||||
railties (>= 3.2, < 6.0)
|
||||
formtastic (2.2.1)
|
||||
actionpack (>= 3.0)
|
||||
formtastic-bootstrap (3.0.0)
|
||||
formtastic (>= 2.2)
|
||||
git (1.3.0)
|
||||
globalize (3.0.5)
|
||||
activemodel (>= 3.0.0, < 4.0.0)
|
||||
activerecord (>= 3.0.0, < 4.0.0)
|
||||
globalize-accessors (0.1.5)
|
||||
globalize (>= 3)
|
||||
globalize-versioning (0.2.0)
|
||||
activemodel (>= 3.2.0, < 5)
|
||||
activerecord (>= 3.2.0, < 5)
|
||||
globalize (>= 3.0.4, < 6)
|
||||
paper_trail (>= 3.0.0, < 5)
|
||||
haml (5.0.4)
|
||||
temple (>= 0.8.0)
|
||||
tilt
|
||||
hashie (3.5.7)
|
||||
highline (1.7.10)
|
||||
hike (1.2.3)
|
||||
http-cookie (1.0.3)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
i18n (0.6.1)
|
||||
journey (1.0.4)
|
||||
jquery-datetimepicker-rails (2.4.1.0)
|
||||
jquery-fileupload-rails (0.4.1)
|
||||
actionpack (>= 3.1)
|
||||
railties (>= 3.1)
|
||||
jquery-rails (3.1.5)
|
||||
railties (>= 3.0, < 5.0)
|
||||
thor (>= 0.14, < 2.0)
|
||||
jquery-ui-rails (4.1.2)
|
||||
railties (>= 3.1.0)
|
||||
json (2.1.0)
|
||||
json-jwt (1.9.4)
|
||||
activesupport
|
||||
aes_key_wrap
|
||||
bindata
|
||||
jwt (1.5.6)
|
||||
kaminari (0.17.0)
|
||||
actionpack (>= 3.0.0)
|
||||
activesupport (>= 3.0.0)
|
||||
kgio (2.11.2)
|
||||
libv8 (3.16.14.19)
|
||||
mail (2.5.5)
|
||||
mime-types (~> 1.16)
|
||||
treetop (~> 1.4.8)
|
||||
meta-tags (2.9.0)
|
||||
actionpack (>= 3.2.0, < 5.3)
|
||||
mime-types (1.25.1)
|
||||
mini_portile2 (2.3.0)
|
||||
minitest (4.7.5)
|
||||
multi_json (1.13.1)
|
||||
multi_xml (0.6.0)
|
||||
multipart-post (2.0.0)
|
||||
mysql2 (0.3.21)
|
||||
net-ldap (0.16.1)
|
||||
netrc (0.11.0)
|
||||
nokogiri (1.8.2)
|
||||
mini_portile2 (~> 2.3.0)
|
||||
nokogumbo (1.5.0)
|
||||
nokogiri
|
||||
oauth2 (1.4.0)
|
||||
faraday (>= 0.8, < 0.13)
|
||||
jwt (~> 1.0)
|
||||
multi_json (~> 1.3)
|
||||
multi_xml (~> 0.5)
|
||||
rack (>= 1.2, < 3)
|
||||
omniauth (1.2.2)
|
||||
hashie (>= 1.2, < 4)
|
||||
rack (~> 1.0)
|
||||
omniauth-facebook (2.0.1)
|
||||
omniauth-oauth2 (~> 1.2)
|
||||
omniauth-ldap (1.0.5)
|
||||
net-ldap (~> 0.12)
|
||||
omniauth (~> 1.0)
|
||||
pyu-ruby-sasl (~> 0.0.3.2)
|
||||
rubyntlm (~> 0.3.4)
|
||||
omniauth-oauth2 (1.5.0)
|
||||
oauth2 (~> 1.1)
|
||||
omniauth (~> 1.2)
|
||||
opengraph_parser (0.2.3)
|
||||
addressable
|
||||
nokogiri
|
||||
options (2.3.2)
|
||||
orm_adapter (0.5.0)
|
||||
paper_trail (3.0.9)
|
||||
activerecord (>= 3.0, < 5.0)
|
||||
activesupport (>= 3.0, < 5.0)
|
||||
paperclip (3.4.2)
|
||||
activemodel (>= 3.0.0)
|
||||
activerecord (>= 3.0.0)
|
||||
activesupport (>= 3.0.0)
|
||||
cocaine (~> 0.5.0)
|
||||
mime-types
|
||||
polyglot (0.3.5)
|
||||
pr_geohash (1.0.0)
|
||||
progress_bar (1.2.0)
|
||||
highline (~> 1.6)
|
||||
options (~> 2.3.0)
|
||||
public_suffix (3.0.2)
|
||||
pyu-ruby-sasl (0.0.3.3)
|
||||
rack (1.4.7)
|
||||
rack-cache (1.7.2)
|
||||
rack (>= 0.4)
|
||||
rack-oauth2 (1.9.2)
|
||||
activesupport
|
||||
attr_required
|
||||
httpclient
|
||||
json-jwt (>= 1.9.0)
|
||||
rack
|
||||
rack-ssl (1.3.4)
|
||||
rack
|
||||
rack-test (0.6.3)
|
||||
rack (>= 1.0)
|
||||
rails (3.2.13)
|
||||
actionmailer (= 3.2.13)
|
||||
actionpack (= 3.2.13)
|
||||
activerecord (= 3.2.13)
|
||||
activeresource (= 3.2.13)
|
||||
activesupport (= 3.2.13)
|
||||
bundler (~> 1.0)
|
||||
railties (= 3.2.13)
|
||||
railties (3.2.13)
|
||||
actionpack (= 3.2.13)
|
||||
activesupport (= 3.2.13)
|
||||
rack-ssl (~> 1.3.2)
|
||||
rake (>= 0.8.7)
|
||||
rdoc (~> 3.4)
|
||||
thor (>= 0.14.6, < 2.0)
|
||||
raindrops (0.19.0)
|
||||
rake (10.5.0)
|
||||
rb-fsevent (0.10.3)
|
||||
rb-inotify (0.9.10)
|
||||
ffi (>= 0.5.0, < 2)
|
||||
rdoc (3.9.5)
|
||||
ref (2.0.0)
|
||||
rest-client (2.0.2)
|
||||
http-cookie (>= 1.0.2, < 2.0)
|
||||
mime-types (>= 1.16, < 4.0)
|
||||
netrc (~> 0.8)
|
||||
rmagick (2.16.0)
|
||||
rolify (4.0.0)
|
||||
rsolr (2.2.1)
|
||||
builder (>= 2.1.2)
|
||||
faraday (>= 0.9.0)
|
||||
rspec (3.3.0)
|
||||
rspec-core (~> 3.3.0)
|
||||
rspec-expectations (~> 3.3.0)
|
||||
rspec-mocks (~> 3.3.0)
|
||||
rspec-activemodel-mocks (1.0.3)
|
||||
activemodel (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
rspec-mocks (>= 2.99, < 4.0)
|
||||
rspec-collection_matchers (1.1.3)
|
||||
rspec-expectations (>= 2.99.0.beta1)
|
||||
rspec-core (3.3.2)
|
||||
rspec-support (~> 3.3.0)
|
||||
rspec-expectations (3.3.1)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.3.0)
|
||||
rspec-html-matchers (0.7.3)
|
||||
nokogiri (~> 1)
|
||||
rspec (>= 3.0.0.a, < 4)
|
||||
rspec-mocks (3.3.2)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.3.0)
|
||||
rspec-rails (3.3.3)
|
||||
actionpack (>= 3.0, < 4.3)
|
||||
activesupport (>= 3.0, < 4.3)
|
||||
railties (>= 3.0, < 4.3)
|
||||
rspec-core (~> 3.3.0)
|
||||
rspec-expectations (~> 3.3.0)
|
||||
rspec-mocks (~> 3.3.0)
|
||||
rspec-support (~> 3.3.0)
|
||||
rspec-support (3.3.0)
|
||||
rubyntlm (0.3.4)
|
||||
rubyzip (1.2.1)
|
||||
sass (3.5.6)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
sass-rails (3.2.6)
|
||||
railties (~> 3.2.0)
|
||||
sass (>= 3.1.10)
|
||||
tilt (~> 1.3)
|
||||
seed_dump (0.5.3)
|
||||
shareable (1.1.4)
|
||||
actionpack (>= 3.0.0)
|
||||
activesupport (>= 3.0.0)
|
||||
simple_calendar (0.1.11)
|
||||
rails (>= 3.0)
|
||||
simplecov (0.16.1)
|
||||
docile (~> 1.1)
|
||||
json (>= 1.8, < 3)
|
||||
simplecov-html (~> 0.10.0)
|
||||
simplecov-html (0.10.2)
|
||||
sitemap_generator (6.0.1)
|
||||
builder (~> 3.0)
|
||||
sprockets (2.2.2)
|
||||
hike (~> 1.2)
|
||||
multi_json (~> 1.0)
|
||||
rack (~> 1.0)
|
||||
tilt (~> 1.1, != 1.3.0)
|
||||
sqlite3 (1.3.13)
|
||||
sunspot (2.3.0)
|
||||
pr_geohash (~> 1.0)
|
||||
rsolr (>= 1.1.1, < 3)
|
||||
sunspot_rails (2.3.0)
|
||||
rails (>= 3)
|
||||
sunspot (= 2.3.0)
|
||||
sunspot_solr (2.3.0)
|
||||
sunspot_test (0.4.1)
|
||||
sunspot_rails (>= 2.1.1)
|
||||
sunspot_solr
|
||||
temple (0.8.0)
|
||||
themes_for_rails (0.5.1)
|
||||
rails (>= 3.0.0)
|
||||
therubyracer (0.12.3)
|
||||
libv8 (~> 3.16.14.15)
|
||||
ref
|
||||
thor (0.20.0)
|
||||
tilt (1.4.1)
|
||||
tinymce-rails (4.1.10)
|
||||
railties (>= 3.1.1)
|
||||
treetop (1.4.15)
|
||||
polyglot
|
||||
polyglot (>= 0.3.1)
|
||||
tzinfo (0.3.54)
|
||||
uglifier (4.1.10)
|
||||
execjs (>= 0.3.0, < 3)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.5)
|
||||
unicorn (4.8.3)
|
||||
kgio (~> 2.6)
|
||||
rack
|
||||
raindrops (~> 0.7)
|
||||
warden (1.2.7)
|
||||
rack (>= 1.0)
|
||||
webrick (1.3.1)
|
||||
whenever (0.10.0)
|
||||
chronic (>= 0.6.3)
|
||||
xpath (2.1.0)
|
||||
nokogiri (~> 1.3)
|
||||
yaml_db (0.6.0)
|
||||
rails (>= 3.0, < 5.2)
|
||||
rake (>= 0.8.7)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
active_record_query_trace
|
||||
acts_as_votable
|
||||
annotate (~> 2.6.0)
|
||||
awesome_nested_set
|
||||
blueimp-gallery
|
||||
blueimp-gallery-rails
|
||||
bootstrap-addons-rails
|
||||
bootstrap-kaminari-views!
|
||||
bootstrap-sass (~> 2.3.2.1)
|
||||
cancan (~> 1.6.0)
|
||||
capybara (~> 2.5.0)
|
||||
carrierwave (~> 0.9.0)
|
||||
coffee-rails (~> 3.0)
|
||||
devise (~> 2.2.3)
|
||||
etherpad-lite
|
||||
execjs (~> 1.4.0)
|
||||
factory_girl_rails (~> 4.5.0)
|
||||
fb_graph (~> 2.7.17)
|
||||
font-awesome-rails
|
||||
formtastic (~> 2.2.1)
|
||||
formtastic-bootstrap (~> 3.0.0)
|
||||
git
|
||||
globalize (~> 3.0.4)
|
||||
globalize-accessors
|
||||
globalize-versioning
|
||||
haml
|
||||
jquery-datetimepicker-rails
|
||||
jquery-fileupload-rails (= 0.4.1)
|
||||
jquery-rails
|
||||
jquery-ui-rails (~> 4.1.0)
|
||||
kaminari
|
||||
meta-tags
|
||||
minitest (~> 4.7.5)
|
||||
mysql2 (~> 0.3.10)
|
||||
omniauth (~> 1.2.2)
|
||||
omniauth-facebook (~> 2.0.0)
|
||||
omniauth-ldap (~> 1.0.4)
|
||||
opengraph_parser
|
||||
paper_trail (~> 3.0.5)
|
||||
paperclip (~> 3.4.0)
|
||||
progress_bar
|
||||
rails (= 3.2.13)
|
||||
rake (~> 10.0)
|
||||
rmagick
|
||||
rolify (~> 4.0.0)
|
||||
rspec-activemodel-mocks (~> 1.0.1)
|
||||
rspec-collection_matchers (~> 1.1.2)
|
||||
rspec-core (~> 3.3.0)
|
||||
rspec-expectations (~> 3.3.1)
|
||||
rspec-html-matchers (~> 0.7.0)
|
||||
rspec-rails (~> 3.3.0)
|
||||
rspec-support (~> 3.3.0)
|
||||
rubyzip
|
||||
sanitize!
|
||||
sass-rails (~> 3.0)
|
||||
seed_dump (~> 0.5.3)
|
||||
shareable
|
||||
simple_calendar (~> 0.1.9)
|
||||
simplecov
|
||||
sitemap_generator
|
||||
sprockets (= 2.2.2)
|
||||
sqlite3
|
||||
sunspot_rails
|
||||
sunspot_solr
|
||||
sunspot_test
|
||||
themes_for_rails
|
||||
therubyracer
|
||||
tinymce-rails (~> 4.1.0)
|
||||
uglifier (>= 1.0.3)
|
||||
unicorn (~> 4.8.0)
|
||||
webrick (= 1.3.1)
|
||||
whenever
|
||||
yaml_db
|
||||
|
||||
BUNDLED WITH
|
||||
1.16.6
|
||||
11
README_productive.md
Normal file
11
README_productive.md
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
install ruby/fetsite requirements
|
||||
|
||||
do all the rvm stuff
|
||||
|
||||
apt-get install git
|
||||
|
||||
chown fetsite /srv
|
||||
|
||||
su fetsite
|
||||
cd /srv
|
||||
@@ -50,7 +50,7 @@ class NeuigkeitenController < ApplicationController
|
||||
end
|
||||
@calentry=ce
|
||||
ce.object=@neuigkeit
|
||||
@neuigkeit.calentry=ce
|
||||
@neuigkeit.calentries<<ce
|
||||
@neuigkeit.save
|
||||
|
||||
render 'edit'
|
||||
@@ -145,9 +145,10 @@ end
|
||||
@calentries<< Calentry.new
|
||||
|
||||
end
|
||||
|
||||
def find_link
|
||||
@rubrik=@neuigkeit.rubrik
|
||||
if can?(:shownonpublic, Rubrik)
|
||||
if can?(:shownonpublic, Rubrik)
|
||||
@rubriken = Rubrik.all
|
||||
else
|
||||
@rubriken = Rubrik.where(:public=>true)
|
||||
@@ -156,7 +157,8 @@ end
|
||||
@calentries1=@neuigkeit.calentries
|
||||
nlink_search = Neuigkeit::LINKTYPES.clone
|
||||
nlink_search.collect!{|t| t.constantize}
|
||||
# @nlink_search.collect!{|t| t.search(params[:query]).limit(2)}
|
||||
|
||||
# @nlink_search.collect!{|t| t.search(params[:query]).limit(2)}
|
||||
@results= Sunspot.search nlink_search do
|
||||
fulltext params[:query]
|
||||
end
|
||||
@@ -168,6 +170,7 @@ end
|
||||
|
||||
|
||||
end
|
||||
|
||||
def create_link
|
||||
@neuigkeit = Neuigkeit.find(params[:id])
|
||||
|
||||
@@ -178,6 +181,7 @@ end
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
def delete_link
|
||||
@neuigkeit = Neuigkeit.find(params[:id])
|
||||
@nlink = @neuigkeit.nlinks.find(params[:nlink_id])
|
||||
@@ -187,6 +191,7 @@ end
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
@neuigkeit = Neuigkeit.new(params[:neuigkeit])
|
||||
@neuigkeit.author=current_user
|
||||
|
||||
@@ -2,11 +2,23 @@
|
||||
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
||||
skip_before_filter :verify_authenticity_token
|
||||
def failure
|
||||
|
||||
# flash[:notice] = "Failure #{Hash.new(request.env)} #{Hash.new(params)}"
|
||||
#redirect_to new_user_registration_url , :notice=>"Omniauth Login failed"
|
||||
super
|
||||
end
|
||||
def developer
|
||||
if Rails.env.development?
|
||||
@user= User.find_for_developer_oauth(request.env["omniauth.auth"],current_user)
|
||||
if @user
|
||||
sign_in_and_redirect @user, event: :authentication
|
||||
else
|
||||
redirect_to new_user_registration_url
|
||||
end
|
||||
else
|
||||
flash[:notice]=flash[:notice] + "Still not logged in "
|
||||
redirect_to new_user_registration_url
|
||||
end
|
||||
end
|
||||
def facebook
|
||||
# You need to implement the method below in your model (e.g. app/models/user.rb)
|
||||
@user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
|
||||
@@ -23,7 +35,7 @@ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
||||
end
|
||||
|
||||
def ldap
|
||||
logger.debug current_user.to_s
|
||||
logger.debug current_user.to_s
|
||||
@user=User.find_for_ldap_oauth(request.env["omniauth.auth"],current_user)
|
||||
# @user=User.find_for_ldap_oauth(session["devise.ldap_data"],current_user)
|
||||
# @user=User.first
|
||||
|
||||
@@ -42,8 +42,9 @@ m.save
|
||||
# current_url1({:locale=>target_locale}) .sub "/"+I18n.locale.to_s+"/", "/"+target_locale.to_s+"/"
|
||||
language_path(locale: target_locale)
|
||||
end
|
||||
|
||||
def ffi1_icon (name)
|
||||
content_tag("i","", class: "ficon ffi1-"+name )
|
||||
content_tag("i", "", class: "ficon ffi1-" + name )
|
||||
end
|
||||
|
||||
def ffi2_icon (name)
|
||||
@@ -54,8 +55,11 @@ m.save
|
||||
end
|
||||
|
||||
def fa_stack(icon1, icon2)
|
||||
content_tag("span", content_tag("span", content_tag("i","", class: "ficon "+" fa-"+icon1+" fa fa-stack-1x" ) + content_tag("i","", class: "ficon "+" fa-"+icon2+" fa fa-stack-2x" ),class: "fa-stack "),class:"fa-stack-sm")
|
||||
h_1 = content_tag("span", content_tag("i","", class: "ficon "+" fa-"+icon1+" fa fa-stack-1x" ) + content_tag("i","", class: "ficon "+" fa-"+icon2+" fa fa-stack-2x" ),class: "fa-stack ")
|
||||
|
||||
h_2 = content_tag("span", h_1 ,class: "fa-stack-sm")
|
||||
|
||||
h_2
|
||||
end
|
||||
def ffi1_list
|
||||
y=YAML.load_file("#{::Rails.root.to_s}/config/flatfeticon1.yml")
|
||||
|
||||
@@ -72,7 +72,7 @@ class Document < ActiveRecord::Base
|
||||
unless self.is_etherpad? || self.id.nil?
|
||||
self.etherpadkey="document_"+ self.id.to_s
|
||||
|
||||
if self.text.nill?
|
||||
if self.text.nil?
|
||||
self.ep_pad.html = '<div>'+"text"+'</div>'
|
||||
else
|
||||
self.ep_pad.html = '<div>'+self.text+'</div>'
|
||||
@@ -81,7 +81,7 @@ class Document < ActiveRecord::Base
|
||||
end
|
||||
def dump_to_etherpad
|
||||
if self.is_etherpad?
|
||||
if self.text.nill?
|
||||
if self.text.nil?
|
||||
self.ep_pad.html = '<div>'+"text"+'</div>'
|
||||
else
|
||||
self.ep_pad.html = '<div>'+self.text+'</div>'
|
||||
|
||||
@@ -30,6 +30,9 @@ class Gremium < ActiveRecord::Base
|
||||
end
|
||||
|
||||
belongs_to :thema # Gehört zu einem Thema
|
||||
validates :name, :presence=>true
|
||||
validates :typ, :presence=>true
|
||||
validates :typ, :inclusion =>{ in: Gremium::TYPEN.keys()}
|
||||
scope :tabs, -> { where(:typ => [1,3]).order(:typ).order(:name) } # Gremien die in Tabs angezeigt werden (Alle Anderen nur in der Liste
|
||||
|
||||
|
||||
|
||||
@@ -18,21 +18,6 @@
|
||||
# typ :string(255)
|
||||
#
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: lvas
|
||||
#
|
||||
# id :integer not null, primary key
|
||||
# name :string(255)
|
||||
# desc :text
|
||||
# ects :decimal
|
||||
# lvanr :string(255)
|
||||
# stunden :decimal
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# modul_id :integer
|
||||
# semester_id :integer
|
||||
|
||||
class Lva < ActiveRecord::Base
|
||||
ERLAUBTE_TYPEN = ['VO', 'UE', 'VU', 'LU', 'SE', 'PR', 'andere'];
|
||||
translates :desc,:pruefungsinformation, :fallbacks_for_empty_translations => true, :versioning=> :paper_trail #true #{:gem=>:paper_trail}
|
||||
@@ -113,7 +98,7 @@ class Lva < ActiveRecord::Base
|
||||
url
|
||||
end
|
||||
|
||||
|
||||
# this should be more DRY
|
||||
def load_tissdata
|
||||
urlp="https://tiss.tuwien.ac.at/api/course/"+ lvanr.to_s.gsub(".","")+"-"
|
||||
begin
|
||||
@@ -202,7 +187,8 @@ class Lva < ActiveRecord::Base
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# Why is this an instance method??
|
||||
# How is it used?
|
||||
def update_multiple(hash)
|
||||
newlvas=[]
|
||||
params["lvas"].each do |i,l|
|
||||
@@ -237,7 +223,7 @@ class Lva < ActiveRecord::Base
|
||||
lecturers.map { |l| l.name }
|
||||
end
|
||||
end
|
||||
|
||||
# is this used? in which context?
|
||||
def self.update_multiple_with_modul(hash,modul)
|
||||
newlvas=[]
|
||||
hash.each do |i,l|
|
||||
@@ -263,7 +249,7 @@ class Lva < ActiveRecord::Base
|
||||
|
||||
end
|
||||
|
||||
|
||||
# is this used? in which context?
|
||||
def read_et_forum
|
||||
lva=self
|
||||
url=lva.forumlink
|
||||
|
||||
@@ -1,40 +1,58 @@
|
||||
|
||||
# coding: utf-8
|
||||
# This class represents a single meeting of a group or the whole Fachschaft.
|
||||
#
|
||||
class Meeting < ActiveRecord::Base
|
||||
belongs_to :parent, :polymorphic=>true, touch: true
|
||||
belongs_to :meetingtyp
|
||||
|
||||
attr_accessible :desc, :intern, :name, :parent_id, :parent_type, :calentry,:calentry_attributes, :meetingtyp_id
|
||||
|
||||
# Meeting can belong to different kind of parents e.g. topics
|
||||
belongs_to :parent, :polymorphic=>true, touch: true
|
||||
# Each meeting should have a type, for more information see MeetingTyp
|
||||
belongs_to :meetingtyp
|
||||
# Belongs to a news article, that is usually the Announcement of that meeting
|
||||
belongs_to :neuigkeit, touch: true
|
||||
# has one protocol of type Document, which is of typ=10=protocol
|
||||
has_one :protocol, :class_name=>'Document', :conditions=>{:typ=>10}, :as=>:parent
|
||||
# has one agenda of type Document
|
||||
has_one :agenda , :as=>:parent,:conditions=>{:typ=>11}, :class_name=>'Document'
|
||||
# has one calentry which contains the date and time of this meeting
|
||||
has_one :calentry, as: :object, :dependent=> :destroy
|
||||
# has one calendar through the meetingtyp, thus each meeting is put into a calendar
|
||||
has_one :calendar, :through=>:meetingtyp
|
||||
# has one rubrik, thus it is associated to a rubrik
|
||||
has_one :rubrik, :through=>:meetingtyp
|
||||
|
||||
# scope upcomming only contains meetings in the future and 1 hour into the past
|
||||
scope :upcomming, includes(:calentry).where("calentries.start>?",1.hour.ago)
|
||||
default_scope includes(:calentry).order("calentries.start").reverse_order
|
||||
accepts_nested_attributes_for :calentry
|
||||
# validate :agenda, :presence=>true
|
||||
# validate :protocol, :presence=>true
|
||||
|
||||
# Each meeting is required to have a parent otherwise it will not be shown anywhere on the website
|
||||
validate :parent, :presence=>true
|
||||
# Each meeting needs a calendar entry
|
||||
validate :calentry, :presence=>true
|
||||
|
||||
|
||||
# before each validation fix the calendar entry such that it is always
|
||||
before_validation :fix_calentry
|
||||
|
||||
# title is an alias for text
|
||||
def title
|
||||
self.text
|
||||
end
|
||||
|
||||
# Text is a text representation of the meeting
|
||||
def text
|
||||
unless self.meetingtyp.try(:name).to_s.empty?
|
||||
t = self.meetingtyp.name.to_s+", "
|
||||
else
|
||||
t=""
|
||||
t = parent.title.to_s + ", " if self.name.empty?
|
||||
end
|
||||
t = self.meetingtyp.try(:name) || self.parent.try(:title) || ""
|
||||
t = t + ", " unless t.empty?
|
||||
t= t+ self.name.to_s
|
||||
# t = t + " " + I18n.l(self.calentry.start) unless self.calentry.nil?
|
||||
t = t +" "+ I18n.t("date.am")+" "+ self.calentry.text unless self.calentry.nil?
|
||||
t
|
||||
end
|
||||
|
||||
# Creante an anouncement with an author
|
||||
# @param user is the author
|
||||
def create_announcement(user)
|
||||
if self.neuigkeit.nil?
|
||||
n = Neuigkeit.new
|
||||
@@ -48,32 +66,40 @@ class Meeting < ActiveRecord::Base
|
||||
self.neuigkeit= n
|
||||
end
|
||||
end
|
||||
|
||||
# Update the title of the announcement to the text of this meeting
|
||||
# @returns [true] if save was successful
|
||||
def update_announcement
|
||||
n=self.neuigkeit
|
||||
n.title=self.text
|
||||
n.save
|
||||
|
||||
end
|
||||
|
||||
# fixing the calendar entry and the calendar
|
||||
# most importantly the calendar of the calentry
|
||||
def fix_calentry
|
||||
self.calentry.object=self unless self.calentry.nil?
|
||||
self.calentry.calendar = self.meetingtyp.rubrik.calendar
|
||||
end
|
||||
|
||||
def public?
|
||||
! (self.intern)
|
||||
end
|
||||
|
||||
# Create a Document that is a protocol for the meeting
|
||||
def create_protocol
|
||||
if self.protocol.nil?
|
||||
if self.protocol.nil? # if no protocol exists
|
||||
d=Document.new
|
||||
d.typ=10
|
||||
d.name="Protokoll"
|
||||
unless self.meetingtyp.protocol.nil?
|
||||
d.text=self.meetingtyp.protocol.text
|
||||
end
|
||||
d.save
|
||||
self.protocol=d
|
||||
end
|
||||
|
||||
# what happens if a protocol already exists?
|
||||
end
|
||||
|
||||
# Create a calender entry for this meeting
|
||||
def create_calentry
|
||||
if self.calentry.nil?
|
||||
ce =Calentry.new
|
||||
@@ -86,9 +112,6 @@ class Meeting < ActiveRecord::Base
|
||||
d=Document.new
|
||||
d.typ=11
|
||||
d.name="Agenda"
|
||||
unless self.meetingtyp.agenda.nil?
|
||||
d.text=self.meetingtyp.agenda.text
|
||||
end
|
||||
d.save
|
||||
self.agenda=d
|
||||
end
|
||||
@@ -112,27 +135,17 @@ class Meeting < ActiveRecord::Base
|
||||
|
||||
def update_time_from_protocol
|
||||
st= /Beginn[\s:]*([^<>]*)/.match(self.protocol.text)[1].to_s
|
||||
st= /Anfang[\s:]*([^<>]*)/.match(self.protocol.text)[1].to_s if st.empty?
|
||||
self.calentry.start=(self.calentry.start.to_date.to_s + " " +st).to_datetime unless st.empty?
|
||||
st= /Ende[\s:]*([^<>]*)/.match(self.protocol.text)[1].to_s
|
||||
self.calentry.ende=(self.calentry.ende.to_date.to_s + " " +st).to_datetime unless st.empty?
|
||||
st= /Anfang[\s:]*([^<>]*)/.match(self.protocol.text)[1].to_s if st.nil? || st.empty?
|
||||
self.calentry.start=(self.calentry.start.to_date.to_s + " " +st).to_datetime unless st.nil? || st.empty?
|
||||
st= /Ende[\s:]*([^<>]*)/.match(self.protocol.text).try(:second).try(:to_s )
|
||||
self.calentry.ende=(self.calentry.ende.to_date.to_s + " " +st).to_datetime unless st.nil? || st.empty?
|
||||
end
|
||||
def agenda_text
|
||||
unless self.agenda.nil?
|
||||
t= self.agenda.text
|
||||
else
|
||||
t= ""
|
||||
end
|
||||
t
|
||||
return self.agenda.try(:text) || ""
|
||||
end
|
||||
def protocol_text
|
||||
unless self.protocol.nil?
|
||||
t= self.protocol.text
|
||||
else
|
||||
t= ""
|
||||
end
|
||||
t
|
||||
end
|
||||
return self.protocol.try(:text) || ""
|
||||
end
|
||||
|
||||
searchable do
|
||||
text :text
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
class Meetingtyp < ActiveRecord::Base
|
||||
attr_accessible :agendaintern, :desc, :name, :protocolintern, :rubrik_id, :picture
|
||||
belongs_to :rubrik
|
||||
validate :rubrik, :presence=>true
|
||||
validates :rubrik, :presence=>true
|
||||
validates :name, :presence=>true
|
||||
has_many :meetings
|
||||
has_one :calendar, through: :rubrik
|
||||
has_one :protocol, :class_name=>'Document', :conditions=>{:typ=>10}, :as=>:parent
|
||||
|
||||
@@ -29,13 +29,34 @@ class User < ActiveRecord::Base
|
||||
# Include default devise modules. Others available are:
|
||||
# :token_authenticatable, :confirmable,
|
||||
# :lockable, :timeoutable and :omniauthable
|
||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable,:omniauthable, :omniauth_providers => [:facebook,:ldap]
|
||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable,:omniauthable, :omniauth_providers => [:facebook,:ldap,:developer]
|
||||
acts_as_voter
|
||||
# Setup accessible (or protected) attributes for your model
|
||||
attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid, :name
|
||||
belongs_to :fetprofile
|
||||
# attr_accessible :title, :body
|
||||
def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
|
||||
|
||||
def self.find_for_developer_oauth(auth, signed_in_resource=nil)
|
||||
# logger.debug("Developer Login started")
|
||||
# logger.debug(auth.info.to_s)
|
||||
|
||||
# logger.debug(auth.extra.raw_info.to_s)
|
||||
email = auth.info.email.to_s
|
||||
logger.debug("Login E-Mail:"+"'"+ email+"'")
|
||||
user= User.where(:provider=>auth.provider,:uid=>email).first
|
||||
unless user
|
||||
user= User.create(name: email,
|
||||
provider: auth.provider,
|
||||
uid: email,
|
||||
email: email,
|
||||
password:Devise.friendly_token[0,20])
|
||||
user.add_role("fetuser")
|
||||
|
||||
end
|
||||
user
|
||||
end
|
||||
|
||||
def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
|
||||
logger.debug auth.to_s
|
||||
logger.debug "DDD Username= #{auth.username}"
|
||||
user = User.where(:provider => auth.provider, :uid => auth.uid).first
|
||||
|
||||
@@ -24,6 +24,4 @@
|
||||
<div><%= f.submit "Sign in" %></div>
|
||||
<% end %>
|
||||
|
||||
|
||||
|
||||
<%= render "devise/shared/links" %>
|
||||
|
||||
@@ -8,10 +8,9 @@ top: 0" %>
|
||||
<% #, gallery_foto_path(@foto.gallery, ((@foto.gallery.fotos[@foto.gallery.fotos.index(@foto)+1].nil?) ? (@foto.gallery.fotos[0].try(:id).to_i) : @foto.gallery.fotos[@foto.gallery.fotos.index(@foto)+1].try(:id).to_i) ) %>
|
||||
<div style="position:absolute; bottom:0; ">
|
||||
<%= link_to ff_icon('icon-circle-arrow-down').html_safe, @foto.datei.url,
|
||||
:class=>"btn",title: I18n.t('fotos.download')+': '+@foto.title,:target=>:blank, :style=>"" %>
|
||||
:class=>"btn",title: I18n.t('fotos.download')+': '+@foto.title.to_s,:target=>:blank, :style=>"" %>
|
||||
<!-- <div class="fb-like" data-href"<%= gallery_foto_path(@foto.gallery,@foto, {fotoid:@foto.id,theme: nil, locale: nil})%>" data-layout="standard" data-action="like" data-show-faces="true" data-share="true"></div>-->
|
||||
<%= render_shareable :url=>gallery_foto_url(@foto.gallery,@foto, {theme: nil, locale: nil}),:static_link=>true, :buttons=>[:facebook, :twitter, :google_plus] %>
|
||||
<p id="notice"><%= notice %></p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@@ -145,9 +145,12 @@ end
|
||||
</div>
|
||||
</div>
|
||||
<%= link_to ff_icon('icon-circle-arrow-down').html_safe, f.datei.url,
|
||||
:class=>"btn-small",title: I18n.t('fotos.download')+': '+f.title.to_s, rel: 'tooltip' %>
|
||||
:class=>"btn-small",title: I18n.t('fotos.download').to_s+': '+f.title.to_s, rel: 'tooltip' %>
|
||||
<%= link_to ff_icon('icon-remove-circle').html_safe, gallery_foto_path(@gallery, f),
|
||||
:method => :delete, :class=>"btn-small btn-danger",title: I18n.t('fotos.delete')+': '+f.title, rel: 'tooltip', confirm: I18n.t('fotos.delete')+': '+f.title+', Sicher?' if can?(:delete,f) %>
|
||||
:method => :delete, :class=>"btn-small btn-danger",
|
||||
title: I18n.t('fotos.delete').to_s+': '+f.title.to_s, rel: 'tooltip',
|
||||
confirm: I18n.t('fotos.delete').to_s+': '+f.title.to_s+',
|
||||
Sicher?' if can?(:delete,f) %>
|
||||
<p></p>
|
||||
</div>
|
||||
<% end %>
|
||||
@@ -221,5 +224,3 @@ end
|
||||
* html .fb-like{display:inline}/* ie6 inline block fix*/
|
||||
*+html .fb-like{display:inline}/* ie7 inline block fix*/
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<%= stylesheet_link_tag "themes/"+theme_name+"/application", :media => "all" unless theme_name.empty? %>
|
||||
<%= stylesheet_link_tag "application", :media=>"all" if theme_name.empty? %>
|
||||
<%= stylesheet_link_tag "infoscreenframe.css" %>
|
||||
<%= stylesheet_link_tag "/iframe/infoscreenframe.css" %>
|
||||
|
||||
<%= javascript_include_tag "application" %>
|
||||
<%= javascript_include_tag "jmpress" %>
|
||||
|
||||
@@ -43,9 +43,20 @@
|
||||
<li><%= link_to image_tag("/flaggen/png/gb.png") + " English" ,switch_locale_url(:en)%> </li>
|
||||
|
||||
</ul></div>
|
||||
</li><li>
|
||||
<%= link_to ffi1_icon("academic") + I18n.t('home.login'), user_omniauth_authorize_path(:ldap) %>
|
||||
<%# render 'layouts/login' %>
|
||||
</li>
|
||||
<li>
|
||||
<% if not user_signed_in? %>
|
||||
<% if Rails.env.development? %>
|
||||
<%# link_to I18n.t('home.login'), user_omniauth_authorize_path(:developer) %>
|
||||
<%= render 'layouts/login' %>
|
||||
|
||||
<% else %>
|
||||
<%= link_to ffi1_icon("academic") + I18n.t('home.login'), user_omniauth_authorize_path(:ldap) %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<%= render 'layouts/login' %>
|
||||
<% end %>
|
||||
|
||||
</li></ul>
|
||||
|
||||
<!--<span class="pull-right"><%if I18n.locale == :en %>
|
||||
|
||||
@@ -225,6 +225,7 @@ Devise.setup do |config|
|
||||
# up on your models and hooks.
|
||||
#config.omniauth :facebook, 'appid', 'secret'
|
||||
secrets = YAML.load_file("#{::Rails.root.to_s}/config/omniauth_secrets.yml")
|
||||
config.omniauth :developer,:title => "Developer" unless Rails.env.production?
|
||||
config.omniauth :facebook, secrets["facebook"]["appid"], secrets["facebook"]["secret"]
|
||||
config.omniauth :ldap, :title => "My LDAP",
|
||||
:host => secrets["ldap"]["host"],
|
||||
@@ -236,6 +237,8 @@ Devise.setup do |config|
|
||||
:bind_dn =>secrets["ldap"]['bind'],
|
||||
:password => secrets["ldap"]['password']
|
||||
|
||||
|
||||
|
||||
# ==> Warden configuration<<
|
||||
# If you want to use other strategies, that are not supported by Devise, or
|
||||
# change the failure app, you can configure them inside the config.warden block.
|
||||
|
||||
@@ -72,6 +72,7 @@ end
|
||||
end
|
||||
end
|
||||
devise_for :users , :controllers=>{:omniauth_callbacks=> "users/omniauth_callbacks"}
|
||||
#match '/auth/:provider/callback', to: "session#new", via: [:get, :post]
|
||||
|
||||
|
||||
scope '(:locale)', constraints: {:locale=>/en|de/i} do
|
||||
@@ -160,8 +161,26 @@ end
|
||||
resources :fragen, :only =>[:new, :edit, :update, :destroy, :create]
|
||||
|
||||
|
||||
resources :neuigkeiten, :only => [:show] , constraints: {id: /\d+/i}
|
||||
resources :neuigkeiten, :only => [:show] , constraints: {id: /\d+/i} do
|
||||
member do
|
||||
get 'publish'
|
||||
get 'unpublish'
|
||||
get 'add_calentry'
|
||||
get 'rm_calentry'
|
||||
get 'create_link'
|
||||
get 'delete_link'
|
||||
get 'find_link'
|
||||
get 'publish_to_facebook'
|
||||
get 'mail_to_fet'
|
||||
get 'mail_preview'
|
||||
get 'flag'
|
||||
end
|
||||
collection do
|
||||
get 'newsletter_preview'
|
||||
end
|
||||
end
|
||||
get "neuigkeiten", controller: :rubriken, action: :index, as: "neuigkeiten"
|
||||
|
||||
resources :rubriken do
|
||||
collection do
|
||||
get 'verwalten' , :action => :alle_verwalten
|
||||
|
||||
@@ -2,18 +2,22 @@ production:
|
||||
solr:
|
||||
hostname: localhost
|
||||
port: 8080
|
||||
log_level: WARNING
|
||||
path: /solr-4.10.2/default #production #ollection1 #production
|
||||
# log_level: WARNING
|
||||
# min_memory: 32M
|
||||
# max_memory: 1G
|
||||
# path: /solr-4.10.2/default #production #ollection1 #production
|
||||
# solr_home: solr
|
||||
# read_timeout: 2
|
||||
# open_timeout: 0.5
|
||||
|
||||
development:
|
||||
solr:
|
||||
hostname: triton-amp.local
|
||||
port: 8080
|
||||
hostname: localhost
|
||||
port: 8983
|
||||
log_level: INFO
|
||||
path: /solr/mycore
|
||||
path: /solr/fetsite_test
|
||||
# min_memory: 32M
|
||||
# max_memory: 1G
|
||||
# solr:
|
||||
# hostname: localhost
|
||||
# port: 8983
|
||||
|
||||
@@ -66,7 +66,7 @@ module Flagable
|
||||
value=obj.send("flag_"+flag)
|
||||
cstyle=(value) ? "true" :"false"
|
||||
cfm = (fc.nil? || fc["flag_"+flag].nil?) ? {} : {confirm: fc["flag_"+flag]}
|
||||
link_to ff_icon(fi[flag]), url_for({controller: obj.class.name.tableize,action: :flag, flag: flag, value: !value, theme: nil, locale: nil, id: obj.id}), remote: true, class:("flag-"+cstyle +" flag-"+flag + "-"+cstyle ), id: obj.flaglinkid(flag), data: cfm
|
||||
link_to ff_icon(fi[flag]), url_for({controller: obj.class.name.tableize,action: :flag, flag: flag, value: !value, theme: nil, locale: nil, id: obj.id}), remote: true, class: ("flag-"+cstyle +" flag-"+flag + "-"+cstyle ), id: obj.flaglinkid(flag), data: cfm
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
176
spec/controllers/neuigkeiten_controller_spec.rb
Normal file
176
spec/controllers/neuigkeiten_controller_spec.rb
Normal file
@@ -0,0 +1,176 @@
|
||||
#require 'rails_helper'
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe NeuigkeitenController, :type => :controller do
|
||||
|
||||
let(:neuigkeit) {(FactoryGirl.create(:neuigkeit, :with_rubrik))}
|
||||
let(:intern_neuigkeit) {(FactoryGirl.create(:neuigkeit,:with_intern_rubrik))}
|
||||
|
||||
let(:valid_session) {{}}
|
||||
|
||||
# setting up shared examples
|
||||
let(:object_class) {Neuigkeit}
|
||||
let(:object_variable) {:neuigkeit}
|
||||
let(:assigned_object_variable){neuigkeit}
|
||||
|
||||
#let(:allow_fet_user) {allow(@controller).to receive(:current_user).and_return(fet_user)}
|
||||
let(:object_url) {rubrik_neuigkeit_url(neuigkeit.rubrik,neuigkeit)}
|
||||
|
||||
|
||||
describe "GET #show" do
|
||||
let(:action) { get :show, {id: neuigkeit.id, rubrik_id: neuigkeit.rubrik.id}}
|
||||
|
||||
it_behaves_like "it is success"
|
||||
it_behaves_like "it assigns object"
|
||||
|
||||
context "with internal news" do
|
||||
let(:action) { get :show, {id: intern_neuigkeit.id, rubrik_id: intern_neuigkeit.rubrik.id}}
|
||||
it_behaves_like "it is restricted"
|
||||
|
||||
context "with fet user" do
|
||||
with_fet_user
|
||||
it_behaves_like "it is success"
|
||||
end
|
||||
end
|
||||
|
||||
it "denys access to unpublished news" do
|
||||
neuigkeit=FactoryGirl.create(:neuigkeit, :with_rubrik, :unpublished)
|
||||
get :show, {id: neuigkeit.id}, valid_session
|
||||
expect(response).to have_http_status(302)
|
||||
end
|
||||
|
||||
|
||||
context "with rendered views" do
|
||||
render_views
|
||||
before do
|
||||
neuigkeit.rubrik
|
||||
intern_neuigkeit
|
||||
end
|
||||
|
||||
it "shows the name" do
|
||||
action
|
||||
expect(response.body).to match neuigkeit.name
|
||||
end
|
||||
it "has only links to external rubrik" do
|
||||
get :show, {id: neuigkeit.id}, valid_session
|
||||
expect(response.body).to match neuigkeit.rubrik.name
|
||||
expect(response.body).not_to match intern_neuigkeit.rubrik.name
|
||||
end
|
||||
|
||||
context "and fet user" do
|
||||
with_fet_user
|
||||
it "has all links to internal and external rubriken" do
|
||||
action
|
||||
expect(response.body).to match intern_neuigkeit.rubrik.name
|
||||
expect(response.body).to match neuigkeit.rubrik.name
|
||||
end
|
||||
end
|
||||
it "shows datum in response" do
|
||||
action
|
||||
expect(response.body).to match I18n.l(neuigkeit.datum.to_date)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
describe "GET#edit" do
|
||||
let(:action) { get :edit, {id: neuigkeit.id, rubrik_id: neuigkeit.rubrik.id}}
|
||||
it_behaves_like "default edit action"
|
||||
end
|
||||
|
||||
describe "GET #new" do
|
||||
let(:action) { get :new, {rubrik_id: neuigkeit.rubrik.id}}
|
||||
it_behaves_like "default new action"
|
||||
end
|
||||
|
||||
describe "GET add_calentry" do
|
||||
let(:action) { get :add_calentry, {id: neuigkeit.id, rubrik_id: neuigkeit.rubrik.id}}
|
||||
|
||||
it_behaves_like "it is restricted"
|
||||
context "with fet user" do
|
||||
with_fet_user
|
||||
it_behaves_like "it is success"
|
||||
it "renders edit template" do
|
||||
expect(action).to render_template(:edit)
|
||||
end
|
||||
|
||||
it "adds calentry to neuigkeit" do
|
||||
action
|
||||
expect(assigns(:neuigkeit).calentries).not_to be_empty
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET unpublish" do
|
||||
let(:action) {get :unpublish, {id: neuigkeit.id, rubrik_id: neuigkeit.rubrik.id}}
|
||||
it_behaves_like "it is restricted"
|
||||
context "with fet user" do
|
||||
with_fet_user
|
||||
it "redirects to neuigkeit" do
|
||||
expect(action).to redirect_to(rubrik_neuigkeit_url(neuigkeit.rubrik,neuigkeit))
|
||||
end
|
||||
it "assignes unpublished neuigkeit" do
|
||||
action
|
||||
expect(assigns(:neuigkeit)).not_to be_published
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET publish" do
|
||||
let(:action) {get :publish, {id: neuigkeit.id, rubrik_id: neuigkeit.rubrik.id}}
|
||||
it_behaves_like "it is restricted"
|
||||
context "with fet user" do
|
||||
with_fet_user
|
||||
it "redirects to neuigkeit" do
|
||||
expect(action).to redirect_to(rubrik_neuigkeit_url(neuigkeit.rubrik,neuigkeit))
|
||||
end
|
||||
it "assignes published neuigkeit" do
|
||||
action
|
||||
expect(assigns(:neuigkeit)).to be_published
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
describe "POST create" do
|
||||
let(:action) {post :create, {rubrik_id: neuigkeit.rubrik.id, neuigkeit: FactoryGirl.attributes_for(:neuigkeit)}}
|
||||
|
||||
it_behaves_like "it is restricted"
|
||||
|
||||
context "with fet user" do
|
||||
with_fet_user
|
||||
it_behaves_like "it is success"
|
||||
it "adds 1 Neuigkeit" do
|
||||
expect{action}.to change { Neuigkeit.count}.by(1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "PUT update" do
|
||||
let(:action) {put :update, {id: neuigkeit.id, rubrik_id: neuigkeit.rubrik.id}}
|
||||
it_behaves_like "it is a restricted action"
|
||||
context "with fet user" do
|
||||
with_fet_user
|
||||
it_behaves_like "it assigns persisted object"
|
||||
it "redirects to neuigkeit" do
|
||||
expect(action).to redirect_to rubrik_neuigkeit_url(neuigkeit.rubrik, neuigkeit)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
pending "destroy"
|
||||
pending "load_toolbar_elements"
|
||||
|
||||
|
||||
pending "publish_to_facebook"
|
||||
pending "mail_to_fet"
|
||||
pending "mail_preview"
|
||||
pending "newsletter_preview"
|
||||
pending "find_link"
|
||||
pending "create_link"
|
||||
pending "delete_link"
|
||||
|
||||
|
||||
end
|
||||
36
spec/controllers/shared_examples/default_actions.rb
Normal file
36
spec/controllers/shared_examples/default_actions.rb
Normal file
@@ -0,0 +1,36 @@
|
||||
shared_examples "public show action" do
|
||||
end
|
||||
|
||||
shared_examples "it is a restricted action" do
|
||||
it_behaves_like "it is restricted"
|
||||
it_behaves_like "it assigns object"
|
||||
context "with fet user" do
|
||||
with_fet_user
|
||||
it "redirects to object url" do
|
||||
expect(action).to redirect_to(object_url)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
shared_examples "default edit action" do
|
||||
it_behaves_like "it is restricted"
|
||||
it_behaves_like "it assigns object"
|
||||
it_behaves_like "it assigns persisted object"
|
||||
context "with fet user" do
|
||||
with_fet_user
|
||||
it_behaves_like "it is success"
|
||||
end
|
||||
end
|
||||
shared_examples "default new action" do
|
||||
include_examples "it assigns new object"
|
||||
include_examples "it is restricted"
|
||||
context "with fet user" do
|
||||
with_fet_user
|
||||
it_behaves_like "it is success"
|
||||
it_behaves_like "it assigns new object"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
@@ -4,5 +4,6 @@ FactoryGirl.define do
|
||||
factory :calendar do
|
||||
name "MyString"
|
||||
public false
|
||||
association :rubrik, factory: :rubrik
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,9 +2,12 @@
|
||||
|
||||
FactoryGirl.define do
|
||||
factory :calentry do
|
||||
start "2013-08-05 21:17:10"
|
||||
start 1.hours.ago
|
||||
ende "2013-08-05 21:17:10"
|
||||
summary "MyString"
|
||||
typ 1
|
||||
|
||||
association :calendar, factory: :calendar
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,10 +1,23 @@
|
||||
FactoryGirl.define do
|
||||
factory :meeting do
|
||||
name "MyString"
|
||||
desc "MyText"
|
||||
parent nil
|
||||
intern false
|
||||
meetingtyp nil
|
||||
desc "MyText"
|
||||
parent nil
|
||||
intern false
|
||||
meetingtyp nil
|
||||
# association :calentry, factory: :calentry
|
||||
|
||||
after(:build) do |c|
|
||||
c.calentry=FactoryGirl.build(:calentry, typ: 2)
|
||||
|
||||
end
|
||||
|
||||
trait :with_meetingtyp do
|
||||
association :meetingtyp, factory: :meetingtyp
|
||||
end
|
||||
# trait :without_calentry do
|
||||
# calentry nil
|
||||
# end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
FactoryGirl.define do
|
||||
factory :meetingtyp do
|
||||
name "MyString"
|
||||
desc "MyText"
|
||||
agendaintern false
|
||||
protocolintern false
|
||||
desc "MyText"
|
||||
agendaintern false
|
||||
protocolintern false
|
||||
association :rubrik, factory: :rubrik
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,7 +1,29 @@
|
||||
FactoryGirl.define do
|
||||
sequence (:title) {|n| "Wichtige Neuigkeit #{n}"}
|
||||
sequence (:text) {|n| "Wichtiger text #{n}"}
|
||||
factory :neuigkeit do
|
||||
title "WIChtige Neuigkeit"
|
||||
text "<p> Das ist eine wichtige Information </p>"
|
||||
title
|
||||
text
|
||||
datum 1.days.ago
|
||||
association :author, factory: :user
|
||||
|
||||
trait :with_rubrik do
|
||||
association :rubrik, factory: :rubrik, public: true
|
||||
end
|
||||
trait :with_intern_rubrik do
|
||||
association :rubrik, factory: :rubrik, public: false, name: "InterneRubrik"
|
||||
end
|
||||
trait :with_meeting do
|
||||
after(:build) do |n|
|
||||
n.meeting=FactoryGirl.build(:meeting, :with_meetingtyp)
|
||||
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
trait :unpublished do
|
||||
datum nil
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,5 +2,6 @@ FactoryGirl.define do
|
||||
factory :rubrik do
|
||||
name "Allgemeine"
|
||||
desc "Allgemeine Test News"
|
||||
end
|
||||
public true
|
||||
end
|
||||
end
|
||||
|
||||
15
spec/factories/semester_factory.rb
Normal file
15
spec/factories/semester_factory.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
FactoryGirl.define do
|
||||
factory :semester do
|
||||
nummer 2
|
||||
|
||||
factory :zero_semester do
|
||||
|
||||
nummer 0
|
||||
end
|
||||
factory :first_semester do
|
||||
|
||||
nummer 1
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -10,7 +10,7 @@ FactoryGirl.define do
|
||||
|
||||
factory :other_studium do
|
||||
name "Telecommunication"
|
||||
desc "frueher Telekommungikation"
|
||||
desc "frueher Telekommunikation"
|
||||
zahl "066507"
|
||||
typ "Master"
|
||||
end
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
|
||||
@@ -1,11 +1,19 @@
|
||||
FactoryGirl.define do
|
||||
sequence (:email) {|n| "testuser#{n}@fet.at"}
|
||||
factory :user do
|
||||
email "testuser@test.at"
|
||||
email
|
||||
password "password"
|
||||
password_confirmation "password"
|
||||
factory :other_user do
|
||||
email "othertest@test.at"
|
||||
end
|
||||
trait :fetuser do
|
||||
after(:create) do |user|
|
||||
user.add_role("fetuser")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
@@ -2,4 +2,13 @@ require 'spec_helper'
|
||||
|
||||
describe Calendar do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
let(:rubrik) {FactoryGirl.create(:rubrik)}
|
||||
let(:calendar) {FactoryGirl.build(:calendar, rubrik_id: rubrik.id)}
|
||||
it "should be valid" do
|
||||
expect(calendar).to be_valid
|
||||
end
|
||||
|
||||
it "should be created" do
|
||||
expect(calendar.save).to be true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,27 +1,35 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe Gremium do
|
||||
it "can be created" do
|
||||
g=FactoryGirl.build(:gremium)
|
||||
expect(g.save).to be true
|
||||
end
|
||||
it "is valid with all attributes" do
|
||||
g = FactoryGirl.build(:gremium)
|
||||
g.should be_valid
|
||||
end
|
||||
let(:gremium) {FactoryGirl.build(:gremium)}
|
||||
let(:object_variable){gremium}
|
||||
it_behaves_like "a valid object"
|
||||
|
||||
[:name,:typ].each do |attr|
|
||||
it "should not be valid without #{attr}" do
|
||||
g = FactoryGirl.build(:gremium)
|
||||
g.send("#{attr}=".to_sym,nil)
|
||||
it "is not valid without #{attr}" do
|
||||
g = FactoryGirl.build(:gremium,attr.to_sym => nil)
|
||||
expect(g).not_to be_valid
|
||||
expect(g.errors[attr]).to have_at_least(1).items
|
||||
|
||||
end
|
||||
end
|
||||
it "is in tabs if typ is 1 or 3" do
|
||||
|
||||
pending "only accepts valid types"
|
||||
pending "only accepts valid geschlecht"
|
||||
|
||||
it "is not valid with wrong typ" do
|
||||
((-5..30).to_a-Gremium::TYPEN.keys()).each do |i|
|
||||
g = FactoryGirl.build(:gremium, typ: i)
|
||||
expect(g).not_to be_valid
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
it "is in tabs if typ is 1" do
|
||||
g = FactoryGirl.create(:gremium, typ: 1)
|
||||
expect(Gremium.tabs).to eq([g])
|
||||
end
|
||||
|
||||
|
||||
it "is not in tabs if typ is not 1 or 3" do
|
||||
g = FactoryGirl.create(:gremium, typ: 2)
|
||||
expect(Gremium.tabs).to eq([])
|
||||
|
||||
@@ -3,9 +3,53 @@ require 'spec_helper'
|
||||
describe Lva, :type=>:model do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
let_studium_lva
|
||||
before(:each) do
|
||||
@l = FactoryGirl.build(:lva)
|
||||
|
||||
it "should be valid" do
|
||||
expect(lva).to be_valid
|
||||
end
|
||||
it "should respond to semesters" do
|
||||
expect(lva.respond_to?(:semester)).to be true
|
||||
end
|
||||
it "should be give empty string for typ_n if typ is andere" do
|
||||
lva.typ="andere"
|
||||
expect(lva.typ_n).to eq("")
|
||||
end
|
||||
|
||||
it "should have title as an alias for name" do
|
||||
lva.name="sdfWER"
|
||||
expect(lva.title).to eq("sdfWER")
|
||||
end
|
||||
it "should have a full name containing typ and name" do
|
||||
lva.typ="VO"
|
||||
expect(lva.full_name).to match "VO"
|
||||
expect(lva.full_name).to match lva.name
|
||||
end
|
||||
it "should have a semester after fixing" do
|
||||
|
||||
expect(lva.semester).to be_empty
|
||||
|
||||
studium.semester << zerosemester
|
||||
studium.save
|
||||
expect(studium.semester).not_to be_empty
|
||||
lva.add_semesters
|
||||
|
||||
expect(lva.semester).not_to be_empty
|
||||
end
|
||||
it "can create a valid tiss link" do
|
||||
lva.lvanr="101.679"
|
||||
tl=lva.tisslink
|
||||
expect(tl).to match "101679"
|
||||
expect(tl).to match "tiss.tuwien.ac.at"
|
||||
end
|
||||
it "should be able to load tissdata" do
|
||||
lva.lvanr="101.679"
|
||||
n=lva.name
|
||||
expect(lva.name).to eq(n)
|
||||
lva.load_tissdata
|
||||
expect(lva.name).not_to eq(n)
|
||||
|
||||
end
|
||||
|
||||
describe "if bare" do
|
||||
let(:lva) {FactoryGirl.build(:lva)}
|
||||
it "should be created" do
|
||||
@@ -19,9 +63,9 @@ describe Lva, :type=>:model do
|
||||
expect(l.errors[:modul].size).to be(1)
|
||||
end
|
||||
end
|
||||
it "should respond to semesters" do
|
||||
expect(lva.respond_to?(:semester)).to be true
|
||||
end
|
||||
|
||||
pending "should not be valid if it doesn't have a Semester for a studium"
|
||||
|
||||
pending "should not be valid without modul"
|
||||
pending "should have beispiele"
|
||||
pending "should be flagable"
|
||||
|
||||
@@ -1,5 +1,159 @@
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Meeting, :type => :model do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
let(:user){FactoryGirl.create(:user)}
|
||||
let(:rubrik) {FactoryGirl.create(:rubrik)}
|
||||
let(:calendar){FactoryGirl.create(:calendar, rubrik_id: rubrik.id)}
|
||||
let(:calentry){FactoryGirl.build(:calentry, calendar_id: calendar.id, typ: 2)}
|
||||
let(:meetingtyp){FactoryGirl.create(:meetingtyp, rubrik_id: rubrik.id)}
|
||||
let(:meeting){FactoryGirl.build(:meeting, meetingtyp_id: meetingtyp.id)}
|
||||
let(:object_variable) {meeting}
|
||||
|
||||
it_behaves_like "a valid object"
|
||||
|
||||
it "should be created" do
|
||||
meeting.calentry=calentry
|
||||
expect(meeting).to be_valid
|
||||
expect(meeting.save).to be true
|
||||
end
|
||||
it "should have a calendar" do
|
||||
meeting.calentry=calentry
|
||||
expect(meeting.calendar).not_to be_nil
|
||||
end
|
||||
it "should be able to create a calentry" do
|
||||
meeting.create_calentry
|
||||
meeting.calentry.start=1.hour.ago
|
||||
meeting.calentry.dauer=7
|
||||
expect(meeting).to be_valid
|
||||
end
|
||||
context "without calentry" do
|
||||
# let(:meeting){FactoryGirl.build(:meeting, :without_calentry, meetingtyp_id: meetingtyp.id)}
|
||||
|
||||
it "should be creating a calentry typ 2" do
|
||||
meeting.create_calentry
|
||||
expect(meeting.calentry.typ).to be 2
|
||||
end
|
||||
end
|
||||
it "should be having an alias title for text" do
|
||||
expect(meeting.title).to eq(meeting.text)
|
||||
end
|
||||
it "should have a text that includes the name" do
|
||||
expect(meeting.title).to match meeting.name
|
||||
end
|
||||
it " creates a neuigkeit that is valid" do
|
||||
expect(meeting.neuigkeit).to be_nil
|
||||
meeting.create_announcement(user)
|
||||
expect(meeting.neuigkeit.class).to eq(Neuigkeit)
|
||||
expect(meeting.neuigkeit).to be_valid
|
||||
end
|
||||
it "fixes calentry before validation" do
|
||||
calentry.calendar=nil
|
||||
meeting.calentry=calentry
|
||||
meeting.valid?
|
||||
expect(meeting.calentry.calendar).to be meeting.meetingtyp.rubrik.calendar
|
||||
end
|
||||
it "updates the announcement if there is one" do
|
||||
meeting.calentry=calentry
|
||||
|
||||
expect(meeting.neuigkeit).to be_nil
|
||||
meeting.create_announcement(user)
|
||||
meeting.name="asdflkjhasdflkj"
|
||||
meeting.save
|
||||
meeting.update_announcement
|
||||
expect(meeting.neuigkeit.title).to match meeting.name
|
||||
end
|
||||
it "doesn't create an announcement by changing the name" do
|
||||
meeting.calentry=calentry
|
||||
expect(meeting.neuigkeit).to be_nil
|
||||
meeting.name="asdflkjhasdflkj"
|
||||
meeting.save
|
||||
expect(meeting.neuigkeit).to be_nil
|
||||
end
|
||||
it "can create a protocol" do
|
||||
expect(meeting.protocol).to be_nil
|
||||
meeting.create_protocol
|
||||
expect(meeting.protocol).not_to be_nil
|
||||
end
|
||||
it "creates a protocol only once" do
|
||||
meeting.create_protocol
|
||||
p=meeting.protocol
|
||||
meeting.protocol.text="TestTextTestTextForProtocol"
|
||||
meeting.create_protocol
|
||||
expect(meeting.protocol).to be p
|
||||
expect(meeting.protocol.text).to match "TestTextTestTextForProtocol"
|
||||
end
|
||||
it "can create a calendar entry" do
|
||||
expect(meeting.calentry).to be_nil
|
||||
meeting.create_calentry
|
||||
expect(meeting.calentry).not_to be_nil
|
||||
|
||||
end
|
||||
it "can create an agenda" do
|
||||
meeting.calentry=calentry
|
||||
|
||||
meeting.create_agenda
|
||||
a=meeting.agenda
|
||||
meeting.agenda.text="TestTextTestTextForProtocol"
|
||||
meeting.create_agenda
|
||||
expect(meeting.agenda).to be a
|
||||
expect(meeting.agenda.text).to match "TestTextTestTextForProtocol"
|
||||
end
|
||||
it "can be created with date and typ" do
|
||||
meeting2=Meeting.new_with_date_and_typ(nil, Date.today, meetingtyp)
|
||||
expect(meeting2.calentry).not_to be_nil
|
||||
expect(meeting2.meetingtyp).to be meetingtyp
|
||||
end
|
||||
it "gets empty text for nil protocol" do
|
||||
expect(meeting.protocol_text).to eq("")
|
||||
end
|
||||
it "gets empty text for nil agenda" do
|
||||
expect(meeting.agenda_text).to eq("")
|
||||
end
|
||||
|
||||
it "can safly access protocol text" do
|
||||
meeting.create_protocol
|
||||
meeting.protocol.text="TestTextTest TextForProtocol"
|
||||
expect(meeting.protocol_text).to eq("TestTextTest TextForProtocol")
|
||||
end
|
||||
it "can safly access agenda text" do
|
||||
meeting.create_agenda
|
||||
meeting.agenda.text="TestTextTest TextForProtocol"
|
||||
expect(meeting.agenda_text).to eq("TestTextTest TextForProtocol")
|
||||
end
|
||||
it "is public by default" do
|
||||
expect(meeting).to be_public
|
||||
end
|
||||
it "is not public if intern" do
|
||||
meeting.intern=true
|
||||
expect(meeting).not_to be_public
|
||||
end
|
||||
it "has a divid" do
|
||||
meeting.calentry=calentry
|
||||
meeting.save
|
||||
expect(meeting.divid).to match "meeting"
|
||||
expect(meeting.divid).to match meeting.id.to_s
|
||||
end
|
||||
it "can find start and end of a meeting by 'Beginn' und 'Ende'" do
|
||||
meeting.calentry=calentry
|
||||
calentry.start=2.hours.ago
|
||||
meeting.create_protocol
|
||||
meeting.protocol.text="Beginn: " + 1.hours.ago.to_s
|
||||
meeting.update_time_from_protocol
|
||||
expect(calentry.start).to be_within(1.minute).of 1.hours.ago
|
||||
|
||||
end
|
||||
it "has a text even without meetingtyp" do
|
||||
meeting.meetingtyp=nil
|
||||
meeting.parent=nil
|
||||
meeting.name="sdf"
|
||||
expect(meeting.text).to match("sdf")
|
||||
end
|
||||
it "has an empty text without meetingtyp, parent, calentry or name" do
|
||||
meeting.meetingtyp=nil
|
||||
meeting.parent=nil
|
||||
meeting.calentry=nil
|
||||
meeting.name=""
|
||||
expect(meeting.text).to eq("")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -2,4 +2,27 @@ require 'spec_helper'
|
||||
|
||||
RSpec.describe Meetingtyp, :type => :model do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
let(:rubrik) {FactoryGirl.create(:rubrik)}
|
||||
let(:meetingtyp){FactoryGirl.build(:meetingtyp, rubrik_id: rubrik.id)}
|
||||
it "should be created" do
|
||||
expect(meetingtyp).to be_valid
|
||||
expect(meetingtyp.save).to be true
|
||||
end
|
||||
it "should not be valid without rubrik" do
|
||||
meetingtyp.rubrik=nil
|
||||
expect(meetingtyp.rubrik).to be_nil
|
||||
expect(meetingtyp).not_to be_valid
|
||||
expect(meetingtyp.save).to be_falsey
|
||||
end
|
||||
it "should not be valid without a name" do
|
||||
meetingtyp.name=nil
|
||||
expect(meetingtyp).not_to be_valid
|
||||
end
|
||||
|
||||
it "should return name for text" do
|
||||
expect(meetingtyp.text).to be meetingtyp.name
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
||||
@@ -1,38 +1,69 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe Neuigkeit do
|
||||
let(:rubrik) {FactoryGirl.create(:rubrik)}
|
||||
let(:user) {FactoryGirl.create(:user)}
|
||||
let(:neuigkeit) {(FactoryGirl.build(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id))}
|
||||
|
||||
let(:neuigkeit) {(FactoryGirl.build(:neuigkeit, :with_rubrik))}
|
||||
let(:intern_neuigkeit) {FactoryGirl.build(:neuigkeit, :with_intern_rubrik)}
|
||||
let(:unpublished_neuigkeit){FactoryGirl.build(:neuigkeit, :unpublished,:with_rubrik)}
|
||||
let(:attachment) {FactoryGirl.build_stubbed(:attachment)}
|
||||
|
||||
[:title,:text, :rubrik, :author].each do |attr|
|
||||
let(:calentry) {
|
||||
FactoryGirl.build(:calentry, start: 1.hour.ago, ende: 5.minutes.ago)
|
||||
}
|
||||
|
||||
let(:object_variable) {neuigkeit}
|
||||
|
||||
it_behaves_like "a valid object"
|
||||
|
||||
it "is published" do expect(neuigkeit).to be_published end
|
||||
it "is public" do expect(neuigkeit).to be_public end
|
||||
it "has no meeting" do expect(neuigkeit).not_to be_is_annoncement end
|
||||
|
||||
# it "failes" do expect(true).to be_falsey end
|
||||
|
||||
it "is published if datum is in the past" do
|
||||
neuigkeit.datum=5.hours.ago
|
||||
expect(neuigkeit).to be_published
|
||||
end
|
||||
it "is unpublished if datum is in the future" do
|
||||
neuigkeit.datum=5.hours.from_now
|
||||
expect(neuigkeit).not_to be_published
|
||||
end
|
||||
|
||||
|
||||
[ :rubrik, :author].each do |attr| # :title,:text to be discussed
|
||||
it "should not be valid without #{attr}" do
|
||||
neuigkeit.send("#{attr}=".to_sym,nil)
|
||||
expect(neuigkeit).not_to be_valid
|
||||
expect(neuigkeit.errors[attr]).to have_at_least(1).items
|
||||
end
|
||||
end
|
||||
it "should be created" do
|
||||
expect(neuigkeit).to be_valid
|
||||
expect(neuigkeit.save).to be true
|
||||
end
|
||||
|
||||
it "should be valid" do
|
||||
fp = FactoryGirl.build(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id)
|
||||
expect(fp).to be_valid
|
||||
context "with meeting" do
|
||||
let(:neuigkeit) {(FactoryGirl.build(:neuigkeit, :with_rubrik, :with_meeting))}
|
||||
let(:object_variable) {neuigkeit}
|
||||
it_behaves_like "a valid object"
|
||||
it "has meeting" do expect(neuigkeit.meeting).to be_truthy end
|
||||
it "is annoncement" do expect(neuigkeit).to be_is_annoncement end
|
||||
end
|
||||
it "responds to attachments" do
|
||||
expect(neuigkeit.respond_to?(:attachments)).to be true
|
||||
end
|
||||
it "uses titlepic attachments as picture" do
|
||||
|
||||
|
||||
|
||||
pending "uses titlepic attachments as picture" do # this test seems broken
|
||||
expect(neuigkeit.respond_to?(:picture_robust)).to be true
|
||||
attachment.flag_titlepic = true
|
||||
expect { neuigkeit.attachments << attachment }.to change {neuigkeit.picture_robust}
|
||||
end
|
||||
it "is an event if it has a calentry" do
|
||||
expect(neuigkeit.event?).to be false
|
||||
expect{neuigkeit.calentries << calentry}.to change(neuigkeit, :event?)
|
||||
expect(neuigkeit).not_to be_is_event
|
||||
neuigkeit.calentries << calentry
|
||||
expect(neuigkeit).to be_is_event
|
||||
|
||||
end
|
||||
it "" do
|
||||
end
|
||||
|
||||
pending "has questions"
|
||||
|
||||
@@ -2,5 +2,11 @@ require 'spec_helper'
|
||||
|
||||
describe Rubrik do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
|
||||
let(:rubrik){FactoryGirl.create(:rubrik)}
|
||||
it "should be valid" do
|
||||
expect(rubrik).to be_valid
|
||||
end
|
||||
it "should be created" do
|
||||
expect(rubrik.save).to be true
|
||||
end
|
||||
end
|
||||
|
||||
11
spec/models/shared_examples/basic.rb
Normal file
11
spec/models/shared_examples/basic.rb
Normal file
@@ -0,0 +1,11 @@
|
||||
shared_examples "a valid object" do
|
||||
it "is valid" do
|
||||
expect(object_variable).to be_valid
|
||||
end
|
||||
it "can be saved" do
|
||||
expect(object_variable.save).to be_truthy
|
||||
end
|
||||
# it "failes" do
|
||||
# expect(true).to be_falsey
|
||||
# end
|
||||
end
|
||||
@@ -2,29 +2,45 @@ require 'spec_helper'
|
||||
|
||||
describe Studium do
|
||||
# test if it is invalid if certain attributes are missing
|
||||
let(:studium) { FactoryGirl.build(:studium)}
|
||||
let(:object_variable) {studium}
|
||||
|
||||
[:name, :zahl].each do |attr|
|
||||
it "should not be valid without #{attr}" do
|
||||
s = FactoryGirl.build(:studium, attr=>nil)
|
||||
s.should_not be_valid
|
||||
expect(s).not_to be_valid
|
||||
end
|
||||
end
|
||||
it "should create studium with valid data" do
|
||||
s=FactoryGirl.build(:studium)
|
||||
lambda {
|
||||
s.save!; Sunspot.commit}.should change {Studium.count()}.by(1)
|
||||
end
|
||||
it "should not accept double entrys" do
|
||||
FactoryGirl.create(:studium)
|
||||
Sunspot.commit
|
||||
s=FactoryGirl.build(:studium)
|
||||
s.should_not be_valid
|
||||
s.should have_at_least(1).error_on(:name)
|
||||
s.should have_at_least(1).error_on(:zahl)
|
||||
end
|
||||
it "should expect zahl to be 000.000" do
|
||||
s=FactoryGirl.build(:studium, :zahl=>"000.000")
|
||||
Sunspot.commit
|
||||
s.should_not be_valid
|
||||
|
||||
it_behaves_like "a valid object"
|
||||
|
||||
it "should create studium with valid data" do
|
||||
s=FactoryGirl.build(:studium)
|
||||
lambda {
|
||||
s.save!; Sunspot.commit}.should change {Studium.count()}.by(1)
|
||||
end
|
||||
it "should not accept double entrys" do
|
||||
FactoryGirl.create(:studium)
|
||||
expect(studium).not_to be_valid
|
||||
|
||||
|
||||
expect(studium).to have_at_least(1).error_on(:name)
|
||||
expect(studium).to have_at_least(1).error_on(:zahl)
|
||||
end
|
||||
it "expect zahl to be 000.000" do
|
||||
s=FactoryGirl.build(:studium, :zahl=>"000.000")
|
||||
#Sunspot.commit
|
||||
s.should_not be_valid
|
||||
expect(s.errors.size).to be > 0
|
||||
end
|
||||
end
|
||||
|
||||
it "is not valid with a short zahl" do
|
||||
s=FactoryGirl.build(:studium, :zahl=>"123")
|
||||
expect(s).not_to be_valid
|
||||
end
|
||||
|
||||
it "has a alias title for name" do
|
||||
expect(studium.title).to eq(studium.name)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
||||
require 'simplecov'
|
||||
SimpleCov.start
|
||||
ENV["RAILS_ENV"] ||= 'test'
|
||||
require 'rbconfig'
|
||||
|
||||
@@ -14,6 +16,8 @@ require 'devise'
|
||||
# in spec/support/ and its subdirectories.
|
||||
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
|
||||
Dir[Rails.root.join("spec/models/shared_examples/**/*.rb")].each {|f| require f}
|
||||
Dir[Rails.root.join("spec/models/shared_examples/*.rb")].each {|f| require f}
|
||||
#require 'models/shared_examples/basic.rb'
|
||||
Dir[Rails.root.join("spec/controllers/shared_examples/**/*.rb")].each {|f| require f}
|
||||
|
||||
RSpec.configure do |config|
|
||||
|
||||
@@ -1,9 +1,31 @@
|
||||
module ControllerMacros
|
||||
# include Devise::TestHelpers, :type=>:controller
|
||||
# include Devise::TestHelpers, :type=>:controller
|
||||
def with_fet_user
|
||||
|
||||
let(:fet_user) {FactoryGirl.create(:other_user, :fetuser)}
|
||||
|
||||
before(:each) do
|
||||
allow(@controller).to receive(:current_user).and_return(fet_user)
|
||||
allow(@controller).to receive(:current_ability).and_return(Ability.new(fet_user))
|
||||
end
|
||||
end
|
||||
def with_fet_admin
|
||||
|
||||
let(:fet_user)do
|
||||
fet_user=FactoryGirl.create(:other_user)
|
||||
fet_user.add_role("fetadmin")
|
||||
fet_user
|
||||
end
|
||||
before(:each) do
|
||||
allow(@controller).to receive(:current_user).and_return(fet_user)
|
||||
allow(@controller).to receive(:current_ability).and_return(Ability.new(fet_user))
|
||||
end
|
||||
end
|
||||
|
||||
def login_fet_user
|
||||
before(:each) do
|
||||
@request.env["devise.mapping"] = Devise.mappings[:user]
|
||||
user = FactoryGirl.build(:user)
|
||||
user = FactoryGirl.build(:other_user)
|
||||
user = User.find_by_email(user.email) || user
|
||||
user.save
|
||||
user.add_role(:fetuser)
|
||||
@@ -21,6 +43,7 @@ module ControllerMacros
|
||||
sign_in user
|
||||
end
|
||||
end
|
||||
|
||||
def logout_user
|
||||
before(:each) do
|
||||
sign_out :user
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
module ModelMacros
|
||||
def let_studium_lva
|
||||
let(:studium) {FactoryGirl.create(:studium)}
|
||||
let(:modulgruppe){FactoryGirl.create(:modulgruppe,studium_id: studium.id)}
|
||||
let(:modul) do
|
||||
m=FactoryGirl.build(:other_modul);
|
||||
m.modulgruppen << modulgruppe
|
||||
m.save!
|
||||
m
|
||||
end
|
||||
let(:lva) do
|
||||
l=FactoryGirl.build(:lva)
|
||||
l.modul << modul
|
||||
l.save!
|
||||
l
|
||||
end
|
||||
|
||||
let(:zerosemester) {FactoryGirl.create(:zero_semester,studium_id: studium.id)}
|
||||
let(:firstsemester) {FactoryGirl.create(:first_semester)}
|
||||
let(:modulgruppe){FactoryGirl.create(:modulgruppe,studium_id: studium.id)}
|
||||
let(:modul) do
|
||||
m=FactoryGirl.build(:other_modul)
|
||||
m.modulgruppen << modulgruppe
|
||||
m.save!
|
||||
m
|
||||
end
|
||||
let(:lva) do
|
||||
l=FactoryGirl.build(:lva)
|
||||
l.modul << modul
|
||||
l
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user