34 Commits

Author SHA1 Message Date
4580860a09 signed in button 2019-05-30 15:23:38 +02:00
38e26de48c reverse bootstrap upgrade 2019-05-13 20:29:53 +02:00
5fd5ab51f8 ignore sbin 2019-04-01 06:50:08 +02:00
a64049a09f removed false 2019-04-01 06:49:58 +02:00
2f741d5893 fixes for design 2019-04-01 06:47:49 +02:00
c5860f338b Gems for design upgraded 2019-04-01 06:42:33 +02:00
011f772bc3 started to migrate themes new wrapper script 2019-03-17 18:06:20 +01:00
00c8045742 eagerload development 2019-03-11 20:48:29 +01:00
f809f36c06 Upgraded to Rails 4 2019-02-24 15:47:27 +01:00
f52ec0411d gremium und studien factory und specs 2019-01-13 15:13:31 +01:00
92d63b71ed neuigkeit factory small fix 2019-01-13 13:35:06 +01:00
30cbe8923f neuigkeit controller spec 2019-01-13 13:24:00 +01:00
1b15fdf385 very small fix for neuigkeit controller 2019-01-13 10:12:01 +01:00
d7c8342817 additional neuigkeit test 2019-01-13 10:11:25 +01:00
71d14c83ae rewriting some factories 2019-01-13 10:01:22 +01:00
fea219ba92 forst neuigkeit controller spec 2019-01-07 23:32:23 +01:00
1b065cd3f0 nes neuigkeiten model specs 2019-01-07 23:31:55 +01:00
67bfa0f699 Merge branch 'master' into prep_upgrade 2019-01-05 16:20:37 +01:00
ff20774889 improve tests for lva 2019-01-05 16:18:30 +01:00
f7f8937197 started increasing test coverage for lva 2019-01-05 02:56:47 +01:00
c713fdd0d0 ignore coverage folder 2019-01-05 02:56:08 +01:00
bc8f4cfce3 small fixes for neuigkeit spec 2019-01-05 02:55:35 +01:00
5759ba79e0 increase test coverage for meetings 2019-01-05 02:54:50 +01:00
70e415446a simplecov added to determine test coverage 2019-01-05 02:53:04 +01:00
82cd127370 Remove generated documentation from version control 2019-01-02 18:52:35 +01:00
72e18f9e29 generated documentation 2019-01-01 19:04:08 +01:00
e873916095 no longer ignore Gemfile.lock and adding Gemfile.lock 2018-12-30 09:33:19 +01:00
6ebb36d840 no longer ignore Gemfile.lock 2018-12-30 09:32:28 +01:00
f6c3cda045 fixes in fotogallery 2018-12-29 01:04:16 +01:00
a20c6fa673 Corrected solr config + minor bugfixes 2018-09-17 12:05:47 +02:00
Andreas Stephanides
52ffe0c701 added developer login strategy for testing 2018-06-02 12:01:18 +02:00
Andreas Stephanides
52fcabf2dc fix login menu 2018-05-26 08:52:26 +02:00
Andreas Stephanides
c03a60c236 developer login added 2018-05-26 08:50:54 +02:00
1cf84c90ae test 2018-05-20 23:35:38 +02:00
126 changed files with 2091 additions and 1077 deletions

13
.gitignore vendored
View File

