Completely rework the navigation

Get rid of the admin layout
Get rid of the navbar custom style, use bootstrap-sass variables instead
Get rid of all the scaffold files
This commit is contained in:
Henne Vogelsang 2013-06-27 16:58:20 +02:00 committed by Henne Vogelsang
parent 2af8792495
commit 252e1fe544
47 changed files with 179 additions and 252 deletions

View file

@ -1,3 +0,0 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View file

@ -1,3 +0,0 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View file

@ -1,3 +0,0 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View file

@ -1,3 +0,0 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View file

@ -1,3 +0,0 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View file

@ -1,3 +0,0 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View file

@ -1,3 +0,0 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View file

@ -1,3 +0,0 @@
// Place all the styles related to the admin/admin controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View file

@ -1,3 +0,0 @@
// Place all the styles related to the admin/call_for_papers controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View file

@ -1,3 +0,0 @@
// Place all the styles related to the admin/conference controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View file

@ -1,3 +0,0 @@
// Place all the styles related to the admin/people controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View file

@ -1,3 +0,0 @@
// Place all the styles related to the admin/supporters controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View file

@ -1,3 +0,0 @@
// Place all the styles related to the admin/users controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View file

@ -1,3 +0,0 @@
// Place all the styles related to the admin/venue controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View file

