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

34
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"
@@ -125,3 +135,5 @@ gem 'blueimp-gallery'
gem 'blueimp-gallery-rails'
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

@@ -8,70 +8,89 @@
*
* 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 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 'tinymce'
* 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;
// background: url('../../../../header1.png') no-repeat;
// background-color:white;// $color_prim;
// background-position: right;
vertical-align:middle;
float:left;
color:#000;
padding-left:87px;
padding-top:0px;
overflow:hidden;
margin-bottom: 20px
overflow:visible;
height:45px;
margin-bottom: 0 px
}
div.header h1 {
padding:0;
@@ -79,71 +98,26 @@ 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,7 +9,6 @@ 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

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
@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,15 +1,15 @@
# -*- 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)
@@ -17,7 +17,28 @@ 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

@@ -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

@@ -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>") })%>
<%= ("<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

@@ -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,6 +39,11 @@
themes_for_rails
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
resources :home, :only=>[:index] do
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
@@ -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)
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
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)
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
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
subject(:action){post :create, {:fetprofile => FactoryGirl.attributes_for(:fetprofile),:format=>:html}}
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 {
post :create, {:fetprofile => valid_attributes}, valid_session
}.to change(Fetprofile, :count).by(1)
expect{action}.to change(Fetprofile, :count).by(1)
end
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
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"}} }
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)
create_fetprofile
login_fet_user
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)
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
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)
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
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
subject(:action){post :create, {:gremium => FactoryGirl.attributes_for(:gremium),:format=>:html}}
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 {
post :create, {:gremium => valid_attributes}, valid_session
}.to change(Gremium, :count).by(1)
expect{action}.to change(Gremium, :count).by(1)
end
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
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
has_invalid_params
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
action
assigns(:gremium).should be_a_new(Gremium)
expect(assigns(:gremium)).not_to be_persisted
end
it "re-renders the 'new' template" do
expect(action).to render_template("new")
end
end
describe "without user" do
logout_user
it_behaves_like "it is restricted"
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")
end
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"}} }
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)
create_gremium
login_fet_user
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"
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 "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)
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
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
[: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 "is valid with everything" do
m = FactoryGirl.build(:modul)
m.should_not be_valid
m.should have(1).errors_on(:name)
end
it "should be valid with name" 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

6
spec/models/news.rb Normal file
View File

@@ -0,0 +1,6 @@
require 'models/neuigkeit_spec.rb'
require 'models/rubrik_spec.rb'
require 'models/attachment_spec.rb'
require 'models/calentry_spec.rb'
require 'models/calendar_spec.rb'
require 'models/nlink_spec.rb'

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