@@ -28,28 +28,35 @@
/db/schema.rb /db/schema.rb
/db/structure.sql /db/structure.sql
/config/initializers/devise.rb /config/initializers/devise.rb
Gemfile.lock
# Ignore all logfiles and tempfiles. # Ignore all logfiles and tempfiles.
/log/*.log /log/*.log
/tmp /tmp
/config/initializers/devise.rb /config/initializers/devise.rb
/app/doc/* /app/doc/*
/bin/* /bin/*
/sbin/*
console console
/server /server
/public/uploads/ /public/uploads/
/public/sitemap* /public/sitemap*
/public/assets/
/vendor/* /vendor/*
/bak/* /bak/*
/solr/* /solr/*
/log/* /log/*
*# *#
Gemfile.lock
/config/database.yml /config/database.yml
/config/start_topic.yml /config/start_topic.yml
/config/contact_topic.yml /config/contact_topic.yml
/config/etherpad/APIKEY.*
/config/page.yml
.#* .#*
.* .*
!/.gitignore !/.gitignore
*.pid *.pid
/doc/app
coverage/*

100
Gemfile
View File

@@ -1,27 +1,32 @@
source 'https://rubygems.org' source 'https://rubygems.org'
gem 'rake', '~>10.0' gem 'rake', '~>12.3'
gem 'rails', '3.2.13' #gem 'rails', '3.2.13'
gem 'sprockets', '2.2.2' gem 'rails', '~>4.0'
gem 'webrick', '1.3.1'
gem 'sprockets'#, '2.2.2'
gem 'webrick'#, '1.3.1'
# Bundle edge Rails instead: # Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git' # gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'mysql2', '~>0.3.10' gem 'mysql2'#, '~>0.3.10'
gem 'sqlite3' gem 'sqlite3', '~>1.3.0'
gem 'execjs', '~>1.4.0' gem 'execjs', '~>1.4.0'
gem 'sanitize', :git=>'git://github.com/rgrove/sanitize' gem 'sanitize', :git=>'git://github.com/rgrove/sanitize'
# Gems used only for assets and not required # Gems used only for assets and not required
# in production environments by default. # in production environments by default.
gem 'sass-rails', '~> 3.0' gem 'sass-rails'
gem 'coffee-rails', '~> 3.0' gem 'coffee-rails', '~> 4.2.2'
gem 'bootstrap-sass','~> 2.3.2.1' gem 'bootstrap-sass','~> 2.3.0'
gem 'autoprefixer-rails'#,'~>9.5'
#gem 'concurrent-ruby'
group :assets do #group :assets do
# See https://github.com/sstephenson/execjs#readme for more supported runtimes # See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', :platforms => :ruby # gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3' gem 'mini_racer'
end gem 'uglifier'#, '>= 1.0.3'
#end
gem 'active_record_query_trace' gem 'active_record_query_trace'
gem 'jquery-rails' gem 'jquery-rails'
@@ -33,8 +38,8 @@ gem 'jquery-rails'
# gem 'jbuilder' # gem 'jbuilder'
# Use unicorn as the app server # Use unicorn as the app server
gem 'unicorn', '~>4.8.0' # gem 'unicorn', '~>5.4' #4.8.0'
gem 'puma'
# Deploy with Capistran # Deploy with Capistran
# gem 'capistrano' # gem 'capistrano'
@@ -43,7 +48,7 @@ gem 'jquery-rails'
# Formbuilder for easier form generation # Formbuilder for easier form generation
gem 'formtastic', '~>2.2.1' gem 'formtastic', '~>3.1'
# gem 'formtastic-bootstrap', '~>2.1.3' #, :git => "git://github.com/mjbellantoni/formtastic-bootstrap.git" # gem 'formtastic-bootstrap', '~>2.1.3' #, :git => "git://github.com/mjbellantoni/formtastic-bootstrap.git"
gem 'formtastic-bootstrap', '~>3.0.0' #, :git => "git://github.com/mjbellantoni/formtastic-bootstrap.git" gem 'formtastic-bootstrap', '~>3.0.0' #, :git => "git://github.com/mjbellantoni/formtastic-bootstrap.git"
@@ -52,29 +57,29 @@ gem "tinymce-rails" , '~>4.1.0'
# Internationalisierung # Internationalisierung
#gem "globalize3" ,'~>3.0.4' #gem "globalize3" ,'~>3.0.4'
gem "globalize" ,'~>3.0.4'#,:git =>'git://github.com/globalize/globalize.git' gem "globalize" ,'~>5.1'#,:git =>'git://github.com/globalize/globalize.git'
gem 'globalize-versioning' gem 'globalize-versioning'
gem 'globalize-accessors' gem 'globalize-accessors'
# Version controll # Version controll
gem "paper_trail" , '~>3.0.5'#, :git=>'git://github.com/airblade/paper_trail.git' gem "paper_trail" # , '~>3.0.5i'#, :git=>'git://github.com/airblade/paper_trail.git'
# User management # User management
gem "devise" ,'~>2.2.3' gem "devise" #,'~>2.2.3'
gem "omniauth", '~>1.2.2' gem "omniauth" , '~>1.6'
gem "omniauth-facebook", '~>2.0.0' gem "omniauth-facebook" #, '~>2.0.0'
gem "omniauth-ldap", '~>1.0.4' gem "omniauth-ldap" #, '~>1.0.4'
gem "fb_graph",'~>2.7.17' gem "fb_graph" #,'~>2.7.17'
gem "meta-tags" gem "meta-tags"
# Roles for users # Roles for users
gem "rolify", '~>4.0.0' gem "rolify" # , '~>4.0.0'
# Abilities # Abilities
gem "cancan", '~>1.6.0' gem "cancan" #, '~>1.6.0'
# Fileupload # Fileupload
gem 'paperclip' ,'~>3.4.0' gem 'paperclip' #,'~>3.4.0'
gem 'git' gem 'git'
gem 'haml' gem 'haml'
@@ -82,36 +87,38 @@ gem 'haml'
#gem 'wikicloth' #gem 'wikicloth'
#gem 'gollum-lib' #gem 'gollum-lib'
gem 'awesome_nested_set' gem 'awesome_nested_set'
gem 'annotate', "~>2.6.0" gem 'annotate' #, "~>2.6.0"
gem 'carrierwave', "~>0.9.0" gem 'carrierwave'#, "~>0.9.0"
group :development, :test do group :development, :test do
gem 'factory_girl_rails',"~>4.5.0" gem 'factory_bot_rails'#,"~>4.5.0"
gem 'minitest', "~>4.7.5" gem 'minitest'#, "~>4.7.5"
gem 'progress_bar' gem 'progress_bar'
gem 'rspec-core', '~>3.3.0' gem 'rspec-core'#, '~>3.8.0'
gem 'rspec-support', '~>3.3.0' gem 'rspec-support'#, '~>3.3.0'
gem 'rspec-rails', '~>3.3.0' gem 'rspec-rails'#, '~>3.3.0'
gem 'rspec-collection_matchers', '~>1.1.2' gem 'rspec-collection_matchers'#, '~>1.1.2'
gem 'rspec-activemodel-mocks', '~>1.0.1' gem 'rspec-activemodel-mocks'#, '~>1.0.1'
gem 'rspec-html-matchers', '~>0.7.0' gem 'rspec-html-matchers'#, '~>0.7.0'
gem 'rspec-expectations', '~>3.3.1' gem 'rspec-expectations'#, '~>3.3.1'
gem 'capybara', '~>2.5.0' gem 'capybara'#, '~>2.5.0'
gem 'simplecov'
end end
gem "simple_calendar", "~> 0.1.9" gem "simple_calendar"#, "~> 0.1.9"
gem 'rmagick' gem 'rmagick'
gem 'bootstrap-addons-rails' gem 'bootstrap-addons-rails'
gem "jquery-fileupload-rails", "0.4.1" gem "jquery-fileupload-rails"#, "0.4.1"
gem "jquery-ui-rails","~> 4.1.0" gem "jquery-ui-rails" #,"~> 4.1.0"
gem "font-awesome-rails" gem "font-awesome-rails"
gem "jquery-datetimepicker-rails" gem "jquery-datetimepicker-rails"
# gem "jquery-sortable-rails" # gem "jquery-sortable-rails"
gem "seed_dump", "~> 0.5.3" gem "seed_dump"#, "~> 0.5.3"
#gem "themes_for_rails" ,:git =>'git://github.com/tkriplean/themes_for_rails.git' #gem "themes_for_rails" ,:git =>'git://github.com/tkriplean/themes_for_rails.git'
#gem "themes_for_rails", :git=> 'git://github.com/lucasefe/themes_for_rails.git' #gem "themes_for_rails", :git=> 'git://github.com/lucasefe/themes_for_rails.git'
gem 'themes_for_rails' #gem 'themes_for_rails'
gem 'themes_on_rails'
gem 'rubyzip' gem 'rubyzip'
gem 'acts_as_votable' gem 'acts_as_votable'
@@ -137,3 +144,10 @@ gem 'blueimp-gallery-rails'
gem 'shareable' gem 'shareable'
gem 'sunspot_test' gem 'sunspot_test'
# needed because of RAILS 4
gem 'protected_attributes'
gem 'actionpack-action_caching'

503
Gemfile.lock Normal file
View File

@@ -0,0 +1,503 @@
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: dd466918ce5728acdc6f63d746fa898f8b366988
specs:
sanitize (5.0.0)
crass (~> 1.0.2)
nokogiri (>= 1.8.0)
nokogumbo (~> 2.0)
GEM
remote: https://rubygems.org/
specs:
actionmailer (4.2.11.1)
actionpack (= 4.2.11.1)
actionview (= 4.2.11.1)
activejob (= 4.2.11.1)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5)
actionpack (4.2.11.1)
actionview (= 4.2.11.1)
activesupport (= 4.2.11.1)
rack (~> 1.6)
rack-test (~> 0.6.2)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionpack-action_caching (1.2.0)
actionpack (>= 4.0.0, < 6)
actionview (4.2.11.1)
activesupport (= 4.2.11.1)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_record_query_trace (1.6.2)
activejob (4.2.11.1)
activesupport (= 4.2.11.1)
globalid (>= 0.3.0)
activemodel (4.2.11.1)
activesupport (= 4.2.11.1)
builder (~> 3.1)
activerecord (4.2.11.1)
activemodel (= 4.2.11.1)
activesupport (= 4.2.11.1)
arel (~> 6.0)
activesupport (4.2.11.1)
i18n (~> 0.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
acts_as_votable (0.12.0)
addressable (2.6.0)
public_suffix (>= 2.0.2, < 4.0)
aes_key_wrap (1.0.1)
annotate (2.7.5)
activerecord (>= 3.2, < 7.0)
rake (>= 10.4, < 13.0)
arel (6.0.4)
attr_required (1.0.1)
autoprefixer-rails (9.5.1.1)
execjs
awesome_nested_set (3.1.4)
activerecord (>= 4.0.0, < 5.3)
bcrypt (3.1.12)
bindata (2.4.4)
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.2.3)
cancan (1.6.10)
capybara (3.18.0)
addressable
mini_mime (>= 0.1.3)
nokogiri (~> 1.8)
rack (>= 1.6.0)
rack-test (>= 0.6.3)
regexp_parser (~> 1.2)
xpath (~> 3.2)
carrierwave (1.3.1)
activemodel (>= 4.0.0)
activesupport (>= 4.0.0)
mime-types (>= 1.16)
chronic (0.10.2)
climate_control (0.2.0)
coffee-rails (4.2.2)
coffee-script (>= 2.2.0)
railties (>= 4.0.0)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.12.2)
concurrent-ruby (1.1.5)
crass (1.0.4)
devise (4.6.2)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0, < 6.0)
responders
warden (~> 1.2.3)
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_bot (5.0.2)
activesupport (>= 4.2.0)
factory_bot_rails (5.0.2)
factory_bot (~> 5.0.2)
railties (>= 4.2.0)
faraday (0.15.4)
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.10.0)
font-awesome-rails (4.7.0.5)
railties (>= 3.2, < 6.1)
formtastic (3.1.5)
actionpack (>= 3.2.13)
formtastic-bootstrap (3.0.0)
formtastic (>= 2.2)
git (1.5.0)
globalid (0.4.2)
activesupport (>= 4.2.0)
globalize (5.2.0)
activemodel (>= 4.2, < 5.3)
activerecord (>= 4.2, < 5.3)
request_store (~> 1.0)
globalize-accessors (0.2.1)
globalize (~> 5.0, >= 5.0.0)
globalize-versioning (0.3.0)
activemodel (>= 4.2.0, < 6)
activerecord (>= 4.2.0, < 6)
globalize (>= 5.1.0, < 6)
paper_trail (>= 8, < 12)
haml (5.0.4)
temple (>= 0.8.0)
tilt
hashie (3.6.0)
highline (2.0.2)
http-cookie (1.0.3)
domain_name (~> 0.5)
httpclient (2.8.3)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jquery-datetimepicker-rails (2.4.1.0)
jquery-fileupload-rails (1.0.0)
actionpack (>= 3.1)
railties (>= 3.1)
sassc
jquery-rails (4.3.3)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
jquery-ui-rails (6.0.1)
railties (>= 3.2.16)
json (2.2.0)
json-jwt (1.10.1)
activesupport (>= 4.2)
aes_key_wrap
bindata
jwt (2.1.0)
kaminari (1.1.1)
activesupport (>= 4.1.0)
kaminari-actionview (= 1.1.1)
kaminari-activerecord (= 1.1.1)
kaminari-core (= 1.1.1)
kaminari-actionview (1.1.1)
actionview
kaminari-core (= 1.1.1)
kaminari-activerecord (1.1.1)
activerecord
kaminari-core (= 1.1.1)
kaminari-core (1.1.1)
libv8 (7.3.492.27.1)
loofah (2.2.3)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
mini_mime (>= 0.1.1)
meta-tags (2.11.1)
actionpack (>= 3.2.0, < 6.1)
mime-types (3.2.2)
mime-types-data (~> 3.2015)
mime-types-data (3.2019.0331)
mimemagic (0.3.3)
mini_mime (1.0.1)
mini_portile2 (2.4.0)
mini_racer (0.2.5)
libv8 (>= 6.9.411)
minitest (5.11.3)
multi_json (1.13.1)
multi_xml (0.6.0)
multipart-post (2.1.0)
mysql2 (0.5.2)
net-ldap (0.16.1)
netrc (0.11.0)
nokogiri (1.10.3)
mini_portile2 (~> 2.4.0)
nokogumbo (2.0.1)
nokogiri (~> 1.8, >= 1.8.4)
oauth2 (1.4.1)
faraday (>= 0.8, < 0.16.0)
jwt (>= 1.0, < 3.0)
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (>= 1.2, < 3)
omniauth (1.9.0)
hashie (>= 3.4.6, < 3.7.0)
rack (>= 1.6.2, < 3)
omniauth-facebook (5.0.0)
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.6.0)
oauth2 (~> 1.1)
omniauth (~> 1.9)
opengraph_parser (0.2.3)
addressable
nokogiri
options (2.3.2)
orm_adapter (0.5.0)
paper_trail (10.3.0)
activerecord (>= 4.2, < 6.1)
request_store (~> 1.1)
paperclip (6.1.0)
activemodel (>= 4.2.0)
activesupport (>= 4.2.0)
mime-types
mimemagic (~> 0.3.0)
terrapin (~> 0.6.0)
pr_geohash (1.0.0)
progress_bar (1.3.0)
highline (>= 1.6, < 3)
options (~> 2.3.0)
protected_attributes (1.1.4)
activemodel (>= 4.0.1, < 5.0)
public_suffix (3.0.3)
puma (3.12.1)
pyu-ruby-sasl (0.0.3.3)
rack (1.6.11)
rack-oauth2 (1.9.3)
activesupport
attr_required
httpclient
json-jwt (>= 1.9.0)
rack
rack-test (0.6.3)
rack (>= 1.0)
rails (4.2.11.1)
actionmailer (= 4.2.11.1)
actionpack (= 4.2.11.1)
actionview (= 4.2.11.1)
activejob (= 4.2.11.1)
activemodel (= 4.2.11.1)
activerecord (= 4.2.11.1)
activesupport (= 4.2.11.1)
bundler (>= 1.3.0, < 2.0)
railties (= 4.2.11.1)
sprockets-rails
rails-deprecated_sanitizer (1.0.3)
activesupport (>= 4.2.0.alpha)
rails-dom-testing (1.0.9)
activesupport (>= 4.2.0, < 5.0)
nokogiri (~> 1.6)
rails-deprecated_sanitizer (>= 1.0.1)
rails-html-sanitizer (1.0.4)
loofah (~> 2.2, >= 2.2.2)
railties (4.2.11.1)
actionpack (= 4.2.11.1)
activesupport (= 4.2.11.1)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (12.3.2)
rb-fsevent (0.10.3)
rb-inotify (0.10.0)
ffi (~> 1.0)
regexp_parser (1.4.0)
request_store (1.4.1)
rack (>= 1.4)
responders (2.4.1)
actionpack (>= 4.2.0, < 6.0)
railties (>= 4.2.0, < 6.0)
rest-client (2.0.2)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
rmagick (3.1.0)
rolify (5.2.0)
rsolr (2.2.1)
builder (>= 2.1.2)
faraday (>= 0.9.0)
rspec (3.8.0)
rspec-core (~> 3.8.0)
rspec-expectations (~> 3.8.0)
rspec-mocks (~> 3.8.0)
rspec-activemodel-mocks (1.1.0)
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.8.0)
rspec-support (~> 3.8.0)
rspec-expectations (3.8.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-html-matchers (0.9.1)
nokogiri (~> 1)
rspec (>= 3.0.0.a, < 4)
rspec-mocks (3.8.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-rails (3.8.2)
actionpack (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
rspec-core (~> 3.8.0)
rspec-expectations (~> 3.8.0)
rspec-mocks (~> 3.8.0)
rspec-support (~> 3.8.0)
rspec-support (3.8.0)
rubyntlm (0.3.4)
rubyzip (1.2.2)
sass (3.7.4)
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 (5.0.7)
railties (>= 4.0.0, < 6)
sass (~> 3.1)
sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0)
tilt (>= 1.1, < 3)
sassc (2.0.1)
ffi (~> 1.9)
rake
seed_dump (3.3.1)
activerecord (>= 4)
activesupport (>= 4)
shareable (1.1.4)
actionpack (>= 3.0.0)
activesupport (>= 3.0.0)
simple_calendar (2.3.0)
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.2)
builder (~> 3.0)
sprockets (3.7.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.1)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.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.1)
terrapin (0.6.0)
climate_control (>= 0.0.3, < 1.0)
themes_on_rails (0.4.0)
rails (>= 3.2)
thor (0.20.3)
thread_safe (0.3.6)
tilt (2.0.9)
tinymce-rails (4.1.10)
railties (>= 3.1.1)
tzinfo (1.2.5)
thread_safe (~> 0.1)
uglifier (4.1.20)
execjs (>= 0.3.0, < 3)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.6)
warden (1.2.7)
rack (>= 1.0)
webrick (1.4.2)
whenever (0.11.0)
chronic (>= 0.6.3)
xpath (3.2.0)
nokogiri (~> 1.8)
yaml_db (0.7.0)
rails (>= 3.0)
rake (>= 0.8.7)
PLATFORMS
ruby
DEPENDENCIES
actionpack-action_caching
active_record_query_trace
acts_as_votable
annotate
autoprefixer-rails
awesome_nested_set
blueimp-gallery
blueimp-gallery-rails
bootstrap-addons-rails
bootstrap-kaminari-views!
bootstrap-sass (~> 2.3.0)
cancan
capybara
carrierwave
coffee-rails (~> 4.2.2)
devise
etherpad-lite
execjs (~> 1.4.0)
factory_bot_rails
fb_graph
font-awesome-rails
formtastic (~> 3.1)
formtastic-bootstrap (~> 3.0.0)
git
globalize (~> 5.1)
globalize-accessors
globalize-versioning
haml
jquery-datetimepicker-rails
jquery-fileupload-rails
jquery-rails
jquery-ui-rails
kaminari
meta-tags
mini_racer
minitest
mysql2
omniauth (~> 1.6)
omniauth-facebook
omniauth-ldap
opengraph_parser
paper_trail
paperclip
progress_bar
protected_attributes
puma
rails (~> 4.0)
rake (~> 12.3)
rmagick
rolify
rspec-activemodel-mocks
rspec-collection_matchers
rspec-core
rspec-expectations
rspec-html-matchers
rspec-rails
rspec-support
rubyzip
sanitize!
sass-rails
seed_dump
shareable
simple_calendar
simplecov
sitemap_generator
sprockets
sqlite3 (~> 1.3.0)
sunspot_rails
sunspot_solr
sunspot_test
themes_on_rails
tinymce-rails (~> 4.1.0)
uglifier
webrick
whenever
yaml_db
BUNDLED WITH
1.16.6

11
README_productive.md Normal file
View 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

View File

@@ -12,7 +12,7 @@
// //
//= require jquery //= require jquery
//= require jquery_ujs //= require jquery_ujs
//= require jquery.ui.all //= require jquery-ui
// require jquery.ui.draggable // require jquery.ui.draggable
// require jquery.ui.sortable // require jquery.ui.sortable
// require jquery.ui.gallery // require jquery.ui.gallery

View File

@@ -14,10 +14,10 @@
*= require blueimp-gallery-all *= require blueimp-gallery-all
*= require jquery.fileupload-ui *= require jquery.fileupload-ui
*= require jquery.datetimepicker *= require jquery.datetimepicker
*= require jquery.ui.dialog *= require jquery-ui/dialog
*= require jquery.ui.autocomplete *= require jquery-ui/autocomplete
*= require jquery.ui.progressbar *= require jquery-ui/progressbar
*= require jquery.ui.tabs *= require jquery-ui/tabs
* require 'bootstrap' * require 'bootstrap'
* require 'neuigkeiten' * require 'neuigkeiten'
*/ */
@@ -73,7 +73,7 @@ $infoText:#03406A;
$sansFontFamily: Helvetica, Arial; $sansFontFamily: Helvetica, Arial;
@import 'bootstrap'; @import 'bootstrap';
@import 'bootstrap-responsive'; //@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery'; @import 'bootstrap/image-gallery';
@import 'font-awesome'; @import 'font-awesome';
@import 'neuigkeiten'; @import 'neuigkeiten';

View File

