98 Commits

Author SHA1 Message Date
root
dfef3721dc test1 2017-04-15 15:32:26 +02:00
ee451cdd9b some changes 2017-03-30 23:11:57 +02:00
cfdbeeaf46 Merge /home/andis/fetsite 2015-09-14 16:01:15 +02:00
Andreas Stephanides
5542777216 AutoCommit Mon Sep 14 16:00:56 CEST 2015 2015-09-14 16:00:56 +02:00
e341384493 Merge /home/andis/fetsite 2015-09-14 15:56:10 +02:00
Andreas Stephanides
0337131472 AutoCommit Mon Sep 14 15:54:50 CEST 2015 2015-09-14 15:54:50 +02:00
e4a100823f Merge /home/andis/fetsite 2015-09-14 13:50:46 +02:00
Andreas Stephanides
e15526865d AutoCommit Mon Sep 14 13:50:05 CEST 2015 2015-09-14 13:50:05 +02:00
f052940d6c Merge /home/andis/fetsite 2015-09-14 12:06:15 +02:00
7c6e04ca2e inactive facebook config 2015-09-14 12:05:55 +02:00
Andreas Stephanides
1d8bae3aee AutoCommit Mon Sep 14 12:03:04 CEST 2015 2015-09-14 12:03:04 +02:00
Andreas Stephanides
168b4d9e4c AutoCommit Mon Sep 14 01:03:01 CEST 2015 2015-09-14 01:03:01 +02:00
Andreas Stephanides
a47c6fea7a AutoCommit Mon Sep 14 00:03:01 CEST 2015 2015-09-14 00:03:01 +02:00
Andreas Stephanides
10949e9708 AutoCommit Son Sep 13 14:03:06 CEST 2015 2015-09-13 14:03:06 +02:00
Andreas Stephanides
a9c9b22a94 AutoCommit Son Sep 13 13:03:44 CEST 2015 2015-09-13 13:03:44 +02:00
Andreas Stephanides
b073a1a098 AutoCommit Son Sep 13 12:03:20 CEST 2015 2015-09-13 12:03:21 +02:00
Andreas Stephanides
d85a01c810 AutoCommit Son Sep 13 11:03:05 CEST 2015 2015-09-13 11:03:05 +02:00
Andreas Stephanides
4a8e5d393e AutoCommit Son Sep 13 10:03:11 CEST 2015 2015-09-13 10:03:11 +02:00
Andreas Stephanides
97d5427f6d AutoCommit Son Sep 13 00:03:01 CEST 2015 2015-09-13 00:03:01 +02:00
Andreas Stephanides
92667b92e9 AutoCommit Sam Sep 12 22:03:04 CEST 2015 2015-09-12 22:03:04 +02:00
Andreas Stephanides
ff70c31c40 AutoCommit Sam Sep 12 13:03:02 CEST 2015 2015-09-12 13:03:02 +02:00
Andreas Stephanides
3d87ce6fd2 AutoCommit Sam Sep 12 12:03:06 CEST 2015 2015-09-12 12:03:06 +02:00
Andreas Stephanides
cfb42584e1 AutoCommit Sam Sep 12 11:03:02 CEST 2015 2015-09-12 11:03:02 +02:00
Andreas Stephanides
52dac513f7 AutoCommit Sam Sep 12 10:03:56 CEST 2015 2015-09-12 10:03:56 +02:00
Andreas Stephanides
514bdc1ef0 AutoCommit Fre Sep 11 21:03:01 CEST 2015 2015-09-11 21:03:01 +02:00
Andreas Stephanides
e486ab02fd AutoCommit Fre Sep 11 19:03:01 CEST 2015 2015-09-11 19:03:01 +02:00
Andreas Stephanides
0dc83df98c AutoCommit Fre Sep 11 15:03:05 CEST 2015 2015-09-11 15:03:05 +02:00
Andreas Stephanides
9a9c7f74f9 AutoCommit Fre Sep 11 13:03:02 CEST 2015 2015-09-11 13:03:02 +02:00
Andreas Stephanides
68e2d4a5a7 AutoCommit Don Sep 10 22:03:01 CEST 2015 2015-09-10 22:03:01 +02:00
Andreas Stephanides
edaf154549 AutoCommit Don Sep 10 21:03:02 CEST 2015 2015-09-10 21:03:02 +02:00
Andreas Stephanides
f59f0cb05a AutoCommit Don Sep 10 20:03:01 CEST 2015 2015-09-10 20:03:01 +02:00
Andreas Stephanides
b7abbb8a77 AutoCommit Don Sep 10 09:03:01 CEST 2015 2015-09-10 09:03:01 +02:00
Andreas Stephanides
9521f04c72 AutoCommit Don Sep 10 00:03:03 CEST 2015 2015-09-10 00:03:03 +02:00
Andreas Stephanides
01c6fedaee AutoCommit Mit Sep 9 23:03:01 CEST 2015 2015-09-09 23:03:01 +02:00
Andreas Stephanides
1e48881830 AutoCommit Mit Sep 9 22:03:05 CEST 2015 2015-09-09 22:03:05 +02:00
Andreas Stephanides
0da3ee8ed9 AutoCommit Mit Sep 9 11:03:36 CEST 2015 2015-09-09 11:03:37 +02:00
Andreas Stephanides
5531eb089e AutoCommit Die Sep 8 14:03:06 CEST 2015 2015-09-08 14:03:06 +02:00
Andreas Stephanides
8fa549ae23 AutoCommit Mon Sep 7 00:03:01 CEST 2015 2015-09-07 00:03:01 +02:00
Andreas Stephanides
8c2efffff4 AutoCommit Son Sep 6 23:03:05 CEST 2015 2015-09-06 23:03:05 +02:00
Andreas Stephanides
b9079c0525 AutoCommit Son Sep 6 21:03:06 CEST 2015 2015-09-06 21:03:06 +02:00
Andreas Stephanides
d509884aa1 AutoCommit Sam Sep 5 21:03:02 CEST 2015 2015-09-05 21:03:02 +02:00
Andreas Stephanides
13f852cf48 AutoCommit Sam Sep 5 19:03:01 CEST 2015 2015-09-05 19:03:01 +02:00
Andreas Stephanides
a96e48fa36 AutoCommit Sam Sep 5 18:03:02 CEST 2015 2015-09-05 18:03:02 +02:00
Andreas Stephanides
a84332d09f AutoCommit Sam Sep 5 17:03:04 CEST 2015 2015-09-05 17:03:04 +02:00
Andreas Stephanides
4b1d11751d AutoCommit Sam Sep 5 16:03:02 CEST 2015 2015-09-05 16:03:02 +02:00
Andreas Stephanides
eccb090d5c AutoCommit Sam Sep 5 15:03:11 CEST 2015 2015-09-05 15:03:11 +02:00
Andreas Stephanides
c7d12e9a42 AutoCommit Fre Sep 4 14:03:04 CEST 2015 2015-09-04 14:03:04 +02:00
Andreas Stephanides
f7ad93c398 AutoCommit Don Sep 3 16:03:01 CEST 2015 2015-09-03 16:03:01 +02:00
Andreas Stephanides
984e5f4b56 AutoCommit Don Sep 3 12:03:05 CEST 2015 2015-09-03 12:03:05 +02:00
Andreas Stephanides
4835155d06 AutoCommit Don Sep 3 11:03:01 CEST 2015 2015-09-03 11:03:01 +02:00
Andreas Stephanides
e7c21ad95b AutoCommit Don Sep 3 10:03:06 CEST 2015 2015-09-03 10:03:06 +02:00
Andreas Stephanides
889d7ac3d0 AutoCommit Mit Sep 2 23:03:01 CEST 2015 2015-09-02 23:03:01 +02:00
Andreas Stephanides
194a8375dd AutoCommit Mit Sep 2 22:03:01 CEST 2015 2015-09-02 22:03:01 +02:00
Andreas Stephanides
7b9b226e59 AutoCommit Mit Sep 2 21:03:01 CEST 2015 2015-09-02 21:03:01 +02:00
Andreas Stephanides
d4964f40fb AutoCommit Die Sep 1 14:03:03 CEST 2015 2015-09-01 14:03:03 +02:00
Andreas Stephanides
5134dc2e5f AutoCommit Die Sep 1 13:03:03 CEST 2015 2015-09-01 13:03:03 +02:00
Andreas Stephanides
c37040a74b AutoCommit Die Sep 1 12:03:25 CEST 2015 2015-09-01 12:03:25 +02:00
Andreas Stephanides
c1a7d9b7c2 AutoCommit Die Sep 1 10:03:01 CEST 2015 2015-09-01 10:03:01 +02:00
Andreas Stephanides
576b763d82 AutoCommit Die Sep 1 09:03:01 CEST 2015 2015-09-01 09:03:01 +02:00
Andreas Stephanides
c02ee30013 AutoCommit Die Sep 1 01:03:02 CEST 2015 2015-09-01 01:03:02 +02:00
Andreas Stephanides
1cea790324 AutoCommit Die Sep 1 00:03:02 CEST 2015 2015-09-01 00:03:02 +02:00
Andreas Stephanides
3bcd8389d4 AutoCommit Mon Aug 31 23:03:01 CEST 2015 2015-08-31 23:03:01 +02:00
Andreas Stephanides
221bd95cbf AutoCommit Mon Aug 31 22:03:01 CEST 2015 2015-08-31 22:03:01 +02:00
Andreas Stephanides
8c1e430bb2 AutoCommit Mon Aug 31 18:03:21 CEST 2015 2015-08-31 18:03:21 +02:00
Andreas Stephanides
589597509a AutoCommit Mon Aug 31 17:03:03 CEST 2015 2015-08-31 17:03:03 +02:00
Andreas Stephanides
93dbdedf53 AutoCommit Mon Aug 31 16:03:01 CEST 2015 2015-08-31 16:03:01 +02:00
Andreas Stephanides
1bc9d65a44 AutoCommit Mon Aug 31 15:03:01 CEST 2015 2015-08-31 15:03:01 +02:00
Andreas Stephanides
f61231accc AutoCommit Mon Aug 31 14:03:19 CEST 2015 2015-08-31 14:03:19 +02:00
Andreas Stephanides
cec9939144 AutoCommit Mon Aug 31 13:03:02 CEST 2015 2015-08-31 13:03:02 +02:00
Andreas Stephanides
6b324ded44 AutoCommit Son Aug 30 20:03:01 CEST 2015 2015-08-30 20:03:01 +02:00
Andreas Stephanides
18a6821029 AutoCommit Son Aug 30 19:03:01 CEST 2015 2015-08-30 19:03:01 +02:00
Andreas Stephanides
2d9944dfc3 AutoCommit Son Aug 30 18:03:01 CEST 2015 2015-08-30 18:03:01 +02:00
Andreas Stephanides
9dd9c3cc48 AutoCommit Son Aug 30 17:03:01 CEST 2015 2015-08-30 17:03:01 +02:00
Andreas Stephanides
8bfd96d0af AutoCommit Son Aug 30 16:03:01 CEST 2015 2015-08-30 16:03:01 +02:00
Andreas Stephanides
4a671f5cff AutoCommit Son Aug 30 15:03:01 CEST 2015 2015-08-30 15:03:01 +02:00
Andreas Stephanides
5bf63421a6 AutoCommit Son Aug 30 14:03:01 CEST 2015 2015-08-30 14:03:01 +02:00
Andreas Stephanides
723d7be980 Merge branch 'master' of https://github.com/fetsite/fetsite into tests 2015-08-30 13:04:23 +02:00
Andreas Stephanides
e098c0cd36 AutoCommit Son Aug 30 10:03:05 CEST 2015 2015-08-30 10:03:05 +02:00
Andreas Stephanides
bffb978fc7 AutoCommit Don Aug 27 17:03:04 CEST 2015 2015-08-27 17:03:04 +02:00
Andreas Stephanides
8e1e19d3ab AutoCommit Don Aug 27 16:03:04 CEST 2015 2015-08-27 16:03:04 +02:00
Andreas Stephanides
7c2f1f9753 AutoCommit Don Aug 27 15:03:02 CEST 2015 2015-08-27 15:03:02 +02:00
Andreas Stephanides
370c439c29 AutoCommit Don Aug 27 14:03:04 CEST 2015 2015-08-27 14:03:04 +02:00
Andreas Stephanides
1047851b47 AutoCommit Mit Aug 26 12:03:05 CEST 2015 2015-08-26 12:03:05 +02:00
Andreas Stephanides
94cad06e31 AutoCommit Mit Aug 26 11:03:04 CEST 2015 2015-08-26 11:03:04 +02:00
8ed5b7287e small fixes 2015-08-26 09:40:53 +02:00
Andreas Stephanides
934e004416 AutoCommit Sam Aug 22 18:17:03 CEST 2015 2015-08-22 18:17:03 +02:00
Andreas Stephanides
af39f21595 AutoCommit Sam Aug 22 18:03:02 CEST 2015 2015-08-22 18:03:02 +02:00
Andreas Stephanides
82b71f045f Merge branch 'survey' 2015-08-22 17:55:32 +02:00
Andreas Stephanides
37c2d893b6 AutoCommit Sam Aug 22 00:03:01 CEST 2015 2015-08-22 00:03:01 +02:00
Andreas Stephanides
58fd356f00 Merge branch 'master' of fet.at:~/fetsite 2015-08-07 17:23:16 +02:00
909cefb85b Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-14 14:38:36 +02:00
07549c6f0e Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-13 11:52:23 +02:00
c356c3c128 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-12 09:44:32 +02:00
c7902423b5 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-12 07:15:57 +02:00
dd94a1b47b Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-11 20:07:28 +02:00
48f8c975cd Merge branch 'master' of https://github.com/fetsite/fetsite 2015-06-26 16:21:38 +02:00
6b0314af7a merge cachebsp 2015-06-26 11:08:44 +02:00
f718567722 fix cachebsp 2015-06-26 11:07:08 +02:00
118 changed files with 4728 additions and 699 deletions

