153 Commits

Author SHA1 Message Date
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
2e732561e8 infoscreenframe 2018-05-20 23:29:34 +02:00
a8f353f213 fixes for production Gemfile 2018-05-20 22:21:34 +02:00
6ba20206ab Merge remote-tracking branch 'origin/stable-production' into stable-production 2018-05-20 21:31:56 +02:00
Andreas Stephanides
2ae99b4b9e remove http header language detection 2018-05-20 21:20:43 +02:00
Andreas Stephanides
f61681c5d0 moved views from theme blue2 to default removed override by theme 2018-05-20 21:18:37 +02:00
1b91d99b24 Merge remote-tracking branch 'origin/master' into stable-production 2018-05-14 21:14:40 +02:00
28906eb5fb write True small 2018-05-14 21:13:42 +02:00
745c4413f4 fix the solr path for production 2018-05-14 21:00:17 +02:00
ac7e7f3462 Merge remote-tracking branch 'origin/master' into stable-production 2018-05-14 20:26:09 +02:00
e55a71e77d rake version set to 10 2018-05-14 20:26:04 +02:00
502aae5c27 merge latest 2018-05-14 20:17:30 +02:00
c2ebdcbefc merge master and stable 2018-05-14 19:58:17 +02:00
734a137563 testtmp 2018-05-14 18:55:37 +02:00
9f1de3d9d0 diverse hot fixes von der productive Version auf fetruby 2018-05-14 17:56:17 +02:00
Pet
0f683ac974 Found out the testrby is on Mogok ;) 2018-04-12 23:25:25 +02:00
Pet
5ffecf7087 Updated Lackis infoscreen layout 2018-04-12 22:48:20 +02:00
Pet
965db4dec0 Updated Lackis infoscreen layout 2018-04-12 22:45:00 +02:00
Pet
6aecb4b4a8 Updated Lackis infoscreen layout 2018-04-12 22:43:10 +02:00
Pet
b1616a6d6d Updated Lackis infoscreen layout 2018-04-12 22:39:48 +02:00
Pet
122bf6c6d4 Updated Lackis infoscreen layout 2018-04-12 22:37:00 +02:00
Pet
829bdb97be Updated Lackis infoscreen layout 2018-04-12 22:35:10 +02:00
Pet
6c91513ff8 Updated Lackis infoscreen layout 2018-04-12 22:33:00 +02:00
Pet
d1a496a017 Updated Lackis infoscreen layout 2018-04-12 22:29:34 +02:00
Pet
eb95f7a5e4 Updated Lackis infoscreen layout 2018-04-12 22:26:46 +02:00
Pet
de225627b1 Updated Lackis infoscreen layout 2018-04-12 22:20:44 +02:00
Pet
08aa459f57 Updated Lackis infoscreen layout 2018-04-12 22:16:06 +02:00
Pet
2b6890a6e6 Updated Lackis infoscreen layout 2018-04-12 22:14:55 +02:00
Pet
04ce26754a Updated Lackis infoscreen layout 2018-04-12 22:10:14 +02:00
Pet
163e1adfc2 Updated Lackis infoscreen layout 2018-04-12 22:04:47 +02:00
Pet
e5a5ec85ef Updated Lackis infoscreen layout 2018-04-12 22:02:50 +02:00
Pet
256d9f09fb Updated Lackis infoscreen layout 2018-04-12 21:58:19 +02:00
Pet
e3c6721811 Updated Lackis infoscreen layout 2018-04-12 21:55:05 +02:00
Pet
e5f0d75b79 Updated Lackis infoscreen layout 2018-04-12 21:47:07 +02:00
Pet
07bb853501 Updated Lackis infoscreen layout 2018-04-12 21:42:03 +02:00
Pet
af5b081a3b Updated Lackis infoscreen layout 2018-04-12 20:54:08 +02:00
Pet
24f3e90235 Updated Lackis infoscreen layout 2018-04-12 20:51:16 +02:00
Pet
ef1135962e Implemented Lackis infoscreen layout 2018-04-12 20:33:09 +02:00
Pet
22cf26f76c changed infoscreen layout 2018-03-28 16:06:52 +02:00
Pet
0c7614b41d removed the wrong login window 2018-03-27 23:09:18 +02:00
Pet
0fedeb2bde changed etherpad link 2018-03-27 22:03:17 +02:00
Pet
146885abae changed etherpad link 2018-03-27 22:01:20 +02:00
Pet
c38139d6f1 changed the etherpad url 2018-03-26 22:18:50 +02:00
ruby fuer rvm
8cb6ec785c no sunspot pid file 2018-03-10 07:10:03 +00:00
root
b8903c6d9a ignore pid files 2018-03-10 06:59:53 +00:00
Andreas Stephanides
242d05f4fa AutoCommit Mit Aug 23 10:03:01 CEST 2017 2017-08-23 10:03:01 +02:00
Andreas Stephanides
070e0dfedb fixing blue2 index 2017-07-27 09:23:02 +02:00
ruby
610e6ae3dd new design 2017-07-25 17:11:51 +02:00
Andreas Stephanides
6c4873d869 AutoCommit Die Jul 25 11:03:01 CEST 2017 2017-07-25 11:03:01 +02:00
Andreas Stephanides
09d5e7b880 Merge branch 'master' of https://git.triton.fet.at/git/fetsite 2017-07-25 10:21:50 +02:00
Andreas Stephanides
6b37d44c9a AutoCommit Die Jul 25 10:03:02 CEST 2017 2017-07-25 10:03:02 +02:00
peter
20088b868f added header image to infoscreen 2017-06-01 00:06:20 +02:00
peter
f1fbd3bef3 added header image to infoscreen 2017-05-31 23:58:38 +02:00
peter
17a43097e7 added header image to infoscreen 2017-05-31 23:55:56 +02:00
peter
3498535d8c added header image to infoscreen 2017-05-31 23:54:11 +02:00
peter
d313e712f1 added header image to infoscreen 2017-05-31 23:52:47 +02:00
peter
bb4adf2eb7 added header image to infoscreen 2017-05-31 23:47:38 +02:00
peter
09532fc74c added header image to infoscreen 2017-05-31 23:41:51 +02:00
peter
29d5c8dac7 added header image to infoscreen 2017-05-31 23:39:50 +02:00
peter
926431c0a2 added header image to infoscreen 2017-05-31 23:38:02 +02:00
peter
d95e1a3399 added header image to infoscreen 2017-05-31 23:35:58 +02:00
peter
d6fa4e1dc7 added header image to infoscreen 2017-05-31 23:27:07 +02:00
peter
6528e8a320 added header image to infoscreen 2017-05-31 23:24:35 +02:00
peter
18beead785 added header image to infoscreen 2017-05-31 23:16:34 +02:00
peter
3baf44c057 added header image to infoscreen 2017-05-31 23:08:43 +02:00
peter
9ec7a76d4a added header image to infoscreen 2017-05-31 23:03:13 +02:00
peter
3b6590f369 added header image to infoscreen 2017-05-31 23:01:07 +02:00
peter
708911ba4e added header image to infoscreen 2017-05-31 22:55:09 +02:00
peter
797d2a1d31 added header image to infoscreen 2017-05-31 22:54:01 +02:00
peter
7ad484cdd7 added header image to infoscreen 2017-05-31 22:52:06 +02:00
peter
aca92e1107 added header image to infoscreen 2017-05-31 22:46:11 +02:00
peter
f13fbafaae added header image to infoscreen 2017-05-31 22:45:42 +02:00
peter
f6738a5226 added header image to infoscreen 2017-05-31 22:42:31 +02:00
peter
2f4a9e4f10 added header image to infoscreen 2017-05-31 22:40:19 +02:00
peter
dff490163e added header image to infoscreen 2017-05-31 22:39:03 +02:00
peter
20a7091800 added header image to infoscreen 2017-05-31 22:38:10 +02:00
peter
ff49499204 added header image to infoscreen 2017-05-31 22:36:18 +02:00
peter
8b3e1ee225 added header image to infoscreen 2017-05-31 22:32:14 +02:00
peter
dc4f161ce4 added header image to infoscreen 2017-05-31 22:29:42 +02:00
peter
5c5236062b added header image to infoscreen 2017-05-31 22:20:53 +02:00
peter
43af1114e8 added header image to infoscreen 2017-05-31 22:16:54 +02:00
peter
0772d51c71 added header image to infoscreen 2017-05-31 22:15:34 +02:00
peter
f2293513c1 added header image to infoscreen 2017-05-31 22:14:12 +02:00
peter
87cad802d7 added header image to infoscreen 2017-05-31 22:12:39 +02:00
peter
2e4a0680df added header image to infoscreen 2017-05-31 22:07:11 +02:00
peter
4ca664a091 added header image to infoscreen 2017-05-31 22:04:03 +02:00
peter
02c766f428 added header image to infoscreen 2017-05-31 22:03:05 +02:00
peter
75e5b8e267 added header image to infoscreen 2017-05-31 21:59:47 +02:00
peter
7d008cb599 added header image to infoscreen 2017-05-31 21:51:41 +02:00
peter
b1fc24af80 set config.serve_static_assets = false 2017-05-31 21:49:21 +02:00
peter
7477b028c5 set config.serve_static_assets = false 2017-05-31 21:44:51 +02:00
peter
fddaa0dcb6 set config.serve_static_assets = false 2017-05-31 21:40:47 +02:00
peter
4ed7e92385 set config.serve_static_assets = true 2017-05-31 21:35:24 +02:00
peter
82876f34a8 changed infoscreen layout 2017-05-31 21:29:54 +02:00
peter
3d97153fa5 changed infoscreen layout 2017-05-31 21:28:09 +02:00
peter
6e10830b83 changed infoscreen layout 2017-05-31 21:05:06 +02:00
peter
8ad15aafd2 changed infoscreen layout 2017-05-31 21:03:43 +02:00
peter
d4948fff5e changed infoscreen layout 2017-05-31 15:11:59 +02:00
peter
8ea2109b27 changed infoscreen layout 2017-05-31 15:10:40 +02:00
peter
f72466f1cd changed infoscreen layout 2017-05-31 15:09:05 +02:00
peter
cba94e926c changed infoscreen layout 2017-05-31 15:07:47 +02:00
peter
f522a83813 changed infoscreen layout 2017-05-31 15:05:53 +02:00
peter
94d67463a9 changed infoscreen layout 2017-05-31 15:03:08 +02:00
peter
38656a1e75 changed infoscreen layout 2017-05-31 15:01:35 +02:00
peter
503b9eb732 changed infoscreen layout 2017-05-31 14:59:25 +02:00
peter
ffee3b8dfb changed infoscreen layout 2017-05-31 14:57:01 +02:00
peter
978f617131 changed infoscreen layout 2017-05-31 14:54:07 +02:00
peter
cf2a8adf49 changed infoscreen layout 2017-05-31 14:49:35 +02:00
peter
14e563ef95 changed infoscreen layout 2017-05-31 12:35:30 +02:00
Pet
5660cd7748 added testtext 2017-05-31 12:14:00 +02:00
Andreas Stephanides
af5d055014 change timeout for inforscreen 2017-05-29 09:56:46 +02:00
Andreas Stephanides
453dd7867d change timeout for inforscreen 2017-05-29 09:44:09 +02:00
root
bbfb5e6a1d Merge branch 'latest' of https://git.triton.fet.at/git/fetsite into latest 2017-05-13 23:04:50 +02:00
Andreas Stephanides
4ed35f184c https-etherpad 2017-05-12 07:18:19 +02:00
ruby
37aab0ef59 Merge branch 'latest' of https://git.triton.fet.at/git/fetsite into latest 2017-05-09 15:13:08 +02:00
ruby
c53d34191a fixes to init script 2017-05-09 15:11:28 +02:00
ruby
61c5624b16 blue2 default2 2017-05-09 15:11:00 +02:00
ruby
a1ef7028fd local solr sunspot 2017-05-09 15:10:40 +02:00
Andreas Stephanides
b5f1ae9e69 APIKEY 2017-05-09 13:39:52 +02:00
Andreas Stephanides
6a9fe8243b fix apth for ETHERPAD Key 2017-05-09 13:38:32 +02:00
Andreas Stephanides
1f581ab819 delete empty files 2017-05-09 13:31:45 +02:00
root
e73315bd41 fix neuigkeiten 2017-05-04 17:56:47 +02:00
Andreas Stephanides
491e360141 small fixes incl. solr 2017-04-18 19:03:09 +02:00
Andreas Stephanides
28226df76c Merge remote-tracking branch 'fetmaster/master' 2017-04-17 13:20:01 +02:00
Andreas Stephanides
14598fbbd9 add a README 2017-04-03 15:26:29 +02:00
Andreas Stephanides
ffaa57c914 starttopic nil 2017-04-03 15:26:19 +02:00
Andreas Stephanides
cd439ecf02 solr config update 2017-04-03 15:26:01 +02:00
Andreas Stephanides
328adfe3a5 calentries view fixed 2017-04-03 15:25:40 +02:00
Andreas Stephanides
e0312386e7 no boost for studium 2017-04-03 15:25:22 +02:00
93 changed files with 2361 additions and 1210 deletions

14
.gitignore vendored
View File