@@ -1,106 +0,0 @@
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
* require_tree .
*= require jquery.fileupload-ui
* require 'bootstrap'
* require 'neuigkeiten'
*/
// Colorshema #0A64A4
$color_schema_1: #006599;
$color_schema_2: #630CE8;
$color_schema_3: #FF0021;
$color_schema_4: #E8820C;
$color_schema_5: #FFF30D;
$color_schema_1_dark: darken($color_schema_1, 10%);
$color_schema_2_dark: darken($color_schema_2, 10%);
$color_schema_3_dark: darken($color_schema_3, 10%);
$color_schema_4_dark: darken($color_schema_4, 10%);
$color_schema_5_dark: darken($color_schema_5, 10%);
$color_prim: #7070a0;
$color_prim_light: lighten($color_prim ,10%);
$color_prim_vlight: lighten($color_prim ,30%);
$color_prim_dark: darken($color_prim ,10%);
$color_prim_vdark: darken($color_prim ,30%);
$color_cont: FFDB73;
$color_cont_light:FFDB73;
$linkColor: $color_prim_vdark;
$white: #FFFFFF;
$bodyBackground: #EEE;
$navbarBackground: $color_prim;
$navbarText: black;
$navbarLinkColor: $color_prim_vdark;
$navbarLinkColorHover: black;
$dropdownLinkColor: black;
$navbar-default-brand-color: black;
$navbarBrandColor:black;
$navbarBackgroundHighlight: $color_prim;
//$navbarBackgroundHighlight:#FFFFFF;
$navbarLinkBackgroundHover:#FFBE00;
$navbarLinkBackgroundHover: darken($navbarBackground,10%);
$infoBackground:#65A5D1;
$infoText:#03406A;
$sansFontFamily: Helvetica, Arial;
@import 'bootstrap';
@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
@import 'neuigkeiten';
@import 'font-awesome';
div.header {
display: block;
// background: url('../../../../header1.png') no-repeat;
// background-color:white;// $color_prim;
background-position: right;
border-bottom:1px solid black;
float:left;
color:#000;
padding-left:87px;
padding-top:0px;
// overflow:hidden;
margin-bottom: 0 px
}
div.header h1 {
padding:0;
margin:4px;
font-size:20px;
line-height:32px;
}
div.headerrow {
background: $color_prim
}
$contentdiv-background:none;
$navbar-li-minwidth: 0;
$box-border: lightgray solid 1px;
$box-border-radius:8px;
$box-background: white;
@import 'layout';
@import 'calendars';

View File

@@ -1,5 +0,0 @@
@import "bootstrap/responsive";
@media (max-width: 979px){
.earlymax {
min-width: 100%;
}}

View File

@@ -1,4 +0,0 @@
#content
{
background:red;
}

View File

@@ -1,123 +0,0 @@
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
* require_tree .
*= require blueimp-gallery-all
*= require jquery.fileupload-ui
*= require jquery.datetimepicker
*= require jquery.ui.dialog
*= require jquery.ui.autocomplete
*= require jquery.ui.progressbar
*= require jquery.ui.tabs
* require 'bootstrap'
* require 'neuigkeiten'
*/
$color_schema_1: #006599;
$color_schema_2: #630CE8;
$color_schema_3: #FF0021;
$color_schema_4: #E8820C;
$color_schema_5: #FFF30D;
$color_schema_1_dark: darken($color_schema_1, 10%);
$color_schema_2_dark: darken($color_schema_2, 10%);
$color_schema_3_dark: darken($color_schema_3, 10%);
$color_schema_4_dark: darken($color_schema_4, 10%);
$color_schema_5_dark: darken($color_schema_5, 10%);
$color_prim: $color_schema_1_dark; // #006599; //071672;
$color_prim_light: lighten($color_prim ,10%);
$color_prim_vlight: lighten($color_prim ,30%);
$color_prim_dark: darken($color_prim ,10%);
$color_prim_vdark: darken($color_prim ,30%);
$color_cont: $color_schema_3;
$color_cont_light:lighten($color_cont ,10%);
$linkColor: $color_prim;
$linkColorHover: $color_schema_1;
$white: #FFFFFF;
$bodyBackground: #EEE;
$navbarBackground: #EEE;//$color_prim;
$navbarText: $color_prim;
$navbarLinkColor: $color_prim;
$navbarLinkColorHover: $color_schema_1;
$dropdownLinkColor: black;
$navbar-default-brand-color: black;
$navbarBrandColor:black;
$navbarBackgroundHighlight: #EEE;
//$navbarBackgroundHighlight:#FFFFFF;
$navbarLinkBackgroundHover: darken($navbarBackground,10%);
$infoBackground:#65A5D1;
$infoText:#03406A;
$sansFontFamily: Helvetica, Arial;
@import 'bootstrap';
@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
@import 'font-awesome';
@import 'neuigkeiten';
@import 'themengruppen';
div.header {
display: block;
// background: url('../../../../header1.png') no-repeat;
// background-color:white;// $color_prim;
// background-position: right;
vertical-align:middle;
float:left;
color:#000;
padding-top:0px;
overflow:visible;
height:45px;
margin-bottom: 0 px
}
div.header h1 {
padding:0;
margin:4px;
font-size:20px;
line-height:32px;
}
div.header img {
//top:2px;
//position:relative;
}
div.navbar {
border-bottom: $color_prim solid 3px;
}
div.headerrow {
}
$contentdiv-background:none;
$navbar-li-minwidth: 0;
$box-border: #ccc solid 1px;
$box-border-radius:0px;
$box-background: white;
@import 'layout';
@import 'linkboxes';
@import 'calendars';
@import 'formtastic-bootstrap'

View File

@@ -1,61 +0,0 @@
ul.linkbox-list
{
max-width:70em;
margin-left:auto;
margin-right:auto;
}
a.linkbox, div.contentbox
{
display:block;
padding:5px;
border-radius:$box-border-radius;
border: $box-border;
background: $box-background;
}
a.linkbox:hover{ box-shadow: 1px 1px 2px 2px lightgray; }
a.linkbox.color-1 { color:$color_schema_1; }
a.linkbox.color-2 { color:$color_schema_2; }
a.linkbox.color-3 { color:$color_schema_3; }
a.linkbox.color-4 { color:$color_schema_4;}
a.linkbox.color-5 { color:$color_schema_5;}
a.color-1-dark { color:$color_schema_1_dark; }
a.color-2-dark { color:$color_schema_2_dark; }
a.color-3-dark { color:$color_schema_3_dark;}
a.color-4-dark { color:$color_schema_4_dark;}
a.color-5-dark { color:$color_schema_5_dark;}
a.color-1-dark:hover { color:$color_schema_1; }
a.color-2-dark:hover { color:$color_schema_2; }
a.color-3-dark:hover { color:$color_schema_3; }
a.color-4-dark:hover { color:$color_schema_4; }
a.color-5-dark:hover { color:$color_schema_5; }
a.linkbox li { }
ul.linkbox-list li {
margin-bottom:10px;
}
ul.linklist {
max-width:100%;
padding:0;
margin:5px;
}
ul.linklist li {
list-style:none;
margin-bottom:2px;
}
ul.linklist li a i{
vertical-align:middle;
margin-right:6px;
font-size:2em;}
span.linklist a {
padding:5px;
border-radius:$box-border-radius;
border: $box-border;
background: $box-background;
display:block;
float:left;
}

View File

@@ -1,126 +0,0 @@
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
* require_tree .
*= require jquery.fileupload-ui
* require 'bootstrap'
* require 'neuigkeiten'
*/
$color_schema_1: #006599;
$color_schema_2: #630CE8;
$color_schema_3: #FF0021;
$color_schema_4: #E8820C;
$color_schema_5: #FFF30D;
$color_schema_1_dark: darken($color_schema_1, 10%);
$color_schema_2_dark: darken($color_schema_2, 10%);
$color_schema_3_dark: darken($color_schema_3, 10%);
$color_schema_4_dark: darken($color_schema_4, 10%);
$color_schema_5_dark: darken($color_schema_5, 10%);
// Colorshema #0A64A4
$color_prim: #071672;
$color_prim_light: lighten($color_prim ,10%);
$color_prim_vlight: lighten($color_prim ,30%);
$color_prim_dark: darken($color_prim ,10%);
$color_prim_vdark: darken($color_prim ,30%);
$color_cont: FFDB73;
$color_cont_light:FFDB73;
$linkColor: $color_prim;
$white: #FFFFFF;
$bodyBackground: #EEE;
$navbarBackground: $color_prim;
$navbarText: $white;
$navbarLinkColor: $white;
$navbarLinkColorHover: white;
$dropdownLinkColor: black;
$navbar-default-brand-color: black;
$navbarBrandColor:black;
$navbarBackgroundHighlight: $color_prim;
//$navbarBackgroundHighlight:#FFFFFF;
$navbarLinkBackgroundHover:#FFBE00;
$navbarLinkBackgroundHover: darken($navbarBackground,10%);
$infoBackground:#65A5D1;
$infoText:#03406A;
@font-face {
font-family: 'ayuma2yk';
src:font-url('Ayuma2yk.ttf');}
@font-face {
font-family: 'cmunrm';
src: font-url('cmunrm.eot');
src: font-url('cmunrm.eot') format('embedded-opentype'),
font-url('cmunrm.woff') format('woff'),
font-url('cmunrm.ttf') format('truetype'),
font-url('cmunrm.svg') format('svg');
font-weight: normal;
font-style: normal;
}
$sansFontFamily: cmunrm, Helvetica, Arial;
@import 'bootstrap';
@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
@import 'font-awesome';
@import 'neuigkeiten';
@import 'fetlogo';
#menudiv {
}
div.header {
display: block;
// background: url('../../../../header1.png') no-repeat;
// background-color:white;// $color_prim;
background-position: right;
font-family: ayuma2yk;
// border-bottom:1px solid black;
float:left;
color:#000;
padding-left:87px;
padding-top:0px;
// overflow:hidden;
margin-bottom: 0 px
}
div.header h1 {
padding:0;
margin:4px;
font-size:20px;
line-height:32px;
}
div.headerrow {
background: $color_prim
}
$contentdiv-background:none;
$navbar-li-minwidth: 0;
$box-border: lightgray solid 1px;
$box-border-radius:0px;
$box-background: white;
@import 'layout';
@import 'calendars';

View File

@@ -1,91 +0,0 @@
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
* require_tree .
*= require jquery.fileupload-ui
* require 'bootstrap'
* require 'neuigkeiten'
*/
$color_schema_1: #006599;
$color_schema_2: #630CE8;
$color_schema_3: #FF0021;
$color_schema_4: #E8820C;
$color_schema_5: #FFF30D;
$color_schema_1_dark: darken($color_schema_1, 30%);
$color_schema_2_dark: darken($color_schema_2, 30%);
$color_schema_3_dark: darken($color_schema_3, 30%);
$color_schema_4_dark: darken($color_schema_4, 30%);
$color_schema_5_dark: darken($color_schema_5, 30%);
$color_prim: #0A64A4;
$color_prim_light: #0B65A5;
$color_prim_vlight: #2B85C5;
$color_cont: FFDB73;
$color_cont_light:FFDB73;
$linkColor: #03006E;
$white: #FFFFFF;
$bodyBackground: $white;
$navbarBackground: $color_cont;
$navbarBackground: #FFFFFF;
$navbarBackgroundHighlight:lighten($navbarBackground,30%);
//$navbarBackgroundHighlight:#FFFFFF;
$navbarLinkBackgroundHover:#FFBE00;
$navbarLinkBackgroundHover: lighten(#cccccc,10%);
$infoBackground:#65A5D1;
$infoText:#03406A;
$sansFontFamily: Helvetica, Arial;
@import 'bootstrap';
@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
@import 'font-awesome';
@import 'neuigkeiten';
div.header {
display: block;
// background: url('/header1.png') no-repeat;
background-color: #FFF;
background-position: right;
border-bottom:1px solid black;
height:41px;
color:#000;
padding-left:87px;
padding-top:0px;
overflow:hidden;
margin-bottom: 20px
}
div.header h1 {
padding:0;
margin:4px;
font-size:20px;
line-height:32px;
}
div.headerrow {
background: $white
}
$navbar-li-minwidth: 100%;
$contentdiv-background:none;
$box-border: lightgray solid 1px;
$box-border-radius:8px;
$box-background: white;
@import 'layout';
@import 'calendars';
@import 'tinymce';

View File

@@ -50,7 +50,7 @@ class NeuigkeitenController < ApplicationController
end end
@calentry=ce @calentry=ce
ce.object=@neuigkeit ce.object=@neuigkeit
@neuigkeit.calentry=ce @neuigkeit.calentries<<ce
@neuigkeit.save @neuigkeit.save
render 'edit' render 'edit'
@@ -145,6 +145,7 @@ end
@calentries<< Calentry.new @calentries<< Calentry.new
end end
def find_link def find_link
@rubrik=@neuigkeit.rubrik @rubrik=@neuigkeit.rubrik
if can?(:shownonpublic, Rubrik) if can?(:shownonpublic, Rubrik)
@@ -156,6 +157,7 @@ end
@calentries1=@neuigkeit.calentries @calentries1=@neuigkeit.calentries
nlink_search = Neuigkeit::LINKTYPES.clone nlink_search = Neuigkeit::LINKTYPES.clone
nlink_search.collect!{|t| t.constantize} 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 @results= Sunspot.search nlink_search do
fulltext params[:query] fulltext params[:query]
@@ -168,6 +170,7 @@ end
end end
def create_link def create_link
@neuigkeit = Neuigkeit.find(params[:id]) @neuigkeit = Neuigkeit.find(params[:id])
@@ -178,6 +181,7 @@ end
format.js format.js
end end
end end
def delete_link def delete_link
@neuigkeit = Neuigkeit.find(params[:id]) @neuigkeit = Neuigkeit.find(params[:id])
@nlink = @neuigkeit.nlinks.find(params[:nlink_id]) @nlink = @neuigkeit.nlinks.find(params[:nlink_id])
@@ -187,6 +191,7 @@ end
format.js format.js
end end
end end
def create def create
@neuigkeit = Neuigkeit.new(params[:neuigkeit]) @neuigkeit = Neuigkeit.new(params[:neuigkeit])
@neuigkeit.author=current_user @neuigkeit.author=current_user

View File

@@ -3,7 +3,7 @@ class ThemengruppenController < ApplicationController
# GET /themengruppen.json # GET /themengruppen.json
load_and_authorize_resource load_and_authorize_resource
def index def index
@themengruppen = Themengruppe.accessible_by(current_ability, :show).public.includes(:themen) @themengruppen = Themengruppe.accessible_by(current_ability, :show).not_intern.includes(:themen)
@toolbar_elements = [] @toolbar_elements = []
@toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.new'), :path=>new_themengruppe_path()} if can? :new, Themengruppe @toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.new'), :path=>new_themengruppe_path()} if can? :new, Themengruppe
@toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.manage_all'), :path=>verwalten_all_themengruppen_path()} if can? :verwalten_all, Themengruppe @toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.manage_all'), :path=>verwalten_all_themengruppen_path()} if can? :verwalten_all, Themengruppe