0
Fetmailalias, Normal file
View File

36
Gemfile
View File

@@ -13,8 +13,8 @@ gem 'webrick', '1.3.1'
# Gems used only for assets and not required
# in production environments by default.
gem 'sass-rails', '~> 3.2'
gem 'coffee-rails', '~> 3.2.1'
gem 'sass-rails', '~> 3.0'
gem 'coffee-rails', '~> 3.0'
gem 'bootstrap-sass','~> 2.3.2.1'
group :assets do
@@ -60,16 +60,17 @@ gem "paper_trail" , '~>3.0.5'#, :git=>'git://github.com/airblade/paper_trail.git
# User management
gem "devise" ,'~>2.2.3'
gem "omniauth"
gem "omniauth-facebook"
gem "omniauth-ldap"
gem "omniauth", '~>1.2.2'
gem "omniauth-facebook", '~>2.0.0'
gem "omniauth-ldap", '~>1.0.4'
gem "fb_graph"
gem "fb_graph",'~>2.7.17'
gem "meta-tags"
# Roles for users
gem "rolify"
gem "rolify", '~>4.0.0'
# Abilities
gem "cancan"
gem "cancan", '~>1.6.0'
# Fileupload
@@ -84,8 +85,17 @@ gem 'awesome_nested_set'
gem 'annotate', ">=2.5.0"
gem 'carrierwave', "~>0.9.0"
group :development, :test do
gem 'factory_girl_rails'
gem 'rspec-rails'
gem 'factory_girl_rails',"~>4.5.0"
gem 'minitest', "~>4.7.5"
gem 'progress_bar'
gem 'rspec-core', '~>3.3.0'
gem 'rspec-support', '~>3.3.0'
gem 'rspec-rails', '~>3.3.0'
gem 'rspec-collection_matchers', '~>1.1.2'
gem 'rspec-activemodel-mocks', '~>1.0.1'
gem 'rspec-html-matchers', '~>0.7.0'
gem 'rspec-expectations', '~>3.3.1'
gem 'capybara', '~>2.5.0'
end
gem "simple_calendar", "~> 0.1.9"
@@ -93,7 +103,7 @@ gem 'rmagick'
gem 'bootstrap-addons-rails'
gem "jquery-fileupload-rails", "0.4.1"
gem "jquery-ui-rails","~> 4.1.1"
gem "jquery-ui-rails","~> 4.1.0"
gem "font-awesome-rails"
gem "jquery-datetimepicker-rails"
# gem "jquery-sortable-rails"
@@ -124,4 +134,6 @@ gem 'opengraph_parser'
gem 'blueimp-gallery'
gem 'blueimp-gallery-rails'
gem 'shareable'
gem 'shareable'
gem 'sunspot_test'

0
MyText, Normal file
View File

0
Nachname, Normal file
View File

0
Short, Normal file
View File

0
Vorname, Normal file
View File

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

@@ -16,6 +16,7 @@
*= require jquery.datetimepicker
*= require jquery.ui.dialog
*= require jquery.ui.autocomplete
*= require jquery.ui.progressbar
*= require jquery.ui.tabs
* require 'bootstrap'
* require 'neuigkeiten'
@@ -117,5 +118,6 @@ $box-border-radius:0px;
$box-background: white;
@import 'layout';
@import 'linkboxes';
@import 'calendars';
@import 'formtastic-bootstrap'

View File

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

View File

@@ -1,4 +1,6 @@
/* This is the main file for theme "blue2"
*/
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
@@ -15,6 +17,8 @@
*= require jquery.datetimepicker
*= require jquery.ui.dialog
*= require jquery.ui.tabs
*= require jquery.ui.progressbar
* require 'bootstrap'
* require 'neuigkeiten'
@@ -89,9 +93,11 @@ div.header {
height:45px;
margin-bottom: 0 px
}
div.header_span {
background:white
}
div.header h1 {
padding:0;
margin:4px;
@@ -117,16 +123,16 @@ $navbar-li-minwidth: 0;
$box-border: lightgray solid 1px;
$box-border-radius:4px;
$box-border-radius:6px;
$box-background: white;
@import 'layout';
@import 'calendars';
@import 'formtastic-bootstrap';
@import 'linkboxes';
@import 'extra';
body {
background: #FFF; //#EFEFEF;
background: #FCFCFC; //#EFEFEF;
background-size:100%;
}

View File

@@ -0,0 +1,142 @@
ul.linkbox-list
{
max-width:70em;
margin-left:auto;
margin-right:auto;
}
ul.linkbox-list > li {
margin-bottom:0px;
}
ul.linkbox-list > li:first-child a.linkbox {
border-top-left-radius:$box-border-radius;
border-top-right-radius:$box-border-radius;
border: $box-border;
}
ul.linkbox-list > li:last-child a.linkbox {
border-bottom-left-radius:$box-border-radius;
border-bottom-right-radius:$box-border-radius;
}
ul.linkbox-list > li a.linkbox {
border-radius: 0;
border-top: none;
}
ul.linkbox-list > li a.linkbox:hover {
z-index:2000
}
a.linkbox, div.contentbox
{
display:block;
padding:5px;
border-radius:$box-border-radius;
border: $box-border;
background: $box-background;
}
a.linkbox:hover{ box-shadow: 1px 1px 2px 2px lightgray; }
a.linkbox.color-1 { color:$color_schema_1; }
a.linkbox.color-2 { color:$color_schema_2; }
a.linkbox.color-3 { color:$color_schema_3; }
a.linkbox.color-4 { color:$color_schema_4;}
a.linkbox.color-5 { color:$color_schema_5;}
a.color-1-dark { color:$color_schema_1_dark; }
a.color-2-dark { color:$color_schema_2_dark; }
a.color-3-dark { color:$color_schema_3_dark;}
a.color-4-dark { color:$color_schema_4_dark;}
a.color-5-dark { color:$color_schema_5_dark;}
a.color-1-dark:hover { color:$color_schema_1; }
a.color-2-dark:hover { color:$color_schema_2; }
a.color-3-dark:hover { color:$color_schema_3; }
a.color-4-dark:hover { color:$color_schema_4; }
a.color-5-dark:hover { color:$color_schema_5; }
a.linkbox li { }
ul.linklist {
max-width:100%;
padding:0;
margin:5px;
}
ul.linklist li {
list-style:none;
}
ul.linklist li a i{
vertical-align:middle;
margin-right:6px;
font-size:2em;}
ul.linklist > li a.linkbox {
border-radius: 0;
border: $box-border;
/* border-color:white;*/
padding-top: 7px;
margin-bottom:0px;
margin-top:0px;
/* border-bottom: $box-border;
border-top: $box-border;
*/
border-color:white;
/* border-bottom-color:white; */
}
ul.linklist > li a.linkbox:hover {
border: $box-border;
border-top: $box-border;
box-shadow: none;
border-color: black;
background: #FCFCFC;
/* margin: 0;
margin-bottom:0px;*/
}
ul.linklist > li:first-child a.linkbox {}
ul.linklist > li:last-child a.linkbox {
}
ul.linklist > li:first-child a.linkbox {
border-top-left-radius:$box-border-radius;
border-top-right-radius:$box-border-radius;
/* border-top:$box-border; */
margin-top:0px;
}
ul.linklist > li:last-child a.linkbox {
border-bottom-left-radius:$box-border-radius;
border-bottom-right-radius:$box-border-radius;
/* border-bottom:$box-border;*/
margin-bottom:0px;
}
ul.linklist {
border-radius: $box-border-radius;
border: $box-border;
/* box-shadow: 0px 0px 1px 1px lightgray;*/
}
span.linklist li a {
padding:5px;
border: $box-border;
background: $box-background;
display:block;
float:left;
}

View File

@@ -16,7 +16,13 @@
end
end
I18n.locale = session[:locale] || request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^de|en/).first || I18n.default_locale
http_header=request.env['HTTP_ACCEPT_LANGUAGE']
unless http_header.nil?
ht= http_header.scan(/^de|en/).first
else
ht=nil
end
I18n.locale = session[:locale] || ht || I18n.default_locale
session[:locale] = I18n.locale
@@ -46,7 +52,8 @@
else
flash[:error] = "You must first login to view this page"
session[:user_return_to] = request.url
redirect_to "/users/sign_in"
return redirect_to "/users/sign_in"
end
end

View File

@@ -32,6 +32,7 @@ class BeispieleController < ApplicationController
def new
@beispiel = Beispiel.new
@beispiel.lva = Lva.find_by_id(params[:lva_id])
@beispiel.flag_delete=false
@backlink = @beispiel.lva.nil? ? root_url : lva_path(@beispiel.lva)
respond_to do |format|
format.html # new.html.erb
@@ -43,6 +44,7 @@ class BeispieleController < ApplicationController
@beispiel = Beispiel.find(params[:id])
@beispiel.lecturer = Lecturer.find(params[:beispiel][:lecturer_id])
@beispiel.save
if @beispiel.save
format.html { redirect_to @backlink, notice: 'Beispiel was successfully updated.' }
format.js {render text: "alert(\"updated\");"}
@@ -66,8 +68,9 @@ class BeispieleController < ApplicationController
logger.info "Creating Beispiel..."
@lva = Lva.find_by_id(params[:lva_id])
params.delete(:lva_id)
params[:beispiel][:flag_delete]=false
@beispiel = Beispiel.new(params[:beispiel])
@beispiel.flag_delete=false
logger.info "New Beispiel: #{params.inspect}"
@beispiel.name=@beispiel.beispieldatei.filename

View File