@@ -28,7 +28,7 @@
/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
@@ -40,15 +40,23 @@ 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
/doc/app
coverage/*

11
Gemfile
View File

@@ -1,11 +1,11 @@
source 'https://rubygems.org' source 'https://rubygems.org'
gem 'rake', '~>10.0'
gem 'rails', '3.2.13' gem 'rails', '3.2.13'
gem 'sprockets', '2.2.2' gem 'sprockets', '2.2.2'
gem 'webrick', '1.3.1' 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' gem 'mysql2', '~>0.3.10'
gem 'sqlite3' gem 'sqlite3'
gem 'execjs', '~>1.4.0' gem 'execjs', '~>1.4.0'
@@ -33,7 +33,7 @@ gem 'jquery-rails'
# gem 'jbuilder' # gem 'jbuilder'
# Use unicorn as the app server # Use unicorn as the app server
gem 'unicorn' gem 'unicorn', '~>4.8.0'
# Deploy with Capistran # Deploy with Capistran
# gem 'capistrano' # gem 'capistrano'
@@ -82,7 +82,7 @@ gem 'haml'
#gem 'wikicloth' #gem 'wikicloth'
#gem 'gollum-lib' #gem 'gollum-lib'
gem 'awesome_nested_set' gem 'awesome_nested_set'
gem 'annotate', ">=2.5.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_girl_rails',"~>4.5.0"
@@ -96,6 +96,7 @@ 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"
@@ -136,4 +137,4 @@ gem 'blueimp-gallery-rails'
gem 'shareable' gem 'shareable'
gem 'sunspot_test' gem 'sunspot_test'

456
Gemfile.lock Normal file
View File

@@ -0,0 +1,456 @@
GIT
remote: git://github.com/matenia/bootstrap-kaminari-views.git
revision: 9df61d400fc144c3f33d65f3f97e4867b8e68273
specs:
bootstrap-kaminari-views (0.0.5)
kaminari (>= 0.13)
rails (>= 3.1)
GIT
remote: git://github.com/rgrove/sanitize
revision: acc7e6440139379a0c6b4b76b662ed90acd4b923
specs:
sanitize (4.6.4)
crass (~> 1.0.2)
nokogiri (>= 1.4.4)
nokogumbo (~> 1.4)
GEM
remote: https://rubygems.org/
specs:
actionmailer (3.2.13)
actionpack (= 3.2.13)
mail (~> 2.5.3)
actionpack (3.2.13)
activemodel (= 3.2.13)
activesupport (= 3.2.13)
builder (~> 3.0.0)
erubis (~> 2.7.0)
journey (~> 1.0.4)
rack (~> 1.4.5)
rack-cache (~> 1.2)
rack-test (~> 0.6.1)
sprockets (~> 2.2.1)
active_record_query_trace (1.5.4)
activemodel (3.2.13)
activesupport (= 3.2.13)
builder (~> 3.0.0)
activerecord (3.2.13)
activemodel (= 3.2.13)
activesupport (= 3.2.13)
arel (~> 3.0.2)
tzinfo (~> 0.3.29)
activeresource (3.2.13)
activemodel (= 3.2.13)
activesupport (= 3.2.13)
activesupport (3.2.13)
i18n (= 0.6.1)
multi_json (~> 1.0)
acts_as_votable (0.11.1)
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
aes_key_wrap (1.0.1)
annotate (2.6.10)
activerecord (>= 3.2, <= 4.3)
rake (~> 10.4)
arel (3.0.3)
attr_required (1.0.1)
awesome_nested_set (2.1.6)
activerecord (>= 3.0.0)
bcrypt (3.1.11)
bcrypt-ruby (3.1.5)
bcrypt (>= 3.1.3)
bindata (2.4.3)
blueimp-gallery (2.11.0.1)
railties (>= 3.1.0)
blueimp-gallery-rails (2.7.0)
railties (>= 3.0, < 5.0)
bootstrap-addons-rails (0.1.2)
rails
bootstrap-sass (2.3.2.2)
sass (~> 3.2)
builder (3.0.4)
cancan (1.6.10)
capybara (2.5.0)
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
xpath (~> 2.0)
carrierwave (0.9.0)
activemodel (>= 3.2.0)
activesupport (>= 3.2.0)
json (>= 1.7)
chronic (0.10.2)
climate_control (0.2.0)
cocaine (0.5.8)
climate_control (>= 0.0.3, < 1.0)
coffee-rails (3.2.2)
coffee-script (>= 2.2.0)
railties (~> 3.2.0)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.12.2)
crass (1.0.4)
devise (2.2.8)
bcrypt-ruby (~> 3.0)
orm_adapter (~> 0.1)
railties (~> 3.1)
warden (~> 1.2.1)
diff-lcs (1.3)
docile (1.3.1)
domain_name (0.5.20180417)
unf (>= 0.0.5, < 1.0.0)
erubis (2.7.0)
etherpad-lite (0.3.0)
rest-client (>= 1.6)
execjs (1.4.1)
multi_json (~> 1.0)
factory_girl (4.5.0)
activesupport (>= 3.0.0)
factory_girl_rails (4.5.0)
factory_girl (~> 4.5.0)
railties (>= 3.0.0)
faraday (0.12.2)
multipart-post (>= 1.2, < 3)
fb_graph (2.7.17)
httpclient (>= 2.4)
multi_json (>= 1.3)
rack-oauth2 (>= 0.14.4)
tzinfo
ffi (1.9.23)
font-awesome-rails (4.7.0.4)
railties (>= 3.2, < 6.0)
formtastic (2.2.1)
actionpack (>= 3.0)
formtastic-bootstrap (3.0.0)
formtastic (>= 2.2)
git (1.3.0)
globalize (3.0.5)
activemodel (>= 3.0.0, < 4.0.0)
activerecord (>= 3.0.0, < 4.0.0)
globalize-accessors (0.1.5)
globalize (>= 3)
globalize-versioning (0.2.0)
activemodel (>= 3.2.0, < 5)
activerecord (>= 3.2.0, < 5)
globalize (>= 3.0.4, < 6)
paper_trail (>= 3.0.0, < 5)
haml (5.0.4)
temple (>= 0.8.0)
tilt
hashie (3.5.7)
highline (1.7.10)
hike (1.2.3)
http-cookie (1.0.3)
domain_name (~> 0.5)
httpclient (2.8.3)
i18n (0.6.1)
journey (1.0.4)
jquery-datetimepicker-rails (2.4.1.0)
jquery-fileupload-rails (0.4.1)
actionpack (>= 3.1)
railties (>= 3.1)
jquery-rails (3.1.5)
railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0)
jquery-ui-rails (4.1.2)
railties (>= 3.1.0)
json (2.1.0)
json-jwt (1.9.4)
activesupport
aes_key_wrap
bindata
jwt (1.5.6)
kaminari (0.17.0)
actionpack (>= 3.0.0)
activesupport (>= 3.0.0)
kgio (2.11.2)
libv8 (3.16.14.19)
mail (2.5.5)
mime-types (~> 1.16)
treetop (~> 1.4.8)
meta-tags (2.9.0)
actionpack (>= 3.2.0, < 5.3)
mime-types (1.25.1)
mini_portile2 (2.3.0)
minitest (4.7.5)
multi_json (1.13.1)
multi_xml (0.6.0)
multipart-post (2.0.0)
mysql2 (0.3.21)
net-ldap (0.16.1)
netrc (0.11.0)
nokogiri (1.8.2)
mini_portile2 (~> 2.3.0)
nokogumbo (1.5.0)
nokogiri
oauth2 (1.4.0)
faraday (>= 0.8, < 0.13)
jwt (~> 1.0)
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (>= 1.2, < 3)
omniauth (1.2.2)
hashie (>= 1.2, < 4)
rack (~> 1.0)
omniauth-facebook (2.0.1)
omniauth-oauth2 (~> 1.2)
omniauth-ldap (1.0.5)
net-ldap (~> 0.12)
omniauth (~> 1.0)
pyu-ruby-sasl (~> 0.0.3.2)
rubyntlm (~> 0.3.4)
omniauth-oauth2 (1.5.0)
oauth2 (~> 1.1)
omniauth (~> 1.2)
opengraph_parser (0.2.3)
addressable
nokogiri
options (2.3.2)
orm_adapter (0.5.0)
paper_trail (3.0.9)
activerecord (>= 3.0, < 5.0)
activesupport (>= 3.0, < 5.0)
paperclip (3.4.2)
activemodel (>= 3.0.0)
activerecord (>= 3.0.0)
activesupport (>= 3.0.0)
cocaine (~> 0.5.0)
mime-types
polyglot (0.3.5)
pr_geohash (1.0.0)
progress_bar (1.2.0)
highline (~> 1.6)
options (~> 2.3.0)
public_suffix (3.0.2)
pyu-ruby-sasl (0.0.3.3)
rack (1.4.7)
rack-cache (1.7.2)
rack (>= 0.4)
rack-oauth2 (1.9.2)
activesupport
attr_required
httpclient
json-jwt (>= 1.9.0)
rack
rack-ssl (1.3.4)
rack
rack-test (0.6.3)
rack (>= 1.0)
rails (3.2.13)
actionmailer (= 3.2.13)
actionpack (= 3.2.13)
activerecord (= 3.2.13)
activeresource (= 3.2.13)
activesupport (= 3.2.13)
bundler (~> 1.0)
railties (= 3.2.13)
railties (3.2.13)
actionpack (= 3.2.13)
activesupport (= 3.2.13)
rack-ssl (~> 1.3.2)
rake (>= 0.8.7)
rdoc (~> 3.4)
thor (>= 0.14.6, < 2.0)
raindrops (0.19.0)
rake (10.5.0)
rb-fsevent (0.10.3)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
rdoc (3.9.5)
ref (2.0.0)
rest-client (2.0.2)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
rmagick (2.16.0)
rolify (4.0.0)
rsolr (2.2.1)
builder (>= 2.1.2)
faraday (>= 0.9.0)
rspec (3.3.0)
rspec-core (~> 3.3.0)
rspec-expectations (~> 3.3.0)
rspec-mocks (~> 3.3.0)
rspec-activemodel-mocks (1.0.3)
activemodel (>= 3.0)
activesupport (>= 3.0)
rspec-mocks (>= 2.99, < 4.0)
rspec-collection_matchers (1.1.3)
rspec-expectations (>= 2.99.0.beta1)
rspec-core (3.3.2)
rspec-support (~> 3.3.0)
rspec-expectations (3.3.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.3.0)
rspec-html-matchers (0.7.3)
nokogiri (~> 1)
rspec (>= 3.0.0.a, < 4)
rspec-mocks (3.3.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.3.0)
rspec-rails (3.3.3)
actionpack (>= 3.0, < 4.3)
activesupport (>= 3.0, < 4.3)
railties (>= 3.0, < 4.3)
rspec-core (~> 3.3.0)
rspec-expectations (~> 3.3.0)
rspec-mocks (~> 3.3.0)
rspec-support (~> 3.3.0)
rspec-support (3.3.0)
rubyntlm (0.3.4)
rubyzip (1.2.1)
sass (3.5.6)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sass-rails (3.2.6)
railties (~> 3.2.0)
sass (>= 3.1.10)
tilt (~> 1.3)
seed_dump (0.5.3)
shareable (1.1.4)
actionpack (>= 3.0.0)
activesupport (>= 3.0.0)
simple_calendar (0.1.11)
rails (>= 3.0)
simplecov (0.16.1)
docile (~> 1.1)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.2)
sitemap_generator (6.0.1)
builder (~> 3.0)
sprockets (2.2.2)
hike (~> 1.2)
multi_json (~> 1.0)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
sqlite3 (1.3.13)
sunspot (2.3.0)
pr_geohash (~> 1.0)
rsolr (>= 1.1.1, < 3)
sunspot_rails (2.3.0)
rails (>= 3)
sunspot (= 2.3.0)
sunspot_solr (2.3.0)
sunspot_test (0.4.1)
sunspot_rails (>= 2.1.1)
sunspot_solr
temple (0.8.0)
themes_for_rails (0.5.1)
rails (>= 3.0.0)
therubyracer (0.12.3)
libv8 (~> 3.16.14.15)
ref
thor (0.20.0)
tilt (1.4.1)
tinymce-rails (4.1.10)
railties (>= 3.1.1)
treetop (1.4.15)
polyglot
polyglot (>= 0.3.1)
tzinfo (0.3.54)
uglifier (4.1.10)
execjs (>= 0.3.0, < 3)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.5)
unicorn (4.8.3)
kgio (~> 2.6)
rack
raindrops (~> 0.7)
warden (1.2.7)
rack (>= 1.0)
webrick (1.3.1)
whenever (0.10.0)
chronic (>= 0.6.3)
xpath (2.1.0)
nokogiri (~> 1.3)
yaml_db (0.6.0)
rails (>= 3.0, < 5.2)
rake (>= 0.8.7)
PLATFORMS
ruby
DEPENDENCIES
active_record_query_trace
acts_as_votable
annotate (~> 2.6.0)
awesome_nested_set
blueimp-gallery
blueimp-gallery-rails
bootstrap-addons-rails
bootstrap-kaminari-views!
bootstrap-sass (~> 2.3.2.1)
cancan (~> 1.6.0)
capybara (~> 2.5.0)
carrierwave (~> 0.9.0)
coffee-rails (~> 3.0)
devise (~> 2.2.3)
etherpad-lite
execjs (~> 1.4.0)
factory_girl_rails (~> 4.5.0)
fb_graph (~> 2.7.17)
font-awesome-rails
formtastic (~> 2.2.1)
formtastic-bootstrap (~> 3.0.0)
git
globalize (~> 3.0.4)
globalize-accessors
globalize-versioning
haml
jquery-datetimepicker-rails
jquery-fileupload-rails (= 0.4.1)
jquery-rails
jquery-ui-rails (~> 4.1.0)
kaminari
meta-tags
minitest (~> 4.7.5)
mysql2 (~> 0.3.10)
omniauth (~> 1.2.2)
omniauth-facebook (~> 2.0.0)
omniauth-ldap (~> 1.0.4)
opengraph_parser
paper_trail (~> 3.0.5)
paperclip (~> 3.4.0)
progress_bar
rails (= 3.2.13)
rake (~> 10.0)
rmagick
rolify (~> 4.0.0)
rspec-activemodel-mocks (~> 1.0.1)
rspec-collection_matchers (~> 1.1.2)
rspec-core (~> 3.3.0)
rspec-expectations (~> 3.3.1)
rspec-html-matchers (~> 0.7.0)
rspec-rails (~> 3.3.0)
rspec-support (~> 3.3.0)
rubyzip
sanitize!
sass-rails (~> 3.0)
seed_dump (~> 0.5.3)
shareable
simple_calendar (~> 0.1.9)
simplecov
sitemap_generator
sprockets (= 2.2.2)
sqlite3
sunspot_rails
sunspot_solr
sunspot_test
themes_for_rails
therubyracer
tinymce-rails (~> 4.1.0)
uglifier (>= 1.0.3)
unicorn (~> 4.8.0)
webrick (= 1.3.1)
whenever
yaml_db
BUNDLED WITH
1.16.6

View File

25
README Normal file
View File

@@ -0,0 +1,25 @@
SETUP:
install ruby 2.1.10
install requirements
apt-get ...
mkdir /srv/fetsite
cd /srv/fetsite
copy / fetch Gemfile
make User fetsite
bundle install
# Config Files kopieren:
cp /srv/fetsite/config/omniout_secrets.yml.example /srv/fetsite/config/omniout_secrets.yml
cp /srv/fetsite/config/omniout_secrets.yml.example /srv/fetsite/config/omniout_secrets.yml
touch crawler_config.yml
# Datenbank erstellen
rake db:migrate

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

0
Short,
View File

View File

View File

@@ -0,0 +1,134 @@
html {
background-color: #fff;
overflow: hidden;
}
body {
display: flex;
flex-flow: wrap;
height: 100vh;
justify-content: space-between;
flex-direction: column;
}
.header {
height: 200px;
width: 100%
}
svg {
padding-top: 2em;
}
.impulsPath {
fill: none;
stroke: #04669c;
stroke-miterlimit: 1;
stroke-width: 6px;
stroke-dasharray: 1946.243;
stroke-dashoffset: 0;
stroke-linejoin: round;
stroke-linecap: round;
animation: dash 10s ease-out infinite;
animation-direction: normal;
}
.FET-logotext-stroke {
fill: #fff;
}
#FET-logotext {
opacity: 0;
animation: logotext 10s ease-in infinite;
}
.content-area {
height: auto;
width: 100%;
}
.footer {
width: 100%;
height: 150px;
background-color: #04669c;
padding-bottom: 10px;
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
color: #fff;
flex-basis: bottom;
}
.footer h3,
p {
margin: 0;
padding: 0 20px;
font-family: Helvetica, Arial;
letter-spacing: 0.1em;
}
.footer h3 {
padding-top: 20px;
}
.footer .adress {
margin: auto;
text-align: left;
}
.footer .contact {
margin: auto;
text-align: center;
}
.footer .servicecontainer{
display: inline-flex;
margin: auto;
}
.footer .servicecontainer .servicetime {
margin: auto;
text-align: right;
}
.footer .servicecontainer .servicetime #time {
font-size: 0.7em
}
.footer .servicecontainer .servicestatus{
margin: auto;
width:20px;
height: 100vh; /* height: 100%;*/
padding-right: 30px;
background-color: #fff;
}
/*K E Y F R A M E S*/
@keyframes dash {
from {
stroke-dashoffset: 1946.243;
opacity: 0;
stroke-width: 0.5;
}
to {
opacity: 1;
stroke-dashoffset: 0;
stroke-width: 5px;
}
}
@keyframes logotext {
from {
opacity: 0;
}
to {
opacity: 1;
}
}

View File

@@ -9,11 +9,9 @@
if params[:locale] if params[:locale]
if I18n.available_locales.include?(params[:locale].to_sym) if I18n.available_locales.include?(params[:locale].to_sym)
session[:locale] = params[:locale] session[:locale] = params[:locale]
else else
flash.now[:notice]= "#{params[:locale]} translation not available" flash.now[:notice]= "#{params[:locale]} translation not available"
logger.error flash.now[:notice] logger.error flash.now[:notice]
end end
end end
http_header=request.env['HTTP_ACCEPT_LANGUAGE'] http_header=request.env['HTTP_ACCEPT_LANGUAGE']
@@ -22,8 +20,8 @@
else else
ht=nil ht=nil
end end
I18n.locale = session[:locale] || ht || I18n.default_locale I18n.locale = session[:locale] || I18n.default_locale
# removed ht from selection add || ht to check http header
session[:locale] = I18n.locale session[:locale] = I18n.locale
end end
@@ -62,7 +60,7 @@ u=current_user
if ! u.try(:preferredtheme).nil? and ThemesForRails.available_theme_names.include?(u.preferredtheme) if ! u.try(:preferredtheme).nil? and ThemesForRails.available_theme_names.include?(u.preferredtheme)
u.preferredtheme u.preferredtheme
else else
"blue1" "blue2"
end end
end end

View File

@@ -8,7 +8,7 @@ class HomeController < ApplicationController
params[:month]= Date.today.month if params[:month].nil? params[:month]= Date.today.month if params[:month].nil?
params[:year]= Date.today.year if params[:year].nil? params[:year]= Date.today.year if params[:year].nil?
@calentries= (@rubriken.map {|r| r.calendar}).collect(&:calentries).flatten.select {|c| c.object !=nil} @calentries= (@rubriken.map {|r| r.calendar}).collect(&:calentries).flatten.select {|c| c.object !=nil}
@starttopic= @themen = Thema.where(:id=>t).first @starttopic= @themen = Thema.where(:id=>t).first
@@ -21,7 +21,7 @@ class HomeController < ApplicationController
end end
def infoscreen def infoscreen
authorize! :infoscreen, User authorize! :infoscreen, User
@neuigkeiten = Neuigkeit.accessible_by(current_ability, :show).where(flag_infoscreen: true) @neuigkeiten = Neuigkeit.accessible_by(current_ability, :show).where(flag_infoscreen: true)
render layout: false render layout: false
end end
@@ -29,7 +29,7 @@ class HomeController < ApplicationController
t=YAML.load_file("#{::Rails.root.to_s}/config/contact_topic.yml") t=YAML.load_file("#{::Rails.root.to_s}/config/contact_topic.yml")
@themen = Thema.where(:id=>t) @themen = Thema.where(:id=>t)
end end
def treeview def treeview
authorize! :doadmin, User authorize! :doadmin, User
@themengruppen = Themengruppe.order(:priority).reverse @themengruppen = Themengruppe.order(:priority).reverse
@themengruppen += Themengruppe.intern.order(:priority).reverse @themengruppen += Themengruppe.intern.order(:priority).reverse
@@ -54,7 +54,7 @@ class HomeController < ApplicationController
else else
@logs = `tail -n #{lines} log/development.log | grep -v 'actionpack\\|railties\\|activesupport\\|::Translation'` @logs = `tail -n #{lines} log/development.log | grep -v 'actionpack\\|railties\\|activesupport\\|::Translation'`
end end
end end
def startdev def startdev
render 'setup_fetsite_dev' render 'setup_fetsite_dev'
@@ -64,7 +64,7 @@ class HomeController < ApplicationController
end end
def search def search
unless params['query'].nil? || params['query'].empty? unless params['query'].nil? || params['query'].empty?
@results = Sunspot.search Neuigkeit,Rubrik, Fetprofile, Thema, Themengruppe, Lva, Studium, Modul, Modulgruppe, Gremium, Document do @results = Sunspot.search Neuigkeit,Rubrik, Fetprofile, Thema, Themengruppe, Lva, Studium, Modul, Modulgruppe, Gremium, Document do
fulltext params['query'] fulltext params['query']
@@ -88,7 +88,7 @@ class HomeController < ApplicationController
# @themen=Thema.search(params['query']).public # @themen=Thema.search(params['query']).public
# end # end
@themen=[] @themen=[]
else else
@neuigkeiten=[] @neuigkeiten=[]
@fetprofiles=[] @fetprofiles=[]
@@ -110,10 +110,10 @@ class HomeController < ApplicationController
unless params[:themen].nil? unless params[:themen].nil?
t=([t].flatten+params[:themen]).uniq t=([t].flatten+params[:themen]).uniq
end end
unless params[:rmthema].nil? unless params[:rmthema].nil?
t=t-[params[:rmthema]] t=t-[params[:rmthema]]
end end
File.open("config/contact_topic.yml",'w'){|f| f.write(t.to_yaml)} File.open("config/contact_topic.yml",'w'){|f| f.write(t.to_yaml)}
redirect_to admin_home_index_path redirect_to admin_home_index_path
end end

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,9 +145,10 @@ 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)
@rubriken = Rubrik.all @rubriken = Rubrik.all
else else
@rubriken = Rubrik.where(:public=>true) @rubriken = Rubrik.where(:public=>true)
@@ -156,7 +157,8 @@ 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]
end end
@@ -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

@@ -16,7 +16,7 @@ class RubrikenController < ApplicationController
@rubriken= Rubrik.accessible_by(current_ability, :show) @rubriken= Rubrik.accessible_by(current_ability, :show)
@neuigkeiten = Neuigkeit.accessible_by(current_ability, :list).page(params[:page]).per(3) @neuigkeiten = Neuigkeit.accessible_by(current_ability, :list).page(params[:page]).per(3)
@calentries= (@rubriken.map {|r| r.calendar.calentries.of_month(Date.new(params[:year],params[:month],1))}).flatten.select {|c| c.object !=nil} @calentries= (@rubriken.map {|r| r.calendar.calentries.of_month(Date.new(params[:year].to_i,params[:month].to_i,1))}).flatten.select {|c| c.object !=nil}
respond_to do |format| respond_to do |format|
format.html format.html
format.js {render action: :show} format.js {render action: :show}

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)
@@ -23,7 +35,7 @@ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
end end
def ldap def ldap
logger.debug current_user.to_s logger.debug current_user.to_s
@user=User.find_for_ldap_oauth(request.env["omniauth.auth"],current_user) @user=User.find_for_ldap_oauth(request.env["omniauth.auth"],current_user)
# @user=User.find_for_ldap_oauth(session["devise.ldap_data"],current_user) # @user=User.find_for_ldap_oauth(session["devise.ldap_data"],current_user)
# @user=User.first # @user=User.first

View File

@@ -42,8 +42,9 @@ 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
def ffi2_icon (name) def ffi2_icon (name)
@@ -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

@@ -10,7 +10,7 @@ class Document < ActiveRecord::Base
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
def long_name def long_name
if self.parent.class=="Meeting" if self.parent.class=="Meeting"
"<b>"+self.parent.text+ "</b>"+ self.name "<b>"+self.parent.text+ "</b>"+ self.name
else else
@@ -18,20 +18,20 @@ class Document < ActiveRecord::Base
end end
end end
def self.new_divid_for(parent) def self.new_divid_for(parent)
"document_new_parent_" + parent.class.to_s + "_" + parent.id.to_s "document_new_parent_" + parent.class.to_s + "_" + parent.id.to_s
end end
def divid def divid
"document_"+self.id.to_s "document_"+self.id.to_s
end end
def self.ether def self.ether
EtherpadLite.connect('http://www.fet.at/etherpad', File.new('/srv/etherpad/etherpad-lite/APIKEY.txt')) EtherpadLite.connect('https://www.fet.at/etherpad', File.new('config/etherpad/APIKEY.txt'))#https://www.etherpad.fet.at
end end
def create_pdf def create_pdf
require "open3" require "open3"
#url=blank_document_url({id: self.id, host: host, port: port}) #url=blank_document_url({id: self.id, host: host, port: port})
# url=Rails.application.routes.url_helpers.blank_document_url({id: self.id, host: host, port: port}) # url=Rails.application.routes.url_helpers.blank_document_url({id: self.id, host: host, port: port})
file = Tempfile.new(['document', '.pdf']) file = Tempfile.new(['document', '.pdf'])
bin=Rails.application.config.pdf_bin bin=Rails.application.config.pdf_bin
sin,sout,serr=Open3.popen3("#{bin} --header-html \"file://#{Rails.root}/app/views/documents/header.html\" --footer-html \"file://#{Rails.root}/app/views/documents/footer.html\" --replace title1 \"#{self.name}\" - #{file.path}") sin,sout,serr=Open3.popen3("#{bin} --header-html \"file://#{Rails.root}/app/views/documents/header.html\" --footer-html \"file://#{Rails.root}/app/views/documents/footer.html\" --replace title1 \"#{self.name}\" - #{file.path}")
@@ -70,20 +70,29 @@ class Document < ActiveRecord::Base
end end
def move_to_etherpad def move_to_etherpad
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
self.ep_pad.html = '<div>'+self.text+'</div>'
end if self.text.nil?
self.ep_pad.html = '<div>'+"text"+'</div>'
else
self.ep_pad.html = '<div>'+self.text+'</div>'
end
end
end end
def dump_to_etherpad def dump_to_etherpad
if self.is_etherpad? if self.is_etherpad?
self.ep_pad.html = '<div>'+self.text+'</div>' if self.text.nil?
self.ep_pad.html = '<div>'+"text"+'</div>'
else
self.ep_pad.html = '<div>'+self.text+'</div>'
end
else else
self.move_to_etherpad self.move_to_etherpad
end end
end end
def read_from_etherpad def read_from_etherpad
self.text=ApplicationController.helpers.strip_control_chars( self.ep_pad.html) self.text=ApplicationController.helpers.strip_control_chars( self.ep_pad.html)
end end
def ep_pad def ep_pad
self.ep_group.pad(self.etherpadkey) self.ep_group.pad(self.etherpadkey)
@@ -93,16 +102,16 @@ class Document < ActiveRecord::Base
Document.ether.group(Document::TYPS[t]) Document.ether.group(Document::TYPS[t])
end end
def text_stripped def text_stripped
ApplicationController.helpers.strip_control_chars(ApplicationController.helpers.strip_tags(text.to_s.gsub("<"," <").gsub(">","> ").to_s)) ApplicationController.helpers.strip_control_chars(ApplicationController.helpers.strip_tags(text.to_s.gsub("<"," <").gsub(">","> ").to_s))
end end
searchable do searchable do
text :text, stored: true do |d| text :text, stored: true do |d|
d.text_stripped d.text_stripped
end end
text :name, :boost=>4.0, :stored=> true text :name, :boost=>4.0, :stored=> true
text :meeting, stored: true do |d| text :meeting, stored: true do |d|
(d.parent.is_a?(Meeting))? d.try(:parent).try(:text).to_s : "" (d.parent.is_a?(Meeting))? d.try(:parent).try(:text).to_s : ""
end end
end end
def maketoc def maketoc
@@ -116,20 +125,20 @@ class Document < ActiveRecord::Base
l=2 l=2
f=true; f=true;
s="<ul>" s="<ul>"
c.each do |h| c.each do |h|
s=s+ "</li></ul></li>"*(l-h["level"]) if (h["level"]<l) and !f s=s+ "</li></ul></li>"*(l-h["level"]) if (h["level"]<l) and !f
s=s+" </li>" if (h["level"]==l) and !f s=s+" </li>" if (h["level"]==l) and !f
if (h["level"]>l) if (h["level"]>l)
s=s + "<ul><li>" * (h["level"]-l) s=s + "<ul><li>" * (h["level"]-l)
else else
s=s+"<li>" s=s+"<li>"
end end
s=s+h["text"] s=s+h["text"]
l = h["level"] l = h["level"]
f=false f=false
end end
s=s+"</ul>"*(l-2) if (l>2) s=s+"</ul>"*(l-2) if (l>2)
s=s+"</ul>" s=s+"</ul>"
self.toc=s self.toc=s
end end

