From 94d07b054f289bb05815205d6c397c93e8468a2f Mon Sep 17 00:00:00 2001 From: Matthias Radscheit Date: Thu, 9 Feb 2017 13:38:58 +0100 Subject: [PATCH 01/18] UIiiiii (#588) --- app/views/devise/registrations/edit.html.erb | 201 ++++++++++--------- 1 file changed, 103 insertions(+), 98 deletions(-) diff --git a/app/views/devise/registrations/edit.html.erb b/app/views/devise/registrations/edit.html.erb index 9a9a4e54..6e072353 100644 --- a/app/views/devise/registrations/edit.html.erb +++ b/app/views/devise/registrations/edit.html.erb @@ -1,108 +1,113 @@ <%= render partial: "shared/error_message_detailed", locals: {entity: resource} %> -
-
-

<%= t('.title', :resource => Profile.model_name.human , :default => "Edit #{resource_name.to_s.humanize}") %>

-
-
- <% if @user.profile.present? %> - <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :namespace => 'profile', :html => { :method => :put, :class => 'form-horizontal' }) do |f| %> - <%= render partial: "shared/error_message_detailed", locals: {entity: resource.profile} %> - <%= f.fields_for :profile, resource.profile do |builder| %> - <%= render partial: "profiles/form_fields", locals: {f: builder, '@profile': resource.profile} %> +
+
+
+
+

<%= t('.title', :resource => Profile.model_name.human , :default => "Edit #{resource_name.to_s.humanize}") %>

+
+
+ <% if @user.profile.present? %> + <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :namespace => 'profile', :html => { :method => :put, :class => 'form-horizontal' }) do |f| %> + <%= render partial: "shared/error_message_detailed", locals: {entity: resource.profile} %> + <%= f.fields_for :profile, resource.profile do |builder| %> + <%= render partial: "profiles/form_fields", locals: {f: builder, '@profile': resource.profile} %> + <% end %> + <% end %> + <% else %> + <% end %> - <% end %> - <% else %> -
+
+
+
+
+

<%= t('users.email.edit', :default => "Edit email") %>

+
+
+ <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :namespace => 'email', :html => { :method => :put, :class => 'form-horizontal' }) do |f| %> +
+ <%= f.label :email, :class => 'control-label col-lg-2 required' %> +
+ <%= f.email_field :email, class: "form-control" %> +
+
+
+ <%= f.label :current_password, :class => 'control-label col-lg-2 required' %> +
+ <%= f.password_field :current_password, class: "form-control" %> + + <%= t('devise.messages.we_need_your_current_password_to_confirm_your_changes', :default => 'we need your current password to confirm your changes') %> + +
+
+ +
+ + <%= t("errors.messages.required") %> +
+ +
- <%= I18n.t('navbar.create_profile') %> + <%= f.submit t('.update', :default => "Update"), class: "btn btn-primary" %>
-
- <% end %> -
-
-
-
-

<%= t('users.email.edit', :default => "Edit email") %>

-
-
- <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :namespace => 'email', :html => { :method => :put, :class => 'form-horizontal' }) do |f| %> -
- <%= f.label :email, :class => 'control-label col-lg-2 required' %> -
- <%= f.email_field :email, class: "form-control" %> -
-
-
- <%= f.label :current_password, :class => 'control-label col-lg-2 required' %> -
- <%= f.password_field :current_password, class: "form-control" %> - - <%= t('devise.messages.we_need_your_current_password_to_confirm_your_changes', :default => 'we need your current password to confirm your changes') %> - -
-
+
+ <% end %> +
+
+
+
+

<%= t('.title', :resource => resource_class.model_name.human , :default => "Edit #{resource_name.to_s.humanize}") %>

+
+
+ <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :namespace => 'password', :html => { :method => :put, :class => 'form-horizontal' }) do |f| %> +
+ <%= f.label :password, :class => 'control-label col-lg-2 required' %> +
+ <%= f.password_field :password, :autocomplete => "off", class: "form-control" %> + + <%= t('devise.messages.leave_blank_if_you_don_t_want_to_change_it', :default => "leave blank if you don't want to change it") %> + +
+
+
+ <%= f.label :password_confirmation, :class => 'control-label col-lg-2 required' %> +
+ <%= f.password_field :password_confirmation, class: "form-control" %> + + <%= t('devise.messages.leave_blank_if_you_don_t_want_to_change_it', :default => "leave blank if you don't want to change it") %> + +
+
+
+ <%= f.label :current_password, :class => 'control-label col-lg-2 required' %> +
+ <%= f.password_field :current_password, class: "form-control" %> + + <%= t('devise.messages.we_need_your_current_password_to_confirm_your_changes', :default => 'we need your current password to confirm your changes') %> + +
+
-
- - <%= t("errors.messages.required") %> -
+
+ + <%= t("errors.messages.required") %> +
-
-
- <%= f.submit t('.update', :default => "Update"), class: "btn btn-primary" %> -
-
- <% end %> -
-
-
-
-