@@ -157,7 +157,7 @@ class DocumentsController < ApplicationController
@results = Document.search do
fulltext params['query'] do
fields :name, :text, :meeting
highlight :text
highlight :text,:name,:meeting
end
end
@res=[]

View File

@@ -0,0 +1,22 @@
class EmailsController < ApplicationController
before_filter :authorize
def index
end
def daily_reminder
ActionMailer::Base.default_url_options[:host] = request.host_with_port
@mail =NewsMailer.daily_reminder(current_user.id)
if params[:send]
usr=User.where(:flag_getemails => true)
usr.each do |u|
NewsMailer.daily_reminder(current_user.id).deliver
end
end
render layout: false
end
protected
def authorize
authorize! :emails, User
end
end

View File

@@ -9,18 +9,17 @@ class FetprofilesController < ApplicationController
@fetprofiles = Fetprofile.order(:vorname,:nachname) if params[:filter]== "all"
@fetprofiles = Fetprofile.where(:active=>false).order(:nachname,:vorname) if params[:filter]== "notactive"
@gremientabs = Gremium.tabs
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('profile.new_profile'),:path => new_fetprofile_path(@fetprofile) } if can? :new, @fetprofile
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('profile.new_profile'),:path => new_fetprofile_path(@fetprofile) } if can? :new, @fetprofile
respond_to do |format|
format.html # index.html.erb
end
end
end
def internlist
@fetprofiles = Fetprofile.order(:vorname,:nachname)
end
end
# GET /fetprofiles/1
# GET /fetprofiles/1.json

View File

@@ -19,6 +19,11 @@ class HomeController < ApplicationController
end
def dev
end
def infoscreen
authorize! :infoscreen, User
@neuigkeiten = Neuigkeit.accessible_by(current_ability, :show).where(flag_infoscreen: true)
render layout: false
end
def kontakt
t=YAML.load_file("#{::Rails.root.to_s}/config/contact_topic.yml")

View File

@@ -3,6 +3,7 @@ class NeuigkeitenController < ApplicationController
before_filter :load_toolbar_elements, :only=>[:show,:find_link]
before_filter :load_toolbar_elements_edit, :only=>[:edit]
acts_as_flagable
@@ -119,12 +120,15 @@ end
end
end
def mail_preview
ActionMailer::Base.default_url_options[:host] = request.host_with_port
@neuigkeit = Neuigkeit.find(params[:id])
@user=current_user
@user=current_user
@ability=Ability.new(@user)
@mail = NewsMailer.neuigkeit_mail("all@fet.at", params[:id])
authorize! :publish, @neuigkeit
render template: "news_mailer/neuigkeit_mail", layout: false
render layout: false
end
def newsletter_preview
authorize! :publish, Neuigkeit

View File

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

View File

@@ -1,8 +1,22 @@
class UsersController < ApplicationController
def index
authorize!(:index,User)
@users = User.all
end
def show
@user=User.find(params[:id])
authorize!(:show, @user)
end
def set_preferred_theme
@user=User.find(params[:id])
authorize!(:set_preferred_theme, @user)
@user.preferredtheme=params[:theme]
@user.save
redirect_to root_url
end
def add_role
authorize!(:add_role, User)
@user= User.find(params[:id])
if (params[:role]=="fetuser" && can?(:addfetuser,User))
@user.add_role(params[:role])
@@ -13,6 +27,8 @@ class UsersController < ApplicationController
redirect_to users_url
end
def fb_set_default_publish_page
authorize!(:doadmin, User)
if Fetsite::Application.config.facebookconfig_enabled
if params["page"].nil? || !(current_user.provider=="facebook")
redirect_to intern_home_index_path
@@ -27,6 +43,7 @@ class UsersController < ApplicationController
end
def all_update
authorize! :doadmin,User
params[:users].each do |id,u|
user=User.find(id)
user.fetprofile = Fetprofile.find(u[:fetprofile_id].to_i) if u[:fetprofile_id].to_i>0

View File

@@ -1,4 +1,4 @@
class CheckboxAutocompleteInput < FormtasticBootstrap::Inputs::CheckboxInput
class CheckboxAutocompleteInput < FormtasticBootstrap::Inputs::CheckBoxesInput
def input_html_options
super
#super.merge(:class => "input-append date")

View File

@@ -1,23 +1,44 @@
# -*- coding: utf-8 -*-
class NewsMailer < ActionMailer::Base
default from: "salzamt@fet.at"
helper :plugins
def current_user
@user
end
def neuigkeit_mail(email, neuigkeit_id)
@neuigkeit= Neuigkeit.find(neuigkeit_id)
@user=User.first
@ability=Ability.new(@user)
subject = @neuigkeit.title
subject = subject + " email: " + email if Rails.env=="development"
subject = subject.to_s + " email: " + email.to_s if Rails.env=="development"
email = "andis@fet.at" if Rails.env=="development"
email="andis@fet.at"
mail(to: email, subject: subject)
render locals: {current_user: User.first}
render locals: {current_user: User.first}
end
def daily_newsletter(user_id)
user=User.find(user_id)
self.message.perform_deliveries = false unless user.flag_getemails
ability= Ability.new(user)
@neuigkeiten=Neuigkeit.accessible_by(ability).published_scope.where("cache_order<2")
end
def daily_reminder(user_id)
user=User.find(user_id)
@user=user
self.message.perform_deliveries = false unless user.flag_getemails
@ability = Ability.new(user)
@calentries = Calentry.of_month(Date.today).limit(100)
# @neuigkeiten=Neuigkeit.accessiblße_by(ability).published_scope.where("cache_order<2")
mail(to: user.email, content_type: "text/html", subject: "sdf")
render locals: {c_user: user}
end
private
include CanCan::ControllerAdditions
def current_user
@user
end
def current_ability
@ability
end
end

View File

@@ -1,7 +1,10 @@
# -*- coding: utf-8 -*-
require 'ipaddr'
class Ability
include CanCan::Ability
def initialize(user,request=nil,key=nil)
tunet=IPAddr.new("128.131.95.0/24")
local=IPAddr.new("127.0.0.1")
loggedin=!(user.nil?)
unless key.nil?
k=Key.find_by_uuid(key)
@@ -10,6 +13,9 @@ class Ability
end
end
user ||= User.new # guest user (not logged in)
if (user.has_role?("fetuser") || user.has_role?("fetadmin") || tunet.include?(IPAddr.new(request.remote_ip)) || local.include?(IPAddr.new(request.remote_ip)))
can :infoscreen, User
end
if( user.has_role?("fetuser") || user.has_role?("fetadmin"))
can [:show,:answer, :create,:new, :create_from_template, :flag], Survey::Question
@@ -152,6 +158,7 @@ end
can :show, Neuigkeit, :cache_is_published=>true, :rubrik=>{:public=>true}
if loggedin
can :show, :id => user.id
end
if( user.has_role?("fetuser") || user.has_role?("fetadmin"))
@@ -159,6 +166,7 @@ end
can :showintern, Neuigkeit
can :showintern, Rubrik
can :seeintern, User
can :set_preferred_theme, user
can :list, Neuigkeit
can :shownonpublic, Rubrik
can :manage, Nlink
@@ -169,8 +177,12 @@ end
if user.has_role?("fetadmin")
can :addfetuser, User
can :addfetadmin, User
can :add_role, User
can :show, User
can :index, User
can :edit, User
can :manage, User
can :set_preferred_theme, User
end
if user.has_role?("newsadmin") || user.has_role?( "fetadmin") || user.has_role?( "fetuser")
@@ -227,7 +239,8 @@ end
can :doadmin, User
end
unless user.has_role?("fetadmin")
if user.has_role?("fetadmin")
can :emails,User
end
end

View File

@@ -14,14 +14,14 @@
class Calentry < ActiveRecord::Base
attr_accessible :ende, :start, :summary, :typ,:calendar_ids, :calendar, :dauer, :object_id, :object_type
belongs_to :calendar
belongs_to :calendar, touch: true
#belongs_to :neuigkeit
validates :start, :presence => true
validates :object, :presence => true
validates :typ, :presence => true
before_save :get_public
belongs_to :object, polymorphic: true, touch: true # Objekt zu dem der Calentry gehört (derzeit ein Newsartikel)
scope :of_month, ->(d) {where("start >= ? AND start <= ?", d.beginning_of_month, d.end_of_month)}
scope :upcoming, ->{ where("start >= ?", Time.now).order(:start)}
scope :recent,-> { where("start <= ?", Time.now).order(:start).reverse_order}
validate do |entry|
@@ -31,7 +31,10 @@ class Calentry < ActiveRecord::Base
end
resourcify
def self.updated_at
#Calentry.select("MAX(updated_at) as m_updated_at").first.m_updated_at
Calentry.all.max_by(&:updated_at).updated_at
end
def is_upcomming?
self.start > Time.now
end

View File

@@ -102,7 +102,7 @@ class Document < ActiveRecord::Base
end
text :name, :boost=>4.0, :stored=> true
text :meeting, stored: true do |d|
(d.parent_type == "Meeting")? d.try(:parent).try(:text).to_s : ""
(d.parent.is_a?(Meeting))? d.try(:parent).try(:text).to_s : ""
end
end
def maketoc

View File

@@ -32,13 +32,13 @@ class Fetprofile < ActiveRecord::Base
has_many :nlinks, as: :link
def validate_birthday
unless birth_month.nil? || birth_day.nil?
unless Date.valid_date?((birth_year.nil?) ? Date.today.year : birth_year, birth_month, birth_day)
errors.add(:birth_month, "Invalides Datum")
errors.add(:birth_day, "Invalides Datum")
v= false
else
v= true
end
unless Date.valid_date?((birth_year.nil?) ? Date.today.year : birth_year, birth_month, birth_day)
errors.add(:birth_month, "Invalides Datum")
errors.add(:birth_day, "Invalides Datum")
v= false
else
v= true
end
else
v= false
end
@@ -78,3 +78,5 @@ class Fetprofile < ActiveRecord::Base
end
end

View File

@@ -23,6 +23,7 @@ class Gremium < ActiveRecord::Base
has_many :memberships, dependent: :destroy # Mitgliedschaften bei dem Gremium
has_many :nlinks, as: :link, dependent: :destroy
# scope :search, ->(query) {where("gremien.name like ? or gremien.desc like ?", "%#{query}%", "%#{query}%")}
# has_many :members, through: :memberships
searchable do
text :desc
text :name, :boost=>4.0

View File

@@ -13,7 +13,7 @@
#
class Neuigkeit < ActiveRecord::Base
attr_accessible :datum, :text, :title, :rubrik_id, :author_id,:picture, :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 :rubrik, :class_name =>'Rubrik', :foreign_key => "rubrik_id"
has_one :calendar, through: :rubrik
@@ -30,6 +30,7 @@ class Neuigkeit < ActiveRecord::Base
translates :title,:text, :versioning=>{:gem=>:paper_trail, :options=>{:fallbacks_for_empty_translations => true}}
globalize_accessors :locales => [:de, :en], :attributes =>[:text,:title]
mount_uploader :picture, PictureUploader
include IsCommentable
default_scope order(:cache_order).includes(:calentries).includes(:title_pic)
scope :recent, -> { published.limit(10)}
@@ -44,6 +45,12 @@ class Neuigkeit < ActiveRecord::Base
before_validation :sanitize
after_save :update_cache
attr_accessor :no_fallbacks
acts_as_flagable
FLAG_ICONS={"infoscreen" => "fa fa-desktop", "important"=>"fa fa-exclamation"}
FLAG_CONFIRM={"infoscreen" => "Neuigkeit am Infoscreen anzeigen"}
def globalize_fallbacks(locale)
if self.no_fallbacks
[locale]

View File

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

View File

@@ -1,5 +1,5 @@
class Survey::Answer < ActiveRecord::Base
belongs_to :choice, class_name: 'Survey::Choice'
belongs_to :choice, class_name: 'Survey::Choice', touch: true
belongs_to :user
# attr_accessible :title, :body
end