View File

@@ -2,11 +2,23 @@
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
skip_before_filter :verify_authenticity_token skip_before_filter :verify_authenticity_token
def failure def failure
# flash[:notice] = "Failure #{Hash.new(request.env)} #{Hash.new(params)}" # flash[:notice] = "Failure #{Hash.new(request.env)} #{Hash.new(params)}"
#redirect_to new_user_registration_url , :notice=>"Omniauth Login failed" #redirect_to new_user_registration_url , :notice=>"Omniauth Login failed"
super super
end 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 def facebook
# You need to implement the method below in your model (e.g. app/models/user.rb) # 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) @user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)

View File

@@ -42,6 +42,7 @@ m.save
# current_url1({:locale=>target_locale}) .sub "/"+I18n.locale.to_s+"/", "/"+target_locale.to_s+"/" # current_url1({:locale=>target_locale}) .sub "/"+I18n.locale.to_s+"/", "/"+target_locale.to_s+"/"
language_path(locale: target_locale) language_path(locale: target_locale)
end end
def ffi1_icon (name) def ffi1_icon (name)
content_tag("i", "", class: "ficon ffi1-" + name ) content_tag("i", "", class: "ficon ffi1-" + name )
end end
@@ -54,8 +55,11 @@ m.save
end end
def fa_stack(icon1, icon2) 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 end
def ffi1_list def ffi1_list
y=YAML.load_file("#{::Rails.root.to_s}/config/flatfeticon1.yml") y=YAML.load_file("#{::Rails.root.to_s}/config/flatfeticon1.yml")

View File

@@ -0,0 +1,67 @@
require 'nokogiri'
module HtmlHelper
def wrapper_html(tag,&block)
content_tag(tag,nil, class:"test_wrapper", &block)
end
# make a ul with <li><a> structure a bootstrap nav list
def bs_make_ul_nav(options={},&block)
r=capture(&block)
n=Nokogiri.XML(r)
u= n.xpath("/ul").first
u['class']=u['class'].to_s + " nav"
n.xpath("/ul/li").each do |l|
l['class'] = l['class'].to_s + " nav-item hello"
l.xpath("a").each do |a|
a['class']=a['class'].to_s+" nav-link"
end
end
return raw(n.to_html)
end
# Generate Bootstrap Dropdown with toggler as the main button. and a block containing links
def bs_dropdown_menu(toggler="",options={}, &block)
id=options[:id] || SecureRandom.hex(12)
if options[:nav]
tag=:li
toggler=content_tag(:a, toggler, {:role => "button","id"=>id, "aria-haspopup"=>"true", "aria-expanded"=>"false", "data-toggle"=> "dropdown", "href"=>"#","class"=>"dropdown-toggle nav-link"})
c = "dropdown nav-item"
else
toggler=content_tag(:a, toggler, {:role => "button","id"=>id, "aria-haspopup"=>"true", "aria-expanded"=>"false", "data-toggle"=> "dropdown", "href"=>"#","class"=>"btn dropdown-toggle"})
c="dropdown"
tag=(options[:tag].nil? ? :div : options[:tag])
end
ctn= content_tag(:div, capture(&block), {class:"dropdown-menu", "aria-labelledby": id} )
ctn=inject_html_class(:to_links,ctn, "dropdown-item")
content_tag(tag, toggler+ ctn.html_safe, class: c)
end
def bs_modal(toggler="", options={}, &block)
id=options[:id] || SecureRandom.hex(12)
title=options[:title]|| "Hello World!"
ctn=capture(&block)
toggler=content_tag(:button, toggler,{type: "button", class: "btn", "data-toggle": "modal", "data-target":"#"+id})
close_btn=content_tag(:button, content_tag(:span,"&times;".html_safe, {"aria-hidden": "true"}), {type: "button", class: "close", "data-dismiss":"modal", "aria-label": "Close"})
ctn=content_tag(:div,content_tag(:div, content_tag(:h5,title,{class: "modal-title"})+close_btn,{class: "modal-header"})+content_tag(:div, ctn,{class: "modal-body"}), {class: "modal-content"})
toggler+content_tag(:div , content_tag(:div, ctn, {role: "document", class: "modal-dialog"}),{class: "modal fade", id: id, tabindex: "-1", role: "dialog", "aria-labelledby": id+"Label", "aria-hidden": "true"})
end
private
def inject_html_class(mode,html,c)
n=Nokogiri.XML(html)
if mode==:to_links
n.xpath("//a").each do |e|
e['class'] = e['class'].to_s+" " + c
end
return n.to_html
end
raise Error("wrong options for inject_html_class")
end
end

View File

@@ -104,9 +104,9 @@ end
can [:index, :faqs, :show,:new,:edit, :verwalten_all, :verwalten, :sort_themengruppen, :sort_themen, :create, :update ], Themengruppe can [:index, :faqs, :show,:new,:edit, :verwalten_all, :verwalten, :sort_themengruppen, :sort_themen, :create, :update ], Themengruppe
can :manage, Attachment can :manage, Attachment
end end
can [:update,:edit,:verwalten, :showdraft], Thema, :id=>Thema.with_role(:editor, user).pluck(:id) # can [:update,:edit,:verwalten, :showdraft], Thema, :id=>Thema.with_role(:editor, user).pluck(:id)
can [:index, :faqs, :show,:new,:edit, :verwalten_all, :verwalten, :sort_themengruppen, :sort_themen, :create, :update, :delete], Thema, :themengruppe_id=>Themengruppe.with_role(:admin,user).pluck(:id) # can [:index, :faqs, :show,:new,:edit, :verwalten_all, :verwalten, :sort_themengruppen, :sort_themen, :create, :update, :delete], Thema, :themengruppe_id=>Themengruppe.with_role(:admin,user).pluck(:id)
can :delete, Themengruppe, :id=>Themengruppe.with_role(:admin,user).pluck(:id) # can :delete, Themengruppe, :id=>Themengruppe.with_role(:admin,user).pluck(:id)
if user.has_role?("fetadmin") if user.has_role?("fetadmin")
can :delete, Themengruppe can :delete, Themengruppe
can :delete, Thema can :delete, Thema

View File

@@ -18,7 +18,7 @@ class Attachment < ActiveRecord::Base
# validates :thema, :presence => true # validates :thema, :presence => true
validates :name, :presence => true validates :name, :presence => true
scope :titlepic, ->{where(flag_titlepic: true)} scope :titlepic, ->{where(flag_titlepic: true)}
default_scope order("LOWER(name)") default_scope { order("LOWER(name)") }
belongs_to :parent, :polymorphic=>true belongs_to :parent, :polymorphic=>true
def image? def image?

View File

@@ -103,6 +103,6 @@ end
I18n.l(self.start) +" "+ I18n.t("cal.bis")+" "+ I18n.l(self.ende, :format=>format) I18n.l(self.start) +" "+ I18n.t("cal.bis")+" "+ I18n.l(self.ende, :format=>format)
end end
end end
scope :public, -> { where(:public => :true) } # scope :public, -> { where(:public => :true) }
# scope :upcoming, -> { where("start >= ?" , Time.now).where("start <= ?", 28.days.from_now) } # scope :upcoming, -> { where("start >= ?" , Time.now).where("start <= ?", 28.days.from_now) }
end end

View File

@@ -5,9 +5,9 @@ class Comment < ActiveRecord::Base
acts_as_nested_set :scope => [:commentable_id, :commentable_type] acts_as_nested_set :scope => [:commentable_id, :commentable_type]
belongs_to :commentable, :polymorphic=> true belongs_to :commentable, :polymorphic=> true
belongs_to :user belongs_to :user
validate :text, :presence=>true validates :text, :presence=>true
validate :user, :presence=>true validates :user, :presence=>true
validate :commentable, :presence=>true validates :commentable, :presence=>true
include IsCommentable include IsCommentable
NUM = {"Beispiel"=> 2, "Survey::Question"=> 7} NUM = {"Beispiel"=> 2, "Survey::Question"=> 7}
def parent_object def parent_object

View File

@@ -3,10 +3,10 @@ class Document < ActiveRecord::Base
attr_accessible :name, :parent, :text, :typ, :parent_id, :parent_type attr_accessible :name, :parent, :text, :typ, :parent_id, :parent_type
belongs_to :parent, :polymorphic => true belongs_to :parent, :polymorphic => true
validate :name, :length=>{minimum:3} validates :name, :length=>{minimum:3}
validate :text, :presence=>true validates :text, :presence=>true
validate :typ, :presence=>true validates :typ, :presence=>true
validate :parent, :presence=>true validates :parent, :presence=>true
has_paper_trail has_paper_trail
TYPS = { 1=>"fet_docs", 10=>"protocol", 11=> "agenda"} TYPS = { 1=>"fet_docs", 10=>"protocol", 11=> "agenda"}
has_many :attachments, :as=>:parent has_many :attachments, :as=>:parent
@@ -72,7 +72,7 @@ class Document < ActiveRecord::Base
unless self.is_etherpad? || self.id.nil? unless self.is_etherpad? || self.id.nil?
self.etherpadkey="document_"+ self.id.to_s self.etherpadkey="document_"+ self.id.to_s
if self.text.nill? if self.text.nil?
self.ep_pad.html = '<div>'+"text"+'</div>' self.ep_pad.html = '<div>'+"text"+'</div>'
else else
self.ep_pad.html = '<div>'+self.text+'</div>' self.ep_pad.html = '<div>'+self.text+'</div>'
@@ -81,7 +81,7 @@ class Document < ActiveRecord::Base
end end
def dump_to_etherpad def dump_to_etherpad
if self.is_etherpad? if self.is_etherpad?
if self.text.nill? if self.text.nil?
self.ep_pad.html = '<div>'+"text"+'</div>' self.ep_pad.html = '<div>'+"text"+'</div>'
else else
self.ep_pad.html = '<div>'+self.text+'</div>' self.ep_pad.html = '<div>'+self.text+'</div>'

View File

@@ -15,7 +15,7 @@ class Gallery < ActiveRecord::Base
attr_accessible :datum, :desc, :name, :foto_ids attr_accessible :datum, :desc, :name, :foto_ids
has_many :fotos, :dependent => :destroy # Delete fotos if gallery is destroyed has_many :fotos, :dependent => :destroy # Delete fotos if gallery is destroyed
has_many :nlinks, as: :link has_many :nlinks, as: :link
default_scope order("galleries.datum").reverse_order default_scope { order("galleries.datum").reverse_order }
searchable do searchable do
text :desc text :desc
text :name, :boost=>3.0 text :name, :boost=>3.0

View File

@@ -30,6 +30,9 @@ class Gremium < ActiveRecord::Base
end end
belongs_to :thema # Gehört zu einem Thema 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 scope :tabs, -> { where(:typ => [1,3]).order(:typ).order(:name) } # Gremien die in Tabs angezeigt werden (Alle Anderen nur in der Liste

View File