@ -24,6 +24,15 @@
background-color: #f5f5f5;
}
.container .credit {
margin: 20px 0;
}
.nav-collapse .dropdown-menu {
background-color: #e6e6e6;
color: #555555;
}
/* Lastly, apply responsive CSS fixes as necessary */
@media (max-width: 767px) {
#footer {
@ -34,41 +43,8 @@
}
}
.container#messages {
padding-top: 60px;
}
.navbar-inner {
background: #299a0b; /* Old browsers */
background: -moz-linear-gradient(top, #299a0b 0%, #299a0b 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#299a0b), color-stop(100%,#299a0b)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #299a0b 0%,#299a0b 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #299a0b 0%,#299a0b 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #299a0b 0%,#299a0b 100%); /* IE10+ */
background: linear-gradient(to bottom, #299a0b 0%,#299a0b 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#299a0b', endColorstr='#299a0b',GradientType=0 ); /* IE6-9 */
}
.navbar .nav .active > a, .navbar .nav .active > a:hover {
background-color: #DFE0DF;
}
.navbar .divider-vertical {
background-color: #b4e391;
border-right: 1px solid #eab92d;
}
.navbar-fixed-top .brand {
color: #ffffff;
text-shadow:none;
}
.navbar .nav > li > a {
float: none;
padding: 10px 15px 10px;
color: white;
text-decoration: none;
text-shadow: none;
@media screen and (min-width: 980px) {
body { padding-top: 60px; }
}
.center {

View file

@ -1,2 +1,15 @@
$navbarBackground: #299a0b;
$navbarBackgroundHighlight: #299a0b;
$navbarBorder: 1px solid #d4d4d4;
$navbarText: #ffffff;
$navbarLinkColor: white;
$navbarLinkColorHover: black;
$navbarLinkBackgroundActive: #DFE0DF;
@import "bootstrap";
@import "bootstrap-responsive";
/* Set to navbarBackgroundHighlight otherwise */
.navbar .nav > li > a {
text-shadow: none;
}

View file

@ -1,6 +1,5 @@
class Admin::CallforpapersController < ApplicationController
before_filter :verify_organizer
layout "admin"
def show
@cfp = @conference.call_for_papers

View file

@ -1,6 +1,5 @@
class Admin::ConferenceController < ApplicationController
before_filter :verify_organizer
layout "admin"
def index
@conferences = Conference.all
@ -31,6 +30,7 @@ class Admin::ConferenceController < ApplicationController
end
def show
@conferences = Conference.all
@conference = Conference.find_all_by_short_title(params[:id]).first
respond_to do |format|
format.html

View file

@ -1,6 +1,5 @@
class Admin::DietchoicesController < ApplicationController
before_filter :verify_organizer
layout "admin"
def show
render :diets_list

View file

@ -1,6 +1,5 @@
class Admin::EmailsController < ApplicationController
before_filter :verify_organizer
layout "admin"
def update
@conference.email_settings.update_attributes(params[:email_settings])

View file

@ -1,6 +1,5 @@
class Admin::EventsController < ApplicationController
before_filter :verify_organizer
layout "admin"
# FIXME: The timezome should only be applied on output, otherwise
# you get lost in timezone conversions...
# around_filter :set_timezone_for_this_request

View file

@ -1,6 +1,5 @@
class Admin::EventtypeController < ApplicationController
before_filter :verify_organizer
layout "admin"
def show
render :event_type_list

View file

@ -1,6 +1,5 @@
class Admin::PeopleController < ApplicationController
before_filter :verify_organizer
layout "admin"
def index
@people = Person.all

View file

@ -1,6 +1,5 @@
class Admin::RegistrationsController < ApplicationController
before_filter :verify_organizer
layout "admin"
def show
session[:return_to] ||= request.referer

View file

@ -1,6 +1,5 @@
class Admin::RoomsController < ApplicationController
before_filter :verify_organizer
layout "admin"
def show
render :rooms_list

View file

@ -1,6 +1,5 @@
class Admin::SocialEventsController < ApplicationController
before_filter :verify_organizer
layout "admin"
def show
render :social_events_list

View file

@ -1,6 +1,5 @@
class Admin::SupporterLevelsController < ApplicationController
before_filter :verify_organizer
layout "admin"
def show
render :supporter_levels

View file

@ -1,6 +1,5 @@
class Admin::SupportersController < ApplicationController
before_filter :verify_organizer
layout "admin"
def index
respond_to do |format|

View file

@ -1,6 +1,5 @@
class Admin::TracksController < ApplicationController
before_filter :verify_organizer
layout "admin"
def show
respond_to do |format|

View file

@ -1,6 +1,5 @@
class Admin::UsersController < ApplicationController
before_filter :verify_admin
layout "admin"
def index
@users = User.all(:joins => :person,

View file

@ -1,6 +1,5 @@
class Admin::VenueController < ApplicationController
before_filter :verify_organizer
layout "admin"
def index
end

View file

@ -1,6 +1,11 @@
class ApplicationController < ActionController::Base
include ApplicationHelper
protect_from_forgery
before_filter :get_conferences
def get_conferences
@conferences =Conference.all
end
def verify_user
:authenticate_user!

View file

@ -1,6 +1,6 @@
class HomeController < ApplicationController
def index
@today = Date.current
@conferences = Conference.where("start_date >= ?", @today)
@current = Conference.where("start_date >= ?", @today)
end
end

View file

@ -1,2 +0,0 @@
module Admin::CallForPapersHelper
end

View file

@ -1,2 +0,0 @@
module Admin::ConferenceHelper
end

View file

@ -1,2 +0,0 @@
module Admin::PeopleHelper
end

View file

@ -1,2 +0,0 @@
module Admin::SupportersHelper
end

View file

@ -1,2 +0,0 @@
module Admin::UsersHelper
end

View file

@ -1,2 +0,0 @@
module Admin::VenueHelper
end

View file

@ -1,2 +0,0 @@
module HomeHelper
end

View file

@ -1,5 +1,8 @@
.well.sidebar-nav
%ul.nav.nav-list
%li.nav-header
=@conference.short_title
Settings
- if activated == "Conference"
%li.active= link_to "Conference", "#"
- else

View file

@ -4,7 +4,7 @@
</div>
</div>
<% @conferences.each do |conference| %>
<% @current.each do |conference| %>
<div class="row-fluid" style="margin-top: 30px;">
<div clas="span12">
<div class="well">

View file

@ -1,59 +0,0 @@
- if @conference.nil? || @conference.short_title.nil?
= link_to "OSEM", admin_conference_index_path, :class => 'brand'
- else
= link_to @conference.title, admin_conference_path(@conference.short_title), :class => 'brand'
- if @conference && !@conference.short_title.nil?
%ul.nav
- if current_page?(admin_conference_registrations_path(@conference.short_title))
%li.active
= link_to "Registrations", "#"
- else
%li
= link_to "Registrations", admin_conference_registrations_path(@conference.short_title)
- if current_page?(admin_conference_supporters_path(@conference.short_title))
%li.active
= link_to "Supporters", "#"
- else
%li
= link_to "Supporters", admin_conference_supporters_path(@conference.short_title)
- if current_page?(admin_conference_events_path(@conference.short_title))
%li.active
= link_to "Events", "#"
- else
%li
= link_to "Events", admin_conference_events_path(@conference.short_title)
- if current_page?(admin_conference_schedule_path(@conference.short_title))
%li.active
= link_to "Schedule", "#"
-else
%li
= link_to "Schedule ", admin_conference_schedule_path(@conference.short_title)
%ul.nav.secondary-nav.pull-right
%li
= link_to "User Area", root_url
- if !@conference.nil?
%li.dropdown
= link_to "#", :class => "dropdown-toggle", :id =>'drop1', "data-toggle" => 'dropdown' do
Export
<b class="caret"></b>
%ul.dropdown-menu{:role => 'menu', "aria-labelledby" => "drop1"}
%li= link_to "JSON", "#"
%li= link_to "HTML", "#"
%li.dropdown
- unless Conference.count == 1 && !has_role?(current_user, "admin")
= link_to "#", :class => "dropdown-toggle", :id => 'drop2', "data-toggle" => 'dropdown' do
Conferences
<b class="caret"></b>
%ul.dropdown-menu{:role => 'menu', "aria-labelledby" => "drop2"}
- conferences = Conference.order("created_at DESC")
- unless conferences.nil?
- conferences.each do |c|
- unless @conference == c
%li= link_to c.short_title, admin_conference_path(c.short_title)
- if has_role?(current_user, "admin")
%li= link_to "New Conference", new_admin_conference_path
- if has_role?(current_user, "admin")
%li= link_to "Users", admin_users_path
%li= link_to "People", admin_people_path
%li= link_to "Log out", destroy_user_session_path, :method => :delete

View file

@ -1,45 +1,122 @@
- if @conference.nil? || @conference.short_title.nil?
= link_to "OSEM", root_path, :class => 'brand'
- else
= link_to @conference.title, root_path, :class => 'brand'
%ul.nav
- if !@conference.nil? && @conference.registration_open?
- if current_page?(register_conference_path(@conference.short_title))
%li.active
= link_to "Registration", "#"
%a.btn.btn-navbar{"data-target" => ".nav-collapse", "data-toggle" => "collapse"}
%span.icon-th
= link_to "OSEM", root_path, :class => 'brand', :title => "Open Source Event Manager"
- if @conference && !@conference.short_title.nil?
%span.brand
= @conference.short_title
.nav-collapse.collapse
- if user_signed_in?
- if has_role?(current_user, "admin") || has_role?(current_user, "organizer")
- if controller.class.name.split("::").first=="Admin"
- if @conference && !@conference.short_title.nil?
%ul.nav
- if current_page?(admin_conference_path(@conference.short_title))
%li.active
= link_to('#') do
Settings
- else
%li
= link_to(admin_conference_path(@conference.short_title)) do
Settings
- if current_page?(admin_conference_registrations_path(@conference.short_title))
%li.active
= link_to('#') do
Registrations
- else
%li
= link_to(admin_conference_registrations_path(@conference.short_title)) do
Registrations
- if current_page?(admin_conference_supporters_path(@conference.short_title))
%li.active
= link_to('#') do
Supporters
- else
%li
= link_to(admin_conference_supporters_path(@conference.short_title)) do
Supporters
- if current_page?(admin_conference_events_path(@conference.short_title))
%li.active
= link_to('#') do
Events
- else
%li
= link_to(admin_conference_events_path(@conference.short_title)) do
Events
- if current_page?(admin_conference_schedule_path(@conference.short_title))
%li.active
= link_to('#') do
Schedule
-else
%li
= link_to(admin_conference_schedule_path(@conference.short_title), :target => "_blank") do
Schedule
%ul.nav.pull-right
%li.dropdown
%a.dropdown-toggle{"data-toggle" => "dropdown", :href => "#"}
= image_tag(current_user.person.gravatar_url(:size => "20"), :title => "Yo #{current_user.person.public_name}!", :class=>"visible-desktop")
%ul.dropdown-menu{:style => "padding: 15px;"}
%li
= link_to("#") do
%i.icon-home
= current_user.person.public_name if current_user.person
%li
= link_to(edit_user_registration_path) do
%i.icon-wrench
Edit Account
-if @conference and @conference.id
%li
= link_to(conference_proposal_index_path(@conference.short_title)) do
%i.icon-comment
My Submissions
%li
= link_to(destroy_user_session_path, :method=>'delete') do
%i.icon-minus
Sign out
-if has_role?(current_user, "admin") || has_role?(current_user, "organizer")
%li.divider
%h6
Manage Conferences
- @conferences.each do |conference|
%li
= link_to(admin_conference_path(conference.short_title)) do
%i.icon-cog
Manage
= conference.short_title
%li
= link_to(new_admin_conference_path) do
%i.icon-plus
New Conference
%li.divider
%h6
Manage OSEM
%li
= link_to(admin_users_path) do
%i.icon-user
Users
%li
= link_to(admin_people_path) do
%i.icon-star-empty
People
- else
%li
= link_to "Registration", register_conference_path(@conference.short_title)
- if !@conference.nil?
- if current_page?(conference_proposal_index_path(@conference.short_title))
%li.active
= link_to "My Proposals", "#"
- else
%li
= link_to "My Proposals", conference_proposal_index_path(@conference.short_title)
%ul.nav.pull-right
- if user_signed_in?
- if has_role?(current_user, "admin") || has_role?(current_user, "organizer")
%li
= link_to "Admin Area", admin_conference_index_path
%li
= link_to('Sign Out', destroy_user_session_path, :method=>'delete')
- else
%li
= link_to('Sign In', new_user_session_path)
- if user_signed_in?
%li
= link_to('Edit account', edit_user_registration_path)
%li.dropdown
- unless Conference.count == 1 && !has_role?(current_user, "admin")
= link_to "#", :class => "dropdown-toggle" do
Conferences
<b class="caret"></b>
%ul.dropdown-menu
- conferences = Conference.order("created_at DESC")
- unless conferences.nil?
- conferences.each do |c|
- unless @conference == c
%li= link_to c.short_title, admin_conference_path(c.short_title)
- if has_role?(current_user, "admin")
%li= link_to "New Conference", new_admin_conference_path
%ul.nav.pull-right
%li.dropdown.visible-desktop
%a.dropdown-toggle{"data-toggle" => "dropdown", :href => "#"}
%i.icon-user.icon-2x
Sign In
%i.icon-angle-down
.dropdown-menu{:style => "padding: 15px; padding-bottom: 0px;"}
= form_tag user_session_path do
= text_field_tag 'user[email]'
= password_field_tag 'user[password]'
%label.checkbox
= check_box_tag 'user[remember_me]'
Remember me
%button.btn.btn-block Sign in
%br
= link_to "Forgot your password?", new_password_path('user')
%li.hidden-desktop
= link_to('Sign In', new_user_session_path)

View file

@ -1,41 +0,0 @@
!!!
%html
%head
%meta{:charset => "utf-8"}
%meta{:name => "viewport", :content => "width=device-width, initial-scale=1, maximum-scale=1"}
%title= content_for?(:title) ? yield(:title) : "Admin"
%meta{:content => "", :name => "description"}
%meta{:content => "", :name => "author"}
= stylesheet_link_tag "application"
= javascript_include_tag "application"
= csrf_meta_tags
= yield(:head)
%body
#wrap
.navbar.navbar-fixed-top
.navbar-inner
.container-fluid
= render 'layouts/admin_navigation'
.container#messages
.row
.span12
= render 'layouts/messages'
%noscript
:css
#content {
display: none;
}
%h2
JavaScript is not enabled
%p
OSEM requires JavaScript to be enabled to function. Please turn on JavaScript in your browser's settings and reload the page to continue.
.container#content
= yield
#push
#footer
.container
%p.muted.credit.text-center
OSEM is (C) 2013
= link_to "Matt Barringer", "http://incoherent.de"
and released under the GPL. You can get the source code from
= link_to "Github.", "https://github.com/mbarringer/osem"

View file

@ -32,6 +32,7 @@
.container#content
= yield
#push
#footer
.container
%p.muted.credit.text-center

View file

@ -90,4 +90,26 @@
}
});
});
$(function() {
// add a hash to the URL when the user clicks on a tab
$('a[data-toggle="tab"]').on('click', function(e) {
history.pushState(null, null, $(this).attr('href'));
});
// navigate to a tab when the history changes
window.addEventListener("popstate", function(e) {
var activeTab = $('[href=' + location.hash + ']');
if (activeTab.length) {
activeTab.tab('show');
} else {
$('.nav-tabs a:first').tab('show');
}
});
});
$(function() {
var hash = window.location.hash;
hash && $('ul.nav a[href="' + hash + '"]').tab('show');
});
<% end %>