View File

@@ -1,5 +1,5 @@
class Survey::Choice < ActiveRecord::Base
belongs_to :question, class_name: 'Survey::Question'
belongs_to :question, class_name: 'Survey::Question', touch: true
attr_accessible :picture, :sort, :text, :icon, :picture_cache, :remove_picture, :question_id
has_many :answers, class_name: 'Survey::Answer', dependent: :destroy
include ActionView::Helpers::TagHelper

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
class Survey::Question < ActiveRecord::Base
attr_accessible :text, :title, :typ, :choice_ids, :parent_type, :parent_id
belongs_to :parent, polymorphic: true
belongs_to :parent, polymorphic: true, touch: true
has_many :choices, dependent: :destroy, class_name: "Survey::Choice"
has_many :answers, through: :choices
include IsCommentable

View File

@@ -12,7 +12,7 @@
<% end %>
</div>
<div class="span6">
<% f.file_field :beispieldatei, :label => "Neue Datei hochladen:"%>
<%= f.file_field :beispieldatei, :label => "Neue Datei hochladen:" if @beispiel.beispieldatei.nil? || @beispiel.beispieldatei.blank? %>
</div>
<%=f.input :datum , :as => :datetimepicker %>
@@ -20,11 +20,11 @@
<div class="row-fluid">
<%= f.input :name %>
<%= f.input :lva if @beispiel.lva.nil?%>
<%= f.input :desc %>
</div>
<div class="span4">
<%= f.input :lecturer, :as=>:select, :collection => @beispiel.lva.lecturers %>
<%= f.input :lecturer, :as=>:select, :collection => ((@beispiel.lva.nil?|| @beispiel.lva.lecturers.empty?)? Lecturer.all : @beispiel.lva.lecturers) %>
</div>
<%= f.hidden_field :beispieldatei_cache %>
<%= f.actions do %>

View File

@@ -0,0 +1 @@
<%= mail.icon_text %>

View File

@@ -1,17 +1,19 @@
<% unless search_results.nil? %>
<%= search_results %>
<%#= search_results %>
<ul>
<% search_results.each_hit_with_result do |hit,result| %>
<li> <%= link_to result.parent.title+": " + result.name, document_path(result) %>
<% hit.highlights(:name).each do |hlgt| %>
<%= raw(hlgt.format{|word|"<b>#{word}</b>" } ) %>
<%= (hlgt.format{|word|"<b>#{word}</b>" } ).html_safe%>
<% end %>
<% %>
<% hit.highlights(:text).each do |hlgt| %>
<%= "text:" + raw(hlgt.format {|word| raw("<b>#{word}</b>") })%>
<% hit.highlights(:text).each do |hlgt| %>
<%= ("<br>text: " + hlgt.format {|word| "<b>#{word}</b>" }).html_safe%>
<% end %>
<% hit.highlights(:meeting).each do |hlgt| %>
<%= "text:" + raw(hlgt.format {|word| "*#{word}*" })%>
<%= "text:" + (hlgt.format {|word| "*#{word}*" }).html_safe%>
<% end %>
</li>

View File

@@ -0,0 +1,3 @@
<%=link_to "reminder", daily_reminder_emails_path(params: {send: true}) %>
<hr>Subject: <b><%= @mail.subject %></b><br>
<%= raw(@mail.body) %>

View File

@@ -0,0 +1 @@
<%=link_to "reminder", daily_reminder_emails_path() %>

View File

@@ -2,3 +2,4 @@
<%= link_to fetprofile, {class: :linkbox} do %>
<%= render :partial=>"fetprofiles/compact", :locals=>{:fetprofile=>fetprofile} %>
<% end %>
<%= root_path() %>

View File

@@ -51,10 +51,11 @@ end
<%= @fetprofile.desc %>
</p>
<%= render partial: "interninfo", object: @fetprofile if can?(:seeintern, @fetprofile) %>
<ul>
<% @memberships.each do |m| %>
<li>
<%= link_to m.gremium do %> <%= render m %><% end %>
<%= 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>

View File

@@ -2,6 +2,8 @@
<p>
<%= link_to "user", users_path %>
</p>
<p><%= link_to "emails", emails_path %></p>
<% if Fetsite::Application.config.facebookconfig_enabled %>
<h2>Facebook Konfiguration</h2>
<p><%= link_to "Grant extra FB privileges", user_omniauth_authorize_path(:facebook,:params=>{scope:"manage_pages,publish_actions,email"}), :confirm=>"Wirklich?" %>

View File

@@ -0,0 +1,86 @@
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<%= stylesheet_link_tag "themes/"+theme_name+"/application", :media => "all" unless theme_name.empty? %>
<%= stylesheet_link_tag "application", :media=>"all" if theme_name.empty? %>
<%= javascript_include_tag "application" %>
<%= javascript_include_tag "jmpress" %>
</head>
<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=[] %>
<div class="media" style="width: 660px; height:340px; transform: scale(1.5) translate(120px,50px)" >
<div class="pull-left" href="#" style="max-width:200px;">
<% 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>
</div>
</div>
</div>
<% i = i+1 %>
<% end %>
</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 () {
$('#jmpress').jmpress({
duration: {
barPropertyStart: '0',
barSelector: '.ui-progressbar-value'
},
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);
});
</script>
</body>

View File

@@ -7,7 +7,9 @@
<%= link_to "Adressliste", internlist_fetprofiles_path ,class: :linkbox %></li>
<li> <%= link_to "Admin" , admin_home_index_path, class: :linkbox if current_user.has_role?(:fetadmin) %>
</li>
</ul>
<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 %>
</li></ul>
<ul class="unstyled linkbox-list">
<li>
<% @themengruppen.each do |themengruppe| %>

View File

@@ -7,11 +7,11 @@
<%= current_user.email %> is logged in.
</li>
<li><%= link_to('Logout', destroy_user_session_path, :method => :delete) %> </li>
<li><%= link_to('Logout', destroy_user_session_path, :method => :delete,:id => "login_link") %> </li>
</ul>
</li>
<% else %>
<li>
<%= link_to('Login', new_user_session_path) %>
<%= link_to('Login', new_user_session_path, id:"login_link") %>
</li>
<% end %>

View File

@@ -0,0 +1,10 @@
<h1>
<%= mail.title%>
</h1>
<%= content_tag(:img,"",src: "http://" + ActionMailer::Base.default_url_options[:host].to_s + mail.picture.big_thumb.url.to_s) %>
<%=url_for controller: "neuigkeiten",action: :show, :id=>mail.id, only_path: false %>
<%= raw(mail.text) %>
<% mail.questions.each do |q| %>
<%= render partial:"survey/questions/mail", object: q %>
<% end %>
<%= link_to "Auf Fet.at weiterlesen", rubrik_neuigkeit_url(mail.rubrik, mail,:locale=>:de, :theme=>nil) %>

View File

@@ -29,13 +29,18 @@
</div>
<% end %>
<div class="media">
<% unless @neuigkeit.picture_robust.big_thumb.to_s.empty? %>
<div class="pull-left" href="#">
<p><br><%= link_to image_tag(@neuigkeit.picture_robust.big_thumb.url),@neuigkeit.picture_robust.try(:url) %>
<div class="pull-left" href="#" style="width:200px">
<p><br>
<% unless @neuigkeit.picture_robust.big_thumb.to_s.empty? %><%= link_to image_tag(@neuigkeit.picture_robust.big_thumb.url),@neuigkeit.picture_robust.try(:url) %>
<% end %>
<%= f.input :picture, as: :uploader %>
<%= f.hidden_field :picture_cache %>
</p>
</div>
<% end %>
<div class="media-body">
<div class="media-body" style="border: dashed black thin">
<h1 itemprop="name" class="editable_simple" data-target="#neuigkeit_title">
<%= raw(@neuigkeit.title) %>
</h1>

View File

@@ -16,7 +16,7 @@
<% end %>
</div>
<% unless neuigkeit_view.published? %>
<div class="sticker sticker-red"> Not Published <%= link_to "Publish", publish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),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 %>
<% unless neuigkeit_view.origurl.nil? || neuigkeit_view.origurl.empty? %>
<div class="alert"><%= link_to "Zitiert von "+ neuigkeit_view.origurl, neuigkeit_view.origurl %>

View File

@@ -0,0 +1,5 @@
<%= link_to "send", mail_preview_rubrik_neuigkeit_path(@neuigkeit) %>
<%= raw(@mail.subject) %>
<hr />
<%= raw(@mail.body) %>

View File

@@ -0,0 +1,13 @@
<%= stylesheet_link_tag "http://"+ActionMailer::Base.default_url_options[:host].to_s + "/assets/themes/blue2/application.css", :media=>"all" %>
<% @calentries.each do |ce| %>
<% if can?(:show , ce.object) %>
<hr/>
<h1> <%= render partial: "calentries/mail", object: ce %>
</h1>
<%= render partial: "neuigkeiten/mail", object: ce.object if ce.object.kind_of?(Neuigkeit)%>
<% end %>
<% end %>
<hr/>

View File

@@ -4,7 +4,7 @@
<h1>
<%= @neuigkeit.title%>
</h1>
<%= content_tag(:img,"",src: "http://"+ActionMailer::Base.default_url_options[:host].to_s+@neuigkeit.picture.big_thumb.url) %>
<%= content_tag(:img,"",src: "http://"+ActionMailer::Base.default_url_options[:host].to_s+@neuigkeit.picture.big_thumb.url.to_s) %>
<%=url_for controller: "neuigkeiten",action: :show, :id=>@neuigkeit.id, only_path: false %>
<%= raw(@neuigkeit.text) %>
<% @neuigkeit.questions.each do |q| %>

View File

@@ -0,0 +1,77 @@
<%= 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

@@ -46,7 +46,7 @@
</div>
<div class="span5">
<ul class="unstyled linklist">
<ul class="unstyled linkbox-list">
<% @neuigkeiten.each do |n| %>
<li><%= render n if can?(:show, n) %> </li>
<% end %>

View File

@@ -3,7 +3,7 @@
<div class="row-fluid">
<div class="span6">
<div>
<ul class="linklist_block">
<ul class="linklist">
<li>
<%= link_to fa_icon("list")+"Adressliste", internlist_fetprofiles_path ,class: :linkbox %>
</li>
@@ -19,6 +19,10 @@
<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

View File

@@ -93,7 +93,7 @@
</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 %>
<% 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 %>
@@ -108,6 +108,7 @@
<% 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 %>

View File