@@ -18,21 +18,6 @@
# typ :string(255) # 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 class Lva < ActiveRecord::Base
ERLAUBTE_TYPEN = ['VO', 'UE', 'VU', 'LU', 'SE', 'PR', 'andere']; ERLAUBTE_TYPEN = ['VO', 'UE', 'VU', 'LU', 'SE', 'PR', 'andere'];
translates :desc,:pruefungsinformation, :fallbacks_for_empty_translations => true, :versioning=> :paper_trail #true #{:gem=>:paper_trail} translates :desc,:pruefungsinformation, :fallbacks_for_empty_translations => true, :versioning=> :paper_trail #true #{:gem=>:paper_trail}
@@ -52,7 +37,7 @@ class Lva < ActiveRecord::Base
# scope :search, ->(query) {where("name like ? or lvas.desc like ?", "%#{query}%", "%#{query}%")} # scope :search, ->(query) {where("name like ? or lvas.desc like ?", "%#{query}%", "%#{query}%")}
validates :lvanr,:format=>{ :with => /^[0-9][0-9][0-9]\.[0-9A][0-9][0-9]$/}, :presence=>true, :uniqueness=>true # , :uniqueness=>true # LVA-Nummer muss das Format 000.000 besitzen (uniqueness?) oder 000 für nicht validates :lvanr,:format=>{ :with => /\A[0-9][0-9][0-9]\.[0-9A][0-9][0-9]\z/}, :presence=>true, :uniqueness=>true # , :uniqueness=>true # LVA-Nummer muss das Format 000.000 besitzen (uniqueness?) oder 000 für nicht
validates_presence_of :ects # ECTS vorhanden? validates_presence_of :ects # ECTS vorhanden?
validates :name, :presence=>true, :uniqueness=>{:scope=>:typ}# Name Eingetragen? validates :name, :presence=>true, :uniqueness=>{:scope=>:typ}# Name Eingetragen?
validates :typ, :presence=>true, :inclusion=> ERLAUBTE_TYPEN validates :typ, :presence=>true, :inclusion=> ERLAUBTE_TYPEN
@@ -113,7 +98,7 @@ class Lva < ActiveRecord::Base
url url
end end
# this should be more DRY
def load_tissdata def load_tissdata
urlp="https://tiss.tuwien.ac.at/api/course/"+ lvanr.to_s.gsub(".","")+"-" urlp="https://tiss.tuwien.ac.at/api/course/"+ lvanr.to_s.gsub(".","")+"-"
begin begin
@@ -202,7 +187,8 @@ class Lva < ActiveRecord::Base
end end
end end
# Why is this an instance method??
# How is it used?
def update_multiple(hash) def update_multiple(hash)
newlvas=[] newlvas=[]
params["lvas"].each do |i,l| params["lvas"].each do |i,l|
@@ -237,7 +223,7 @@ class Lva < ActiveRecord::Base
lecturers.map { |l| l.name } lecturers.map { |l| l.name }
end end
end end
# is this used? in which context?
def self.update_multiple_with_modul(hash,modul) def self.update_multiple_with_modul(hash,modul)
newlvas=[] newlvas=[]
hash.each do |i,l| hash.each do |i,l|
@@ -263,7 +249,7 @@ class Lva < ActiveRecord::Base
end end
# is this used? in which context?
def read_et_forum def read_et_forum
lva=self lva=self
url=lva.forumlink url=lva.forumlink

View File

@@ -1,40 +1,61 @@
# coding: utf-8
# This class represents a single meeting of a group or the whole Fachschaft.
#
class Meeting < ActiveRecord::Base 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 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 belongs_to :neuigkeit, touch: true
has_one :protocol, :class_name=>'Document', :conditions=>{:typ=>10}, :as=>:parent # has one protocol of type Document, which is of typ=10=protocol
has_one :agenda , :as=>:parent,:conditions=>{:typ=>11}, :class_name=>'Document' #has_one :test_ol, :class_name=>'Document', -> { where(:typ => 10) }
has_one :protocol, -> { where(:typ => 10) }, :class_name=>'Document', :as=>:parent
# has one agenda of type Document
has_one :agenda, -> { where :typ=>11 } , :as=>:parent, :class_name=>'Document'
# has one calentry which contains the date and time of this meeting
has_one :calentry, as: :object, :dependent=> :destroy 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 :calendar, :through=>:meetingtyp
# has one rubrik, thus it is associated to a rubrik
has_one :rubrik, :through=>:meetingtyp has_one :rubrik, :through=>:meetingtyp
scope :upcomming, includes(:calentry).where("calentries.start>?",1.hour.ago)
default_scope includes(:calentry).order("calentries.start").reverse_order # 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 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 validates :parent, :presence=>true
validate :calentry, :presence=>true # Each meeting needs a calendar entry
validates :calentry, :presence=>true
# before each validation fix the calendar entry such that it is always
before_validation :fix_calentry before_validation :fix_calentry
# title is an alias for text
def title def title
self.text self.text
end end
# Text is a text representation of the meeting
def text def text
unless self.meetingtyp.try(:name).to_s.empty? t = self.meetingtyp.try(:name) || self.parent.try(:title) || ""
t = self.meetingtyp.name.to_s+", " t = t + ", " unless t.empty?
else
t=""
t = parent.title.to_s + ", " if self.name.empty?
end
t= t+ self.name.to_s 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 = t +" "+ I18n.t("date.am")+" "+ self.calentry.text unless self.calentry.nil?
t t
end end
# Creante an anouncement with an author
# @param user is the author
def create_announcement(user) def create_announcement(user)
if self.neuigkeit.nil? if self.neuigkeit.nil?
n = Neuigkeit.new n = Neuigkeit.new
@@ -48,32 +69,40 @@ class Meeting < ActiveRecord::Base
self.neuigkeit= n self.neuigkeit= n
end end
end end
# Update the title of the announcement to the text of this meeting
# @returns [true] if save was successful
def update_announcement def update_announcement
n=self.neuigkeit n=self.neuigkeit
n.title=self.text n.title=self.text
n.save n.save
end end
# fixing the calendar entry and the calendar
# most importantly the calendar of the calentry
def fix_calentry def fix_calentry
self.calentry.object=self unless self.calentry.nil? self.calentry.object=self unless self.calentry.nil?
self.calentry.calendar = self.meetingtyp.rubrik.calendar self.calentry.calendar = self.meetingtyp.rubrik.calendar
end end
def public? def public?
! (self.intern) ! (self.intern)
end end
# Create a Document that is a protocol for the meeting
def create_protocol def create_protocol
if self.protocol.nil? if self.protocol.nil? # if no protocol exists
d=Document.new d=Document.new
d.typ=10 d.typ=10
d.name="Protokoll" d.name="Protokoll"
unless self.meetingtyp.protocol.nil?
d.text=self.meetingtyp.protocol.text
end
d.save d.save
self.protocol=d self.protocol=d
end end
# what happens if a protocol already exists?
end end
# Create a calender entry for this meeting
def create_calentry def create_calentry
if self.calentry.nil? if self.calentry.nil?
ce =Calentry.new ce =Calentry.new
@@ -86,9 +115,6 @@ class Meeting < ActiveRecord::Base
d=Document.new d=Document.new
d.typ=11 d.typ=11
d.name="Agenda" d.name="Agenda"
unless self.meetingtyp.agenda.nil?
d.text=self.meetingtyp.agenda.text
end
d.save d.save
self.agenda=d self.agenda=d
end end
@@ -112,26 +138,16 @@ class Meeting < ActiveRecord::Base
def update_time_from_protocol def update_time_from_protocol
st= /Beginn[\s:]*([^<>]*)/.match(self.protocol.text)[1].to_s st= /Beginn[\s:]*([^<>]*)/.match(self.protocol.text)[1].to_s
st= /Anfang[\s:]*([^<>]*)/.match(self.protocol.text)[1].to_s if 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.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)[1].to_s 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.empty? self.calentry.ende=(self.calentry.ende.to_date.to_s + " " +st).to_datetime unless st.nil? || st.empty?
end end
def agenda_text def agenda_text
unless self.agenda.nil? return self.agenda.try(:text) || ""
t= self.agenda.text
else
t= ""
end
t
end end
def protocol_text def protocol_text
unless self.protocol.nil? return self.protocol.try(:text) || ""
t= self.protocol.text
else
t= ""
end
t
end end
searchable do searchable do

View File

@@ -1,11 +1,12 @@
class Meetingtyp < ActiveRecord::Base class Meetingtyp < ActiveRecord::Base
attr_accessible :agendaintern, :desc, :name, :protocolintern, :rubrik_id, :picture attr_accessible :agendaintern, :desc, :name, :protocolintern, :rubrik_id, :picture
belongs_to :rubrik belongs_to :rubrik
validate :rubrik, :presence=>true validates :rubrik, :presence=>true
validates :name, :presence=>true
has_many :meetings has_many :meetings
has_one :calendar, through: :rubrik has_one :calendar, through: :rubrik
has_one :protocol, :class_name=>'Document', :conditions=>{:typ=>10}, :as=>:parent has_one :protocol, -> {where(:typ=>10)}, :class_name=>'Document', :as=>:parent
has_one :agenda , :as=>:parent, :conditions=>{:typ=>11}, :class_name=>'Document' has_one :agenda, -> {where(:typ=>11)} , :as=>:parent, :class_name=>'Document'
mount_uploader :picture, PictureUploader mount_uploader :picture, PictureUploader

View File

@@ -21,7 +21,7 @@ class Neuigkeit < ActiveRecord::Base
has_many :nlinks, :dependent=> :destroy has_many :nlinks, :dependent=> :destroy
has_one :meeting has_one :meeting
has_many :attachments, :as=>:parent has_many :attachments, :as=>:parent
has_one :title_pic, :class_name=>"Attachment", :as=>:parent, :conditions=>["attachments.flag_titlepic =?", true] has_one :title_pic, -> {where("attachments.flag_titlepic =?", true)}, :class_name=>"Attachment", :as=>:parent
has_many :questions, :class_name=>"Survey::Question", as: :parent has_many :questions, :class_name=>"Survey::Question", as: :parent
@@ -32,11 +32,11 @@ class Neuigkeit < ActiveRecord::Base
mount_uploader :picture, PictureUploader mount_uploader :picture, PictureUploader
include IsCommentable include IsCommentable
default_scope order(:cache_order).includes(:calentries).includes(:title_pic) default_scope { order(:cache_order).includes(:calentries).includes(:title_pic) }
scope :recent, -> { published.limit(10)} scope :recent, -> { published.limit(10)}
scope :unpublished, -> {where("datum > ? OR datum IS NULL", Time.now)} scope :unpublished, -> {where("datum > ? OR datum IS NULL", Time.now)}
scope :published_scope, ->{where("datum <= ? AND datum IS NOT NULL", Time.now)} scope :published_scope, ->{where("datum <= ? AND datum IS NOT NULL", Time.now)}
scope :public, ->{includes(:rubrik).where("rubriken.public"=>true)} # scope :public, ->{includes(:rubrik).where("rubriken.public"=>true)}
scope :intern, ->{includes(:rubrik).where("rubriken.public"=>false)} scope :intern, ->{includes(:rubrik).where("rubriken.public"=>false)}
# scope :search, ->(query) {where("text like ? or title like ?", "%#{query}%", "%#{query}%")} # scope :search, ->(query) {where("text like ? or title like ?", "%#{query}%", "%#{query}%")}

View File

@@ -5,6 +5,6 @@ class Nlink < ActiveRecord::Base
validates :neuigkeit, :presence=>true validates :neuigkeit, :presence=>true
validates :link, :presence=>true validates :link, :presence=>true
validates :link_id, :uniqueness=>{:scope=>[:neuigkeit_id,:link_type]} validates :link_id, :uniqueness=>{:scope=>[:neuigkeit_id,:link_type]}
default_scope includes(:neuigkeit).order("neuigkeiten.datum").reverse_order default_scope -> {includes(:neuigkeit).order("neuigkeiten.datum").reverse_order}
end end

View File

@@ -13,7 +13,7 @@
class Rubrik < ActiveRecord::Base class Rubrik < ActiveRecord::Base
attr_accessible :desc, :name, :prio, :calendar, :public, :icon, :color attr_accessible :desc, :name, :prio, :calendar, :public, :icon, :color
has_many :neuigkeiten, :class_name => "Neuigkeit" has_many :neuigkeiten, :class_name => "Neuigkeit"
has_many :published, :class_name => "Neuigkeit", :conditions=>["Neuigkeit.published"] has_many :published, -> {where(published: True)}, :class_name => "Neuigkeit"
has_many :calentries, :through => :neuigkeiten, :as=>:object has_many :calentries, :through => :neuigkeiten, :as=>:object
resourcify resourcify
has_many :meetingtyps has_many :meetingtyps

View File

@@ -34,10 +34,10 @@ class Studium < ActiveRecord::Base
has_many :lvas, :through=>:moduls has_many :lvas, :through=>:moduls
has_many :semester, :dependent => :destroy has_many :semester, :dependent => :destroy
has_many :attachments, :as=>:parent has_many :attachments, :as=>:parent
validates :abkuerzung, :length=>{:maximum=>5}, :format=>{:with=>/^[a-zA-z]{0,5}$/} validates :abkuerzung, :length=>{:maximum=>5}, :format=>{:with=>/\A[a-zA-z]{0,5}\z/}
validates :typ, :inclusion => {:in => ["Bachelor","Master"] } validates :typ, :inclusion => {:in => ["Bachelor","Master"] }
validates :name, :uniqueness => true, :presence=>true validates :name, :uniqueness => true, :presence=>true
validates :zahl, :presence=>true, :format=>{:with=>/^[0-9A-Z]{4,10}$/}, :uniqueness => true validates :zahl, :presence=>true, :format=>{:with=>/\A[0-9A-Z]{4,10}\z/}, :uniqueness => true
mount_uploader :picture, PictureUploader mount_uploader :picture, PictureUploader

View File