View File

@@ -26,10 +26,13 @@ class Gremium < ActiveRecord::Base
# has_many :members, through: :memberships # has_many :members, through: :memberships
searchable do searchable do
text :desc text :desc
text :name, :boost=>4.0 text :name
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}
@@ -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,58 @@
# 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 of type Document, which is of typ=10=protocol
has_one :protocol, :class_name=>'Document', :conditions=>{:typ=>10}, :as=>:parent has_one :protocol, :class_name=>'Document', :conditions=>{:typ=>10}, :as=>:parent
# has one agenda of type Document
has_one :agenda , :as=>:parent,:conditions=>{:typ=>11}, :class_name=>'Document' has_one :agenda , :as=>:parent,:conditions=>{:typ=>11}, :class_name=>'Document'
# has one calentry which contains the date and time of this meeting
has_one :calentry, as: :object, :dependent=> :destroy has_one :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 only contains meetings in the future and 1 hour into the past
scope :upcomming, includes(:calentry).where("calentries.start>?",1.hour.ago) scope :upcomming, includes(:calentry).where("calentries.start>?",1.hour.ago)
default_scope includes(:calentry).order("calentries.start").reverse_order 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 validate :parent, :presence=>true
# Each meeting needs a calendar entry
validate :calentry, :presence=>true validate :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 +66,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 +112,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,27 +135,17 @@ 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 end
else
t= ""
end
t
end
searchable do searchable do
text :text text :text

View File

@@ -1,7 +1,8 @@
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, :class_name=>'Document', :conditions=>{:typ=>10}, :as=>:parent

View File

@@ -16,9 +16,9 @@ class Neuigkeit < ActiveRecord::Base
attr_accessible :datum, :text, :title, :rubrik_id, :author_id,:picture,:picture_cache, :calentries_attributes, :flag_important attr_accessible :datum, :text, :title, :rubrik_id, :author_id,:picture,:picture_cache, :calentries_attributes, :flag_important
belongs_to :author, :class_name =>'User' belongs_to :author, :class_name =>'User'
belongs_to :rubrik, :class_name =>'Rubrik', :foreign_key => "rubrik_id" belongs_to :rubrik, :class_name =>'Rubrik', :foreign_key => "rubrik_id"
has_one :calendar, through: :rubrik has_one :calendar, through: :rubrik
has_many :calentries, as: :object, :dependent=> :destroy has_many :calentries, as: :object, :dependent=> :destroy
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, :class_name=>"Attachment", :as=>:parent, :conditions=>["attachments.flag_titlepic =?", true]
@@ -60,11 +60,11 @@ class Neuigkeit < ActiveRecord::Base
end end
def read_attribute(name,options={}) def read_attribute(name,options={})
if translated?(name) if translated?(name)
a=super(name,options) a=super(name,options)
a=self.translation_for(options[:locale] || I18n.locale).read_attribute(name) if self.no_fallbacks a=self.translation_for(options[:locale] || I18n.locale).read_attribute(name) if self.no_fallbacks
a a
else else
super(name) super(name)
end end
end end
@@ -91,7 +91,7 @@ class Neuigkeit < ActiveRecord::Base
!self.meeting.nil? !self.meeting.nil?
end end
def self.published def self.published
where("datum <= ? AND datum IS NOT NULL", Time.now.to_date) where("datum <= ? AND datum IS NOT NULL", Time.now.to_date)
end end
def datum_nilsave def datum_nilsave
@@ -132,7 +132,17 @@ class Neuigkeit < ActiveRecord::Base
"...." "...."
else else
words[0..100].join(" ")+ " ..." unless words.nil? words[0..100].join(" ")+ " ..." unless words.nil?
end
end
def text_infoscreen_words
md = /<p>(?<text>[^\<\>]*)/.match Sanitize.clean(self.text,:elements=>['p'])
words=md[:text].split(" ") unless md.nil?
if words.nil? || words.empty?
"...."
else
words[0..1000].join(" ")+ " ..." unless words.nil?
end end
end end
def has_calentries? def has_calentries?
@@ -143,7 +153,7 @@ class Neuigkeit < ActiveRecord::Base
end end
def relevant_calentry def relevant_calentry
ce = self.calentries.min_by{|c| c.days_to_today * 1.3 * ((c.is_past?)? 2:1)} if self.is_event? ce = self.calentries.min_by{|c| c.days_to_today * 1.3 * ((c.is_past?)? 2:1)} if self.is_event?
ce= self.meeting.calentry if self.has_meeting? ce= self.meeting.calentry if self.has_meeting?
ce ce
end end
def update_cache def update_cache
@@ -151,8 +161,8 @@ class Neuigkeit < ActiveRecord::Base
self.update_column(:cache_order, (self.meeting.calentry.start.to_date - Date.today).to_i.abs * 1.3) self.update_column(:cache_order, (self.meeting.calentry.start.to_date - Date.today).to_i.abs * 1.3)
self.update_column(:cache_relevant_date, self.meeting.calentry.start.to_date) self.update_column(:cache_relevant_date, self.meeting.calentry.start.to_date)
self.touch self.touch
else else
if self.is_event? if self.is_event?
c = self.calentries.min_by{|c| c.days_to_today * 1.3 * ((c.is_past?)? 2:1)} c = self.calentries.min_by{|c| c.days_to_today * 1.3 * ((c.is_past?)? 2:1)}
self.update_column(:cache_order, c.days_to_today * 1.3 * ((c.is_past?)? 2:1)) self.update_column(:cache_order, c.days_to_today * 1.3 * ((c.is_past?)? 2:1))
self.update_column(:cache_relevant_date, (c.is_past?) ? c.ende.to_date : c.start.to_date) self.update_column(:cache_relevant_date, (c.is_past?) ? c.ende.to_date : c.start.to_date)
@@ -184,8 +194,8 @@ class Neuigkeit < ActiveRecord::Base
end end
end end
searchable do searchable do
text :text text :text
text :datum text :datum
text :title, :boost=>3.0 text :title
end end
end end

View File

@@ -42,7 +42,7 @@ end
searchable do searchable do
text :desc text :desc
text :name, :boost=>4.0 text :name
end end
end end

View File

@@ -89,7 +89,7 @@ class Studium < ActiveRecord::Base
text :zahl text :zahl
text :typ text :typ
text :abkuerzung text :abkuerzung
text :name, :boost=>3.0 text :name
end end
end end

View File

@@ -47,7 +47,7 @@ class Thema < ActiveRecord::Base
# make topic searchable # make topic searchable
searchable do searchable do
text :text text :text
text :title, :boost=>4.0 text :title
end end
resourcify resourcify

View File

@@ -40,7 +40,7 @@ end
searchable do searchable do
text :text text :text
text :title, :boost=>4.0 text :title
end end
end end

View File

@@ -29,13 +29,34 @@ 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_facebook_oauth(auth, signed_in_resource=nil)
def self.find_for_developer_oauth(auth, signed_in_resource=nil)
# logger.debug("Developer Login started")
# logger.debug(auth.info.to_s)
# logger.debug(auth.extra.raw_info.to_s)
email = auth.info.email.to_s
logger.debug("Login E-Mail:"+"'"+ email+"'")
user= User.where(:provider=>auth.provider,:uid=>email).first
unless user
user= User.create(name: email,
provider: auth.provider,
uid: email,
email: email,
password:Devise.friendly_token[0,20])
user.add_role("fetuser")
end
user
end
def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
logger.debug auth.to_s logger.debug auth.to_s
logger.debug "DDD Username= #{auth.username}" logger.debug "DDD Username= #{auth.username}"
user = User.where(:provider => auth.provider, :uid => auth.uid).first user = User.where(:provider => auth.provider, :uid => auth.uid).first

View File

@@ -1,33 +1,22 @@
<div id="<%= beispiel.divid %>" class="contentbox"> <div id="<%= beispiel.divid %>" class="contentbox">
<div class="row-fluid"> <div class="row-fluid">
<div class="span6" > <div class="span5" >
<b><%=link_to ffi1_icon("note20")+" " + beispiel.name + " " + I18n.l(beispiel.datum), beispiel.beispieldatei.url, title: beispiel.desc %></b> <b><%=link_to ffi1_icon("note20")+" " + beispiel.name + " " + I18n.l(beispiel.datum), beispiel.beispieldatei.url, title: beispiel.desc %></b>
</div> </div>
<div class="span1" > <div class="span1" >
<%= (beispiel.beispieldatei.size/1024.0).round(2).to_s %>KiB <%= (beispiel.beispieldatei.size/1024.0).round(2).to_s %>KiB
</div> </div>
<div class="span5"> <div class="span2" >
<%= beispiel.lecturer.try(:name).to_s %>
<%= </div>
if can?(:like, beispiel) <div class="span4">
link_to ffi1_icon("like3")+" like" + "("+beispiel.get_likes.size.to_s+")", like_beispiel_path(beispiel),title: "liked by " + ((current_user.liked?(beispiel)) ? ("you and " + ((beispiel.get_likes.size - 1).to_s + " others")) : beispiel.get_likes.size.to_s), remote: true <%= flag_link(beispiel, "goodquality")%>
else <%= flag_link(beispiel, "badquality")%>
"liked by " + beispiel.get_likes.size.to_s <%= flag_link(beispiel, "delete")%>
end <%= like_dislike_for(beispiel) %>
%> <%= link_to ff_icon("icon-pencil")+"edit", edit_beispiel_path(beispiel), remote: true if can? :edit, beispiel %>
<%= link_to fa_icon("trash")+"delete", beispiel_path(beispiel), :method=>:delete, :data=>{:confirm=>I18n.t('beispiel.sure')} if can? :delete, beispiel %>
<%= <% link_to "Refresh", beispiel_path(beispiel,show_comments: true), remote: true %></br>
if can?(:dislike, beispiel)
link_to ffi1_icon("dislike")+" dislike" + "("+beispiel.get_dislikes.size.to_s+")", dislike_beispiel_path(beispiel),title:"disliked by " + ((current_user.disliked?(beispiel)) ? ("you and " + ((beispiel.get_dislikes.size - 1).to_s + " others")) : beispiel.get_dislikes.size.to_s) , remote: true
else
"disliked by " + beispiel.get_dislikes.size.to_s
end
%>
<%= link_to ff_icon("icon-pencil")+"edit", edit_beispiel_path(beispiel) if can? :edit, beispiel%>
<%= link_to fa_icon("trash")+"delete", beispiel_path(beispiel), :method=>:delete, :data=>{:confirm=>I18n.t('beispiel.sure')} if can? :delete, beispiel %>
<% link_to "Refresh", beispiel_path(beispiel,show_comments: true), remote: true %></br>
</div> </div>
</div> </div>
<% unless beispiel.desc.nil? || beispiel.desc.empty? %> <% unless beispiel.desc.nil? || beispiel.desc.empty? %>
@@ -39,4 +28,5 @@
</div> </div>
<% end %> <% end %>
<%= render_comments_for(beispiel) %>
</div> </div>

View File

@@ -9,6 +9,7 @@
</li> </li>
</ul> </ul>
</p> </p>
<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %> <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
<div><%= f.label :email %><br /> <div><%= f.label :email %><br />
<%= f.email_field :email, :autofocus => true %></div> <%= f.email_field :email, :autofocus => true %></div>

View File

@@ -22,7 +22,9 @@
<ul class='breadcrumb hidden-print'> <ul class='breadcrumb hidden-print'>
<% @document.versions.each do |v| %> <% @document.versions.each do |v| %>
<li> <li>
<%= link_to User.find(v.whodunnit).name+": "+ v.event + " (" + I18n.l(v.created_at)+ ") ", write_document_path(@document,:versionid=>v.id) unless v.whodunnit.nil? %>
<%= link_to User.find(v.whodunnit).try(:name)+": "+ v.event + " (" + I18n.l(v.created_at)+ ") ", write_document_path(@document,:versionid=>v.id) if User.exists?(v.whodunnit) unless v.whodunnit.nil? %>
<% end %> <span class="divider">/</span></li> <% end %> <span class="divider">/</span></li>
</ul> </ul>
<% end %> <% end %>

View File

@@ -1 +1 @@
<%= link_to "weiter" , "http://www.fet.at/etherpad/p/"+@document.ep_pad.id , target: :blank %> <%= link_to "weiter" , "https://www.fet.at/etherpad/p/"+@document.ep_pad.id , target: :blank %>

View File

@@ -65,5 +65,13 @@ end
</div> </div>
</div> </div>
</div> </div>
<%= render 'layouts/pretty_toolbar' %> <% if can?(:edit, @fetprofile) %>
<div>
<span>
<%= link_to ff_icon("icon-pencil")+I18n.t('common.edit'), edit_fetprofile_path(@fetprofile) if can?(:edit, @fetprofile) %>
<%= link_to fa_icon("trash")+I18n.t('common.delete'), fetprofile_path(@fetprofile),method: :delete, data: { confirm: "Are you sure?" } if can?(:delete, @fetprofile) %>
</span>
</div>
<% end %>
<%#= render 'layouts/pretty_toolbar' %>
</div> </div>

View File

@@ -8,10 +8,9 @@ top: 0" %>
<% #, gallery_foto_path(@foto.gallery, ((@foto.gallery.fotos[@foto.gallery.fotos.index(@foto)+1].nil?) ? (@foto.gallery.fotos[0].try(:id).to_i) : @foto.gallery.fotos[@foto.gallery.fotos.index(@foto)+1].try(:id).to_i) ) %> <% #, gallery_foto_path(@foto.gallery, ((@foto.gallery.fotos[@foto.gallery.fotos.index(@foto)+1].nil?) ? (@foto.gallery.fotos[0].try(:id).to_i) : @foto.gallery.fotos[@foto.gallery.fotos.index(@foto)+1].try(:id).to_i) ) %>
<div style="position:absolute; bottom:0; "> <div style="position:absolute; bottom:0; ">
<%= link_to ff_icon('icon-circle-arrow-down').html_safe, @foto.datei.url, <%= link_to ff_icon('icon-circle-arrow-down').html_safe, @foto.datei.url,
:class=>"btn",title: I18n.t('fotos.download')+': '+@foto.title,:target=>:blank, :style=>"" %> :class=>"btn",title: I18n.t('fotos.download')+': '+@foto.title.to_s,:target=>:blank, :style=>"" %>
<!-- <div class="fb-like" data-href"<%= gallery_foto_path(@foto.gallery,@foto, {fotoid:@foto.id,theme: nil, locale: nil})%>" data-layout="standard" data-action="like" data-show-faces="true" data-share="true"></div>--> <!-- <div class="fb-like" data-href"<%= gallery_foto_path(@foto.gallery,@foto, {fotoid:@foto.id,theme: nil, locale: nil})%>" data-layout="standard" data-action="like" data-show-faces="true" data-share="true"></div>-->
<%= render_shareable :url=>gallery_foto_url(@foto.gallery,@foto, {theme: nil, locale: nil}),:static_link=>true, :buttons=>[:facebook, :twitter, :google_plus] %> <%= render_shareable :url=>gallery_foto_url(@foto.gallery,@foto, {theme: nil, locale: nil}),:static_link=>true, :buttons=>[:facebook, :twitter, :google_plus] %>
<p id="notice"><%= notice %></p> <p id="notice"><%= notice %></p>
</div> </div>

View File