@@ -1,57 +1,43 @@
<div class="toolbar-inline">
<%= link_to(fa_icon("edit"), edit_rubrik_neuigkeit_path( @neuigkeit.rubrik, @neuigkeit), remote: true , class: "btn", title: "Edit") if can? :edit, @neuigkeit
<%= link_to(fa_icon("edit"), edit_rubrik_neuigkeit_path( menu.rubrik, menu), remote: true , class: "btn", title: "Edit") if can? :edit, menu
%>
<span class="btn-group">
<%= link_to(fa_icon("paperclip"), "#", \
class: "btn", id: "attachments-form-open", title: "Attachments") \
if can? :edit, @neuigkeit
<%= link_to(fa_icon("paperclip"), "#", class: "btn", id: "attachments-form-open", title: "Attachments") if can? :edit, menu
%>
<%= link_to(fa_icon("calendar-o"), \
new_calentry_path(:object_id=>@neuigkeit.id, :object_type=>"Neuigkeit"), \
:remote=>true, class: :btn) \
if can? :edit, @neuigkeit
<%= link_to(fa_icon("calendar-o"), new_calentry_path(:object_id=>menu.id, :object_type=>"Neuigkeit"), :remote=>true, class: :btn) if can? :edit, menu
%>
<%= link_to(fa_icon("link") , "#", \
id: "findlink-open",title: "Neue Verknüpfung" , class: "btn") \
if can? :find_link, @neuigkeit
<%= link_to(fa_icon("link") , "#", id: "findlink-open",title: "Neue Verknüpfung" , class: "btn") if can? :find_link, menu
%>
</span>
<%= new_question_for(@neuigkeit, fa_icon("question")) if can? :new, Survey::Question %>
<%= new_question_for(menu, fa_icon("question")) if can? :new, Survey::Question %>
<span class=" pull-right">
<%= link_to(fa_icon("globe"), \
publish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit), \
title: I18n.t('neuigkeit.publish'), class: "btn") \
if can?(:publish, @neuigkeit) && !@neuigkeit.published?
<%= flag_link(menu, "important")%>
<%= flag_link(menu, "infoscreen")%>
<%= link_to(fa_icon("globe"), publish_rubrik_neuigkeit_path(menu.rubrik,menu), title: I18n.t('neuigkeit.publish'), class: "btn") if can?(:publish, menu) && !menu.published?
%>
<%= link_to (fa_stack("globe","ban"), \
unpublish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit), \
:remote=>true, class: "btn stacked") \
if can?(:unpublish, @neuigkeit) && @neuigkeit.published?
<%= link_to(fa_stack("globe","ban"), unpublish_rubrik_neuigkeit_path(menu.rubrik,menu), :remote=>true, class: "btn stacked") if can?(:unpublish, menu) && menu.published?
%>
<% if @neuigkeit.published? %>
<% if menu.published? %>
<div class="dropdown" style=" display:inline"">
<a class="dropdown-toggle btn" data-toggle="dropdown" title="publish" href="#">
<%= fa_icon("mail-forward")%><span class="caret"></span>
</a>
<ul class="dropdown-menu">
<%= li_tag(link_to(fa_icon("facebook-square") + " post on facebook", \
publish_to_facebook_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit))) \
if can?(:publish, @neuigkeit) && @neuigkeit.published?
<%= li_tag(link_to(fa_icon("facebook-square") + " post on facebook", publish_to_facebook_rubrik_neuigkeit_path(menu.rubrik,menu))) if can?(:publish, menu) && menu.published?
%>
<%= li_tag(link_to(fa_icon("envelope-o") + " send mail", \
mail_to_fet_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit))) \
if can?(:publish, @neuigkeit) && @neuigkeit.published?
<%= li_tag(link_to(fa_icon("envelope-o") + " send mail", mail_preview_rubrik_neuigkeit_path(menu.rubrik,menu))) if can?(:publish, menu) && menu.published?
%>
</ul>
</div>
<% end %>
</span>
<div class="ui-dialog" id="attachments-form">
<%= render_new_attachments_for(@neuigkeit, fa_icon("plus"), {class: "btn"}) %>
<%= render_new_attachments_for(menu, fa_icon("plus"), {class: "btn"}) %>
</div>
</div>
<script>

View File

@@ -1,11 +1,15 @@
<% 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() do %>
<%= render partial: "menu" %>
<% 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>
@@ -26,7 +30,7 @@
</div>
<% unless neuigkeit_view.published? %>
<div class="sticker sticker-red"> Not Published <%= link_to "Publish", publish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),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 %>
<% unless neuigkeit_view.origurl.nil? || neuigkeit_view.origurl.empty? %>
<div class="alert"><%= link_to "Zitiert von "+ neuigkeit_view.origurl, neuigkeit_view.origurl %>

View File

@@ -41,8 +41,9 @@
</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 %>
<%= render partial: 'neuigkeiten/nlink_list_whole', :object=>@neuigkeit.nlinks %>

View File

@@ -33,7 +33,7 @@
</td>
<td>
<%= semantic_fields_for "users[#{user.id}]", user do |f|%>
<%= f.input :fetprofile ,:label=>false , :as=>:select , :collection=>Fetprofile.all %>
<%= f.input :fetprofile ,:label=>false , :as=>:select , :collection=>Fetprofile.order(:vorname,:nachname) %>
<% end %>
</td>

View File

@@ -16,7 +16,7 @@ Fetsite::Application.configure do
# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method =:sendmail
config.action_mailer.default_url_options = {}#{:host=> "localhost", :port=>3000} # :host => 'glonass.htu.tuwien.ac.at' }
config.action_mailer.default_url_options = {:host=> "localhost", :port=>3000} # :host => 'glonass.htu.tuwien.ac.at' }
# Print deprecation notices to the Rails logger
config.active_support.deprecation = :log

View File

@@ -31,7 +31,7 @@ Fetsite::Application.configure do
# config.force_ssl = true
# See everything in the log (default is :info)
config.log_level = :debug
config.log_level = :info
# Prepend all log lines with the following tags
config.log_tags = [ :remote_ip , :uuid ]
@@ -66,6 +66,6 @@ Fetsite::Application.configure do
# with SQLite, MySQL, and PostgreSQL)
# config.active_record.auto_explain_threshold_in_seconds = 0.5
config.facebookconfig_enabled=true
config.facebookconfig_enabled=false
end

View File

@@ -1 +1 @@
Rails.application.config.assets.precompile += ['blueimp-gallery-all.js']
Rails.application.config.assets.precompile += ['blueimp-gallery-all.js', 'jmpress.js']

View File

@@ -0,0 +1,74 @@
# config/initializers/sunspot.rb
module Sunspot
#
# DataExtractors present an internal API for the indexer to use to extract
# field values from models for indexing. They must implement the #value_for
# method, which takes an object and returns the value extracted from it.
#
module DataExtractor #:nodoc: all
#
# AttributeExtractors extract data by simply calling a method on the block.
#
class AttributeExtractor
def initialize(attribute_name)
@attribute_name = attribute_name
end
def value_for(object)
Filter.new( object.send(@attribute_name) ).value
end
end
#
# BlockExtractors extract data by evaluating a block in the context of the
# object instance, or if the block takes an argument, by passing the object
# as the argument to the block. Either way, the return value of the block is
# the value returned by the extractor.
#
class BlockExtractor
def initialize(&block)
@block = block
end
def value_for(object)
Filter.new( Util.instance_eval_or_call(object, &@block) ).value
end
end
#
# Constant data extractors simply return the same value for every object.
#
class Constant
def initialize(value)
@value = value
end
def value_for(object)
Filter.new(@value).value
end
end
#
# A Filter to allow easy value cleaning
#
class Filter
def initialize(value)
@value = value
end
def value
strip_control_characters @value
end
def strip_control_characters(value)
return value unless value.is_a? String
value.chars.inject("") do |str, char|
unless char.ascii_only? and (char.ord < 32 or char.ord == 127)
str << char
end
str
end
end
end
end
end

View File

@@ -8,7 +8,20 @@
resources :comments, contstraints: {id: /[0-9]+/}, only: :show
## Inserted for testing tests
resources :members , controller: :fetprofiles , as: :fetprofiles do
collection do
get 'verwalten'
get 'internlist'
end
end
resources :gremien do
collection do
get 'verwalten'
end
end
#
# #-------------------------
namespace :survey do
resources :questions do
@@ -26,7 +39,12 @@
themes_for_rails
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
resources :home, :only=>[:index] do
end
end
resources :emails, :only=>[:index] do
collection do
get :daily_reminder
end
end
get ':locale', constraints: {locale: /en|de/}, action: :language,controller: :home, as: "language"
scope '(:locale)/admin' do
resources :users, :only=>[] do
@@ -35,6 +53,7 @@
post :all_update
end
member do
get :set_preferred_theme
get :fb_set_default_publish_page
end
end
@@ -60,6 +79,7 @@
scope '(t/:theme)' do
get "" , controller: :home, action: :index
get "intern" , controller: :home, action: :intern
get "infoscreen" , controller: :home, action: :infoscreen
get "beispielsammlung", to: redirect('/studien')
scope '(:ansicht)' do
resources :studien, :only=>[:new,:edit,:update,:destroy,:show] do
@@ -125,12 +145,12 @@
get 'verwalten'
end
end
resources :fetprofiles, as: :fetprofiles_bak do
collection do
get 'verwalten'
get 'internlist'
end
end
# resources :fetprofiles, as: :fetprofiles_bak do
# collection do
# get 'verwalten'
# get 'internlist'
# end
# end
resources :members , controller: :fetprofiles , as: :fetprofiles do
collection do
get 'verwalten'
@@ -165,7 +185,7 @@
get 'publish_to_facebook'
get 'mail_to_fet'
get 'mail_preview'
get 'flag'
end
collection do
get 'newsletter_preview'

45
config/unicorn.rb Normal file
View File

@@ -0,0 +1,45 @@
# config/unicorn.rb
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 5)
timeout 60
preload_app true
listen "/var/run/fetsite.sock"
stderr_path "/var/log/unicorn.log"
stdout_path "/var/log/unicorn.log"
before_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
Process.kill 'QUIT', Process.pid
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end
after_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
begin
uid, gid = Process.euid, Process.egid
user, group = 'fetsite', 'nogroup'
target_uid = Etc.getpwnam(user).uid
target_gid = Etc.getgrnam(group).gid
worker.tmp.chown(target_uid, target_gid)
if uid != target_uid || gid != target_gid
Process.initgroups(user, target_gid)
Process::GID.change_privilege(target_gid)
Process::UID.change_privilege(target_uid)
end
rescue => e
if RAILS_ENV == 'development'
STDERR.puts "couldn't change user, oh well"
else
raise e
end
end
end

View File

@@ -0,0 +1,7 @@
class AddInfoscreenToNeuigkeit < ActiveRecord::Migration
def change
add_column :neuigkeiten, :flag_infoscreen, :boolean, default: false
add_column :themen, :flag_infoscreen, :boolean, default: false
end
end

0
false Normal file
View File

View File

@@ -60,11 +60,17 @@
<fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="30"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="30"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
</analyzer>
</fieldType>
<!-- *** This fieldType is used by Sunspot! *** -->

View File