@@ -24,7 +24,7 @@ class Thema < ActiveRecord::Base
# Attachments can be all data formats # Attachments can be all data formats
has_many :attachments, :as=>:parent has_many :attachments, :as=>:parent
# attached pics can be used as title pictures # attached pics can be used as title pictures
has_many :titlepics, :as=>:parent, :class_name=>'Attachment', :conditions=>{:flag_titlepic=>true} has_many :titlepics, -> {where(flag_titlepic: true)}, :as=>:parent, :class_name=>'Attachment'
# each topic has to belong to one group # each topic has to belong to one group
belongs_to :themengruppe, :foreign_key => "themengruppe_id", :touch=>true belongs_to :themengruppe, :foreign_key => "themengruppe_id", :touch=>true
validates :themengruppe, :presence => true validates :themengruppe, :presence => true
@@ -41,9 +41,9 @@ class Thema < ActiveRecord::Base
validates :text, :presence => true validates :text, :presence => true
scope :outdated, -> {includes(:translations).where("thema_translations.updated_at<?",7.month.ago).where("thema_translations.locale"=>I18n.locale)} scope :outdated, -> {includes(:translations).where("thema_translations.updated_at<?",7.month.ago).where("thema_translations.locale"=>I18n.locale)}
scope :public, where(:isdraft=>false).includes(:themengruppe).where("themengruppen.public"=>true) scope :published,->{ where(:isdraft=>false).includes(:themengruppe).where("themengruppen.public"=>true)}
default_scope includes(:translations).order("themen.priority").reverse_order default_scope -> {includes(:translations).order("themen.priority").reverse_order}
# make topic searchable # make topic searchable
searchable do searchable do
text :text text :text

View File

@@ -24,7 +24,8 @@ class Themengruppe < ActiveRecord::Base
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true
scope :intern,-> {where(:public=>false)} scope :intern,-> {where(:public=>false)}
scope :public,-> {where(:public=>true)} scope :not_intern, -> {where(:public=>true)}
# scope :public,-> {where(:public=>true)}
def self.find_wiki_default def self.find_wiki_default
where(:wiki_default=>true).first where(:wiki_default=>true).first

View File

@@ -29,12 +29,33 @@ class User < ActiveRecord::Base
# Include default devise modules. Others available are: # Include default devise modules. Others available are:
# :token_authenticatable, :confirmable, # :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable # :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 acts_as_voter
# Setup accessible (or protected) attributes for your model # Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid, :name attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid, :name
belongs_to :fetprofile belongs_to :fetprofile
# attr_accessible :title, :body # attr_accessible :title, :body
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) def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
logger.debug auth.to_s logger.debug auth.to_s
logger.debug "DDD Username= #{auth.username}" logger.debug "DDD Username= #{auth.username}"

View File

@@ -15,9 +15,9 @@
* require_tree . * require_tree .
*= require jquery.fileupload-ui *= require jquery.fileupload-ui
*= require jquery.datetimepicker *= require jquery.datetimepicker
*= require jquery.ui.dialog *= require jquery-ui/dialog
*= require jquery.ui.tabs *= require jquery-ui/tabs
*= require jquery.ui.progressbar *= require jquery-ui/progressbar
* require 'bootstrap' * require 'bootstrap'

View File

@@ -0,0 +1,49 @@
@import "bootstrap/functions";
@import "bootstrap/variables";
@import "bootstrap/mixins";
@import "bootstrap/root";
@import "bootstrap/reboot";
@import "bootstrap/type";
@import "bootstrap/images";
@import "bootstrap/code";
@import "bootstrap/grid";
@import "bootstrap/tables";
@import "bootstrap/forms";
@import "bootstrap/buttons";
@import "bootstrap/transitions";
@import "bootstrap/dropdown";
@import "bootstrap/button-group";
@import "bootstrap/input-group";
@import "bootstrap/custom-forms";
@import "bootstrap/nav";
@import "bootstrap/navbar";
@import "bootstrap/card";
@import "bootstrap/breadcrumb";
@import "bootstrap/pagination";
@import "bootstrap/badge";
@import "bootstrap/jumbotron";
@import "bootstrap/alert";
@import "bootstrap/progress";
@import "bootstrap/media";
@import "bootstrap/list-group";
@import "bootstrap/close";
@import "bootstrap/toasts";
@import "bootstrap/modal";
@import "bootstrap/tooltip";
@import "bootstrap/popover";
@import "bootstrap/carousel";
@import "bootstrap/spinners";
@import "bootstrap/utilities";
@import "bootstrap/print";
//$primary: #8F0;
//$link-color:#FF00FF;
//$infoBackground:#65A5D1;
//$infoText:#03406A;
$linkColor: $color_prim;
$linkColorHover: $color_schema_1;
$white: #FFFFFF;

View File

@@ -0,0 +1,67 @@
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/de_DE/sdk.js#xfbml=1&appId=120379864660921&version=v2.0";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="content-wrap content-column" style="max-width:90em;">
<h1><%= I18n.t('home.willkommen') %></h1>
<%= raw(@starttopic.text) unless @starttopic.nil? %>
<div class="container-fluid">
<div class="row-fluid">
<div class="col-md-4">
<ul class="linklist">
<li>
<%= link_to ffi1_icon("facebook1") + I18n.t('home.fblogin'), user_facebook_omniauth_authorize_path ,class: :linkbox %>
</li>
<li>
<%= link_to ffi1_icon("academic") + I18n.t('home.login'), user_ldap_omniauth_authorize_path ,class: :linkbox %>
</li>
<li>
<%= link_to ffi1_icon("quiz")+ I18n.t("themengruppe.faqs"), faqs_themengruppen_path,class: :linkbox %>
</li>
<li><%= link_to ffi1_icon("books19")+"Beispielsammlung", studium_path(Studium.first, {:ansicht=>'semesteransicht'}) ,class: :btn ,class: :linkbox if Studium.count > 0 %></li>
<li><%= link_to "Alte Beispielsammlung", "http://www.fet.at/alt/bin/view/Beispielsammlung/WebHome" ,class: :btn ,class: :linkbox %></li>
</ul>
<% cache("stickytopics_startpage_"+cache_array_key(@stickythemen)) do %>
<ul class="linklist">
<% @stickythemen.each do |t1| %>
<li>
<%= link_to t1,:class=>:linkbox do %>
<%= render partial: "themen/nlink", object: t1 %>
<% end %>
</li>
<% end %>
</ul>
<% end %>
<%= render 'beispiele' %>
</div>
<div class="col-md-5">
<ul class="unstyled linkbox-list">
<% @neuigkeiten.each do |n| %>
<li><%= render n if can?(:show, n) %> </li>
<% end %>
</ul>
</div>
<div class="col-md-3">
<% cache("calendar_" + cache_array_key(@calentries)+params[:month].to_s+params[:year].to_s) do %>
<%= render 'calendars/calentries', :object=>@calentries %>
<% end %>
<div class="fb-like-box" data-href="https://www.facebook.com/FachschaftET" data-colorscheme="light" data-show-faces="true" data-header="true" data-stream="false" data-show-border="true"></div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,66 @@
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="https://www.fet.at/logo2014_64.png">
<link rel="alternate" hreflang="de" href="<%= url_for(params.merge(:locale=>:de))%>" />
<link rel="alternate" hreflang="en" href="<%= url_for(params.merge(:locale=>:en))%>" />
<%= stylesheet_link_tag "application", :media=>"all"%>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
<% if content_for?(:header) %>
<%= yield :header %>
<% else %>
<title>Fetsite</title>
<% end %>
</head>
<body>
<div id="maincontainer" class="container-fluid">
<div class="row-fluid">
<div class="span10 offset1 header_span">
<% cache("menu_u"+user_signed_in?.to_s+current_user.try(:id).to_s+"l"+I18n.locale.to_s+ can?(:seeintern, User).to_s+ can?(:index,Gallery).to_s+params[:theme].to_s, expires_in: 24.hours) do %>
<div class="header_wrap">
<div class="header hidden-print">
<%= link_to home_index_path do %>
<!-- <span class="feticon-fet_logo fa-4x color-1"> </span>-->
<%= image_tag('/logo2014_64.png',{:style=>"float:left;height:50px",:height=>"50"}) %>
<% end %>
</div>
<div class="header visible-print">
<%= image_tag('/logo2014_64.png',{:style=>"float:left;height:50px",:height=>"50"}) %>
</div>
<div class="visible-print">
Fachschaft Elektrotechnik
<hr/>
</div>
<div id="menudiv" style="margin-top:12px" class="hidden-print">
<%= render :template => 'layouts/menu' %>
</div>
</div>
<% end %>
</div>
</div>
<div class="row-fluid">
<div class="span10 offset1" id="contentdiv">
<%= yield %>
</div>
</div>
</div>
<script>
$('.dropdown-toggle').click(function(e) {
e.preventDefault();
setTimeout($.proxy(function() {
if ('ontouchstart' in document.documentElement) {
$(this).siblings('.dropdown-backdrop').off().remove();
}
}, this), 0);
});
</script>
</body>
</html>

View File

@@ -1,3 +1,8 @@
<%= calendar object do |entry| %> <% unless object.nil? %>
<%= month_calendar events: object do |date, calentries| %>
<%= I18n.l(date,format: "%d") %>
<% calentries.each do |entry| %>
<div><%= link_to entry.name.to_s, polymorphic_path(entry.object) %></div> <div><%= link_to entry.name.to_s, polymorphic_path(entry.object) %></div>
<% end %> <% end %>
<% end %>
<% end %>

View File

@@ -2,10 +2,10 @@
<p id="notice"><%= notice %></p> <p id="notice"><%= notice %></p>
<p> <ul class="linklist"> <p> <ul class="linklist">
<li> <li>
<%= link_to ffi1_icon("facebook1") + I18n.t('home.fblogin'), user_omniauth_authorize_path(:facebook) ,class: :linkbox %> <%= link_to ffi1_icon("facebook1") + I18n.t('home.fblogin'), user_facebook_omniauth_authorize_path(:facebook) ,class: :linkbox %>
</li> </li>
<li> <li>
<%= link_to ffi1_icon("academic") + I18n.t('home.login'), user_omniauth_authorize_path(:ldap) ,class: :linkbox %> <%= link_to ffi1_icon("academic") + I18n.t('home.login'), user_ldap_omniauth_authorize_path(:ldap) ,class: :linkbox %>
</li> </li>
</ul> </ul>
</p> </p>
@@ -24,6 +24,4 @@
<div><%= f.submit "Sign in" %></div> <div><%= f.submit "Sign in" %></div>
<% end %> <% end %>
<%= render "devise/shared/links" %> <%= render "devise/shared/links" %>

View File

@@ -4,6 +4,7 @@ Verwendung: Aufruf mit
< % = render :partial=>'layouts/pretty_toolbar', :object=>@foo % > einen beliebigen array @foo übergeben < % = render :partial=>'layouts/pretty_toolbar', :object=>@foo % > einen beliebigen array @foo übergeben
--> -->
<% pretty_toolbar=nil unless defined?(pretty_toolbar) %>
<% toolbar_elements = !pretty_toolbar.nil? ? pretty_toolbar : @toolbar_elements %> <% toolbar_elements = !pretty_toolbar.nil? ? pretty_toolbar : @toolbar_elements %>
<% unless toolbar_elements.nil? || toolbar_elements.empty? %> <% unless toolbar_elements.nil? || toolbar_elements.empty? %>
<!--<span class="label"><% I18n.t("common.actions")%></span> <!--<span class="label"><% I18n.t("common.actions")%></span>

View File

@@ -27,6 +27,22 @@
</li><% end %> </li><% end %>
</ul> </ul>
<ul class="nav nav-pills nav-stacked pull-right"> <ul class="nav nav-pills nav-stacked pull-right">
<li>
<% if not user_signed_in? %>
<% if Rails.env.development? %>
<%# link_to I18n.t('home.login'), user_developer_omniauth_authorize_path %>
<%= render 'layouts/login' %>
<% else %>
<%= link_to ffi1_icon("academic") + I18n.t('home.login'), user_ldap_omniauth_authorize_path(:ldap) %>
<% end %>
<% else %>
<%= render 'layouts/login' %>
<% end %>
</li>
<li> <li>
<!--<a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" > <%= image_tag("/flaggen/png/"+I18n.locale.to_s+".png") + " " +I18n.t('sprache',:scope=>'home')%><b class="caret"></b></a>--> <!--<a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" > <%= image_tag("/flaggen/png/"+I18n.locale.to_s+".png") + " " +I18n.t('sprache',:scope=>'home')%><b class="caret"></b></a>-->
<!-- Split button --> <!-- Split button -->
@@ -44,7 +60,7 @@
</ul></div> </ul></div>
</li><li> </li><li>
<%= link_to ffi1_icon("academic") + I18n.t('home.login'), user_omniauth_authorize_path(:ldap) %> <%# link_to ffi1_icon("academic") + I18n.t('home.login'), user_omniauth_authorize_path(:ldap) %>
<%# render 'layouts/login' %> <%# render 'layouts/login' %>
</li></ul> </li></ul>

View File

@@ -1,11 +1,14 @@
Fetsite::Application.configure do Fetsite::Application.configure do
# Settings specified here will take precedence over those in config/application.rb # Settings specified here will take precedence over those in config/application.rb
config.serve_static_files = true
# In the development environment your application's code is reloaded on # In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development # every request. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes. # since you don't have to restart the web server when you make code changes.
config.cache_classes = false config.cache_classes = false
config.eager_load = false
# Log error messages when you accidentally call methods on nil. # Log error messages when you accidentally call methods on nil.
config.whiny_nils = true config.whiny_nils = true
@@ -28,8 +31,8 @@ Fetsite::Application.configure do
# Log the query plan for queries taking more than this (works # Log the query plan for queries taking more than this (works
# with SQLite, MySQL, and PostgreSQL) # with SQLite, MySQL, and PostgreSQL)
config.active_record.auto_explain_threshold_in_seconds = 0.5 # config.active_record.auto_explain_threshold_in_seconds = 0.5
config.active_record.raise_in_transactional_callbacks=true
# Do not compress assets # Do not compress assets
config.assets.compress = false config.assets.compress = false