@@ -1,7 +1,7 @@
<%= content_for :header do %> <%= content_for :header do %>
<title>Fet - Fotos: <%= @gallery.name %></title> <title>Fet - Fotos: <%= @gallery.name %></title>
<% <%
if @openfotoid.nil? || @openfotoid==0 if @openfotoid.nil? || @openfotoid==0
@firstfoto= @fotos_p.first @firstfoto= @fotos_p.first
unless @firstfoto.nil? unless @firstfoto.nil?
@@ -70,7 +70,7 @@ end
<!-- <div class="pagination pull_left" style="margin:0px 0px 0px 0px"> <!-- <div class="pagination pull_left" style="margin:0px 0px 0px 0px">
<ul> <ul>
<li><a href="<%= gallery_path @gallery, {:pppage => @pppage, :page => (@page==1 ? @page : @page-1)} %>"><%=I18n.t('fotos.prev')%></a></li> <li><a href="<%= gallery_path @gallery, {:pppage => @pppage, :page => (@page==1 ? @page : @page-1)} %>"><%=I18n.t('fotos.prev')%></a></li>
<% # for i in 1..@pages do <% # for i in 1..@pages do
i=1 %> i=1 %>
<li><a href="<%= gallery_path @gallery, {:pppage => @pppage, :page => i} %>"><%=i%></a></li> <li><a href="<%= gallery_path @gallery, {:pppage => @pppage, :page => i} %>"><%=i%></a></li>
<% # end %> <% # end %>
@@ -131,7 +131,7 @@ end
<% @fotos_p.each do |f| %> <% @fotos_p.each do |f| %>
<div class="left"> <div class="left">
<div id="links"> <div id="links">
<% if (@openfotoid.to_i==f.id) %> <% if (@openfotoid.to_i==f.id) %>
<meta itemprop="image" content="<%= f.datei.resized.url %>"/> <meta itemprop="image" content="<%= f.datei.resized.url %>"/>
<% end %> <% end %>
<div <% if (@openfotoid.to_i==f.id) %> itemprop="primaryImageOfPage"<% else %> itemprop="hasPart" <% end %> itemscope itemtype="http://schema.org/ImageObject"> <div <% if (@openfotoid.to_i==f.id) %> itemprop="primaryImageOfPage"<% else %> itemprop="hasPart" <% end %> itemscope itemtype="http://schema.org/ImageObject">
@@ -145,9 +145,12 @@ end
</div> </div>
</div> </div>
<%= link_to ff_icon('icon-circle-arrow-down').html_safe, f.datei.url, <%= link_to ff_icon('icon-circle-arrow-down').html_safe, f.datei.url,
:class=>"btn-small",title: I18n.t('fotos.download')+': '+f.title, rel: 'tooltip' %> :class=>"btn-small",title: I18n.t('fotos.download').to_s+': '+f.title.to_s, rel: 'tooltip' %>
<%= link_to ff_icon('icon-remove-circle').html_safe, gallery_foto_path(@gallery, f), <%= link_to ff_icon('icon-remove-circle').html_safe, gallery_foto_path(@gallery, f),
:method => :delete, :class=>"btn-small btn-danger",title: I18n.t('fotos.delete')+': '+f.title, rel: 'tooltip', confirm: I18n.t('fotos.delete')+': '+f.title+', Sicher?' if can?(:delete,f) %> :method => :delete, :class=>"btn-small btn-danger",
title: I18n.t('fotos.delete').to_s+': '+f.title.to_s, rel: 'tooltip',
confirm: I18n.t('fotos.delete').to_s+': '+f.title.to_s+',
Sicher?' if can?(:delete,f) %>
<p></p> <p></p>
</div> </div>
<% end %> <% end %>
@@ -169,21 +172,21 @@ end
<%= link_to ff_icon('icon-remove-circle').html_safe, '', <%= link_to ff_icon('icon-remove-circle').html_safe, '',
:class=>"btn-small btn-danger"%>: <%= I18n.t('fotos.delete')%> :class=>"btn-small btn-danger"%>: <%= I18n.t('fotos.delete')%>
<p></p> <p></p>
</div> </div>
<% end %> <% end %>
<%= render 'layouts/pretty_toolbar' %> <%= render 'layouts/pretty_toolbar' %>
</div> </div>
</div> </div>
<%= javascript_include_tag "blueimp-gallery-all" %> <%= javascript_include_tag "blueimp-gallery-all" %>
<script> <script>
blueimp.Gallery.prototype.textFactory = function (obj, callback) { blueimp.Gallery.prototype.textFactory = function (obj, callback) {
var $element = $('<div>') var $element = $('<div>')
.addClass('slide-content') .addClass('slide-content')
.attr('title', obj.title) .attr('title', obj.title)
.attr('histItem',obj.getAttribute('histitem')); .attr('histItem',obj.getAttribute('histitem'));
$.get(obj.href) $.get(obj.href)
.done(function (result) { .done(function (result) {
$element.html(result); $element.html(result);
@@ -201,13 +204,13 @@ end
return $element[0]; return $element[0];
}; };
$('#openpic').click() $('#openpic').click()
blueimp.Gallery.prototype.onslide = (function(_super) { blueimp.Gallery.prototype.onslide = (function(_super) {
return function(index) { return function(index) {
history.pushState({},"Foto",String(this.list[index].getAttribute('histitem'))); history.pushState({},"Foto",String(this.list[index].getAttribute('histitem')));
return _super.apply(this, arguments); return _super.apply(this, arguments);
}; };
})(blueimp.Gallery.prototype.onslide); })(blueimp.Gallery.prototype.onslide);
</script> </script>
<style> <style>
@@ -221,5 +224,3 @@ end
* html .fb-like{display:inline}/* ie6 inline block fix*/ * html .fb-like{display:inline}/* ie6 inline block fix*/
*+html .fb-like{display:inline}/* ie7 inline block fix*/ *+html .fb-like{display:inline}/* ie7 inline block fix*/
</style> </style>

View File

@@ -7,12 +7,14 @@
fjs.parentNode.insertBefore(js, fjs); fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script> }(document, 'script', 'facebook-jssdk'));</script>
<div class="content-wrap content-column" style="max-width:100em;"> <div class="content-wrap content-column" style="max-width:90em;">
<h1><%= I18n.t('home.willkommen') %></h1> <h1><%= I18n.t('home.willkommen') %></h1>
<%= render partial: "themen/small", object: @starttopic %> <%= raw(@starttopic.text) unless @starttopic.nil? %>
<div class="container-fluid"> <div class="container-fluid">
<div class="row-fluid"> <div class="row-fluid">
<div class="span5"> <div class="span4">
<ul class="linklist"> <ul class="linklist">
<li> <li>
@@ -21,41 +23,43 @@
<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_omniauth_authorize_path(:ldap) ,class: :linkbox %>
</li> </li>
<li> <li>
<%= link_to ffi1_icon("quiz")+ I18n.t("themengruppe.faqs"), faqs_themengruppen_path,class: :linkbox %> <%= link_to ffi1_icon("quiz")+ I18n.t("themengruppe.faqs"), faqs_themengruppen_path,class: :linkbox %>
</li> </li>
<li><%= link_to ffi1_icon("books19")+"Beispielsammlung", studium_path(Studium.first, {:ansicht=>'semesteransicht'}) ,class: :btn ,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> <li><%= link_to "Alte Beispielsammlung", "http://www.fet.at/alt/bin/view/Beispielsammlung/WebHome" ,class: :btn ,class: :linkbox %></li>
</ul> </ul>
<ul>
<% cache("stickytopics_startpage_"+cache_array_key(@stickythemen)) do %>
<ul class="linklist">
<% @stickythemen.each do |t1| %> <% @stickythemen.each do |t1| %>
<li> <li>
<%= link_to t1 do %> <%= link_to t1,:class=>:linkbox do %>
<%= render partial: "themen/nlink", object: t %> <%= render partial: "themen/nlink", object: t1 %>
<%= end %> <% end %>
</li> </li>
<% end %> <% end %>
</ul> </ul>
<% end %>
<%= render 'beispiele' %>
<%= render 'beispiele' %>
<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 class="span7">
<ul class="unstyled linkbox-list" style="margin:5px;"> <div class="span5">
<ul class="unstyled linkbox-list">
<% @neuigkeiten.each do |n| %> <% @neuigkeiten.each do |n| %>
<li><%= render n if can?(:show, n) %> </li> <li><%= render n if can?(:show, n) %> </li>
<% end %> <% end %>
</ul> </ul>
Verschiedene Styles </div>
<ul>
<li> <%= link_to "Darkblue", home_index_path({:theme=>"darkblue"}) %></li>
<li> <%= link_to "Blue1", home_index_path({:theme=>"blue1"}) %></li>
<li> <%= link_to "2003", home_index_path({:theme=>"2003"}) %></li> <div class="span3">
<li> <%= link_to "white_1", home_index_path({:theme=>"white_1"}) %></li> <% cache("calendar_" + cache_array_key(@calentries)+params[:month].to_s+params[:year].to_s) do %>
</ul> <%= 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>
</div> </div>

View File

@@ -3,84 +3,101 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<%= stylesheet_link_tag "themes/"+theme_name+"/application", :media => "all" unless theme_name.empty? %> <%= stylesheet_link_tag "themes/"+theme_name+"/application", :media => "all" unless theme_name.empty? %>
<%= stylesheet_link_tag "application", :media=>"all" if theme_name.empty? %> <%= stylesheet_link_tag "application", :media=>"all" if theme_name.empty? %>
<%= stylesheet_link_tag "/iframe/infoscreenframe.css" %>
<%= javascript_include_tag "application" %> <%= javascript_include_tag "application" %>
<%= javascript_include_tag "jmpress" %> <%= javascript_include_tag "jmpress" %>
</head> </head>
<body> <body>
<div id ="jmpress">
<% i=1 %>
<% @neuigkeiten.each do |n| %>
<div class="step contentbox" id="step-<%=i%>" data-x="<%= i *2000 %>" data-y="<%= Random.rand(0..5)*200 %>" data-rotate="<%= Random.rand(0..18)*10 %>" style="width:1000px; height:500px; padding: 50px; display:block" data-duration="10000"><% @toolbar_elements=[];@questions=[] %> <%= content_tag(:iframe,'', width: "100%", height: "100%", name: "targetframe", allowTransparency:"true", scrolling:"no", frameborder:"0", src: "/iframe/infoscreenframe.html") %> <%#header picture/animation %>
<div class="media" style="width: 660px; height:340px; transform: scale(1.5) translate(120px,50px)" > <div id ="jmpress">
<% i=1 %>
<div class="pull-left" href="#" style="max-width:200px;"> <% @neuigkeiten.each do |n| %>
<% unless n.picture_robust.big_thumb.to_s.empty? %>
<p>
<br><%= link_to image_tag(n.picture_robust.big_thumb),n.picture_robust.try(:url) %>
</p>
<% end %>
<h3>
<% if n.has_calentries? %>
<div href="#">
<%= fa_icon("calendar 2x") %>
<%= n.relevant_calentry.text %>
</div>
<% elsif n.has_meeting? %>
<div href="#">
<%= fa_icon("calendar 2x") %>
<%= n.meeting.calentry.text unless n.meeting.calentry.nil? %>
</div>
<% end %>
</h3>
</div>
<div class="media-body">
<h1 itemprop="name">
<%= raw(n.title) %> <%#= link_to fa_icon("edit"), edit_rubrik_neuigkeit_path(n.rubrik, n), remote: true if can? :edit, n %>
</h1>
<div itemprop="articleBody" style="font-size:large">
<%= raw(n.text_first_words) %>
<div class="step" id="step-<%=i%>" data-x="<%= i *2000 %>" data-y="<%= Random.rand(0..5)*200 %>" style="position:absolute; height:540px; width:1230px; display: block;" data-duration="10000">
<div class="media" style="width:'95%'; height:480px;" >
<div class="pull-left" href="#" style="max-width:250px;">
<% unless n.picture_robust.big_thumb.to_s.empty? %>
<p>
<br><%= link_to image_tag(n.picture_robust.big_thumb),n.picture_robust.try(:url) %></p>
<% end %>
<h3>
<% if n.has_calentries? %>
<div href="#">
<%= fa_icon("calendar 2x") %>
<%= n.relevant_calentry.text %>
</div>
<% elsif n.has_meeting? %>
<div href="#">
<%= fa_icon("calendar 2x") %>
<%= n.meeting.calentry.text unless n.meeting.calentry.nil? %>
</div>
</div> <% end %>
</h3>
</div>
<div class="media-body">
<h1 itemprop="name">
<%= raw(n.title) %> <%#= link_to fa_icon("edit"), edit_rubrik_neuigkeit_path(n.rubrik, n), remote: true if can? :edit, n %>
</h1>
<div itemprop="articleBody" style="font-size:large">
<%= raw(n.text_infoscreen_words) %>
</div>
</div>
</div>
</div>
<% i = i+1 %>
<% end %>
</div>
</div> </div>
<script>
</div> var d = new Date();
<% i = i+1 %> var n = d.getDay();
<% end %> var now = d.getHours() + "." + d.getMinutes();
var weekdays = [
["Sunday"],
["Monday", 9.00, 14.00],
["Tuesday", 9.00, 14.00],
["Wednesday", 9.00, 14.00],
["Thursday", 9.00, 14.00],
["Friday", 9.00, 12.00],
["Saturday"] // we are closed, sorry!
];
var day = weekdays[n];
if (now > day[1] && now < day[2]) {
document.write("<div id='footer' style='background: green; height:25px; width:50px; margin:10px; position:absolute'>");
document.write("OPEN");
document.write("</div>");
}
else {
document.write("<div id='footer' style='background: red; height:25px; width:60px; margin:10px; position:absolute'>");
document.write("CLOSED");
document.write("</div>");
}
</script>
</div>
<div class="ui-progressbar ui-widget ui-widget-content ui-corner-all" style="height:10px; z-index: 2000; left: 5px; right: 5px; bottom: 5px; height: 10px; position:absolute">
<div id="" class="ui-progressbar-value ui-widget-header ui-corner-left" style=""></div>
</div>
<script>
$(function () { <script>
$('#jmpress').jmpress({ $(function () {
duration: { $('#jmpress').jmpress({
barPropertyStart: '0', initStep: function(element, eventData) {
barSelector: '.ui-progressbar-value' console.log('We\'re changing to step: #' + $(element).attr('id') + '!');
}, }
initStep: function(element, eventData) {
console.log('We\'re changing to step: #' + $(element).attr('id') + '!'); });
} setTimeout(function(){
window.location.reload();
/* or window.location = window.location.href; */
}, 100000);
}); });
setTimeout(function(){ </script>
window.location.reload();
/* or window.location = window.location.href; */
}, 100000);
});
</script>
</body> </body>

View File

@@ -1,23 +1,49 @@
<h1> FET Intern NEU </h1> <h1> FET Intern NEU blue2</h1>
<div class="container-fluid"> <div class="container-fluid">
<div class="row-fluid"> <div class="row-fluid">
<div class="span6"> <div class="span6">
<ul class="linklist"> <div>
<li> <ul class="linklist">
<%= link_to "Adressliste", internlist_fetprofiles_path ,class: :linkbox %></li> <li>
<li> <%= link_to "Admin" , admin_home_index_path, class: :linkbox if current_user.has_role?(:fetadmin) %> <%= link_to fa_icon("list")+"Adressliste", internlist_fetprofiles_path ,class: :linkbox %>
</li> </li>
<li> <li>
<%= link_to ff_icon("ffi1-setting")+"Neue Oberfläche" , set_preferred_theme_user_path(current_user, params: {theme: "blue2"}), class: :linkbox if can? :set_preferred_theme , current_user %> <%= link_to ff_icon("ffi1-setting")+"Admin" , admin_home_index_path, class: :linkbox if current_user.has_role?(:fetadmin) %>
</li></ul> </li>
<li>
<%= link_to ff_icon("fa fa-folder")+"Treeview" , treeview_home_index_path, class: :linkbox if current_user.has_role?(:fetadmin) %>
</li>
<li>
<%= link_to ff_icon("ffi1-newspaper9")+"Crawler" , crawler_index_path, class: :linkbox if current_user.has_role?(:fetadmin) %>
</li>
<li>
<%= link_to ff_icon("ffi1-setting")+"Meetings" , meetingtyps_path, class: :linkbox if current_user.has_role?(:fetadmin) %>
</li>
<li>
<%= link_to ff_icon("ffi1-setting")+"Alte Oberfläche" , set_preferred_theme_user_path(current_user, params: {theme: "blue1"}), class: :linkbox if can? :set_preferred_theme, current_user %>
</li>
</ul><br>
</div>
<div>Suche nach Protokollen
<%= semantic_form_for :search,:remote=>true, :url=>search_documents_path, :html=>{:id=>"search_form",:class=>"", :method=>'get'} do |f| %>
<%= f.input :query, :input_html => { :name => 'query' } , :label=>false, :class=>"search-query" %>
<% f.actions do %>
<% f.action :submit, :as => :input %>
<% end %>
<% end %>
<div id="searchresults">
<%= render :partial=>"documents/search_results", :object=>@results %>
</div>
</div>
<ul class="unstyled linkbox-list"> <ul class="unstyled linkbox-list">
<li> <li>
<% @themengruppen.each do |themengruppe| %> <% @themengruppen.each do |themengruppe| %>
<div class="container-fluid"> <div class="container-fluid">
<%= render themengruppe if can?(:show,themengruppe)%> <%= render themengruppe if can?(:show,themengruppe)%>
</div> </div>
<% end %> <% end %>
</li> </li>
</ul> </ul>
<%= link_to "Users", users_path %> <%= link_to "Users", users_path %>
@@ -25,9 +51,9 @@
<div class="span6"> <div class="span6">
<h2>Neuigkeiten</h2> <h2>Neuigkeiten</h2>
<ul class="unstyled linkbox-list"> <ul class="unstyled linkbox-list">
<% @neuigkeiten.each do |n| %> <% @neuigkeiten.each do |n| %>
<li><%= render n if can?(:show, n) %></li> <li><%= render n if can?(:show, n) %></li>
<% end %> <% end %>
</ul> </ul>
</div> </div>
</div> </div>

View File

@@ -1,71 +1,66 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="<%= absurl("/logo2014_64.png")%>"> <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="de" href="<%= url_for(params.merge(:locale=>:de))%>" />
<link rel="alternate" hreflang="en" href="<%= url_for(params.merge(:locale=>:en))%>" /> <link rel="alternate" hreflang="en" href="<%= url_for(params.merge(:locale=>:en))%>" />
<!--<link rel="shortcut icon" href="http://www.fet.at/favicon.ico">-->
<!----> <%= stylesheet_link_tag "themes/"+theme_name+"/application", :media => "all" unless theme_name.empty? %>
<%= stylesheet_link_tag "application", :media=>"all" if theme_name.empty? %>
<%= stylesheet_link_tag "themes/"+theme_name+"/application", :media => "all" unless theme_name.empty? %> <%= javascript_include_tag "application" %>
<%= stylesheet_link_tag "application", :media=>"all" if theme_name.empty? %> <%= csrf_meta_tags %>
<% theme_stylesheet_link_tag "test", :media => "all" %> <% if content_for?(:header) %>
<% theme_stylesheet_link_tag "mod", :media=>"all" %> <%= yield :header %>
<%= javascript_include_tag "application" %> <% else %>
<%= csrf_meta_tags %> <title>Fetsite</title>
<% if content_for?(:header) %> <% end %>
<%= yield :header %>
<% else %>
<title>Fetsite</title>
<% end %>
</head> </head>
<body> <body>
<div id="maincontainer" class="container-fluid"> <div id="maincontainer" class="container-fluid">
<div class="row-fluid"> <div class="row-fluid">
<div class="span10 offset1 header_span"> <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 %> <% 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_wrap">
<div class="header hidden-print"> <div class="header hidden-print">
<%= link_to home_index_path do %> <%= link_to home_index_path do %>
<!-- <span class="feticon-fet_logo fa-4x color-1"> </span>--> <!-- <span class="feticon-fet_logo fa-4x color-1"> </span>-->
<%= image_tag('/logo2014_64.png',{:style=>"float:left;height:50px",:height=>"50"}) %> <%= image_tag('/logo2014_64.png',{:style=>"float:left;height:50px",:height=>"50"}) %>
<% end %> <% end %>
</div> </div>
<div class="header visible-print"> <div class="header visible-print">
<%= image_tag('/logo2014_64.png',{:style=>"float:left;height:50px",:height=>"50"}) %> <%= image_tag('/logo2014_64.png',{:style=>"float:left;height:50px",:height=>"50"}) %>
</div> </div>
<div class="visible-print"> <div class="visible-print">
Fachschaft Elektrotechnik Fachschaft Elektrotechnik
<hr/> <hr/>
</div> </div>
<div id="menudiv" style="margin-top:12px" class="hidden-print"> <div id="menudiv" style="margin-top:12px" class="hidden-print">
<%= render :template => 'layouts/menu' %> <%= render :template => 'layouts/menu' %>
</div> </div>
</div> </div>
<% end %> <% end %>
</div> </div>
</div>
<div class="row-fluid">
<div class="span10 offset1" id="contentdiv">
<%= yield %>
</div>
</div>
</div> </div>
<div class="row-fluid"> <script>
<div class="span10 offset1" id="contentdiv"> $('.dropdown-toggle').click(function(e) {
<%= yield %> e.preventDefault();
</div> setTimeout($.proxy(function() {
</div> if ('ontouchstart' in document.documentElement) {
</div> $(this).siblings('.dropdown-backdrop').off().remove();
<script> }
$('.dropdown-toggle').click(function(e) { }, this), 0);
e.preventDefault(); });
setTimeout($.proxy(function() { </script>
if ('ontouchstart' in document.documentElement) {
$(this).siblings('.dropdown-backdrop').off().remove();
}
}, this), 0);
});
</script>
</body> </body>
</html> </html>

View File

@@ -44,8 +44,20 @@
</ul></div> </ul></div>
</li> </li>
<%= render 'layouts/login' %> <li>
</ul> <% if not user_signed_in? %>
<% if Rails.env.development? %>
<%# link_to I18n.t('home.login'), user_omniauth_authorize_path(:developer) %>
<%= render 'layouts/login' %>
<% else %>
<%= link_to ffi1_icon("academic") + I18n.t('home.login'), user_omniauth_authorize_path(:ldap) %>
<% end %>
<% else %>
<%= render 'layouts/login' %>
<% end %>
</li></ul>
<!--<span class="pull-right"><%if I18n.locale == :en %> <!--<span class="pull-right"><%if I18n.locale == :en %>
<%= link_to image_tag("/flaggen/png/at.png") + " Deutsch" ,switch_locale_url(:de)%> <%= link_to image_tag("/flaggen/png/at.png") + " Deutsch" ,switch_locale_url(:de)%>

View File

@@ -1,12 +1,10 @@
<%= content_for :header do %> <%= content_for :header do %>
<title>Fetsite - <%= @lva.full_name %></title> <title>Fetsite - <%= @lva.full_name %></title>
<% set_meta_tags :og => { <% set_meta_tags :og => {
:url=>lva_path(:theme=>nil) :url=>lva_path(:theme=>nil) }
} %>
%> <%= display_meta_tags %>
<%= display_meta_tags %>
<% end %> <% end %>
<div itemscope itemtype="schema.org/Article" > <div itemscope itemtype="schema.org/Article" >
<div class="container-fluid"> <div class="container-fluid">
<%= render 'studien/tabs'%> <%= render 'studien/tabs'%>
@@ -14,106 +12,145 @@
<div class="row-fluid"> <div class="row-fluid">
<div class="span12"> <div class="span12">
<%= render 'layouts/pretty_toolbar' %> <%= render 'layouts/pretty_toolbar' %>
</div> </div>
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span8"> <div class="span8">
<h1 itemprop="name"><%= @lva.full_name %></h1> <h1 itemprop="name"><%= @lva.full_name %></h1>
<meta itemprop="url" content="<%= lva_path(@lva) %>" /> <meta itemprop="url" content="<%= lva_path(@lva) %>" />
<ul class="linklist"> <ul class="linklist">
<li> <li>
<%= link_to ffi1_icon("live2")+"ET-Forum", @lva.forumlink, class: :linkbox, itemprop: "discussionUrl" unless @lva.forumlink.nil? or @lva.forumlink.empty?%> <%= link_to ffi1_icon("live2")+"ET-Forum", @lva.forumlink, class: :linkbox, itemprop: "discussionUrl" unless @lva.forumlink.nil? or @lva.forumlink.empty?%>
</li> </li>
<li> <li>
<%= link_to "TISS", @lva.tisslink, class: :linkbox %> <%= link_to "TISS", @lva.tisslink, class: :linkbox %>
</li> </li>
</ul> </ul>
<div itemprop="articleBody"> <div itemprop="articleBody">
<h2><%= I18n.t('lva.pruefungsinfo')%></h2> <h2><%= I18n.t('lva.pruefungsinfo')%></h2>
<div class=""> <div class="">
<%= @lva.pruefungsinformation.to_s.html_safe %> <%= @lva.pruefungsinformation.to_s.html_safe %>
</div> </div>
<h2><%= I18n.t('lva.lernaufwand')%></h2> <h2><%= I18n.t('lva.lernaufwand')%></h2>
<div class=""> <div class="">
<%= @lva.lernaufwand %> <%= @lva.lernaufwand %>
</div> </div>
<h2><%= I18n.t('lva.desc')%></h2> <h2><%= I18n.t('lva.desc')%></h2>
<div class=""> <div class="">
<%= @lva.desc.to_s.html_safe %> <%= @lva.desc.to_s.html_safe %>
</div> </div>
</div> </div>
</div> </div>
<div class="span4"> <div class="span4">
<div class="contentbox"> <div class="contentbox">
<ul> <ul>
<li><b><%= I18n.t('lva.lvanr')%>:</b> <%=@lva.lvanr %></li> <li><b><%= I18n.t('lva.lvanr')%>:</b> <%=@lva.lvanr %></li>
<li><b>ECTS:</b> <%=@lva.ects %></li> <li><b>ECTS:</b> <%=@lva.ects %></li>
<li><b><%= I18n.t('lva.stunden')%>:</b> <%=@lva.stunden %></li> <li><b><%= I18n.t('lva.stunden')%>:</b> <%=@lva.stunden %></li>
</ul> </ul>
<h2><%= I18n.t('lva.module')%></h2> <h2><%= I18n.t('lva.module')%></h2>
<ul> <ul>
<% @lva.modul.each do |modul| %> <% @lva.modul.each do |modul| %>
<li><b><%= link_to modul.name , modul_path(modul)%></b> <li><b><%= link_to modul.name , modul_path(modul)%></b>
<ul> <ul>
<% modul.modulgruppen.each do |g| %> <% modul.modulgruppen.each do |g| %>
<li><%= link_to g.studium.title_context , studium_path(g.studium)%> (<%=link_to g.name, modulgruppe_path(g)%>)</li>
<% end %> <li><%= link_to g.studium.title_context , studium_path(g.studium)%> (<%=link_to g.name, modulgruppe_path(g)%>)</li>
</ul> <% end %>
</li> </ul>
<% end %> </li>
</ul>
</div> <% end %>
<div class="contentbox"> </ul>
<h2> <%= I18n.t "lecturers.lecturers" %> </h2> </div>
<% @lva.lecturers.each do |lec| %> <div class="contentbox">
<%= render :partial=>'lecturers/lec_lva', :object=>lec %> <h2> <%= I18n.t "lecturers.lecturers" %> </h2>
<% end %> <% @lva.lecturers.each do |lec| %>
</div> <%= render :partial=>'lecturers/lec_lva', :object=>lec %>
<% end %>
</div>
</div> </div>
</div> </div>
<div class="row-fluid">
<div class="row-fluid">
<div class="span12"> <div class="span12">
<%= new_question_for(@lva) %>
<% unless @questions.nil? %>
<% @questions.each do |q| %>
<%= render q if can? :show, q %>
<% end %>
<% end %>
<h2><%= I18n.t("lva.bspe") %></h2> <h2><%= I18n.t("lva.bspe") %></h2>
<p><%= I18n.t("lva.ratebsp")%> <%= link_to ffi1_icon("facebook1") + I18n.t('home.fblogin'), user_omniauth_authorize_path(:facebook) ,class: :linkbox %> <p>
<%= I18n.t("lva.ratebsp")%>
<%= link_to ffi1_icon("facebook1") + I18n.t('home.fblogin'), user_omniauth_authorize_path(:facebook) ,class: :linkbox %>
</p> </p>
<%= link_to t("beispiel.zip") , beispiel_sammlung_lva_path(@lva), class: :linkbox %> <%= link_to t("beispiel.zip") , beispiel_sammlung_lva_path(@lva), class: :linkbox %>
<% @beispiele_all.each do |b| %> <% @beispiele.each do |b| %>
<% cache("beispiel_" +I18n.locale.to_s+b.id.to_s+can?(:delete,b).to_s+"_"+can?(:edit,b).to_s + "_" + can?(:flag, b).to_s+ can?(:comment, b).to_s + "_" + can?(:like, b).to_s + "_" + b.updated_at.try(:utc).try(:to_s) + get_theme_help(current_user).to_s) do %> <% cache("beispiel_" +I18n.locale.to_s+b.id.to_s+can?(:delete,b).to_s+"_"+can?(:edit,b).to_s + "_" + can?(:flag, b).to_s + "_" + can?(:like, b).to_s + "_" + b.updated_at.try(:utc).try(:to_s) + get_theme_help(current_user).to_s) do %>
<%= render b%> <%= render b%>
<% end %> <% end %>
<% end %> <% end %>
</div> <% if @beispiele_badQ.count > 0 %>
<h3> Bad Quality or Outdated</h3>
<% @beispiele_badQ.each do |b| %>
<% cache("beispiel_" +I18n.locale.to_s+b.id.to_s+can?(:delete,b).to_s+"_"+can?(:edit,b).to_s + "_" + can?(:flag, b).to_s + "_" + can?(:like, b).to_s + "_" + b.updated_at.try(:utc).try(:to_s) + get_theme_help(current_user).to_s) do %>
<%= render b%>
<% end %>
<% end %>
<% end %>
<% if @beispiele_deleted.count > 0 %>
<h3> Trash</h3>
<% @beispiele_deleted.each do |b| %>
<% cache("beispiel_" +I18n.locale.to_s+b.id.to_s+can?(:delete,b).to_s+"_"+can?(:edit,b).to_s + "_" + can?(:flag, b).to_s + "_" + can?(:like, b).to_s + "_" + b.updated_at.try(:utc).try(:to_s) + get_theme_help(current_user).to_s) do %>
<%= render b%>
<% end %>
<% end %>
<% end %>
</div>
</div> </div>
<div class="row-fluid"> <div class="span12"> <div class="row-fluid">
<% unless @lva.nlinks.empty? %> <div class="span12">
<h2><%= I18n.t("rubrik.title") %></h2>
<% @lva.nlinks.each do |l| %> <% unless @lva.nlinks.empty? %>
<%= render l.neuigkeit %> <h2><%= I18n.t("rubrik.title") %></h2>
<% end %> <% @lva.nlinks.each do |l| %>
<% end %> <%= render l.neuigkeit %>
</div></div> <% end %>
<% end %>
</div>
</div>
<% cache("lva_beispiel_form_bulk_"+@lva.id.to_s+I18n.locale.to_s+@lva.updated_at.to_i.to_s) do %> <% cache("lva_beispiel_form_bulk_"+@lva.id.to_s+I18n.locale.to_s+@lva.updated_at.to_i.to_s) do %>
<div class="row-fluid"> <div class="row-fluid">
<div class="span12"> <div class="span12">
<%= render 'beispiele/form_bulk' %> <%= render 'beispiele/form_bulk' %>
</div> </div>
</div> </div>
<% end %> <% end %>
<% unless @crawlobjects.nil? %> <% unless @crawlobjects.nil? %>
<div class="row-fluid"> <div class="row-fluid">
<div class="span12"> <div class="span12">
<% @crawlobjects.each do |co| %> <% @crawlobjects.each do |co| %>
<%= render co %> <%= render co %>
<% end %> <% end %>
</div> </div>
</div> </div>
<% end %> <% end %>
</div> </div>

View File

@@ -1,9 +1,22 @@
<div id="neuigkeit_<%= neuigkeit_view.id %>" class="contentbox" itemscope itemtype="http://schema.org/Article"> <% if neuigkeit_view.nil?
<meta itemprop="about" content="<%= neuigkeit_view.text_first_words %>"/> neuigkeit_view=@neuigkeit
<meta itemprop="sameAs" content="<%= neuigkeit_url(neuigkeit_view,:theme=>nil)%>"/> end
<meta itemprop="url" content="<%= neuigkeit_url(neuigkeit_view,:theme=>nil)%>"/> %>
<div id="neuigkeit_<%= neuigkeit_view.id %>" class="contentbox" itemscope itemtype="http://schema.org/Article">
<%= meta_itemprop("about", neuigkeit_view.text_first_words) %>
<%= meta_itemprop("sameAs", neuigkeit_url(neuigkeit_view,:theme=>nil)) %>
<%= meta_itemprop("url", neuigkeit_url(neuigkeit_view,:theme=>nil)) %>
<div class="media"> <div>
<% cache("menu_neuigkeit"+ neuigkeit_view.id.to_s + can?(:edit,neuigkeit_view).to_s + can?(:find_link, neuigkeit_view).to_s + can?(:new, Survey::Question).to_s + can?(:publish, neuigkeit_view).to_s + can?(:unpublish, neuigkeit_view).to_s + neuigkeit_view.published?.to_s + neuigkeit_view.flag_important.to_s + neuigkeit_view.flag_infoscreen.to_s) do %>
<%= render partial: "menu" , object: neuigkeit_view%>
<% end %>
</div>
<div>
<%#= render 'layouts/pretty_toolbar', :object=> @toolbar_elements %>
</div>
<div class="media">
<span itemprop="articleSection"> <span itemprop="articleSection">
<%= ff_icon(neuigkeit_view.rubrik.icon) unless neuigkeit_view.rubrik.icon.nil? or neuigkeit_view.rubrik.icon.empty? %>&nbsp;<%= neuigkeit_view.rubrik.name %> <%= ff_icon(neuigkeit_view.rubrik.icon) unless neuigkeit_view.rubrik.icon.nil? or neuigkeit_view.rubrik.icon.empty? %>&nbsp;<%= neuigkeit_view.rubrik.name %>
</span> </span>
@@ -15,6 +28,7 @@
</span> </span>
<% end %> <% end %>
</div> </div>
<% unless neuigkeit_view.published? %> <% unless neuigkeit_view.published? %>
<div class="sticker sticker-red"> Not Published <%= link_to "Publish", publish_rubrik_neuigkeit_path(neuigkeit_view.rubrik,neuigkeit_view),remote:true, class: :btn if can? :publish, neuigkeit_view %></div> <div class="sticker sticker-red"> Not Published <%= link_to "Publish", publish_rubrik_neuigkeit_path(neuigkeit_view.rubrik,neuigkeit_view),remote:true, class: :btn if can? :publish, neuigkeit_view %></div>
<% end %> <% end %>
@@ -31,7 +45,7 @@
<% end %> <% end %>
<div class="media-body"> <div class="media-body">
<h1 itemprop="name"> <h1 itemprop="name">
<%= raw(neuigkeit_view.title) %> <%= link_to fa_icon("edit"), edit_rubrik_neuigkeit_path(neuigkeit_view.rubrik, neuigkeit_view), remote: true if can? :edit, neuigkeit_view %> <%= raw(neuigkeit_view.title) %> <%#= link_to fa_icon("edit"), edit_rubrik_neuigkeit_path(neuigkeit_view.rubrik, neuigkeit_view), remote: true if can? :edit, neuigkeit_view %>
</h1> </h1>
<div itemprop="articleBody"> <div itemprop="articleBody">
<%= raw(neuigkeit_view.text) %> <%= raw(neuigkeit_view.text) %>
@@ -40,14 +54,19 @@
</div> </div>
<%= render_calentries_for(neuigkeit_view)%> <%= render_calentries_for(neuigkeit_view)%>
<%= new_calentry_div(neuigkeit_view) %>
<% unless neuigkeit_view.meeting.nil? %> <% unless neuigkeit_view.meeting.nil? %>
<%= render neuigkeit_view.meeting %> <%= render neuigkeit_view.meeting %>
<% end%> <% end%>
<%= render_attachments_for(neuigkeit_view) %> <%= render_attachments_list_for(neuigkeit_view) %>
<%= render 'layouts/pretty_toolbar', :object=> @toolbar_elements %> </div>
</div>
<% @questions.each do |q| %>
<%= render q if can? :show, q %>
<% end %>

View File

@@ -38,19 +38,15 @@
</p> </p>
<%= render partial: "neuigkeit_view", object: @neuigkeit %> <%= render partial: "neuigkeit_view", object: @neuigkeit %>
<%= new_question_for(@neuigkeit) if can? :new, Survey::Question %>
<% @questions.each do |q| %>
<%= render q if can? :show, q %>
<% end %>
</div> </div>
<div class="fb-like" data-href"<%= rubrik_neuigkeit_url(@rubrik,@neuigkeit,{themes: nil, locale: nil})%>" data-layout="standard" data-action="like" data-show-faces="true" data-share="true"></div> <div class="fb-like" data-href"<%= rubrik_neuigkeit_url(@rubrik,@neuigkeit,{themes: nil, locale: nil})%>" data-layout="standard" data-action="like" data-show-faces="true" data-share="true"></div>
<%= render_comments_for(@neuigkeit) %>
<%# link_to fa_icon("link") + "Neue Verknüpfung" , "#", id: "findlink-open" if can? :find_link, @neuigkeit %>
<%= link_to fa_icon("link") + "Neue Verknüpfung" , "#", id: "findlink-open" if can? :find_link, @neuigkeit %>
<% cache(cache_array_key(@neuigkeit.nlinks, "NLinks")) do %> <% cache(cache_array_key(@neuigkeit.nlinks, "NLinks")) do %>
<%= render partial: 'neuigkeiten/nlink_list_whole', :object=>@neuigkeit.nlinks %> <%= render partial: 'neuigkeiten/nlink_list_whole', :object=>@neuigkeit.nlinks %>
<% end %> <% end %>
<div id="findlink-body" class="ui-dialog" style=""> <div id="findlink-body" class="ui-dialog" style="">
@@ -62,6 +58,7 @@
<%= render partial: 'nlink_list_search_whole', object: @nlink_search %> <%= render partial: 'nlink_list_search_whole', object: @nlink_search %>
<% end %> <% end %>
</div> </div>
<script> <script>
$(function(){ $(function(){
dialog = $( "#findlink-body" ).dialog({ dialog = $( "#findlink-body" ).dialog({

View File

@@ -33,16 +33,17 @@
</div> </div>
</div> </div>
<% unless @calentries.nil? or @calentries.empty? or true%>
<div class="span3"> <div class="span3">
<% unless @calentries.nil? or @calentries.empty? %>
<% cache("calendar_" + @calentries.map{|c| c.id}.join('') + @calentries.max{|c|c.updated_at.to_i}.updated_at.to_i.to_s+"_"+I18n.locale.to_s+params[:month].to_s+params[:year].to_s) do %> <% cache("calendar_" + @calentries.map{|c| c.id}.join('') + @calentries.max{|c|c.updated_at.to_i}.updated_at.to_i.to_s+"_"+I18n.locale.to_s+params[:month].to_s+params[:year].to_s) do %>
<%= render 'calendars/calentries', :object=>@calentries %> <%= render 'calendars/calentries', :object=>@calentries %>
<% end %> <% end %>
<% end %>
<% if !current_user.nil? and current_user.has_role?(:fetuser) %> <% if !current_user.nil? and current_user.has_role?(:fetuser) %>
<%= link_to calendars_url(:format=>:ics, :key=>Key.find_or_create(current_user,1).uuid) , calendars_path(:format=>:ics, :key=>Key.find_or_create(current_user,1).uuid)%> <%= link_to calendars_url(:format=>:ics, :key=>Key.find_or_create(current_user,1).uuid) , calendars_path(:format=>:ics, :key=>Key.find_or_create(current_user,1).uuid)%>
<% end %> <% end %>
</div> </div><% end %>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -9,7 +9,7 @@
<div class="content-wrap content-column" style="max-width:90em;"> <div class="content-wrap content-column" style="max-width:90em;">
<h1><%= I18n.t('home.willkommen') %></h1> <h1><%= I18n.t('home.willkommen') %></h1>
<%= raw(@starttopic.text) %> <%= raw(@starttopic.text) unless @starttopic.nil? %>
<div class="container-fluid"> <div class="container-fluid">
@@ -26,7 +26,7 @@
<li> <li>
<%= link_to ffi1_icon("quiz")+ I18n.t("themengruppe.faqs"), faqs_themengruppen_path,class: :linkbox %> <%= link_to ffi1_icon("quiz")+ I18n.t("themengruppe.faqs"), faqs_themengruppen_path,class: :linkbox %>
</li> </li>
<li><%= link_to ffi1_icon("books19")+"Beispielsammlung", studium_path(Studium.first, {:ansicht=>'semesteransicht'}) ,class: :btn ,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> <li><%= link_to "Alte Beispielsammlung", "http://www.fet.at/alt/bin/view/Beispielsammlung/WebHome" ,class: :btn ,class: :linkbox %></li>
</ul> </ul>

View File

@@ -1,32 +0,0 @@
<div id="<%= beispiel.divid %>" class="contentbox">
<div class="row-fluid">
<div class="span5" >
<b><%=link_to ffi1_icon("note20")+" " + beispiel.name + " " + I18n.l(beispiel.datum), beispiel.beispieldatei.url, title: beispiel.desc %></b>
</div>
<div class="span1" >
<%= (beispiel.beispieldatei.size/1024.0).round(2).to_s %>KiB
</div>
<div class="span2" >
<%= beispiel.lecturer.try(:name).to_s %>
</div>
<div class="span4">
<%= flag_link(beispiel, "goodquality")%>
<%= flag_link(beispiel, "badquality")%>
<%= flag_link(beispiel, "delete")%>
<%= like_dislike_for(beispiel) %>
<%= link_to ff_icon("icon-pencil")+"edit", edit_beispiel_path(beispiel), remote: true if can? :edit, beispiel %>
<%= link_to fa_icon("trash")+"delete", beispiel_path(beispiel), :method=>:delete, :data=>{:confirm=>I18n.t('beispiel.sure')} if can? :delete, beispiel %>
<% link_to "Refresh", beispiel_path(beispiel,show_comments: true), remote: true %></br>
</div>
</div>
<% unless beispiel.desc.nil? || beispiel.desc.empty? %>
<div class="row-fluid">
<div class="span12">
<%= beispiel.desc %>
</div>
</div>
<% end %>
<%= render_comments_for(beispiel) %>
</div>

View File

@@ -1,77 +0,0 @@
<%= content_for :header do %>
<title>FET - <%= @fetprofile.name %></title>
<% unless @fetprofile.picture.url.nil?
picture_url=URI(root_url)
picture_url.path=@fetprofile.picture.portrait.url
end
%>
<% set_meta_tags :og => {
:image => picture_url.to_s,
:title => @fetprofile.name.to_s ,
:type => "profile",
:url=>fetprofile_url(@fetprofile,:theme=>nil),
:profile=> {
:first_name=>@fetprofile.vorname,
:last_name=>@fetprofile.nachname
}
}
%>
<% set_meta_tags :og=>{:article=> {:published_time=>I18n.l(@neuigkeit.try(:datum).try(:to_date)) }} unless @neuigkeit.try(:datum).try(:to_date).nil? %>
<%= display_meta_tags %>
<% end %>
<%= render 'fetprofiles/tabs' %>
<div class="content-wrap content-column">
<p id="notice"><%= notice %></p>
<div style="max-width:70em" itemtype="http://schema.org/Person" itemscope>
<meta itemprop="sameAs" content="<%= fetprofile_path(@fetprofile, theme: nil) %>"/>
<meta itemprop="url" content="<%= fetprofile_path(@fetprofile, theme: nil) %>"/>
<div class="media">
<span class="pull-left" itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
<span itemprop="thumbnail" itemscope itemtype="http://schema.org/ImageObject">
<%= image_tag @fetprofile.picture.portrait.url %>
<meta itemprop="url" content="<%= @fetprofile.picture.portrait.url%>" />
</span>
<meta itemprop="url" content="<%= @fetprofile.picture.url%>" />
<meta itemprop="representativeOfPage" content="true" />
</span>
<div class="media-body">
<h2><span itemprop="givenName"><%= @fetprofile.vorname %></span><span itemprop="familyName"> <%= @fetprofile.nachname %></span><% unless @fetprofile.short.empty? %><span itemprop=""> <%= @fetprofile.short %> </span><% end %></h2>
<meta itemprop="name" content="<%= @fetprofile.name %>" />
<p itemprop="email">
<%= @fetprofile.fetmail %>
</p>
<p itemprop="description">
<%= @fetprofile.desc %>
</p>
<%= render partial: "interninfo", object: @fetprofile if can?(:seeintern, @fetprofile) %>
<ul>
<% @memberships.each do |m| %>
<li>
<%= link_to gremium_path(m.gremium) do %> <%= render m %><% end %>
<%= link_to I18n.t('common.edit'), edit_fetprofile_membership_path(@fetprofile,m) if params["verwalten"] && can?(:edit, m)%>
<%= link_to I18n.t('common.delete'), [@fetprofile, m], method: :delete, data: {confirm: I18n.t('common.sure_del')} if params["verwalten"] && can?(:delete, m ) %>
</li>
<% end %>
</ul>
</div>
</div>
</div>
<% if can?(:edit, @fetprofile) %>
<div>
<span>
<%= link_to ff_icon("icon-pencil")+I18n.t('common.edit'), edit_fetprofile_path(@fetprofile) if can?(:edit, @fetprofile) %>
<%= link_to fa_icon("trash")+I18n.t('common.delete'), fetprofile_path(@fetprofile),method: :delete, data: { confirm: "Are you sure?" } if can?(:delete, @fetprofile) %>
</span>
</div>
<% end %>
<%#= render 'layouts/pretty_toolbar' %>
</div>

View File

@@ -1,67 +0,0 @@
<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) %>
<div class="container-fluid">
<div class="row-fluid">
<div class="span4">
<ul class="linklist">
<li>
<%= link_to ffi1_icon("facebook1") + I18n.t('home.fblogin'), user_omniauth_authorize_path(:facebook) ,class: :linkbox %>
</li>
<li>
<%= link_to ffi1_icon("academic") + I18n.t('home.login'), user_omniauth_authorize_path(:ldap) ,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 %></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="span5">
<ul class="unstyled linkbox-list">
<% @neuigkeiten.each do |n| %>
<li><%= render n if can?(:show, n) %> </li>
<% end %>
</ul>
</div>
<div class="span3">
<% 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

@@ -1,62 +0,0 @@
<h1> FET Intern NEU blue2</h1>
<div class="container-fluid">
<div class="row-fluid">
<div class="span6">
<div>
<ul class="linklist">
<li>
<%= link_to fa_icon("list")+"Adressliste", internlist_fetprofiles_path ,class: :linkbox %>
</li>
<li>
<%= link_to ff_icon("ffi1-setting")+"Admin" , admin_home_index_path, class: :linkbox if current_user.has_role?(:fetadmin) %>
</li>
<li>
<%= link_to ff_icon("fa fa-folder")+"Treeview" , treeview_home_index_path, class: :linkbox if current_user.has_role?(:fetadmin) %>
</li>
<li>
<%= link_to ff_icon("ffi1-newspaper9")+"Crawler" , crawler_index_path, class: :linkbox if current_user.has_role?(:fetadmin) %>
</li>
<li>
<%= link_to ff_icon("ffi1-setting")+"Meetings" , meetingtyps_path, class: :linkbox if current_user.has_role?(:fetadmin) %>
</li>
<li>
<%= link_to ff_icon("ffi1-setting")+"Alte Oberfläche" , set_preferred_theme_user_path(current_user, params: {theme: "blue1"}), class: :linkbox if can? :set_preferred_theme, current_user %>
</li>
</ul><br>
</div>
<div>Suche nach Protokollen
<%= semantic_form_for :search,:remote=>true, :url=>search_documents_path, :html=>{:id=>"search_form",:class=>"", :method=>'get'} do |f| %>
<%= f.input :query, :input_html => { :name => 'query' } , :label=>false, :class=>"search-query" %>
<% f.actions do %>
<% f.action :submit, :as => :input %>
<% end %>
<% end %>
<div id="searchresults">
<%= render :partial=>"documents/search_results", :object=>@results %>
</div>
</div>
<ul class="unstyled linkbox-list">
<li>
<% @themengruppen.each do |themengruppe| %>
<div class="container-fluid">
<%= render themengruppe if can?(:show,themengruppe)%>
</div>
<% end %>
</li>
</ul>
<%= link_to "Users", users_path %>
</div>
<div class="span6">
<h2>Neuigkeiten</h2>
<ul class="unstyled linkbox-list">
<% @neuigkeiten.each do |n| %>
<li><%= render n if can?(:show, n) %></li>
<% end %>
</ul>
</div>
</div>
</div>
<h2></h2>

View File

@@ -1,65 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="<%= absurl("/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 "themes/"+theme_name+"/application", :media => "all" unless theme_name.empty? %>
<%= stylesheet_link_tag "application", :media=>"all" if theme_name.empty? %>
<%= 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,62 +0,0 @@
<div class="navbar">
<div class="navbar-inner">
<div class="container">
<!-- <a class="brand" href="#"><% t 'home.mtitle'%></a>-->
<a class ="btn btn-navbar" data-toggle="collapse" data-parent="#menudiv" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<div class="nav-collapse collapse">
<ul class="nav nav-pills nav-stacked">
<li><%= link_to I18n.t(:home,:scope=>'home' ), home_index_path %>
</li>
<li><%= link_to I18n.t(:news,:scope=>'home' ),rubriken_path %></li>
<li><%= link_to I18n.t(:info,:scope=>'home' ),themengruppen_path %></li>
<li><%= link_to I18n.t('mitarbeiter',:scope=>'home' ),fetprofiles_path %></li>
<% if can? :index, Gallery %>
<li><%= link_to I18n.t('fotos',:scope=>'home' ),galleries_path %></li>
<% end %>
<li><%= link_to I18n.t(:studien,:scope=>'home' ), studien_path %></li>
<li> <%= link_to I18n.t("home.search"), search_home_index_path %></li>
<li> <%= link_to I18n.t("home.kontakt"), kontakt_home_index_path %></li>
<% if can?(:seeintern, User) %>
<li>
<%= link_to 'Intern' , intern_home_index_path %>
</li><% end %>
</ul>
<ul class="nav nav-pills nav-stacked pull-right">
<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>-->
<!-- Split button -->
<div class="btn-group navbar-btn">
<button type="button" class="btn btn-link dropdown-toggle" data-hover="dropdown" aria-expanded="false">
<%= image_tag("/flaggen/png/"+I18n.locale.to_s+".png") + " " +I18n.t('sprache',:scope=>'home')%>
</button>
<button type="button" class="btn btn-link dropdown-toggle" data-hover="dropdown" data-toggle="dropdown" >
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li><%= link_to image_tag("/flaggen/png/at.png") + " Deutsch" ,switch_locale_url(:de)%> </li>
<li><%= link_to image_tag("/flaggen/png/gb.png") + " English" ,switch_locale_url(:en)%> </li>
</ul></div>
</li>
<%= render 'layouts/login' %>
</ul>
<!--<span class="pull-right"><%if I18n.locale == :en %>
<%= link_to image_tag("/flaggen/png/at.png") + " Deutsch" ,switch_locale_url(:de)%>
<% elsif I18n.locale == :de %>
<%= link_to image_tag("/flaggen/png/gb.png") + " English" ,switch_locale_url(:en)%>
<%end %>
</span>-->
</div>
</div>
</div>
</div>

View File

@@ -1,155 +0,0 @@
<%= content_for :header do %>
<title>Fetsite - <%= @lva.full_name %></title>
<% set_meta_tags :og => {
:url=>lva_path(:theme=>nil) }
%>
<%= display_meta_tags %>
<% end %>
<div itemscope itemtype="schema.org/Article" >
<div class="container-fluid">
<%= render 'studien/tabs'%>
<p id="notice"><%= notice %></p>
<div class="row-fluid">
<div class="span12">
<%= render 'layouts/pretty_toolbar' %>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<h1 itemprop="name"><%= @lva.full_name %></h1>
<meta itemprop="url" content="<%= lva_path(@lva) %>" />
<ul class="linklist">
<li>
<%= link_to ffi1_icon("live2")+"ET-Forum", @lva.forumlink, class: :linkbox, itemprop: "discussionUrl" unless @lva.forumlink.nil? or @lva.forumlink.empty?%>
</li>
<li>
<%= link_to "TISS", @lva.tisslink, class: :linkbox %>
</li>
</ul>
<div itemprop="articleBody">
<h2><%= I18n.t('lva.pruefungsinfo')%></h2>
<div class="">
<%= @lva.pruefungsinformation.to_s.html_safe %>
</div>
<h2><%= I18n.t('lva.lernaufwand')%></h2>
<div class="">
<%= @lva.lernaufwand %>
</div>
<h2><%= I18n.t('lva.desc')%></h2>
<div class="">
<%= @lva.desc.to_s.html_safe %>
</div>
</div>
</div>
<div class="span4">
<div class="contentbox">
<ul>
<li><b><%= I18n.t('lva.lvanr')%>:</b> <%=@lva.lvanr %></li>
<li><b>ECTS:</b> <%=@lva.ects %></li>
<li><b><%= I18n.t('lva.stunden')%>:</b> <%=@lva.stunden %></li>
</ul>
<h2><%= I18n.t('lva.module')%></h2>
<ul>
<% @lva.modul.each do |modul| %>
<li><b><%= link_to modul.name , modul_path(modul)%></b>
<ul>
<% modul.modulgruppen.each do |g| %>
<li><%= link_to g.studium.title_context , studium_path(g.studium)%> (<%=link_to g.name, modulgruppe_path(g)%>)</li>
<% end %>
</ul>
</li>
<% end %>
</ul>
</div>
<div class="contentbox">
<h2> <%= I18n.t "lecturers.lecturers" %> </h2>
<% @lva.lecturers.each do |lec| %>
<%= render :partial=>'lecturers/lec_lva', :object=>lec %>
<% end %>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<%= new_question_for(@lva) %>
<% @questions.each do |q| %>
<%= render q if can? :show, q %>
<% end %>
<h2><%= I18n.t("lva.bspe") %></h2>
<p>
<%= I18n.t("lva.ratebsp")%>
<%= link_to ffi1_icon("facebook1") + I18n.t('home.fblogin'), user_omniauth_authorize_path(:facebook) ,class: :linkbox %>
</p>
<%= link_to t("beispiel.zip") , beispiel_sammlung_lva_path(@lva), class: :linkbox %>
<% @beispiele.each do |b| %>
<% cache("beispiel_" +I18n.locale.to_s+b.id.to_s+can?(:delete,b).to_s+"_"+can?(:edit,b).to_s + "_" + can?(:flag, b).to_s + "_" + can?(:like, b).to_s + "_" + b.updated_at.try(:utc).try(:to_s) + get_theme_help(current_user).to_s) do %>
<%= render b%>
<% end %>
<% end %>
<% if @beispiele_badQ.count > 0 %>
<h3> Bad Quality or Outdated</h3>
<% @beispiele_badQ.each do |b| %>
<% cache("beispiel_" +I18n.locale.to_s+b.id.to_s+can?(:delete,b).to_s+"_"+can?(:edit,b).to_s + "_" + can?(:flag, b).to_s + "_" + can?(:like, b).to_s + "_" + b.updated_at.try(:utc).try(:to_s) + get_theme_help(current_user).to_s) do %>
<%= render b%>
<% end %>
<% end %>
<% end %>
<% if @beispiele_deleted.count > 0 %>
<h3> Trash</h3>
<% @beispiele_deleted.each do |b| %>
<% cache("beispiel_" +I18n.locale.to_s+b.id.to_s+can?(:delete,b).to_s+"_"+can?(:edit,b).to_s + "_" + can?(:flag, b).to_s + "_" + can?(:like, b).to_s + "_" + b.updated_at.try(:utc).try(:to_s) + get_theme_help(current_user).to_s) do %>
<%= render b%>
<% end %>
<% end %>
<% end %>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<% unless @lva.nlinks.empty? %>
<h2><%= I18n.t("rubrik.title") %></h2>
<% @lva.nlinks.each do |l| %>
<%= render l.neuigkeit %>
<% end %>
<% end %>
</div>
</div>
<% cache("lva_beispiel_form_bulk_"+@lva.id.to_s+I18n.locale.to_s+@lva.updated_at.to_i.to_s) do %>
<div class="row-fluid">
<div class="span12">
<%= render 'beispiele/form_bulk' %>
</div>
</div>
<% end %>
<% unless @crawlobjects.nil? %>
<div class="row-fluid">
<div class="span12">
<% @crawlobjects.each do |co| %>
<%= render co %>
<% end %>
</div>
</div>
<% end %>
</div>
</div>

View File

@@ -1,72 +0,0 @@
<% if neuigkeit_view.nil?
neuigkeit_view=@neuigkeit
end
%>
<div id="neuigkeit_<%= neuigkeit_view.id %>" class="contentbox" itemscope itemtype="http://schema.org/Article">
<%= meta_itemprop("about", neuigkeit_view.text_first_words) %>
<%= meta_itemprop("sameAs", neuigkeit_url(neuigkeit_view,:theme=>nil)) %>
<%= meta_itemprop("url", neuigkeit_url(neuigkeit_view,:theme=>nil)) %>
<div>
<% cache("menu_neuigkeit"+ neuigkeit_view.id.to_s + can?(:edit,neuigkeit_view).to_s + can?(:find_link, neuigkeit_view).to_s + can?(:new, Survey::Question).to_s + can?(:publish, neuigkeit_view).to_s + can?(:unpublish, neuigkeit_view).to_s + neuigkeit_view.published?.to_s + neuigkeit_view.flag_important.to_s + neuigkeit_view.flag_infoscreen.to_s) do %>
<%= render partial: "menu" , object: neuigkeit_view%>
<% end %>
</div>
<div>
<%#= render 'layouts/pretty_toolbar', :object=> @toolbar_elements %>
</div>
<div class="media">
<span itemprop="articleSection">
<%= ff_icon(neuigkeit_view.rubrik.icon) unless neuigkeit_view.rubrik.icon.nil? or neuigkeit_view.rubrik.icon.empty? %>&nbsp;<%= neuigkeit_view.rubrik.name %>
</span>
<span class="pull-right">
<span itemprop="author"><%= neuigkeit_view.author.email.to_s unless neuigkeit_view.try(:author).try(:email).to_s %>
<%= neuigkeit_view.author.text %></span>
<% unless neuigkeit_view.try(:datum).try(:to_date).nil? %>
<%= " "+ I18n.t("neuigkeit.am")+" " %><span itemprop="datePublished"><%= I18n.l(neuigkeit_view.try(:datum).try(:to_date)) %>
</span>
<% end %>
</div>
<% unless neuigkeit_view.published? %>
<div class="sticker sticker-red"> Not Published <%= link_to "Publish", publish_rubrik_neuigkeit_path(neuigkeit_view.rubrik,neuigkeit_view),remote:true, class: :btn if can? :publish, neuigkeit_view %></div>
<% end %>
<% unless neuigkeit_view.origurl.nil? || neuigkeit_view.origurl.empty? %>
<div class="alert"><%= link_to "Zitiert von "+ neuigkeit_view.origurl, neuigkeit_view.origurl %>
</div>
<% end %>
<div class="media">
<% unless neuigkeit_view.picture_robust.big_thumb.to_s.empty? %>
<div class="pull-left" href="#">
<p><br><%= link_to image_tag(neuigkeit_view.picture_robust.big_thumb),neuigkeit_view.picture_robust.try(:url) %>
</p>
</div>
<% end %>
<div class="media-body">
<h1 itemprop="name">
<%= raw(neuigkeit_view.title) %> <%#= link_to fa_icon("edit"), edit_rubrik_neuigkeit_path(neuigkeit_view.rubrik, neuigkeit_view), remote: true if can? :edit, neuigkeit_view %>
</h1>
<div itemprop="articleBody">
<%= raw(neuigkeit_view.text) %>
</div>
</div>
</div>
<%= render_calentries_for(neuigkeit_view)%>
<%= new_calentry_div(neuigkeit_view) %>
<% unless neuigkeit_view.meeting.nil? %>
<%= render neuigkeit_view.meeting %>
<% end%>
<%= render_attachments_list_for(neuigkeit_view) %>
</div>
<% @questions.each do |q| %>
<%= render q if can? :show, q %>
<% end %>

View File

@@ -1,77 +0,0 @@
<%= content_for :header do %>
<title>Fetsite - <%= @neuigkeit.title %> (<%= @neuigkeit.rubrik.name %>)</title>
<% set_meta_tags :author => fetprofile_path(@neuigkeit.author.fetprofile) unless @neuigkeit.author.fetprofile.nil? %>
<% unless @neuigkeit.picture_robust.url.nil? %>
<%
picture_url=URI(root_url)
picture_url.path=@neuigkeit.picture_robust.url(:locale=>nil, :theme=>nil)
%>
<% end %>
<% set_meta_tags :og =>
{
:image => picture_url.to_s,
:title => @neuigkeit.title.to_s + " (" + @neuigkeit.rubrik.name.to_s + ")",
:type => "article",
:description =>@neuigkeit.text_first_words,
:url=>neuigkeit_url(:theme=>nil)
}
%>
<%= display_meta_tags %>
<% end %>
<%= render 'rubriken/tabs' %>
<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-column content-wrap">
<%= link_to "Refresh", neuigkeit_path(@neuigkeit), remote: true %>
<p id="notice">
<%= notice %>
</p>
<%= render partial: "neuigkeit_view", object: @neuigkeit %>
</div>
<div class="fb-like" data-href"<%= rubrik_neuigkeit_url(@rubrik,@neuigkeit,{themes: nil, locale: nil})%>" data-layout="standard" data-action="like" data-show-faces="true" data-share="true"></div>
<%= render_comments_for(@neuigkeit) %>
<%# link_to fa_icon("link") + "Neue Verknüpfung" , "#", id: "findlink-open" if can? :find_link, @neuigkeit %>
<% cache(cache_array_key(@neuigkeit.nlinks, "NLinks")) do %>
<%= render partial: 'neuigkeiten/nlink_list_whole', :object=>@neuigkeit.nlinks %>
<% end %>
<div id="findlink-body" class="ui-dialog" style="">
<% if can? :find_link, @neuigkeit %>
Nach Element suchen:
<%= semantic_form_for :find_link, :url=>find_link_rubrik_neuigkeit_path(@rubrik,@neuigkeit), :html=>{:id=>"search_form", :method=>'get'} , :remote=> true do |f| %>
<%= f.input :query, :input_html => { :name => 'query' },:label=>false %>
<% end %>
<%= render partial: 'nlink_list_search_whole', object: @nlink_search %>
<% end %>
</div>
<script>
$(function(){
dialog = $( "#findlink-body" ).dialog({
autoOpen: false,
width: 350,
modal: true,
title: "Neue Verknüpfung hinzufügen",
buttons: {
"Fertig": function() {
dialog.dialog( "close" );
}
}
});
$("#findlink-open").on("click",function(){dialog.dialog("open")})
});
</script>

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']
# ==> 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

@@ -16,6 +16,7 @@ de:
savecont: "Zwischenspeichern" savecont: "Zwischenspeichern"
intern: "Intern" intern: "Intern"
manage: "Verwalten" manage: "Verwalten"
new: "Neu"
home: home:
sprache: "Deutsch" sprache: "Deutsch"
kontakt: "Kontakt" kontakt: "Kontakt"

View File

@@ -6,6 +6,7 @@ de:
active_members: "Aktive Mitglieder" active_members: "Aktive Mitglieder"
notactive_members: "Pension" notactive_members: "Pension"
new_profile: "Neues Profil anlegen" new_profile: "Neues Profil anlegen"
new: "Neues Profil anlegen"
gremium: gremium:
new: "Neues Gremium" new: "Neues Gremium"
seit: "seit" seit: "seit"

View File

@@ -72,6 +72,7 @@ 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 +161,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,8 +2,10 @@ 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
@@ -11,10 +13,17 @@ production:
development: development:
solr: solr:
hostname: localhost hostname: localhost
port: 8982 port: 8983
log_level: INFO log_level: INFO
path: /solr/development path: /solr/fetsite_test
# min_memory: 32M
# max_memory: 1G
# solr:
# hostname: localhost
# port: 8983
# log_level: INFO
# path: /solr/mycore
test: test:
solr: solr:
hostname: localhost hostname: localhost

View File

@@ -1,7 +1,7 @@
#! /bin/bash #! /bin/bash
ruby_command="ruby" ruby_command="ruby"
rake_command="rake" rake_command="rake"
bundler_command="bundler" bundler_command="bundle"
# Are the necessary programs installed? # Are the necessary programs installed?
command -v $ruby_command >/dev/null 2>&1 || { echo >&2 "The given ruby command does not exist. Please change the command or install ruby"; exit 1; } command -v $ruby_command >/dev/null 2>&1 || { echo >&2 "The given ruby command does not exist. Please change the command or install ruby"; exit 1; }
@@ -14,19 +14,21 @@ echo "Generating base configs..."
# Generate clean config files if they don't exist # Generate clean config files if they don't exist
cp -u config/database.yml.example config/database.yml cp -u config/database.yml.example config/database.yml
cp -u config/omniauth_secrets.yml.example config/omniauth_secrets.yml cp -u config/omniauth_secrets.yml.example config/omniauth_secrets.yml
touch config/crawl_config.yml
echo "Bundle install..." echo "Bundle install..."
# Run Bundler # Run Bundler
$bundler_command install || {echo "Bundler failed. Please run \"$bundle\_command install\" seperately and debug the errors, before running this script again";exit 1;} $bundler_command install || { echo "Bundler failed. Please run \"$bundle\_command install\" seperately and debug the errors, before running this script again";exit 1; }
echo "Migrate the database..." echo "Migrate the database..."
# Run the migration # Run the migration
$rake_command db:migrate ||{echo "Migration failed. Please run \"$rake\_command db:migrate\" seperately and debug the errors, before running this script again"; exit 1;} $rake_command db:migrate || { echo "Migration failed. Please run \"$rake\_command db:migrate\" seperately and debug the errors, before running this script again"; exit 1; }
echo "Start the sunspot server" echo "Start the sunspot server"
# Run Sunspot # Run Sunspot
$rake_command sunspot:solr:stop &> /dev/null $rake_command sunspot:solr:stop &> /dev/null
$rake_command sunspot:solr:start || exit 1 $rake_command sunspot:solr:start || exit 1
bundle exec sunspot-solr start -p 8982
# Topic 1 is supposed to be the startpage topic # Topic 1 is supposed to be the startpage topic
if [ ! -f config/start_topic.yml ]; then if [ ! -f config/start_topic.yml ]; then
@@ -34,7 +36,7 @@ if [ ! -f config/start_topic.yml ]; then
echo "1" > config/start_topic.yml echo "1" > config/start_topic.yml
fi fi
# Generate fetadmin user "admin@fet.at", password: 12345678 touch config/crawl_config.yml

View File

@@ -66,7 +66,7 @@ module Flagable
value=obj.send("flag_"+flag) value=obj.send("flag_"+flag)
cstyle=(value) ? "true" :"false" cstyle=(value) ? "true" :"false"
cfm = (fc.nil? || fc["flag_"+flag].nil?) ? {} : {confirm: fc["flag_"+flag]} cfm = (fc.nil? || fc["flag_"+flag].nil?) ? {} : {confirm: fc["flag_"+flag]}
link_to ff_icon(fi[flag]), url_for({controller: obj.class.name.tableize,action: :flag, flag: flag, value: !value, theme: nil, locale: nil, id: obj.id}), remote: true, class:("flag-"+cstyle +" flag-"+flag + "-"+cstyle ), id: obj.flaglinkid(flag), data: cfm link_to ff_icon(fi[flag]), url_for({controller: obj.class.name.tableize,action: :flag, flag: flag, value: !value, theme: nil, locale: nil, id: obj.id}), remote: true, class: ("flag-"+cstyle +" flag-"+flag + "-"+cstyle ), id: obj.flaglinkid(flag), data: cfm
end end
end end
end end

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -0,0 +1,134 @@
html {
background-color: #fff;
overflow: hidden;
}
body {
display: flex;
flex-flow: wrap;
height: 100vh;
justify-content: space-between;
flex-direction: column;
}
.header {
height: 200px;
width: 100%
}
svg {
padding-top: 2em;
}
.impulsPath {
fill: none;
stroke: #04669c;
stroke-miterlimit: 1;
stroke-width: 6px;
stroke-dasharray: 1946.243;
stroke-dashoffset: 0;
stroke-linejoin: round;
stroke-linecap: round;
animation: dash 10s ease-out infinite;
animation-direction: normal;
}
.FET-logotext-stroke {
fill: #fff;
}
#FET-logotext {
opacity: 0;
animation: logotext 10s ease-in infinite;
}
.content-area {
height: auto;
width: 100%;
}
.footer {
width: 100%;
height: 150px;
background-color: #04669c;
padding-bottom: 10px;
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
color: #fff;
flex-basis: bottom;
}
.footer h3,
p {
margin: 0;
padding: 0 20px;
font-family: Helvetica, Arial;
letter-spacing: 0.1em;
}
.footer h3 {
padding-top: 20px;
}
.footer .adress {
margin: auto;
text-align: left;
}
.footer .contact {
margin: auto;
text-align: center;
}
.footer .servicecontainer{
display: inline-flex;
margin: auto;
}
.footer .servicecontainer .servicetime {
margin: auto;
text-align: right;
}
.footer .servicecontainer .servicetime #time {
font-size: 0.7em
}
.footer .servicecontainer .servicestatus{
margin: auto;
width:20px;
height: 100%
padding-right: 30px;
background-color: #fff;
}
/*K E Y F R A M E S*/
@keyframes dash {
from {
stroke-dashoffset: 1946.243;
opacity: 0;
stroke-width: 0.5;
}
to {
opacity: 1;
stroke-dashoffset: 0;
stroke-width: 5px;
}
}
@keyframes logotext {
from {
opacity: 0;
}
to {
opacity: 1;
}
}

View File

@@ -0,0 +1,134 @@
html {
background-color: #fff;
overflow: hidden;
}
body {
display: flex;
flex-flow: wrap;
height: 100vh;
justify-content: space-between;
flex-direction: column;
}
.header {
height: 200px;
width: 100%
}
svg {
padding-top: 2em;
}
.impulsPath {
fill: none;
stroke: #04669c;
stroke-miterlimit: 1;
stroke-width: 6px;
stroke-dasharray: 1946.243;
stroke-dashoffset: 0;
stroke-linejoin: round;
stroke-linecap: round;
animation: dash 10s ease-out infinite;
animation-direction: normal;
}
.FET-logotext-stroke {
fill: #fff;
}
#FET-logotext {
opacity: 0;
animation: logotext 10s ease-in infinite;
}
.content-area {
height: auto;
width: 100%;
}
.footer {
width: 100%;
height: 150px;
background-color: #04669c;
padding-bottom: 10px;
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
color: #fff;
flex-basis: bottom;
}
.footer h3,
p {
margin: 0;
padding: 0 20px;
font-family: Helvetica, Arial;
letter-spacing: 0.1em;
}
.footer h3 {
padding-top: 20px;
}
.footer .adress {
margin: auto;
text-align: left;
}
.footer .contact {
margin: auto;
text-align: center;
}
.footer .servicecontainer{
display: inline-flex;
margin: auto;
}
.footer .servicecontainer .servicetime {
margin: auto;
text-align: right;
}
.footer .servicecontainer .servicetime #time {
font-size: 0.7em
}
.footer .servicecontainer .servicestatus{
margin: auto;
width:20px;
height: 100%
padding-right: 30px;
background-color: #fff;
}
/*K E Y F R A M E S*/
@keyframes dash {
from {
stroke-dashoffset: 1946.243;
opacity: 0;
stroke-width: 0.5;
}
to {
opacity: 1;
stroke-dashoffset: 0;
stroke-width: 5px;
}
}
@keyframes logotext {
from {
opacity: 0;
}
to {
opacity: 1;
}
}

View File

@@ -0,0 +1,104 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>Infoscreen</title>
<style media="screen">
pre.code {
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
padding: 10px;
height: 280px;
overflow: auto;
background: #181818;
border: solid 2px #181818;
}
#codelines {
display: none;
}
#svg {
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
border: solid 2px #ccc;
width: 300px;
height: 300px;
float: left;
margin-right: 10px;
font: 1em source-sans-pro, Source Sans Pro, Helvetica, sans-serif;
}
</style>
<link rel="stylesheet" href="./infoscreenframe.css">
</head>
<body>
<div class="header">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 200">
<path id="impulsPath" class="impulsPath" d="M0,61.43H1018c2.41,0,6.77-2.28,9.12-2.28,2.66,0,8.3,6.58,11.65,6.58,3.16,0,7.47-15.07,10-15.07,4.3,0,10.38,29.62,14.18,29.62s11.89-55.47,13.67-55.47c5.32,0,10.63,86.34,14.18,86.34,4.3,0,10.63-111.15,13.42-111.15,3.54,0,8.86,123.56,13.17,123.56,3.8,0,8.36-116.85,13.55-116.85,3.42,0,8.74,100,13.67,100,3.67,0,9.24-71.15,12.91-71.15,3.42,0,10.51,41.78,12.91,41.78,3.42,0,8.48-24.56,12.41-24.56,4.43,0,7.93,12.91,12.41,12.91,5.7,0,8.3-6.58,11.65-6.58s6.77,2.28,9.12,2.28h64"/>
<g id="FET-logotext"><g id="F"><path d="M1042,82.71l12.7-35.9v-.1c.2-.3,3.8-8.5,13.1-9.6h37.9l-4,11.6h-25.8a7.19,7.19,0,0,0-4.8,3.7l-.6,1.6h14.1l-4.1,11.7h-14l-6.1,17Z"/><path class="FET-logotext-stroke" d="M1102.9,39l-2.6,7.6h-24.6a9.18,9.18,0,0,0-6.4,5l-1.6,4.4h14.1l-2.7,7.7h-14l-6.1,17h-14.2l11.7-33.2s3.3-7.5,11.5-8.5h34.9m5.7-4h-40.9c-10.4,1.3-14.5,10.4-14.7,10.8l-.1.1V46L1041,79.31l-1.9,5.3h22.7l.9-2.7,5.1-14.4H1082l.9-2.7,2.7-7.7,1.9-5.3h-13.7a5.48,5.48,0,0,1,2.3-1.4h27.1l.9-2.7,2.6-7.6,1.9-5.1Z"/></g><g id="E"><path d="M1101.3,82.71h-.2a8.59,8.59,0,0,1-6.2-3.8,9.86,9.86,0,0,1-.7-7.9l8.8-24.9.1-.1c.2-.3,4.3-8.1,13.3-9H1154l-4,11.7-26-.1a7.1,7.1,0,0,0-4.6,3.7l-.6,1.7h14.1l-4.1,11.7h-14.2l-1.1,3.1a2.37,2.37,0,0,0,.2,1.6,2.23,2.23,0,0,0,1.2.7h27l-4,11.7h-36.6Z"/><path class="FET-logotext-stroke" d="M1151.2,39l-2.6,7.7-24.8-.1a9.21,9.21,0,0,0-6.2,5l-1.7,4.4H1130l-2.7,7.7h-14.1l-1.6,4.5s-1.1,4.1,3,4.9H1139l-2.6,7.7h-35c-7.8-1.3-5.3-9.1-5.3-9.1l8.7-24.6s3.7-7.1,11.7-7.9l34.7-.2m5.6-4h-40.6c-10.1,1-14.7,9.7-14.9,10l-.1.3-.1.3-8.7,24.6v.2c-.2.5-1.6,5.4.9,9.6a10.41,10.41,0,0,0,7.5,4.7l.3.1h38.2l.9-2.7,2.6-7.7,1.8-5.3h-29l.5-1.4h14.1l.9-2.7,2.7-7.7,1.9-5.3H1122a6.42,6.42,0,0,1,2.2-1.4l24.3.1h2.9l.9-2.7,2.6-7.7,1.9-5.3Z"/></g><g id="T"><path d="M1154.3,82.71l12-34-15.1-.1.9-2.6a14.39,14.39,0,0,1,11.5-9H1204l-4.1,11.7h-15l-12.1,34.1h-18.5Z"/><path class="FET-logotext-stroke" d="M1201.2,38.91l-2.7,7.7h-15l-12.1,34.1h-14.3l12-34-15.1-.1a12.54,12.54,0,0,1,9.9-7.7h37.3m5.7-4h-43.6a16.53,16.53,0,0,0-13.1,10.3l-1.8,5.3h5.6l9.5.1-10.1,28.7-1.9,5.3h22.7l.9-2.7,11.1-31.4h15l.9-2.7,2.7-7.7,2.1-5.2Z"/></g></g>
</svg>
</div>
<div class="content-area">
<!-- Inhaltsbereich -->
</div>
<div class="footer">
<div class="adress">
<h3>Fachschaft Elektrotechnik</h3><br>
<p>Gußhausstraße 25-27<br>Room CD 01 09 (1st floor)<br>1040 Vienna</p>
</div>
<div class="contact">
<h3>Contact</h3><br>
<p>E-Mail: service@fet.at<br>Phone: +43-1-58801 49553<br></p>
</div>
<div class="servicecontainer">
<div class="servicetime">
<h3>Service times</h3><br>
<p style="text-align: right">Mon to Thur: 9am to 02pm<br>Fri: 9am to 12am<br>
<span id="time"></span>
</p>
</div>
<div class="servicestatus">
<!-- <svg class="servicestatusled">
<circle id="servicestatusled" cx="10" cy="15" r="10" style="fill: red" />
</svg> -->
</div>
</div>
</div>
<script>
var today = new Date();
today = today;
document.getElementById('time').innerHTML = today;
</script>
</body>
</html>

View File

@@ -0,0 +1,176 @@
#require 'rails_helper'
require 'spec_helper'
RSpec.describe NeuigkeitenController, :type => :controller do
let(:neuigkeit) {(FactoryGirl.create(:neuigkeit, :with_rubrik))}
let(:intern_neuigkeit) {(FactoryGirl.create(:neuigkeit,:with_intern_rubrik))}
let(:valid_session) {{}}
# setting up shared examples
let(:object_class) {Neuigkeit}
let(:object_variable) {:neuigkeit}
let(:assigned_object_variable){neuigkeit}
#let(:allow_fet_user) {allow(@controller).to receive(:current_user).and_return(fet_user)}
let(:object_url) {rubrik_neuigkeit_url(neuigkeit.rubrik,neuigkeit)}
describe "GET #show" do
let(:action) { get :show, {id: neuigkeit.id, rubrik_id: neuigkeit.rubrik.id}}
it_behaves_like "it is success"
it_behaves_like "it assigns object"
context "with internal news" do
let(:action) { get :show, {id: intern_neuigkeit.id, rubrik_id: intern_neuigkeit.rubrik.id}}
it_behaves_like "it is restricted"
context "with fet user" do
with_fet_user
it_behaves_like "it is success"
end
end
it "denys access to unpublished news" do
neuigkeit=FactoryGirl.create(:neuigkeit, :with_rubrik, :unpublished)
get :show, {id: neuigkeit.id}, valid_session
expect(response).to have_http_status(302)
end
context "with rendered views" do
render_views
before do
neuigkeit.rubrik
intern_neuigkeit
end
it "shows the name" do
action
expect(response.body).to match neuigkeit.name
end
it "has only links to external rubrik" do
get :show, {id: neuigkeit.id}, valid_session
expect(response.body).to match neuigkeit.rubrik.name
expect(response.body).not_to match intern_neuigkeit.rubrik.name
end
context "and fet user" do
with_fet_user
it "has all links to internal and external rubriken" do
action
expect(response.body).to match intern_neuigkeit.rubrik.name
expect(response.body).to match neuigkeit.rubrik.name
end
end
it "shows datum in response" do
action
expect(response.body).to match I18n.l(neuigkeit.datum.to_date)
end
end
end
describe "GET#edit" do
let(:action) { get :edit, {id: neuigkeit.id, rubrik_id: neuigkeit.rubrik.id}}
it_behaves_like "default edit action"
end
describe "GET #new" do
let(:action) { get :new, {rubrik_id: neuigkeit.rubrik.id}}
it_behaves_like "default new action"
end
describe "GET add_calentry" do
let(:action) { get :add_calentry, {id: neuigkeit.id, rubrik_id: neuigkeit.rubrik.id}}
it_behaves_like "it is restricted"
context "with fet user" do
with_fet_user
it_behaves_like "it is success"
it "renders edit template" do
expect(action).to render_template(:edit)
end
it "adds calentry to neuigkeit" do
action
expect(assigns(:neuigkeit).calentries).not_to be_empty
end
end
end
describe "GET unpublish" do
let(:action) {get :unpublish, {id: neuigkeit.id, rubrik_id: neuigkeit.rubrik.id}}
it_behaves_like "it is restricted"
context "with fet user" do
with_fet_user
it "redirects to neuigkeit" do
expect(action).to redirect_to(rubrik_neuigkeit_url(neuigkeit.rubrik,neuigkeit))
end
it "assignes unpublished neuigkeit" do
action
expect(assigns(:neuigkeit)).not_to be_published
end
end
end
describe "GET publish" do
let(:action) {get :publish, {id: neuigkeit.id, rubrik_id: neuigkeit.rubrik.id}}
it_behaves_like "it is restricted"
context "with fet user" do
with_fet_user
it "redirects to neuigkeit" do
expect(action).to redirect_to(rubrik_neuigkeit_url(neuigkeit.rubrik,neuigkeit))
end
it "assignes published neuigkeit" do
action
expect(assigns(:neuigkeit)).to be_published
end
end
end
describe "POST create" do
let(:action) {post :create, {rubrik_id: neuigkeit.rubrik.id, neuigkeit: FactoryGirl.attributes_for(:neuigkeit)}}
it_behaves_like "it is restricted"
context "with fet user" do
with_fet_user
it_behaves_like "it is success"
it "adds 1 Neuigkeit" do
expect{action}.to change { Neuigkeit.count}.by(1)
end
end
end
describe "PUT update" do
let(:action) {put :update, {id: neuigkeit.id, rubrik_id: neuigkeit.rubrik.id}}
it_behaves_like "it is a restricted action"
context "with fet user" do
with_fet_user
it_behaves_like "it assigns persisted object"
it "redirects to neuigkeit" do
expect(action).to redirect_to rubrik_neuigkeit_url(neuigkeit.rubrik, neuigkeit)
end
end
end
pending "destroy"
pending "load_toolbar_elements"
pending "publish_to_facebook"
pending "mail_to_fet"
pending "mail_preview"
pending "newsletter_preview"
pending "find_link"
pending "create_link"
pending "delete_link"
end

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

@@ -4,5 +4,6 @@ FactoryGirl.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

@@ -2,9 +2,12 @@
FactoryGirl.define do FactoryGirl.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 "2013-08-05 21:17:10"
summary "MyString" summary "MyString"
typ 1 typ 1
association :calendar, factory: :calendar
end end
end end

View File

@@ -1,10 +1,23 @@
FactoryGirl.define do FactoryGirl.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=FactoryGirl.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 FactoryGirl.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,7 +1,29 @@
FactoryGirl.define do FactoryGirl.define do
sequence (:title) {|n| "Wichtige Neuigkeit #{n}"}
sequence (:text) {|n| "Wichtiger text #{n}"}
factory :neuigkeit do factory :neuigkeit do
title "WIChtige Neuigkeit" title
text "<p> Das ist eine wichtige Information </p>" text
datum 1.days.ago datum 1.days.ago
association :author, factory: :user
trait :with_rubrik do
association :rubrik, factory: :rubrik, public: true
end end
trait :with_intern_rubrik do
association :rubrik, factory: :rubrik, public: false, name: "InterneRubrik"
end
trait :with_meeting do
after(:build) do |n|
n.meeting=FactoryGirl.build(:meeting, :with_meetingtyp)
end
end
trait :unpublished do
datum nil
end
end
end end

View File

@@ -2,5 +2,6 @@ FactoryGirl.define do
factory :rubrik do factory :rubrik do
name "Allgemeine" name "Allgemeine"
desc "Allgemeine Test News" desc "Allgemeine Test News"
end public true
end
end end

View File

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

View File

@@ -10,7 +10,7 @@ FactoryGirl.define do
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

View File

@@ -1 +0,0 @@

View File

@@ -1,11 +1,19 @@
FactoryGirl.define do FactoryGirl.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 end
trait :fetuser do
after(:create) do |user|
user.add_role("fetuser")
end
end
end end
end end

View File

@@ -2,4 +2,13 @@ require 'spec_helper'
describe Calendar do describe Calendar do
pending "add some examples to (or delete) #{__FILE__}" pending "add some examples to (or delete) #{__FILE__}"
let(:rubrik) {FactoryGirl.create(:rubrik)}
let(:calendar) {FactoryGirl.build(:calendar, rubrik_id: rubrik.id)}
it "should be valid" do
expect(calendar).to be_valid
end
it "should be created" do
expect(calendar.save).to be true
end
end end

View File

@@ -1,27 +1,35 @@
require 'spec_helper' require 'spec_helper'
describe Gremium do describe Gremium do
it "can be created" do let(:gremium) {FactoryGirl.build(:gremium)}
g=FactoryGirl.build(:gremium) let(:object_variable){gremium}
expect(g.save).to be true it_behaves_like "a valid object"
end
it "is valid with all attributes" do
g = FactoryGirl.build(:gremium)
g.should be_valid
end
[:name,:typ].each do |attr| [:name,:typ].each do |attr|
it "should not be valid without #{attr}" do it "is not valid without #{attr}" do
g = FactoryGirl.build(:gremium) g = FactoryGirl.build(:gremium,attr.to_sym => nil)
g.send("#{attr}=".to_sym,nil)
expect(g).not_to be_valid expect(g).not_to be_valid
expect(g.errors[attr]).to have_at_least(1).items expect(g.errors[attr]).to have_at_least(1).items
end end
end end
it "is in tabs if typ is 1 or 3" do
pending "only accepts valid types"
pending "only accepts valid geschlecht"
it "is not valid with wrong typ" do
((-5..30).to_a-Gremium::TYPEN.keys()).each do |i|
g = FactoryGirl.build(:gremium, typ: i)
expect(g).not_to be_valid
end
end
it "is in tabs if typ is 1" do
g = FactoryGirl.create(:gremium, typ: 1) g = FactoryGirl.create(:gremium, typ: 1)
expect(Gremium.tabs).to eq([g]) expect(Gremium.tabs).to eq([g])
end end
it "is not in tabs if typ is not 1 or 3" do it "is not in tabs if typ is not 1 or 3" do
g = FactoryGirl.create(:gremium, typ: 2) g = FactoryGirl.create(:gremium, typ: 2)
expect(Gremium.tabs).to eq([]) expect(Gremium.tabs).to eq([])

View File

@@ -3,9 +3,53 @@ require 'spec_helper'
describe Lva, :type=>:model do describe Lva, :type=>:model do
pending "add some examples to (or delete) #{__FILE__}" pending "add some examples to (or delete) #{__FILE__}"
let_studium_lva let_studium_lva
before(:each) do
@l = FactoryGirl.build(:lva) it "should be valid" do
expect(lva).to be_valid
end end
it "should respond to semesters" do
expect(lva.respond_to?(:semester)).to be true
end
it "should be give empty string for typ_n if typ is andere" do
lva.typ="andere"
expect(lva.typ_n).to eq("")
end
it "should have title as an alias for name" do
lva.name="sdfWER"
expect(lva.title).to eq("sdfWER")
end
it "should have a full name containing typ and name" do
lva.typ="VO"
expect(lva.full_name).to match "VO"
expect(lva.full_name).to match lva.name
end
it "should have a semester after fixing" do
expect(lva.semester).to be_empty
studium.semester << zerosemester
studium.save
expect(studium.semester).not_to be_empty
lva.add_semesters
expect(lva.semester).not_to be_empty
end
it "can create a valid tiss link" do
lva.lvanr="101.679"
tl=lva.tisslink
expect(tl).to match "101679"
expect(tl).to match "tiss.tuwien.ac.at"
end
it "should be able to load tissdata" do
lva.lvanr="101.679"
n=lva.name
expect(lva.name).to eq(n)
lva.load_tissdata
expect(lva.name).not_to eq(n)
end
describe "if bare" do describe "if bare" do
let(:lva) {FactoryGirl.build(:lva)} let(:lva) {FactoryGirl.build(:lva)}
it "should be created" do it "should be created" do
@@ -19,9 +63,9 @@ describe Lva, :type=>:model do
expect(l.errors[:modul].size).to be(1) expect(l.errors[:modul].size).to be(1)
end end
end end
it "should respond to semesters" do
expect(lva.respond_to?(:semester)).to be true pending "should not be valid if it doesn't have a Semester for a studium"
end
pending "should not be valid without modul" pending "should not be valid without modul"
pending "should have beispiele" pending "should have beispiele"
pending "should be flagable" pending "should be flagable"

View File

@@ -1,5 +1,159 @@
require 'spec_helper' require 'spec_helper'
RSpec.describe Meeting, :type => :model do RSpec.describe Meeting, :type => :model do
pending "add some examples to (or delete) #{__FILE__}" let(:user){FactoryGirl.create(:user)}
let(:rubrik) {FactoryGirl.create(:rubrik)}
let(:calendar){FactoryGirl.create(:calendar, rubrik_id: rubrik.id)}
let(:calentry){FactoryGirl.build(:calentry, calendar_id: calendar.id, typ: 2)}
let(:meetingtyp){FactoryGirl.create(:meetingtyp, rubrik_id: rubrik.id)}
let(:meeting){FactoryGirl.build(:meeting, meetingtyp_id: meetingtyp.id)}
let(:object_variable) {meeting}
it_behaves_like "a valid object"
it "should be created" do
meeting.calentry=calentry
expect(meeting).to be_valid
expect(meeting.save).to be true
end
it "should have a calendar" do
meeting.calentry=calentry
expect(meeting.calendar).not_to be_nil
end
it "should be able to create a calentry" do
meeting.create_calentry
meeting.calentry.start=1.hour.ago
meeting.calentry.dauer=7
expect(meeting).to be_valid
end
context "without calentry" do
# let(:meeting){FactoryGirl.build(:meeting, :without_calentry, meetingtyp_id: meetingtyp.id)}
it "should be creating a calentry typ 2" do
meeting.create_calentry
expect(meeting.calentry.typ).to be 2
end
end
it "should be having an alias title for text" do
expect(meeting.title).to eq(meeting.text)
end
it "should have a text that includes the name" do
expect(meeting.title).to match meeting.name
end
it " creates a neuigkeit that is valid" do
expect(meeting.neuigkeit).to be_nil
meeting.create_announcement(user)
expect(meeting.neuigkeit.class).to eq(Neuigkeit)
expect(meeting.neuigkeit).to be_valid
end
it "fixes calentry before validation" do
calentry.calendar=nil
meeting.calentry=calentry
meeting.valid?
expect(meeting.calentry.calendar).to be meeting.meetingtyp.rubrik.calendar
end
it "updates the announcement if there is one" do
meeting.calentry=calentry
expect(meeting.neuigkeit).to be_nil
meeting.create_announcement(user)
meeting.name="asdflkjhasdflkj"
meeting.save
meeting.update_announcement
expect(meeting.neuigkeit.title).to match meeting.name
end
it "doesn't create an announcement by changing the name" do
meeting.calentry=calentry
expect(meeting.neuigkeit).to be_nil
meeting.name="asdflkjhasdflkj"
meeting.save
expect(meeting.neuigkeit).to be_nil
end
it "can create a protocol" do
expect(meeting.protocol).to be_nil
meeting.create_protocol
expect(meeting.protocol).not_to be_nil
end
it "creates a protocol only once" do
meeting.create_protocol
p=meeting.protocol
meeting.protocol.text="TestTextTestTextForProtocol"
meeting.create_protocol
expect(meeting.protocol).to be p
expect(meeting.protocol.text).to match "TestTextTestTextForProtocol"
end
it "can create a calendar entry" do
expect(meeting.calentry).to be_nil
meeting.create_calentry
expect(meeting.calentry).not_to be_nil
end
it "can create an agenda" do
meeting.calentry=calentry
meeting.create_agenda
a=meeting.agenda
meeting.agenda.text="TestTextTestTextForProtocol"
meeting.create_agenda
expect(meeting.agenda).to be a
expect(meeting.agenda.text).to match "TestTextTestTextForProtocol"
end
it "can be created with date and typ" do
meeting2=Meeting.new_with_date_and_typ(nil, Date.today, meetingtyp)
expect(meeting2.calentry).not_to be_nil
expect(meeting2.meetingtyp).to be meetingtyp
end
it "gets empty text for nil protocol" do
expect(meeting.protocol_text).to eq("")
end
it "gets empty text for nil agenda" do
expect(meeting.agenda_text).to eq("")
end
it "can safly access protocol text" do
meeting.create_protocol
meeting.protocol.text="TestTextTest TextForProtocol"
expect(meeting.protocol_text).to eq("TestTextTest TextForProtocol")
end
it "can safly access agenda text" do
meeting.create_agenda
meeting.agenda.text="TestTextTest TextForProtocol"
expect(meeting.agenda_text).to eq("TestTextTest TextForProtocol")
end
it "is public by default" do
expect(meeting).to be_public
end
it "is not public if intern" do
meeting.intern=true
expect(meeting).not_to be_public
end
it "has a divid" do
meeting.calentry=calentry
meeting.save
expect(meeting.divid).to match "meeting"
expect(meeting.divid).to match meeting.id.to_s
end
it "can find start and end of a meeting by 'Beginn' und 'Ende'" do
meeting.calentry=calentry
calentry.start=2.hours.ago
meeting.create_protocol
meeting.protocol.text="Beginn: " + 1.hours.ago.to_s
meeting.update_time_from_protocol
expect(calentry.start).to be_within(1.minute).of 1.hours.ago
end
it "has a text even without meetingtyp" do
meeting.meetingtyp=nil
meeting.parent=nil
meeting.name="sdf"
expect(meeting.text).to match("sdf")
end
it "has an empty text without meetingtyp, parent, calentry or name" do
meeting.meetingtyp=nil
meeting.parent=nil
meeting.calentry=nil
meeting.name=""
expect(meeting.text).to eq("")
end
end end

View File

@@ -2,4 +2,27 @@ require 'spec_helper'
RSpec.describe Meetingtyp, :type => :model do RSpec.describe Meetingtyp, :type => :model do
pending "add some examples to (or delete) #{__FILE__}" pending "add some examples to (or delete) #{__FILE__}"
let(:rubrik) {FactoryGirl.create(:rubrik)}
let(:meetingtyp){FactoryGirl.build(:meetingtyp, rubrik_id: rubrik.id)}
it "should be created" do
expect(meetingtyp).to be_valid
expect(meetingtyp.save).to be true
end
it "should not be valid without rubrik" do
meetingtyp.rubrik=nil
expect(meetingtyp.rubrik).to be_nil
expect(meetingtyp).not_to be_valid
expect(meetingtyp.save).to be_falsey
end
it "should not be valid without a name" do
meetingtyp.name=nil
expect(meetingtyp).not_to be_valid
end
it "should return name for text" do
expect(meetingtyp.text).to be meetingtyp.name
end
end end

View File

@@ -1,40 +1,71 @@
require 'spec_helper' require 'spec_helper'
describe Neuigkeit do describe Neuigkeit do
let(:rubrik) {FactoryGirl.create(:rubrik)}
let(:user) {FactoryGirl.create(:user)}
let(:neuigkeit) {(FactoryGirl.build(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id))}
let(:attachment) {FactoryGirl.build_stubbed(:attachment)}
[:title,:text, :rubrik, :author].each do |attr| let(:neuigkeit) {(FactoryGirl.build(:neuigkeit, :with_rubrik))}
let(:intern_neuigkeit) {FactoryGirl.build(:neuigkeit, :with_intern_rubrik)}
let(:unpublished_neuigkeit){FactoryGirl.build(:neuigkeit, :unpublished,:with_rubrik)}
let(:attachment) {FactoryGirl.build_stubbed(:attachment)}
let(:calentry) {
FactoryGirl.build(:calentry, start: 1.hour.ago, ende: 5.minutes.ago)
}
let(:object_variable) {neuigkeit}
it_behaves_like "a valid object"
it "is published" do expect(neuigkeit).to be_published end
it "is public" do expect(neuigkeit).to be_public end
it "has no meeting" do expect(neuigkeit).not_to be_is_annoncement end
# it "failes" do expect(true).to be_falsey end
it "is published if datum is in the past" do
neuigkeit.datum=5.hours.ago
expect(neuigkeit).to be_published
end
it "is unpublished if datum is in the future" do
neuigkeit.datum=5.hours.from_now
expect(neuigkeit).not_to be_published
end
[ :rubrik, :author].each do |attr| # :title,:text to be discussed
it "should not be valid without #{attr}" do it "should not be valid without #{attr}" do
neuigkeit.send("#{attr}=".to_sym,nil) neuigkeit.send("#{attr}=".to_sym,nil)
expect(neuigkeit).not_to be_valid expect(neuigkeit).not_to be_valid
expect(neuigkeit.errors[attr]).to have_at_least(1).items expect(neuigkeit.errors[attr]).to have_at_least(1).items
end end
end end
it "should be created" do
expect(neuigkeit).to be_valid context "with meeting" do
expect(neuigkeit.save).to be true let(:neuigkeit) {(FactoryGirl.build(:neuigkeit, :with_rubrik, :with_meeting))}
end let(:object_variable) {neuigkeit}
it_behaves_like "a valid object"
it "should be valid" do it "has meeting" do expect(neuigkeit.meeting).to be_truthy end
fp = FactoryGirl.build(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id) it "is annoncement" do expect(neuigkeit).to be_is_annoncement end
expect(fp).to be_valid
end end
it "responds to attachments" do it "responds to attachments" do
expect(neuigkeit.respond_to?(:attachments)).to be true expect(neuigkeit.respond_to?(:attachments)).to be true
end end
it "uses titlepic attachments as picture" do
pending "uses titlepic attachments as picture" do # this test seems broken
expect(neuigkeit.respond_to?(:picture_robust)).to be true expect(neuigkeit.respond_to?(:picture_robust)).to be true
attachment.flag_titlepic = true attachment.flag_titlepic = true
expect { neuigkeit.attachments << attachment }.to change {neuigkeit.picture_robust} expect { neuigkeit.attachments << attachment }.to change {neuigkeit.picture_robust}
end end
it "is an event if it has a calentry" do it "is an event if it has a calentry" do
expect(neuigkeit.event?).to be false expect(neuigkeit).not_to be_is_event
expect{neuigkeit.calentries << calentry}.to change(neuigkeit, :event?) neuigkeit.calentries << calentry
expect(neuigkeit).to be_is_event
end end
it "" do
end
pending "has questions" pending "has questions"
pending "has nlinks" pending "has nlinks"
pending "has calentries" pending "has calentries"

View File

@@ -2,5 +2,11 @@ require 'spec_helper'
describe Rubrik do describe Rubrik do
pending "add some examples to (or delete) #{__FILE__}" pending "add some examples to (or delete) #{__FILE__}"
let(:rubrik){FactoryGirl.create(:rubrik)}
it "should be valid" do
expect(rubrik).to be_valid
end
it "should be created" do
expect(rubrik.save).to be true
end
end end

View File

@@ -0,0 +1,11 @@
shared_examples "a valid object" do
it "is valid" do
expect(object_variable).to be_valid
end
it "can be saved" do
expect(object_variable.save).to be_truthy
end
# it "failes" do
# expect(true).to be_falsey
# end
end

View File

@@ -2,29 +2,45 @@ require 'spec_helper'
describe Studium do describe Studium do
# test if it is invalid if certain attributes are missing # test if it is invalid if certain attributes are missing
let(:studium) { FactoryGirl.build(:studium)}
let(:object_variable) {studium}
[:name, :zahl].each do |attr| [:name, :zahl].each do |attr|
it "should not be valid without #{attr}" do it "should not be valid without #{attr}" do
s = FactoryGirl.build(:studium, attr=>nil) s = FactoryGirl.build(:studium, attr=>nil)
s.should_not be_valid expect(s).not_to be_valid
end end
end end
it "should create studium with valid data" do
s=FactoryGirl.build(:studium) it_behaves_like "a valid object"
lambda {
s.save!; Sunspot.commit}.should change {Studium.count()}.by(1) it "should create studium with valid data" do
end s=FactoryGirl.build(:studium)
it "should not accept double entrys" do lambda {
FactoryGirl.create(:studium) s.save!; Sunspot.commit}.should change {Studium.count()}.by(1)
Sunspot.commit end
s=FactoryGirl.build(:studium) it "should not accept double entrys" do
s.should_not be_valid FactoryGirl.create(:studium)
s.should have_at_least(1).error_on(:name) expect(studium).not_to be_valid
s.should have_at_least(1).error_on(:zahl)
end
it "should expect zahl to be 000.000" do expect(studium).to have_at_least(1).error_on(:name)
s=FactoryGirl.build(:studium, :zahl=>"000.000") expect(studium).to have_at_least(1).error_on(:zahl)
Sunspot.commit end
s.should_not be_valid it "expect zahl to be 000.000" do
s=FactoryGirl.build(:studium, :zahl=>"000.000")
#Sunspot.commit
s.should_not be_valid
expect(s.errors.size).to be > 0 expect(s.errors.size).to be > 0
end end
it "is not valid with a short zahl" do
s=FactoryGirl.build(:studium, :zahl=>"123")
expect(s).not_to be_valid
end
it "has a alias title for name" do
expect(studium.title).to eq(studium.name)
end
end end

View File

@@ -1,4 +1,6 @@
# This file is copied to spec/ when you run 'rails generate rspec:install' # This file is copied to spec/ when you run 'rails generate rspec:install'
require 'simplecov'
SimpleCov.start
ENV["RAILS_ENV"] ||= 'test' ENV["RAILS_ENV"] ||= 'test'
require 'rbconfig' require 'rbconfig'
@@ -14,6 +16,8 @@ require 'devise'
# in spec/support/ and its subdirectories. # in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
Dir[Rails.root.join("spec/models/shared_examples/**/*.rb")].each {|f| require f} Dir[Rails.root.join("spec/models/shared_examples/**/*.rb")].each {|f| require f}
Dir[Rails.root.join("spec/models/shared_examples/*.rb")].each {|f| require f}
#require 'models/shared_examples/basic.rb'
Dir[Rails.root.join("spec/controllers/shared_examples/**/*.rb")].each {|f| require f} Dir[Rails.root.join("spec/controllers/shared_examples/**/*.rb")].each {|f| require f}
RSpec.configure do |config| RSpec.configure do |config|

View File

@@ -1,9 +1,31 @@
module ControllerMacros module ControllerMacros
# include Devise::TestHelpers, :type=>:controller # include Devise::TestHelpers, :type=>:controller
def with_fet_user
let(:fet_user) {FactoryGirl.create(:other_user, :fetuser)}
before(:each) do
allow(@controller).to receive(:current_user).and_return(fet_user)
allow(@controller).to receive(:current_ability).and_return(Ability.new(fet_user))
end
end
def with_fet_admin
let(:fet_user)do
fet_user=FactoryGirl.create(:other_user)
fet_user.add_role("fetadmin")
fet_user
end
before(:each) do
allow(@controller).to receive(:current_user).and_return(fet_user)
allow(@controller).to receive(:current_ability).and_return(Ability.new(fet_user))
end
end
def login_fet_user def login_fet_user
before(:each) do before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user] @request.env["devise.mapping"] = Devise.mappings[:user]
user = FactoryGirl.build(:user) user = FactoryGirl.build(:other_user)
user = User.find_by_email(user.email) || user user = User.find_by_email(user.email) || user
user.save user.save
user.add_role(:fetuser) user.add_role(:fetuser)
@@ -21,6 +43,7 @@ module ControllerMacros
sign_in user sign_in user
end end
end end
def logout_user def logout_user
before(:each) do before(:each) do
sign_out :user sign_out :user

View File

@@ -1,18 +1,21 @@
module ModelMacros module ModelMacros
def let_studium_lva def let_studium_lva
let(:studium) {FactoryGirl.create(:studium)} let(:studium) {FactoryGirl.create(:studium)}
let(:modulgruppe){FactoryGirl.create(:modulgruppe,studium_id: studium.id)}
let(:modul) do let(:zerosemester) {FactoryGirl.create(:zero_semester,studium_id: studium.id)}
m=FactoryGirl.build(:other_modul); let(:firstsemester) {FactoryGirl.create(:first_semester)}
m.modulgruppen << modulgruppe let(:modulgruppe){FactoryGirl.create(:modulgruppe,studium_id: studium.id)}
m.save! let(:modul) do
m m=FactoryGirl.build(:other_modul)
end m.modulgruppen << modulgruppe
let(:lva) do m.save!
l=FactoryGirl.build(:lva) m
l.modul << modul end
l.save! let(:lva) do
l l=FactoryGirl.build(:lva)
end l.modul << modul
l
end
end end
end end

View File

0
test1
View File