@@ -1,160 +1,185 @@
require 'spec_helper'
# This spec was generated by rspec-rails when you ran the scaffold generator.
# It demonstrates how one might use RSpec to specify the controller code that
# was generated by Rails when you ran the scaffold generator.
#
# It assumes that the implementation code is generated by the rails scaffold
# generator. If you are using any extension libraries to generate different
# controller code, this generated spec may or may not pass.
#
# It only uses APIs available in rails and/or rspec-rails. There are a number
# of tools you can use to make these specs even more expressive, but we're
# sticking to rails and rspec-rails APIs to keep things simple and stable.
#
# Compared to earlier versions of this generator, there is very limited use of
# stubs and message expectations in this spec. Stubs are only used when there
# is no simpler way to get a handle on the object needed for the example.
# Message expectations are only used when there is no simpler way to specify
# that an instance is receiving a specific message.
describe FetprofilesController, :type => :controller do
let(:valid_update_attributes) { {"vorname"=>"Neuer Vorname"} }
# let(:valid_session) { {locale: :de} }
describe FetprofilesController do
def self.create_fetprofile
before(:each) do
@fetprofile = FactoryGirl.create(:fetprofile)
end
end
def self.create_active_fetprofile
before(:each) do
@fetprofile = FactoryGirl.create(:fetprofile, active: true)
end
end
# This should return the minimal set of attributes required to create a valid
# Fetprofile. As you add validations to Fetprofile, be sure to
# adjust the attributes here as well.
let(:valid_attributes) { { "vorname" => "MyString" } }
# This should return the minimal set of values that should be in the session
# in order to pass any filters (e.g. authentication) defined in
# FetprofilesController. Be sure to keep this updated too.
let(:valid_session) { {} }
let(:object_variable) {:fetprofile}
let(:assigned_object_variable) {@fetprofile}
let(:object_class) {Fetprofile}
describe "GET index" do
it "assigns all fetprofiles as @fetprofiles" do
fetprofile = Fetprofile.create! valid_attributes
get :index, {}, valid_session
assigns(:fetprofiles).should eq([fetprofile])
end
create_active_fetprofile
subject(:action) { get :index, {} }
let(:object_variable) {:fetprofiles}
let(:assigned_object_variable) {[@fetprofile]}
it_behaves_like "it is success"
it_behaves_like "it assigns object"
end
describe "GET show" do
it "assigns the requested fetprofile as @fetprofile" do
fetprofile = Fetprofile.create! valid_attributes
get :show, {:id => fetprofile.to_param}, valid_session
assigns(:fetprofile).should eq(fetprofile)
end
create_fetprofile
subject(:action) { get :show, {:id => @fetprofile.to_param}}
it_behaves_like "it is success"
it_behaves_like "it assigns object"
it "renders the 'show' template" do
expect(action).to render_template("show")
end
it "assigns memberships" do
action
expect(assigns(:memberships)).to be_a(ActiveRecord::Relation)
end
end
describe "GET new" do
it "assigns a new fetprofile as @fetprofile" do
get :new, {}, valid_session
assigns(:fetprofile).should be_a_new(Fetprofile)
subject(:action) { get :new, {}}
describe "with fetuser" do
login_fet_user
it_behaves_like "it assigns new object"
it_behaves_like "it is success"
end
describe "without user" do
logout_user
it_behaves_like "it is restricted"
end
end
describe "GET edit" do
subject(:action) {get :edit, :id=>@fetprofile.to_param}
login_fet_user
create_fetprofile
it_behaves_like "it is success"
it_behaves_like "it assigns object"
it "assigns memberships" do
action
expect(assigns(:memberships)).to be_a(ActiveRecord::Relation)
end
it "assigns the requested fetprofile as @fetprofile" do
fetprofile = Fetprofile.create! valid_attributes
get :edit, {:id => fetprofile.to_param}, valid_session
assigns(:fetprofile).should eq(fetprofile)
expect{action}.to change {assigns(:fetprofile)}.to(@fetprofile)
# expect(assigns(:fetprofile)).to eq(@fetprofile)
end
describe "without user" do
logout_user
it_behaves_like "it is restricted"
end
end
describe "POST create" do
describe "with valid params" do
it "creates a new Fetprofile" do
expect {
post :create, {:fetprofile => valid_attributes}, valid_session
}.to change(Fetprofile, :count).by(1)
end
subject(:action){post :create, {:fetprofile => FactoryGirl.attributes_for(:fetprofile),:format=>:html}}
it "assigns a newly created fetprofile as @fetprofile" do
post :create, {:fetprofile => valid_attributes}, valid_session
assigns(:fetprofile).should be_a(Fetprofile)
assigns(:fetprofile).should be_persisted
login_fet_user
describe "with valid params" do
it "has a 302 status code" do
expect(action.status).to eq(302)
end
it "creates a new Fetprofile" do
expect{action}.to change(Fetprofile, :count).by(1)
end
it_behaves_like "it assigns persisted object"
it "assigns memberships" do
action
expect(assigns(:memberships)).to be_a(ActiveRecord::Relation)
end
it "redirects to the created fetprofile" do
post :create, {:fetprofile => valid_attributes}, valid_session
response.should redirect_to(Fetprofile.last)
expect(action).to redirect_to assigns(:fetprofile)
end
end
describe "with invalid params" do
it "assigns a newly created but unsaved fetprofile as @fetprofile" do
# Trigger the behavior that occurs when invalid params are submitted
Fetprofile.any_instance.stub(:save).and_return(false)
post :create, {:fetprofile => { "vorname" => "invalid value" }}, valid_session
assigns(:fetprofile).should be_a_new(Fetprofile)
has_invalid_params
it "assigns memberships" do
action
expect(assigns(:memberships)).to be_a(ActiveRecord::Relation)
end
it "assigns a newly created but unsaved fetprofile as @fetprofile" do
action
assigns(:fetprofile).should be_a_new(Fetprofile)
expect(assigns(:fetprofile)).not_to be_persisted
end
it "re-renders the 'new' template" do
# Trigger the behavior that occurs when invalid params are submitted
Fetprofile.any_instance.stub(:save).and_return(false)
post :create, {:fetprofile => { "vorname" => "invalid value" }}, valid_session
response.should render_template("new")
expect(action).to render_template("new")
end
end
describe "without user" do
logout_user
it_behaves_like "it is restricted"
end
end
describe "PUT update" do
describe "with valid params" do
it "updates the requested fetprofile" do
fetprofile = Fetprofile.create! valid_attributes
# Assuming there are no other fetprofiles in the database, this
# specifies that the Fetprofile created on the previous line
# receives the :update_attributes message with whatever params are
# submitted in the request.
Fetprofile.any_instance.should_receive(:update_attributes).with({ "vorname" => "MyString" })
put :update, {:id => fetprofile.to_param, :fetprofile => { "vorname" => "MyString" }}, valid_session
end
let(:action) { put :update, {:id => @fetprofile.to_param, :fetprofile => {"vorname"=>"neuerName"}} }
create_fetprofile
login_fet_user
it "assigns the requested fetprofile as @fetprofile" do
fetprofile = Fetprofile.create! valid_attributes
put :update, {:id => fetprofile.to_param, :fetprofile => valid_attributes}, valid_session
assigns(:fetprofile).should eq(fetprofile)
describe "with valid params" do
it_behaves_like "it assigns object"
it "updates the requested fetprofile" do
expect { action }.to change{Fetprofile.find(@fetprofile.id).vorname}.to("neuerName")
end
it_behaves_like "it assigns persisted object"
it "redirects to the fetprofile" do
fetprofile = Fetprofile.create! valid_attributes
put :update, {:id => fetprofile.to_param, :fetprofile => valid_attributes}, valid_session
response.should redirect_to(fetprofile)
expect(action).to redirect_to(@fetprofile)
end
end
describe "with invalid params" do
it "assigns the fetprofile as @fetprofile" do
fetprofile = Fetprofile.create! valid_attributes
# Trigger the behavior that occurs when invalid params are submitted
Fetprofile.any_instance.stub(:save).and_return(false)
put :update, {:id => fetprofile.to_param, :fetprofile => { "vorname" => "invalid value" }}, valid_session
assigns(:fetprofile).should eq(fetprofile)
end
has_invalid_params
it_behaves_like "it assigns object"
it "re-renders the 'edit' template" do
fetprofile = Fetprofile.create! valid_attributes
# Trigger the behavior that occurs when invalid params are submitted
Fetprofile.any_instance.stub(:save).and_return(false)
put :update, {:id => fetprofile.to_param, :fetprofile => { "vorname" => "invalid value" }}, valid_session
response.should render_template("edit")
expect(action).to render_template("edit")
end
end
describe "without user" do
logout_user
it_behaves_like "it is restricted"
end
end
describe "DELETE destroy" do
login_fet_user
create_fetprofile
subject(:action) { delete :destroy, {:id => @fetprofile.to_param}}
it "destroys the requested fetprofile" do
fetprofile = Fetprofile.create! valid_attributes
expect {
delete :destroy, {:id => fetprofile.to_param}, valid_session
action
}.to change(Fetprofile, :count).by(-1)
end
it "redirects to the fetprofiles list" do
fetprofile = Fetprofile.create! valid_attributes
delete :destroy, {:id => fetprofile.to_param}, valid_session
action
response.should redirect_to(fetprofiles_url)
end
describe "without user" do
logout_user
it_behaves_like "it is restricted"
end
end
end

View File