<%= t('.title', :resource => resource_class.model_name.human , :default => "Edit #{resource_name.to_s.humanize}") %>

-
-
- <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :namespace => 'password', :html => { :method => :put, :class => 'form-horizontal' }) do |f| %> -
- <%= f.label :password, :class => 'control-label col-lg-2 required' %> -
- <%= f.password_field :password, :autocomplete => "off", class: "form-control" %> - - <%= t('devise.messages.leave_blank_if_you_don_t_want_to_change_it', :default => "leave blank if you don't want to change it") %> - -
-
-
- <%= f.label :password_confirmation, :class => 'control-label col-lg-2 required' %> -
- <%= f.password_field :password_confirmation, class: "form-control" %> - - <%= t('devise.messages.leave_blank_if_you_don_t_want_to_change_it', :default => "leave blank if you don't want to change it") %> - -
-
-
- <%= f.label :current_password, :class => 'control-label col-lg-2 required' %> -
- <%= f.password_field :current_password, class: "form-control" %> - - <%= t('devise.messages.we_need_your_current_password_to_confirm_your_changes', :default => 'we need your current password to confirm your changes') %> - -
-
+
+
+ <%= f.submit t('.update', :default => "Update"), class: "btn btn-primary" %> +
+
+ <% end %> +
+
-
- - <%= t("errors.messages.required") %> -
+

+ <%= link_to t('.cancel_my_account', :default => "Cancel my account"), registration_path(resource_name), :data => { :confirm => t('.are_you_sure', :default => "Are you sure?") }, :method => :delete, :class => 'btn btn-danger' %> +

-
-
- <%= f.submit t('.update', :default => "Update"), class: "btn btn-primary" %> -
-
- <% end %>
- -

- <%= link_to t('.cancel_my_account', :default => "Cancel my account"), registration_path(resource_name), :data => { :confirm => t('.are_you_sure', :default => "Are you sure?") }, :method => :delete, :class => 'btn btn-danger' %> -