View File

@@ -3,6 +3,7 @@ Fetsite::Application.configure do
# Code is not reloaded between requests # Code is not reloaded between requests
config.cache_classes = true config.cache_classes = true
config.serve_static_files = true
# Full error reports are disabled and caching is turned on # Full error reports are disabled and caching is turned on
config.consider_all_requests_local = false config.consider_all_requests_local = false

View File

@@ -8,7 +8,7 @@ Fetsite::Application.configure do
config.cache_classes = true config.cache_classes = true
# Configure static asset server for tests with Cache-Control for performance # Configure static asset server for tests with Cache-Control for performance
config.serve_static_assets = true config.serve_static_files = false
config.static_cache_control = "public, max-age=3600" config.static_cache_control = "public, max-age=3600"
# Log error messages when you accidentally call methods on nil # Log error messages when you accidentally call methods on nil

View File

@@ -225,6 +225,7 @@ Devise.setup do |config|
# up on your models and hooks. # up on your models and hooks.
#config.omniauth :facebook, 'appid', 'secret' #config.omniauth :facebook, 'appid', 'secret'
secrets = YAML.load_file("#{::Rails.root.to_s}/config/omniauth_secrets.yml") 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 :facebook, secrets["facebook"]["appid"], secrets["facebook"]["secret"]
config.omniauth :ldap, :title => "My LDAP", config.omniauth :ldap, :title => "My LDAP",
:host => secrets["ldap"]["host"], :host => secrets["ldap"]["host"],
@@ -236,6 +237,8 @@ Devise.setup do |config|
:bind_dn =>secrets["ldap"]['bind'], :bind_dn =>secrets["ldap"]['bind'],
:password => secrets["ldap"]['password'] :password => secrets["ldap"]['password']
config.secret_key = '8dbd2a8c1cbffb76ffd5381a58078b2f1fd622e7403035cc40e9d1346d7acf6f090a3f424b2ecc8365ad435e5bfea96ddd30eec3ffe09e876a7e0033a7ab4331'
# ==> Warden configuration<< # ==> Warden configuration<<
# If you want to use other strategies, that are not supported by Devise, or # 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. # change the failure app, you can configure them inside the config.warden block.

View File

@@ -1 +1 @@
I18n.default_locale = :de #I18n.default_locale = :de

View File

@@ -1,9 +1,9 @@
ThemesForRails.config do |config| #ThemesForRails.config do |config|
# #
# If you have placed your themes like the example path above within the asset pipeline: # If you have placed your themes like the example path above within the asset pipeline:
config.themes_dir = 'app/views/themes' # config.themes_dir = 'app/views/themes'
config.assets_dir = 'app/assets/assets/themes/:name' # config.assets_dir = 'app/assets/assets/themes/:name'
config.views_dir = 'app/views/themes/:name' # config.views_dir = 'app/views/themes/:name'
config.use_sass=true # config.use_sass=true
# ... # ...
end #end

View File

@@ -4,7 +4,6 @@
get 'hide' get 'hide'
end end
end end
resources :comments, contstraints: {id: /[0-9]+/}, only: :show resources :comments, contstraints: {id: /[0-9]+/}, only: :show
@@ -36,8 +35,8 @@
end end
themes_for_rails #themes_for_rails
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
resources :home, :only=>[:index] do resources :home, :only=>[:index] do
end end
resources :emails, :only=>[:index] do resources :emails, :only=>[:index] do
@@ -46,6 +45,8 @@ resources :emails, :only=>[:index] do
end end
end end
get ':locale', constraints: {locale: /en|de/}, action: :language,controller: :home, as: "language" get ':locale', constraints: {locale: /en|de/}, action: :language,controller: :home, as: "language"
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
scope '(:locale)/admin' do scope '(:locale)/admin' do
resources :users, :only=>[] do resources :users, :only=>[] do
collection do collection do
@@ -71,7 +72,8 @@ end
end end
end end
end end
devise_for :users , :controllers=>{:omniauth_callbacks=> "users/omniauth_callbacks"} # 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 scope '(:locale)', constraints: {:locale=>/en|de/i} do
@@ -160,8 +162,26 @@ end
resources :fragen, :only =>[:new, :edit, :update, :destroy, :create] 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" get "neuigkeiten", controller: :rubriken, action: :index, as: "neuigkeiten"
resources :rubriken do resources :rubriken do
collection do collection do
get 'verwalten' , :action => :alle_verwalten get 'verwalten' , :action => :alle_verwalten

View File

@@ -2,18 +2,22 @@ production:
solr: solr:
hostname: localhost hostname: localhost
port: 8080 port: 8080
log_level: WARNING # log_level: WARNING
path: /solr-4.10.2/default #production #ollection1 #production # min_memory: 32M
# max_memory: 1G
# path: /solr-4.10.2/default #production #ollection1 #production
# solr_home: solr # solr_home: solr
# read_timeout: 2 # read_timeout: 2
# open_timeout: 0.5 # open_timeout: 0.5
development: development:
solr: solr:
hostname: triton-amp.local hostname: localhost
port: 8080 port: 8983
log_level: INFO log_level: INFO
path: /solr/mycore path: /solr/fetsite_test
# min_memory: 32M
# max_memory: 1G
# solr: # solr:
# hostname: localhost # hostname: localhost
# port: 8983 # port: 8983

0
false
View File

18
install.md Normal file
View File

@@ -0,0 +1,18 @@
aks root
prerequirements installieren
clone fetsite & Rechte ändern
Als fetsite
## Installation der aktuellen Seite
1. RVM Installieren (Siehe Interne docs)
2. Ruby 2.5 installieren
3. gemset
rvm gemset create fetsite
bundle install

View File

@@ -0,0 +1,15 @@
# lib/tasks/factory_bot.rake
namespace :factory_bot do
desc "Verify that all FactoryBot factories are valid"
task lint: :environment do
if Rails.env.test?
# DatabaseCleaner.clean_with(:deletion)
# DatabaseCleaner.cleaning do
FactoryBot.lint
# end
else
system("bundle exec rake factory_bot:lint RAILS_ENV='test'")
fail if $?.exitstatus.nonzero?
end
end
end

3
puma Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
source /home/fetsite/.rvm/environments/ruby-2.5.3@bs3
bundle exec puma "$@"

View File

@@ -6,12 +6,12 @@ describe FetprofilesController, :type => :controller do
def self.create_fetprofile def self.create_fetprofile
before(:each) do before(:each) do
@fetprofile = FactoryGirl.create(:fetprofile) @fetprofile = FactoryBot.create(:fetprofile)
end end
end end
def self.create_active_fetprofile def self.create_active_fetprofile
before(:each) do before(:each) do
@fetprofile = FactoryGirl.create(:fetprofile, active: true) @fetprofile = FactoryBot.create(:fetprofile, active: true)
end end
end end
@@ -81,7 +81,7 @@ describe FetprofilesController, :type => :controller do
end end
describe "POST create" do describe "POST create" do
subject(:action){post :create, {:fetprofile => FactoryGirl.attributes_for(:fetprofile),:format=>:html}} subject(:action){post :create, {:fetprofile => FactoryBot.attributes_for(:fetprofile),:format=>:html}}
login_fet_user login_fet_user
describe "with valid params" do describe "with valid params" do

View File

@@ -6,12 +6,12 @@ describe GremienController, :type => :controller do
def self.create_gremium def self.create_gremium
before(:each) do before(:each) do
@gremium = FactoryGirl.create(:gremium) @gremium = FactoryBot.create(:gremium)
end end
end end
# def self.create_active_gremium # def self.create_active_gremium
# before(:each) do # before(:each) do
# @gremium = FactoryGirl.create(:gremium, active: true) # @gremium = FactoryBot.create(:gremium, active: true)
# end # end
# end # end
@@ -81,7 +81,7 @@ describe GremienController, :type => :controller do
end end
describe "POST create" do describe "POST create" do
subject(:action){post :create, {:gremium => FactoryGirl.attributes_for(:gremium),:format=>:html}} subject(:action){post :create, {:gremium => FactoryBot.attributes_for(:gremium),:format=>:html}}
login_fet_user login_fet_user
describe "with valid params" do describe "with valid params" do

View File