@@ -1,160 +1,179 @@
require 'spec_helper'
# This spec was generated by rspec-rails when you ran the scaffold generator.
# It demonstrates how one might use RSpec to specify the controller code that
# was generated by Rails when you ran the scaffold generator.
#
# It assumes that the implementation code is generated by the rails scaffold
# generator. If you are using any extension libraries to generate different
# controller code, this generated spec may or may not pass.
#
# It only uses APIs available in rails and/or rspec-rails. There are a number
# of tools you can use to make these specs even more expressive, but we're
# sticking to rails and rspec-rails APIs to keep things simple and stable.
#
# Compared to earlier versions of this generator, there is very limited use of
# stubs and message expectations in this spec. Stubs are only used when there
# is no simpler way to get a handle on the object needed for the example.
# Message expectations are only used when there is no simpler way to specify
# that an instance is receiving a specific message.
describe GremienController, :type => :controller do
let(:valid_update_attributes) { {"name"=>"NeuesGremium"} }
# let(:valid_session) { {locale: :de} }
describe GremienController do
def self.create_gremium
before(:each) do
@gremium = FactoryGirl.create(:gremium)
end
end
# def self.create_active_gremium
# before(:each) do
# @gremium = FactoryGirl.create(:gremium, active: true)
# end
# end
# This should return the minimal set of attributes required to create a valid
# Gremium. As you add validations to Gremium, be sure to
# adjust the attributes here as well.
let(:valid_attributes) { { "name" => "MyString" } }
# This should return the minimal set of values that should be in the session
# in order to pass any filters (e.g. authentication) defined in
# GremienController. Be sure to keep this updated too.
let(:valid_session) { {} }
let(:object_variable) {:gremium}
let(:assigned_object_variable) {@gremium}
let(:object_class) {Gremium}
describe "GET index" do
it "assigns all gremien as @gremien" do
gremium = Gremium.create! valid_attributes
get :index, {}, valid_session
assigns(:gremien).should eq([gremium])
end
create_gremium
subject(:action) { get :index, {} }
let(:object_variable) {:gremien}
let(:assigned_object_variable) {[@gremium]}
it_behaves_like "it is success"
it_behaves_like "it assigns object"
end
describe "GET show" do
it "assigns the requested gremium as @gremium" do
gremium = Gremium.create! valid_attributes
get :show, {:id => gremium.to_param}, valid_session
assigns(:gremium).should eq(gremium)
end
create_gremium
subject(:action) { get :show, {:id => @gremium.to_param}}
it_behaves_like "it is success"
it_behaves_like "it assigns object"
it "renders the 'show' template" do
expect(action).to render_template("show")
end
it "assigns memberships" do
action
expect(assigns(:memberships)).to be_a(ActiveRecord::Relation)
end
end
describe "GET new" do
it "assigns a new gremium as @gremium" do
get :new, {}, valid_session
assigns(:gremium).should be_a_new(Gremium)
subject(:action) { get :new, {}}
describe "with fetuser" do
login_fet_user
it_behaves_like "it assigns new object"
it_behaves_like "it is success"
end
describe "without user" do
logout_user
it_behaves_like "it is restricted"
end
end
describe "GET edit" do
subject(:action) {get :edit, :id=>@gremium.to_param}
login_fet_user
create_gremium
it_behaves_like "it is success"
it_behaves_like "it assigns object"
it "assigns memberships" do
action
expect(assigns(:memberships)).to be_a(ActiveRecord::Relation)
end
it "assigns the requested gremium as @gremium" do
gremium = Gremium.create! valid_attributes
get :edit, {:id => gremium.to_param}, valid_session
assigns(:gremium).should eq(gremium)
expect{action}.to change {assigns(:gremium)}.to(@gremium)
# expect(assigns(:gremium)).to eq(@gremium)
end
describe "without user" do
logout_user
it_behaves_like "it is restricted"
end
end
describe "POST create" do
describe "with valid params" do
it "creates a new Gremium" do
expect {
post :create, {:gremium => valid_attributes}, valid_session
}.to change(Gremium, :count).by(1)
end
subject(:action){post :create, {:gremium => FactoryGirl.attributes_for(:gremium),:format=>:html}}
it "assigns a newly created gremium as @gremium" do
post :create, {:gremium => valid_attributes}, valid_session
assigns(:gremium).should be_a(Gremium)
assigns(:gremium).should be_persisted
login_fet_user
describe "with valid params" do
it "has a 302 status code" do
expect(action.status).to eq(302)
end
it "creates a new Gremium" do
expect{action}.to change(Gremium, :count).by(1)
end
it_behaves_like "it assigns persisted object"
it "redirects to the created gremium" do
post :create, {:gremium => valid_attributes}, valid_session
response.should redirect_to(Gremium.last)
expect(action).to redirect_to assigns(:gremium)
end
end
describe "with invalid params" do
it "assigns a newly created but unsaved gremium as @gremium" do
# Trigger the behavior that occurs when invalid params are submitted
Gremium.any_instance.stub(:save).and_return(false)
post :create, {:gremium => { "name" => "invalid value" }}, valid_session
assigns(:gremium).should be_a_new(Gremium)
end
has_invalid_params
it "assigns a newly created but unsaved gremium as @gremium" do
action
assigns(:gremium).should be_a_new(Gremium)
expect(assigns(:gremium)).not_to be_persisted
end
it "re-renders the 'new' template" do
# Trigger the behavior that occurs when invalid params are submitted
Gremium.any_instance.stub(:save).and_return(false)
post :create, {:gremium => { "name" => "invalid value" }}, valid_session
response.should render_template("new")
expect(action).to render_template("new")
end
end
describe "without user" do
logout_user
it_behaves_like "it is restricted"
end
end
describe "PUT update" do
describe "with valid params" do
it "updates the requested gremium" do
gremium = Gremium.create! valid_attributes
# Assuming there are no other gremien in the database, this
# specifies that the Gremium created on the previous line
# receives the :update_attributes message with whatever params are
# submitted in the request.
Gremium.any_instance.should_receive(:update_attributes).with({ "name" => "MyString" })
put :update, {:id => gremium.to_param, :gremium => { "name" => "MyString" }}, valid_session
end
let(:action) { put :update, {:id => @gremium.to_param, :gremium => {"name"=>"neuerName"}} }
create_gremium
login_fet_user
it "assigns the requested gremium as @gremium" do
gremium = Gremium.create! valid_attributes
put :update, {:id => gremium.to_param, :gremium => valid_attributes}, valid_session
assigns(:gremium).should eq(gremium)
describe "with valid params" do
it_behaves_like "it assigns object"
it "updates the requested gremium" do
expect { action }.to change{Gremium.find(@gremium.id).name}.to("neuerName")
end
it_behaves_like "it assigns persisted object"
it "redirects to the gremium" do
gremium = Gremium.create! valid_attributes
put :update, {:id => gremium.to_param, :gremium => valid_attributes}, valid_session
response.should redirect_to(gremium)
expect(action).to redirect_to(@gremium)
end
end
describe "with invalid params" do
it "assigns the gremium as @gremium" do
gremium = Gremium.create! valid_attributes
# Trigger the behavior that occurs when invalid params are submitted
Gremium.any_instance.stub(:save).and_return(false)
put :update, {:id => gremium.to_param, :gremium => { "name" => "invalid value" }}, valid_session
assigns(:gremium).should eq(gremium)
end
has_invalid_params
it_behaves_like "it assigns object"
it "re-renders the 'edit' template" do
gremium = Gremium.create! valid_attributes
# Trigger the behavior that occurs when invalid params are submitted
Gremium.any_instance.stub(:save).and_return(false)
put :update, {:id => gremium.to_param, :gremium => { "name" => "invalid value" }}, valid_session
response.should render_template("edit")
expect(action).to render_template("edit")
end
end
describe "without user" do
logout_user
it_behaves_like "it is restricted"
end
end
describe "DELETE destroy" do
login_fet_user
create_gremium
subject(:action) { delete :destroy, {:id => @gremium.to_param}}
it "destroys the requested gremium" do
gremium = Gremium.create! valid_attributes
expect {
delete :destroy, {:id => gremium.to_param}, valid_session
action
}.to change(Gremium, :count).by(-1)
end
it "redirects to the gremien list" do
gremium = Gremium.create! valid_attributes
delete :destroy, {:id => gremium.to_param}, valid_session
action
response.should redirect_to(gremien_url)
end
describe "without user" do
logout_user
it_behaves_like "it is restricted"
end
end
end

View File

@@ -0,0 +1,42 @@
shared_examples "it is success" do
it "has a 200 status code" do
action
expect(response.status).to eq(200)
end
it "is success" do
action
expect(response).to be_success
end
end
shared_examples "it assigns object" do
it "assigns object variable" do
action
expect(assigns(object_variable)).to eq(assigned_object_variable)
end
end
shared_examples "it assigns new object" do
it "assigns new object" do
action
expect(assigns(object_variable)).to be_a_new(object_class)
expect(assigns(object_variable)).not_to be_persisted
end
end
shared_examples "it assigns persisted object" do
it "assigns new object" do
action
expect(assigns(object_variable)).to be_a(object_class)
expect(assigns(object_variable)).to be_persisted
end
end
shared_examples "it is restricted" do
it "is expected to raise error" do
bypass_rescue
expect { action }.to raise_error(CanCan::AccessDenied)
end
it "is not success" do
action
expect(response).not_to be_success
end
end

View File

@@ -3,5 +3,7 @@
FactoryGirl.define do
factory :attachment do
name "MyString"
datei { Rack::Test::UploadedFile.new(File.join(Rails.root,'public','fetlogo.png'))}
flag_titlepic false
end
end

View File

@@ -2,5 +2,9 @@
FactoryGirl.define do
factory :beispiel do
name "BSP1"
desc "sdf"
datum Date.today
beispieldatei { Rack::Test::UploadedFile.new(File.join(Rails.root,'public','fetlogo.png'))}
end
end

View File

@@ -9,5 +9,23 @@ FactoryGirl.define do
desc "MyText"
picture "MyString"
active false
birth_month 4
birth_day 2
factory :fetprofile2 do
vorname "Sarah"
nachname "Nachname2"
short "j"
end
factory :fetprofile3 do
vorname "Thomas"
nachname "Mustermann"
end
factory :fetprofile_withadress do
street "some street"
plz "1231"
city "vienna"
telnr "sdf tel nummer"
hdynr "sdf hdy nummer"
end
end
end

View File

@@ -1,9 +1,11 @@
# -*- coding: utf-8 -*-
# Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do
factory :gremium do
name "MyString"
desc "MyText"
typ "MyString"
end
name "Kommission"
desc "Das ist eine Kommission die sich mit irgendwas beschäftigt"
typ 1
end
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -2,5 +2,13 @@
FactoryGirl.define do
factory :lva do
name "Vorlesung 1"
desc "Das ist eine Vorlesung"
lvanr "001.002"
ects 3
stunden 2
pruefungsinformation "sdf"
lernaufwand "sdf"
typ 'VO'
end
end

View File

@@ -2,10 +2,11 @@
FactoryGirl.define do
factory :membership do
fetprofile_id "MyString"
gremium_id "MyString"
gremium_id 1
fetprofile_id 1
start "2013-08-19"
stop "2013-08-19"
typ "MyString"
stop "2013-08-23"
typ 1
end
end

View File

@@ -1,6 +1,7 @@
# Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do
factory :modul do
name ""
factory :other_modul do

View File

@@ -0,0 +1,7 @@
FactoryGirl.define do
factory :neuigkeit do
title "WIChtige Neuigkeit"
text "<p> Das ist eine wichtige Information </p>"
datum 1.days.ago
end
end

6
spec/factories/rubrik.rb Normal file
View File

@@ -0,0 +1,6 @@
FactoryGirl.define do
factory :rubrik do
name "Allgemeine"
desc "Allgemeine Test News"
end
end

11
spec/factories/users.rb Normal file
View File

@@ -0,0 +1,11 @@
FactoryGirl.define do
factory :user do
email "testuser@test.at"
password "password"
password_confirmation "password"
factory :other_user do
email "othertest@test.at"
end
end
end

View File

@@ -0,0 +1,36 @@
require 'spec_helper'
Capybara.add_selector(:href) do
xpath {|href| XPath.descendant[XPath.attr(:href).contains(href)] }
end
feature 'Administration', :type=> :feature do
let!(:user) {FactoryGirl.create(:user)}
let!(:rubrik) {FactoryGirl.create(:rubrik)}
let!(:themengruppe){ FactoryGirl.create(:themengruppe) }
let!(:studium) {FactoryGirl.create(:studium,:visible=>true)}
before(:each) do
FactoryGirl.create(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id)
FactoryGirl.create(:thema, id: t=YAML.load_file("#{::Rails.root.to_s}/config/start_topic.yml").to_i, themengruppe_id: themengruppe.id)
studium.id
end
def sign_in
visit '/'
user.add_role(:fetadmin)
find(:href, "sign_in").click
fill_in 'user_email', with: user.email
fill_in 'user_password', with:"password"
click_button 'Sign in'
end
scenario 'change preferred theme' do
sign_in
visit "/admin/users/#{user.id}/set_preferred_theme?theme=blue2"
expect(User.find(user.id).preferredtheme).to eq("blue2")
visit "/admin/users/#{user.id}/set_preferred_theme?theme=blue1"
expect(User.find(user.id).preferredtheme).to eq("blue1")
end
end

View File

@@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
require 'spec_helper'
Capybara.add_selector(:href) do
xpath {|href| XPath.descendant[XPath.attr(:href).contains(href)] }
end
feature 'Beispielsammlung', :type=>:feature do
let!(:rubrik) {FactoryGirl.create(:rubrik)}
let!(:user) {FactoryGirl.create(:user)}
let!(:themengruppe){ FactoryGirl.create(:themengruppe) }
let!(:studium) {FactoryGirl.create(:studium,:visible=>true)}
before(:each) do
FactoryGirl.create(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id)
FactoryGirl.create(:thema, id: t=YAML.load_file("#{::Rails.root.to_s}/config/start_topic.yml").to_i, themengruppe_id: themengruppe.id)
studium.id
end
scenario 'login' do
user.add_role(:fetuser)
visit '/'
find(:href, "sign_in").click
fill_in 'user_email', with: user.email
fill_in 'user_password', with:"password"
click_button 'Sign in'
click_link 'Startseite'
end
def sign_in
visit '/'
user.add_role(:fetadmin)
find(:href, "sign_in").click
fill_in 'user_email', with: user.email
fill_in 'user_password', with:"password"
click_button 'Sign in'
end
scenario 'anonym user visits beispielsammlung' do
# sign_in
visit "/"
click_link 'Beispielsammlung'
expect(page).to have_text(studium.title)
# expect(page).to have_tag("link to lva")
# click_link 'LVA1'
# expect(page).to have_text(beispiel.name)
end
scenario 'load something up' do
visit "/"
click_link 'Beispiel hinzufügen'
page.attach_file('beispiel[beispieldatei]', Rails.root + 'spec/factories/logo2014_64.png')
click_button "Create Beispiel"
# find(:href,"/beispiele/new").click
end
end

View File