From 3d9259217f1f285953effb05b879731911f96e16 Mon Sep 17 00:00:00 2001 From: Matthias Radscheit Date: Thu, 9 Feb 2017 13:44:38 +0100 Subject: [PATCH 02/18] 319 workshop choice bar (brand new with even more po-happyness ) (#595) * Owl Deps * Owl Template Files * Zwischenstand * Translation * Tests * Several Fixes * Deps * Owl * Commit * Review * Texte * Text * Texte * Pfeile korrigiert * Fix * Fix * Fix * Fix --- app/assets/javascripts/requests.js | 4 +-- config/locales/de.requests.yml | 50 +++++++++++++++--------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/app/assets/javascripts/requests.js b/app/assets/javascripts/requests.js index f57dd3b7..c6084cc0 100644 --- a/app/assets/javascripts/requests.js +++ b/app/assets/javascripts/requests.js @@ -4,8 +4,8 @@ function enableOwlCarousel() { $(".owl-carousel").owlCarousel({ center: false, - item: 2, - autoplay: true, + items: 2, + autoplay: false, loop: true, dots: true, margin: 30, diff --git a/config/locales/de.requests.yml b/config/locales/de.requests.yml index de178e0e..f715965d 100644 --- a/config/locales/de.requests.yml +++ b/config/locales/de.requests.yml @@ -10,35 +10,35 @@ de: target_group: "Zielgruppe" content: "Inhalt" panel1: - title: "Workshop 1" - duration: "2-3 h" - size: "20 Personen" - target_group: "Informatikeinsteiger (auch ohne Programmiererfahrung), ca. ab Klasse 10" - content: "Die Kenntnisse werden weiter vertieft und Umformungen und Normalformen, sowie Beweise anhand von Aussagenlogik besprochen. Neben dem theoretischen Teil des Workshops werden auch Anwendungsgebiete und Relevanz von Mathematik und Theoretischer Informatk in der Softwareentwicklung besprochen." + title: "Ant-Me 1" + duration: "mit Erfahrung: 3-6h, ohne Erfahrung: 4-6h" + size: "Keine Beschränkung" + target_group: "Programmier-Einsteiger und Fortgeschrittene, ca. ab Klasse 9" + content: "Auf interessante und leicht verständliche Weise soll AntMe! das Erlernen der Software-Entwicklung mit der objektorientierten Programmiersprache C# ermöglichen. Die Lernwelt ist eine simulierte Welt der Ameisen. Die Teilnehmenden steuern ein Ameisenvolk mit Hilfe eigenentwickelter und selbstprogrammierter Algorithmen. Die Welt der Ameisen bildet die Programmierumgebung für den Spielablauf. Spielerisch und kreativ wird der Lernende mit AntMe! an den Aufbau und die Funktionsweise von Quelltexten, Kontrollstrukturen, Objekten und Methoden herangeführt." panel2: - title: "Workshop 2" - duration: "2-3 h" - size: "20 Personen" - target_group: "Informatikeinsteiger (auch ohne Programmiererfahrung), ca. ab Klasse 10" - content: "Die Kenntnisse werden weiter vertieft und Umformungen und Normalformen, sowie Beweise anhand von Aussagenlogik besprochen. Neben dem theoretischen Teil des Workshops werden auch Anwendungsgebiete und Relevanz von Mathematik und Theoretischer Informatk in der Softwareentwicklung besprochen." + title: "Ant-Me 2" + duration: "mit Erfahrung: 3-6h, ohne Erfahrung: 4-6h" + size: "Keine Beschränkung" + target_group: "Programmier-Einsteiger und Fortgeschrittene, ca. ab Klasse 9" + content: "Auf interessante und leicht verständliche Weise soll AntMe! das Erlernen der Software-Entwicklung mit der objektorientierten Programmiersprache C# ermöglichen. Die Lernwelt ist eine simulierte Welt der Ameisen. Die Teilnehmenden steuern ein Ameisenvolk mit Hilfe eigenentwickelter und selbstprogrammierter Algorithmen. Die Welt der Ameisen bildet die Programmierumgebung für den Spielablauf. Spielerisch und kreativ wird der Lernende mit AntMe! an den Aufbau und die Funktionsweise von Quelltexten, Kontrollstrukturen, Objekten und Methoden herangeführt." panel3: - title: "Workshop 3" - duration: "2-3 h" - size: "20 Personen" - target_group: "Informatikeinsteiger (auch ohne Programmiererfahrung), ca. ab Klasse 10" - content: "Die Kenntnisse werden weiter vertieft und Umformungen und Normalformen, sowie Beweise anhand von Aussagenlogik besprochen. Neben dem theoretischen Teil des Workshops werden auch Anwendungsgebiete und Relevanz von Mathematik und Theoretischer Informatk in der Softwareentwicklung besprochen." + title: "Ant-Me 3" + duration: "mit Erfahrung: 3-6h, ohne Erfahrung: 4-6h" + size: "Keine Beschränkung" + target_group: "Programmier-Einsteiger und Fortgeschrittene, ca. ab Klasse 9" + content: "Auf interessante und leicht verständliche Weise soll AntMe! das Erlernen der Software-Entwicklung mit der objektorientierten Programmiersprache C# ermöglichen. Die Lernwelt ist eine simulierte Welt der Ameisen. Die Teilnehmenden steuern ein Ameisenvolk mit Hilfe eigenentwickelter und selbstprogrammierter Algorithmen. Die Welt der Ameisen bildet die Programmierumgebung für den Spielablauf. Spielerisch und kreativ wird der Lernende mit AntMe! an den Aufbau und die Funktionsweise von Quelltexten, Kontrollstrukturen, Objekten und Methoden herangeführt." panel4: - title: "Workshop 4" - duration: "2-3 h" - size: "20 Personen" - target_group: "Informatikeinsteiger (auch ohne Programmiererfahrung), ca. ab Klasse 10" - content: "Die Kenntnisse werden weiter vertieft und Umformungen und Normalformen, sowie Beweise anhand von Aussagenlogik besprochen. Neben dem theoretischen Teil des Workshops werden auch Anwendungsgebiete und Relevanz von Mathematik und Theoretischer Informatk in der Softwareentwicklung besprochen." + title: "Ant-Me 4" + duration: "mit Erfahrung: 3-6h, ohne Erfahrung: 4-6h" + size: "Keine Beschränkung" + target_group: "Programmier-Einsteiger und Fortgeschrittene, ca. ab Klasse 9" + content: "Auf interessante und leicht verständliche Weise soll AntMe! das Erlernen der Software-Entwicklung mit der objektorientierten Programmiersprache C# ermöglichen. Die Lernwelt ist eine simulierte Welt der Ameisen. Die Teilnehmenden steuern ein Ameisenvolk mit Hilfe eigenentwickelter und selbstprogrammierter Algorithmen. Die Welt der Ameisen bildet die Programmierumgebung für den Spielablauf. Spielerisch und kreativ wird der Lernende mit AntMe! an den Aufbau und die Funktionsweise von Quelltexten, Kontrollstrukturen, Objekten und Methoden herangeführt." panel5: - title: "Workshop 5" - duration: "2-3 h" - size: "20 Personen" - target_group: "Informatikeinsteiger (auch ohne Programmiererfahrung), ca. ab Klasse 10" - content: "Die Kenntnisse werden weiter vertieft und Umformungen und Normalformen, sowie Beweise anhand von Aussagenlogik besprochen. Neben dem theoretischen Teil des Workshops werden auch Anwendungsgebiete und Relevanz von Mathematik und Theoretischer Informatk in der Softwareentwicklung besprochen." + title: "Ant-Me 5" + duration: "mit Erfahrung: 3-6h, ohne Erfahrung: 4-6h" + size: "Keine Beschränkung" + target_group: "Programmier-Einsteiger und Fortgeschrittene, ca. ab Klasse 9" + content: "Auf interessante und leicht verständliche Weise soll AntMe! das Erlernen der Software-Entwicklung mit der objektorientierten Programmiersprache C# ermöglichen. Die Lernwelt ist eine simulierte Welt der Ameisen. Die Teilnehmenden steuern ein Ameisenvolk mit Hilfe eigenentwickelter und selbstprogrammierter Algorithmen. Die Welt der Ameisen bildet die Programmierumgebung für den Spielablauf. Spielerisch und kreativ wird der Lernende mit AntMe! an den Aufbau und die Funktionsweise von Quelltexten, Kontrollstrukturen, Objekten und Methoden herangeführt." intro_text: "Wenn Sie einen Workshop am HPI durchführen wollen, füllen Sie bitte das folgende Formular aus. Die weitere Planung und Kommunikation wird über E-Mail erfolgen." new: title: "Neue Anfrage stellen" From 2f9e0475db492b0435da38198de715a74e4d6399 Mon Sep 17 00:00:00 2001 From: Matthias Radscheit Date: Thu, 9 Feb 2017 13:49:25 +0100 Subject: [PATCH 03/18] 584 user overview ui (#585) * Zwischenstand * UIIIII --- .../custom_bootstrap/custom_bootstrap.less | 16 +++ app/views/users/index.html.erb | 97 ++++++++++--------- 2 files changed, 68 insertions(+), 45 deletions(-) diff --git a/app/assets/stylesheets/custom_bootstrap/custom_bootstrap.less b/app/assets/stylesheets/custom_bootstrap/custom_bootstrap.less index 1d482232..4608b916 100644 --- a/app/assets/stylesheets/custom_bootstrap/custom_bootstrap.less +++ b/app/assets/stylesheets/custom_bootstrap/custom_bootstrap.less @@ -142,10 +142,12 @@ a:hover h1, a:hover h2, a:hover h3, a:hover h4 { padding-bottom: 30px; word-wrap: break-word; } + @media (max-width: @screen-sm-max) { h1 { font-size: 5rem; } h2 { font-size: 4rem; } } + @media (max-width: @screen-xs-max) { h1 { font-size: 3.5rem; } h2 { font-size: 2.5rem; } @@ -249,7 +251,21 @@ strong, b { background-position: center; border: 3px solid @body-bg; } + .image-buttons .btn.active { border: 3px solid @brand-primary; } +.title { + font-size: 64px; +} + +.bottom-align-text { + position: absolute; + bottom: 15px; + right: 0; +} + +.relative-box { + position: relative; +} \ No newline at end of file diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb index d79be315..fb1af4a6 100644 --- a/app/views/users/index.html.erb +++ b/app/views/users/index.html.erb @@ -1,50 +1,57 @@ <%- model_class = User -%> -