@@ -0,0 +1,176 @@
#require 'rails_helper'
require 'spec_helper'
RSpec.describe NeuigkeitenController, :type => :controller do
let(:neuigkeit) {(FactoryBot.create(:neuigkeit, :with_rubrik))}
let(:intern_neuigkeit) {(FactoryBot.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=FactoryBot.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: FactoryBot.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

View 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

View File

@@ -1,9 +1,9 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :attachment do factory :attachment do
name "MyString" # name "MyString"
datei { Rack::Test::UploadedFile.new(File.join(Rails.root,'public','fetlogo.png'))} datei { Rack::Test::UploadedFile.new(File.join(Rails.root,'public','fetlogo.png'))}
flag_titlepic false # flag_titlepic false
end end
end end

View File

@@ -1,10 +1,10 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :beispiel do factory :beispiel do
name "BSP1" #name "BSP1"
desc "sdf" #desc "sdf"
datum Date.today #datum Date.today
beispieldatei { Rack::Test::UploadedFile.new(File.join(Rails.root,'public','fetlogo.png'))} beispieldatei { Rack::Test::UploadedFile.new(File.join(Rails.root,'public','fetlogo.png'))}
end end
end end

View File

@@ -1,8 +1,9 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :calendar do factory :calendar do
name "MyString" # name "MyString"
public false # public false
association :rubrik, factory: :rubrik
end end
end end

View File

@@ -1,10 +1,13 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :calentry do factory :calentry do
start "2013-08-05 21:17:10" start {1.hours.ago}
ende "2013-08-05 21:17:10" ende {1.days.from_now }
summary "MyString" summary {"MyString"}
typ 1 typ {1}
association :calendar, factory: :calendar
end end
end end

View File

@@ -1,6 +1,6 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :comment do factory :comment do
end end
end end

View File

@@ -1,20 +1,20 @@
FactoryGirl.define do FactoryBot.define do
factory :crawlobject do factory :crawlobject do
name "MyString" name {'MyString'}
text "MyText" text {'MyText'}
raw "MyText" raw {'MyText'}
type 1 type {1}
schematype "MyString" schematype {"MyString"}
crawlurl "MyString" crawlurl {"MyString"}
url "" url {""}
crawltime "2015-03-30 21:10:29" crawltime {"2015-03-30 21:10:29"}
published_at "2015-03-30 21:10:29" published_at {"2015-03-30 21:10:29"}
referenced "" referenced {""}
parent_id 1 parent_id {1}
lft 1 lft {1}
rgt 1 rgt {1}
depth 1 depth {1}
children_count 1 children_count {1}
end end
end end

View File

@@ -1,10 +1,10 @@
FactoryGirl.define do FactoryBot.define do
factory :document do factory :document do
typ 1 typ {1}
name "MyString" name {"MyString"}
text "MyText" text {"MyText"}
etherpadkey "MyString" etherpadkey {"MyString"}
parent "" parent {""}
end end
end end

View File

@@ -1,31 +1,31 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :fetprofile do factory :fetprofile do
vorname "MyString" vorname {'MyString'}
nachname "MyString" nachname {"MyString"}
short "MyString" short {"MyString"}
fetmailalias "MyString" fetmailalias {"MyString"}
desc "MyText" desc {"MyText"}
picture "MyString" picture {"MyString"}
active false active {false}
birth_month 4 birth_month {4}
birth_day 2 birth_day {2}
factory :fetprofile2 do factory :fetprofile2 do
vorname "Sarah" vorname {"Sarah"}
nachname "Nachname2" nachname {"Nachname2"}
short "j" short {"j"}
end end
factory :fetprofile3 do factory :fetprofile3 do
vorname "Thomas" vorname {"Thomas"}
nachname "Mustermann" nachname {"Mustermann"}
end end
factory :fetprofile_withadress do factory :fetprofile_withadress do
street "some street" street {"some street"}
plz "1231" plz {"1231"}
city "vienna" city {"vienna"}
telnr "sdf tel nummer" telnr {"sdf tel nummer"}
hdynr "sdf hdy nummer" hdynr {"sdf hdy nummer"}
end end
end end
end end

View File

@@ -1,10 +1,10 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :fetznedition do factory :fetznedition do
title "MyString" title {"MyString"}
desc "MyText" desc {"MyText"}
datum "2013-08-19" datum {"2013-08-19"}
datei "MyString" datei {"MyString"}
end end
end end

View File

@@ -1,10 +1,10 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :foto do factory :foto do
title "MyString" title {"MyString"}
desc "MyText" desc {"MyText"}
gallery_id 1 gallery_id {1}
datei "MyString" datei {"MyString"}
end end
end end

View File

@@ -1,8 +1,8 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :frage do factory :frage do
title "MyString" title {"MyString"}
text "MyText" text {"MyText"}
end end
end end

View File

@@ -1,9 +1,9 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :gallery do factory :gallery do
name "MyString" name {"MyString"}
desc "MyText" desc {"MyText"}
datum "2013-08-19" datum {"2013-08-19"}
end end
end end

View File

@@ -2,10 +2,10 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :gremium do factory :gremium do
name "Kommission" name {"Kommission"}
desc "Das ist eine Kommission die sich mit irgendwas beschäftigt" desc {"Das ist eine Kommission die sich mit irgendwas beschäftigt"}
typ 1 typ {1}
end end
end end

View File

@@ -1,11 +1,11 @@
FactoryGirl.define do FactoryBot.define do
factory :key do factory :key do
uuid "MyString" uuid {"MyString"}
expire "2015-06-08 21:32:56" expire {"2015-06-08 21:32:56"}
parent "" parent {""}
type 1 type {1}
user_id 1 user_id {1}
is_valid false is_valid {false}
end end
end end

View File

@@ -1,10 +1,10 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :lecturer do factory :lecturer do
name "MyString" name {"MyString"}
email "MyString" email {"MyString"}
oid 1 oid {1}
picture "MyString" picture {"MyString"}
end end
end end

View File

@@ -1,14 +1,14 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :lva do factory :lva do
name "Vorlesung 1" name {"Vorlesung 1"}
desc "Das ist eine Vorlesung" desc {"Das ist eine Vorlesung"}
lvanr "001.002" lvanr { "001.002"}
ects 3 ects {3}
stunden 2 stunden {2}
pruefungsinformation "sdf" pruefungsinformation {"sdf"}
lernaufwand "sdf" lernaufwand {"sdf"}
typ 'VO' typ {'VO'}
end end
end end

View File

@@ -1,10 +1,23 @@
FactoryGirl.define do FactoryBot.define do
factory :meeting do factory :meeting do
name "MyString" name {"MyString"}
desc "MyText" desc {"MyText"}
parent nil parent {nil}
intern false intern {false}
meetingtyp nil meetingtyp {nil}
# association :calentry, factory: :calentry
after(:build) do |c|
c.calentry=FactoryBot.build(:calentry, typ: 2)
end
trait :with_meetingtyp do
association :meetingtyp, factory: :meetingtyp
end
# trait :without_calentry do
# calentry nil
# end
end end
end end

View File

@@ -1,9 +1,10 @@
FactoryGirl.define do FactoryBot.define do
factory :meetingtyp do factory :meetingtyp do
name "MyString" name {"MyString"}
desc "MyText" desc {"MyText"}
agendaintern false agendaintern {false}
protocolintern false protocolintern {false}
association :rubrik, factory: :rubrik
end end
end end

View File

@@ -1,12 +1,12 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :membership do factory :membership do
gremium_id 1 gremium_id {1}
fetprofile_id 1 fetprofile_id {1}
start "2013-08-19" start {"2013-08-19"}
stop "2013-08-23" stop {"2013-08-23"}
typ 1 typ {1}
end end
end end

View File

@@ -1,14 +1,14 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :modulgruppe do factory :modulgruppe do
typ "Pflicht" typ {"Pflicht"}
phase 1 phase {1}
name "Pflichtmodule 1" name {"Pflichtmodule 1"}
desc "ASDFASDF" desc {"ASDFASDF"}
factory :other_modulgruppe do factory :other_modulgruppe do
name "PFlichtmodule 2" name {"PFlichtmodule 2"}
desc "sdafaswdfsfr" desc {"sdafaswdfsfr"}
end end
end end

View File

@@ -1,11 +1,11 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :modul do factory :modul do
name "" name {""}
factory :other_modul do factory :other_modul do
name "Modul 1" name {"Modul 1"}
end end
end end
end end

View File

@@ -1,7 +1,33 @@
FactoryGirl.define do FactoryBot.define do
sequence (:title) {|n| "Wichtige Neuigkeit #{n}"}
sequence (:neuigkeit_text) {|n| "Wichtiger text #{n}"}
factory :neuigkeit do factory :neuigkeit do
title "WIChtige Neuigkeit" title
text "<p> Das ist eine wichtige Information </p>" # sequence (:text) {|n| "Wichtiger text #{n}"}
datum 1.days.ago text {generate :neuigkeit_text}
# text {generate :neuigkeit_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=FactoryBot.build(:meeting, :with_meetingtyp)
end
end
trait :unpublished do
datum {nil}
end
end end
end end

View File

@@ -1,11 +1,11 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :nlink do factory :nlink do
title "MyString" title {"MyString"}
sort 1 sort {1}
neuigkeit_id 1 neuigkeit_id {1}
link_id 1 link_id {1}
link_type "MyString" link_type {"MyString"}
end end
end end

View File

@@ -1,6 +1,7 @@
FactoryGirl.define do FactoryBot.define do
factory :rubrik do factory :rubrik do
name "Allgemeine" name {"Allgemeine"}
desc "Allgemeine Test News" desc {"Allgemeine Test News"}
public {true}
end end
end end

View File

@@ -0,0 +1,15 @@
FactoryBot.define do
factory :semester do
nummer {2}
factory :zero_semester do
nummer {0}
end
factory :first_semester do
nummer {1}
end
end
end

View File

@@ -1,18 +1,18 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :studium do factory :studium do
zahl "066506" zahl {"066506"}
name "Automatisierung" name {"Automatisierung"}
desc "TEST DESC" desc {"TEST DESC"}
typ "Master" typ {"Master"}
factory :other_studium do factory :other_studium do
name "Telecommunication" name {"Telecommunication"}
desc "frueher Telekommungikation" desc {"frueher Telekommunikation"}
zahl "066507" zahl {"066507"}
typ "Master" typ {"Master"}
end end
end end

View File

@@ -1,7 +1,7 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :studium do factory :studium do
zahl "066.506" zahl "066.506"
name "Automatisierung" name "Automatisierung"

View File

@@ -1 +0,0 @@

View File

@@ -1,7 +1,7 @@
FactoryGirl.define do FactoryBot.define do
factory :survey_answer, :class => 'Survey::Answer' do factory :survey_answer, :class => 'Survey::Answer' do
choice nil choice {nil}
user nil user {nil}
end end
end end

View File

@@ -1,9 +1,9 @@
FactoryGirl.define do FactoryBot.define do
factory :survey_choice, :class => 'Survey::Choice' do factory :survey_choice, :class => 'Survey::Choice' do
text "MyString" text {"MyString"}
question nil question {nil}
sort 1 sort {1}
picture "MyString" picture {"MyString"}
end end
end end

View File

@@ -1,8 +1,8 @@
FactoryGirl.define do FactoryBot.define do
factory :survey_question, :class => 'Survey::Question' do factory :survey_question, :class => 'Survey::Question' do
title "MyString" title {"MyString"}
text "MyText" text {"MyText"}
typ 1 typ {1}
end end
end end

View File

@@ -1,8 +1,8 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :thema do factory :thema do
title "MyString" title {"MyString"}
text "MyText" text {"MyText"}
end end
end end

View File

@@ -1,8 +1,8 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryBot.define do
factory :themengruppe, :class => 'Themengruppe' do factory :themengruppe, :class => 'Themengruppe' do
title "MyString" title {"MyString"}
text "MyText" text {"MyText"}
end end
end end

View File

@@ -1,11 +1,19 @@
FactoryGirl.define do FactoryBot.define do
sequence (:email) {|n| "testuser#{n}@fet.at"}
factory :user do factory :user do
email "testuser@test.at" email
password "password" password {"password"}
password_confirmation "password" password_confirmation {"password"}
factory :other_user do factory :other_user do
email "othertest@test.at" email {"othertest@test.at"}
end
trait :fetuser do
after(:create) do |user|
user.add_role("fetuser")
end end
end end
end end
end

View File

@@ -5,15 +5,15 @@ Capybara.add_selector(:href) do
end end
feature 'Administration', :type=> :feature do feature 'Administration', :type=> :feature do
let!(:user) {FactoryGirl.create(:user)} let!(:user) {FactoryBot.create(:user)}
let!(:rubrik) {FactoryGirl.create(:rubrik)} let!(:rubrik) {FactoryBot.create(:rubrik)}
let!(:themengruppe){ FactoryGirl.create(:themengruppe) } let!(:themengruppe){ FactoryBot.create(:themengruppe) }
let!(:studium) {FactoryGirl.create(:studium,:visible=>true)} let!(:studium) {FactoryBot.create(:studium,:visible=>true)}
before(:each) do before(:each) do
FactoryGirl.create(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id) FactoryBot.create(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id)
FactoryGirl.create(:thema, id: t=YAML.load_file("#{::Rails.root.to_s}/config/start_topic.yml").to_i, themengruppe_id: themengruppe.id) FactoryBot.create(:thema, id: t=YAML.load_file("#{::Rails.root.to_s}/config/start_topic.yml").to_i, themengruppe_id: themengruppe.id)
studium.id studium.id
end end
def sign_in def sign_in

View File

@@ -4,13 +4,13 @@ Capybara.add_selector(:href) do
xpath {|href| XPath.descendant[XPath.attr(:href).contains(href)] } xpath {|href| XPath.descendant[XPath.attr(:href).contains(href)] }
end end
feature 'Beispielsammlung', :type=>:feature do feature 'Beispielsammlung', :type=>:feature do
let!(:rubrik) {FactoryGirl.create(:rubrik)} let!(:rubrik) {FactoryBot.create(:rubrik)}
let!(:user) {FactoryGirl.create(:user)} let!(:user) {FactoryBot.create(:user)}
let!(:themengruppe){ FactoryGirl.create(:themengruppe) } let!(:themengruppe){ FactoryBot.create(:themengruppe) }
let!(:studium) {FactoryGirl.create(:studium,:visible=>true)} let!(:studium) {FactoryBot.create(:studium,:visible=>true)}
before(:each) do before(:each) do
FactoryGirl.create(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id) FactoryBot.create(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id)
FactoryGirl.create(:thema, id: t=YAML.load_file("#{::Rails.root.to_s}/config/start_topic.yml").to_i, themengruppe_id: themengruppe.id) FactoryBot.create(:thema, id: t=YAML.load_file("#{::Rails.root.to_s}/config/start_topic.yml").to_i, themengruppe_id: themengruppe.id)
studium.id studium.id
end end
scenario 'login' do scenario 'login' do

View File

@@ -6,11 +6,11 @@ include Rails.application.routes.url_helpers
describe 'neuigkeit_mail' do describe 'neuigkeit_mail' do
before(:each) do before(:each) do
rubrik = FactoryGirl.create(:rubrik) rubrik = FactoryBot.create(:rubrik)
@neuigkeit=FactoryGirl.create(:neuigkeit, author_id: user.id, rubrik_id: rubrik.id) @neuigkeit=FactoryBot.create(:neuigkeit, author_id: user.id, rubrik_id: rubrik.id)
NewsMailer.stub(:default_url_options).and_return({host:"localhost", port: 3000}) NewsMailer.stub(:default_url_options).and_return({host:"localhost", port: 3000})
end end
let(:user) {User.first || FactoryGirl.create(:user)} let(:user) {User.first || FactoryBot.create(:user)}
let(:email) {"test@mail.com"} let(:email) {"test@mail.com"}
let(:neuigkeit) {@neuigkeit} let(:neuigkeit) {@neuigkeit}

View File

@@ -2,7 +2,7 @@ require 'spec_helper'
describe Attachment do describe Attachment do
pending "add some examples to (or delete) #{__FILE__}" pending "add some examples to (or delete) #{__FILE__}"
let(:attachment) {FactoryGirl.build_stubbed(:attachment)} let(:attachment) {FactoryBot.build_stubbed(:attachment)}
it "responds to image" do it "responds to image" do
expect(attachment.respond_to?(:image?)).to be true expect(attachment.respond_to?(:image?)).to be true
end end

View File

@@ -3,25 +3,25 @@ require 'spec_helper'
describe Beispiel, :type=>:model do describe Beispiel, :type=>:model do
let_studium_lva let_studium_lva
# before(:each) do # before(:each) do
# s=FactoryGirl.create(:studium) # s=FactoryBot.create(:studium)
# mg=FactoryGirl.create(:modulgruppe, studium_id: s.id)# # mg=FactoryBot.create(:modulgruppe, studium_id: s.id)#
# m=FactoryGirl.build(:other_modul) # m=FactoryBot.build(:other_modul)
# m.modulgruppen << mg # m.modulgruppen << mg
# m.save! # m.save!
# @l=FactoryGirl.build(:lva) # @l=FactoryBot.build(:lva)
# @l.modul << m # @l.modul << m
# @l.save! # @l.save!
# end # end
let(:lva){FactoryGirl.build_stubbed(:lva)} let(:lva){FactoryBot.build_stubbed(:lva)}
let(:beispiel){FactoryGirl.build(:beispiel, lva: lva)} let(:beispiel){FactoryBot.build(:beispiel, lva: lva)}
it "should be created" do it "should be created" do
expect{beispiel.save!; Sunspot.commit}.to change{Beispiel.count}.by(1) expect{beispiel.save!; Sunspot.commit}.to change{Beispiel.count}.by(1)
end end
it "is not valid without lva" do it "is not valid without lva" do
b=FactoryGirl.build(:beispiel) b=FactoryBot.build(:beispiel)
expect(b.valid?).to be false expect(b.valid?).to be false
end end
it "responds to comments" do it "responds to comments" do

Some files were not shown because too many files have changed in this diff Show More