@@ -1,5 +1,33 @@
require "spec_helper"
describe NewsMailer do
include Rails.application.routes.url_helpers
pending "add some examples to (or delete) #{__FILE__}"
describe 'neuigkeit_mail' do
before(:each) do
rubrik = FactoryGirl.create(:rubrik)
@neuigkeit=FactoryGirl.create(:neuigkeit, author_id: user.id, rubrik_id: rubrik.id)
NewsMailer.stub(:default_url_options).and_return({host:"localhost", port: 3000})
end
let(:user) {User.first || FactoryGirl.create(:user)}
let(:email) {"test@mail.com"}
let(:neuigkeit) {@neuigkeit}
let(:mail) {NewsMailer.neuigkeit_mail(email.to_s, neuigkeit.id)}
it "renders neuigkeit title" do
expect(mail.body.to_s).to match(/#{@neuigkeit.title}/)
end
it "renders neuigkeit expect" do
expect(mail.body.to_s).to match(/#{@neuigkeit.text}/)
end
it "is sent to current user" do
expect(mail.to).to eq([user.email])
end
it "links to web page" do
expect(mail.body.to_s).to match(/#{neuigkeit_url(@neuigkeit, locale: nil, theme: nil, host:"localhost", port: 3000)}/)
end
end
end

View File

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

View File

@@ -1,5 +1,59 @@
require 'spec_helper'
describe Beispiel do
pending "add some examples to (or delete) #{__FILE__}"
describe Beispiel, :type=>:model do
let_studium_lva
# before(:each) do
# s=FactoryGirl.create(:studium)
# mg=FactoryGirl.create(:modulgruppe, studium_id: s.id)#
# m=FactoryGirl.build(:other_modul)
# m.modulgruppen << mg
# m.save!
# @l=FactoryGirl.build(:lva)
# @l.modul << m
# @l.save!
# end
let(:lva){FactoryGirl.build_stubbed(:lva)}
let(:beispiel){FactoryGirl.build(:beispiel, lva: lva)}
it "should be created" do
expect{beispiel.save!; Sunspot.commit}.to change{Beispiel.count}.by(1)
end
it "is not valid without lva" do
b=FactoryGirl.build(:beispiel)
expect(b.valid?).to be false
end
it "responds to comments" do
expect(beispiel.respond_to?(:comments)).to be true
end
it "responds to get_flag" do
expect(beispiel.respond_to?(:get_flag)).to be true
end
[:delete, :goodquality, :badquality].each do |flg|
it " has default false for flag #{flg}" do
b=beispiel
expect(b.respond_to?(:get_flag)).to be true
expect(b.get_flag(flg)).to be false
end
it "responds to flag setter #{flg}" do
expect(beispiel.respond_to?("flag_#{flg.to_s}".to_sym)).to be true
end
end
it "should be in not_flag beispiele" do
beispiel.save!
bsp= Beispiel.not_flag_delete
expect(bsp).to include beispiel
end
it "should not be in not_flag" do
beispiel.save!
bsp= Beispiel.not_flag_delete
expect{beispiel.flag_delete=true; beispiel.save!}.to change{ Beispiel.not_flag_delete.count }.by(-1)
expect{beispiel.flag_delete=nil; beispiel.save!}.to change{ Beispiel.not_flag_delete.count }.by(1)
end
end

View File

@@ -1,20 +1,57 @@
require 'spec_helper'
describe Calentry do
it "should be valid with full data" do
e = FactoryGirl.build(:calentry)
c = FactoryGirl.create(:calendar)
e.calendars<<c
e.should be_valid
let(:rubrik) {FactoryGirl.create(:rubrik)}
let(:user) {FactoryGirl.create(:user)}
let(:calendar) {FactoryGirl.create(:calendar,updated_at: 1.hour.ago)}
let(:neuigkeit) {FactoryGirl.create(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id, updated_at: 1.hour.ago)}
subject(:calentry) {FactoryGirl.build(:calentry, calendar_id: calendar.id, object_type: "Neuigkeit",object_id: neuigkeit.id)}
it "is valid with full data" do
expect(calentry).to be_valid
end
[:ende,:start,:typ].each do |attr|
it "is not valid without #{attr}" do
e= FactoryGirl.build(:calentry, calendar_id: calendar.id, object_type: "Neuigkeit",object_id: neuigkeit.id, attr => nil)
expect(e).not_to be_valid
expect(e).to have_at_least(1).errors_on(attr)
end
end
[:ende,:start,:typ].each do |attr|
it "should not be valid without #{attr}" do
e= FactoryGirl.build(:calentry, attr => nil)
c=FactoryGirl.create(:calendar)
e.calendars<<c
e.should_not be_valid
e.should have_at_least(1).errors_on(attr)
end
end
it "updates updated_at of neuigekit" do
expect {calentry.dauer+=1.hour;calentry.save}.to change{calentry.object.updated_at}
end
it "updates updated_at of calendar" do
expect {calentry.dauer+=1.hour;calentry.save}.to change{calentry.calendar.updated_at}
end
it "changes ende with dauer" do
expect {calentry.dauer=7}.to change(calentry,:ende).to(calentry.start+7.hours)
end
it "changes dauer with ende" do
expect {calentry.ende=calentry.start+7.hours}.to change(calentry,:dauer).to(7)
end
it "sets is upcomming" do
calentry.start=1.hour.from_now
calentry.dauer=2
expect(calentry.is_upcomming?).to be true
expect(calentry.is_past?).to be false
expect(calentry.is_ongoing?).to be false
calentry.start=1.hour.ago
calentry.dauer=2
expect(calentry.is_upcomming?).to be false
expect(calentry.is_past?).to be false
expect(calentry.is_ongoing?).to be true
calentry.start=4.hour.ago
calentry.dauer=2
expect(calentry.is_upcomming?).to be false
expect(calentry.is_past?).to be true
expect(calentry.is_ongoing?).to be false
end
end

View File

@@ -1,5 +1,5 @@
require 'rails_helper'
require 'spec_helper'
RSpec.describe Crawlobject, :type => :model do
RSpec.describe Crawlobject do
pending "add some examples to (or delete) #{__FILE__}"
end

View File

@@ -1,4 +1,4 @@
require 'rails_helper'
require 'spec_helper'
RSpec.describe Document, :type => :model do
pending "add some examples to (or delete) #{__FILE__}"

View File

@@ -1,5 +1,30 @@
require 'spec_helper'
describe Fetprofile do
pending "add some examples to (or delete) #{__FILE__}"
[:vorname,:nachname].each do |attr|
it "should not be valid without #{attr}" do
fp = FactoryGirl.build(:fetprofile)
fp.send("#{attr}=".to_sym,nil)
fp.should_not be_valid
end
end
it "should be created" do
fp=Fetprofile.new(FactoryGirl.attributes_for(:fetprofile))
expect(fp.save).to be true
end
it "should be valid" do
fp = FactoryGirl.build(:fetprofile)
fp.should be_valid
end
it "should not be valid with short name" do
fp = FactoryGirl.build(:fetprofile)
fp.nachname ="S"
fp.should_not be_valid
fp.vorname ="d"
fp.should_not be_valid
end
pending "have memberships"
pending "be associated to gremien"
end

View File

@@ -1,5 +1,42 @@
require 'spec_helper'
describe Gremium do
pending "add some examples to (or delete) #{__FILE__}"
it "can be created" do
g=FactoryGirl.build(:gremium)
expect(g.save).to be true
end
it "is valid with all attributes" do
g = FactoryGirl.build(:gremium)
g.should be_valid
end
[:name,:typ].each do |attr|
it "should not be valid without #{attr}" do
g = FactoryGirl.build(:gremium)
g.send("#{attr}=".to_sym,nil)
expect(g).not_to be_valid
expect(g.errors[attr]).to have_at_least(1).items
end
end
it "is in tabs if typ is 1 or 3" do
g = FactoryGirl.create(:gremium, typ: 1)
expect(Gremium.tabs).to eq([g])
end
it "is not in tabs if typ is not 1 or 3" do
g = FactoryGirl.create(:gremium, typ: 2)
expect(Gremium.tabs).to eq([])
end
it "destroys memberships if its destroyed" do
g=FactoryGirl.create(:gremium)
fp=FactoryGirl.create(:fetprofile)
m=FactoryGirl.create(:membership, gremium_id: g.id, fetprofile_id: fp.id)
expect{g.destroy}.to change {Membership.count}.by(-1)
end
it "responds to title" do
g=FactoryGirl.build(:gremium)
expect(g.respond_to?(:title)).to be true
end
end

View File

@@ -1,4 +1,4 @@
require 'rails_helper'
require 'spec_helper'
RSpec.describe Key, :type => :model do
pending "add some examples to (or delete) #{__FILE__}"

View File

@@ -1,5 +1,28 @@
require 'spec_helper'
describe Lva do
describe Lva, :type=>:model do
pending "add some examples to (or delete) #{__FILE__}"
let_studium_lva
before(:each) do
@l = FactoryGirl.build(:lva)
end
describe "if bare" do
let(:lva) {FactoryGirl.build(:lva)}
it "should be created" do
l=lva
l.modul << modul
expect{l.save!; Sunspot.commit}.to change{Lva.count}.by(1)
end
it "should not be valid without module" do
l=lva
expect(l.valid?).to be false
expect(l.errors[:modul].size).to be(1)
end
end
it "should respond to semesters" do
expect(lva.respond_to?(:semester)).to be true
end
pending "should not be valid without modul"
pending "should have beispiele"
pending "should be flagable"
end

View File

@@ -1,4 +1,4 @@
require 'rails_helper'
require 'spec_helper'
RSpec.describe Meeting, :type => :model do
pending "add some examples to (or delete) #{__FILE__}"

View File

@@ -1,4 +1,4 @@
require 'rails_helper'
require 'spec_helper'
RSpec.describe Meetingtyp, :type => :model do
pending "add some examples to (or delete) #{__FILE__}"

View File

@@ -1,14 +1,16 @@
require 'spec_helper'
describe Modul do
it "should not be valid without name" do
m = FactoryGirl.build(:modul)
m.should_not be_valid
m.should have(1).errors_on(:name)
[:name].each do |attr|
it "should not be valid without #{attr}" do
modul = FactoryGirl.build(:modul)
modul.send("#{attr}=".to_sym,nil)
expect(modul).not_to be_valid
expect(modul).to have_at_least(1).errors_on(attr)
end
end
it "should be valid with name" do
it "is valid with everything" do
m = FactoryGirl.build(:modul)
m.name = "Grundlagen"
m.should be_valid
expect(m).to be_valid
end
end

View File

@@ -1,6 +1,6 @@
require 'spec_helper'
describe Modulgruppe do
describe Modulgruppe, :type =>:model do
it "should not be valid without studium" do
mg=FactoryGirl.build(:modulgruppe)
mg.should_not be_valid
@@ -42,5 +42,7 @@ describe Modulgruppe do
mg.should be_valid
end
pending "add some examples to (or delete) #{__FILE__}"
pending "DRY #{__FILE__}"
end

View File

@@ -0,0 +1,45 @@
require 'spec_helper'
describe Neuigkeit do
let(:rubrik) {FactoryGirl.create(:rubrik)}
let(:user) {FactoryGirl.create(:user)}
let(:neuigkeit) {(FactoryGirl.build(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id))}
let(:attachment) {FactoryGirl.build_stubbed(:attachment)}
[:title,:text, :rubrik, :author].each do |attr|
it "should not be valid without #{attr}" do
neuigkeit.send("#{attr}=".to_sym,nil)
expect(neuigkeit).not_to be_valid
expect(neuigkeit.errors[attr]).to have_at_least(1).items
end
end
it "should be created" do
expect(neuigkeit).to be_valid
expect(neuigkeit.save).to be true
end
it "should be valid" do
fp = FactoryGirl.build(:neuigkeit, rubrik_id: rubrik.id, author_id: user.id)
expect(fp).to be_valid
end
it "responds to attachments" do
expect(neuigkeit.respond_to?(:attachments)).to be true
end
it "uses titlepic attachments as picture" do
expect(neuigkeit.respond_to?(:picture_robust)).to be true
attachment.flag_titlepic = true
expect { neuigkeit.attachments << attachment }.to change {neuigkeit.picture_robust}
end
it "is an event if it has a calentry" do
expect(neuigkeit.event?).to be false
expect{neuigkeit.calentries << calentry}.to change(neuigkeit, :event?)
end
pending "has questions"
pending "has nlinks"
pending "has calentries"
pending "can be an event"
pending "is published by date"
pending "has meeting"
pending "is shareable"
end

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