diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 3163bf06..242fb1ef 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -1,6 +1,6 @@ /* *= require bootstrap_and_overrides *= require foodsoft -*= require token-input +*= require token-input-bootstrappy *= require jquery.fancybox-1.3.4 */ \ No newline at end of file diff --git a/app/assets/stylesheets/nav.css b/app/assets/stylesheets/nav.css deleted file mode 100644 index 14ab6bc9..00000000 --- a/app/assets/stylesheets/nav.css +++ /dev/null @@ -1,58 +0,0 @@ -/* Navigation .... */ -#nav { - position: relative; - height: 3em; - text-align: right; - margin-top: 5px; } - #nav ul { - padding: 0 0 0 0; - margin: -2.3em 0 0 0; - list-style: none; } - #nav ul li { - display: inline; - list-style: none; - padding: 0.3em 0 0.3em 0; - margin: 0 0 0 0.2em; - background: none; - vertical-align: middle; } - #nav ul li a { - margin: 0.1em 0 0 0; - text-align: center; - font-size: 1.1em; - font-weight: bold; - text-decoration: none; - color: #737272; - border: none; - background: #e3e3e3; - padding: 0.5em 1.2em 0.6em 1.2em; - margin-top: 0; } - #nav ul li a:hover { - color: #ed0606; } - #nav ul li ul { - display: none; - position: absolute; - margin: 0; - left: 0; - padding: 0.6em; - bottom: -1.4em; - right: 0em; - background: #ed0606; } - #nav ul li ul li { - border-left: 0.1em dotted white; - background: none; } - #nav ul li ul a, #nav ul li ul a:hover { - border: none; - background: none; - color: white; - font-style: normal; - font-size: 1em; } - #nav ul li.current a { - border: none; - border-bottom: none; - background: #ed0606; - padding-bottom: 0.6em; - color: white; } - #nav ul li.current ul { - display: inline; } - #nav ul li.current ul a { - background: none; } diff --git a/app/assets/stylesheets/rails_messages.scss b/app/assets/stylesheets/rails_messages.scss deleted file mode 100644 index 376d19ed..00000000 --- a/app/assets/stylesheets/rails_messages.scss +++ /dev/null @@ -1,68 +0,0 @@ -/* rails messages .... */ -h3.notice, div.notice { - color: #090; } - -h3.notice { - background: #dfd image-url('icon_message.gif') no-repeat 10px 3px; - border: 1px solid #bfb; - padding: 4px 40px; - margin: 2em 0 1em 0; - font-size: 100%; - position: relative; } - -h3.alert, div.alert, div.error { - color: red; - font-size: 100%; - font-weight: bold; } - -h3.alert { - background: yellow image-url('error.png') no-repeat 10px 3px; - border: 1px solid red; - padding: 4px 40px; - position: relative; - margin: 2em 0 1em 0; - font-weight: normal; } - -.fieldWithErrors { - padding: 2px; - background-color: red; - display: table; } - -.fieldWithErrors input { - background-color: yellow; } - -#errorExplanation { - width: 40em; - padding: 7px; - padding-bottom: 12px; - color: #ed0606; } - #errorExplanation h2 { - color: #ed0606; - text-align: left; - font-weight: bold; - margin: 0; - padding: 5px 5px 5px 5px; - font-size: 15px; } - #errorExplanation p { - margin: 0; - padding: 5px; } - #errorExplanation ul, #errorExplanation li { - margin: 0; } - #errorExplanation li { - padding: 0; - font-size: 12px; - list-style: square; } - -div.uploadStatus { - margin: 5px; } - -div.progressBar { - margin: 5px; } - div.progressBar div.border { - background-color: #fff; - border: 1px solid grey; - width: 100%; } - div.progressBar div.background { - background-color: #333; - height: 18px; - width: 0%; } diff --git a/app/assets/stylesheets/scaffold.css b/app/assets/stylesheets/scaffold.css deleted file mode 100644 index 093c2099..00000000 --- a/app/assets/stylesheets/scaffold.css +++ /dev/null @@ -1,54 +0,0 @@ -body { background-color: #fff; color: #333; } - -body, p, ol, ul, td { - font-family: verdana, arial, helvetica, sans-serif; - font-size: 13px; - line-height: 18px; -} - -pre { - background-color: #eee; - padding: 10px; - font-size: 11px; -} - -a { color: #000; } -a:visited { color: #666; } -a:hover { color: #fff; background-color:#000; } - -.fieldWithErrors { - padding: 2px; - background-color: red; - display: table; -} - -#errorExplanation { - width: 400px; - border: 2px solid red; - padding: 7px; - padding-bottom: 12px; - margin-bottom: 20px; - background-color: #f0f0f0; -} - -#errorExplanation h2 { - text-align: left; - font-weight: bold; - padding: 5px 5px 5px 15px; - font-size: 12px; - margin: -7px; - background-color: #c00; - color: #fff; -} - -#errorExplanation p { - color: #333; - margin-bottom: 0; - padding: 5px; -} - -#errorExplanation ul li { - font-size: 12px; - list-style: square; -} - diff --git a/app/assets/stylesheets/simple_form.css b/app/assets/stylesheets/simple_form.css deleted file mode 100644 index cbd998ce..00000000 --- a/app/assets/stylesheets/simple_form.css +++ /dev/null @@ -1,42 +0,0 @@ -.simple_form label { - float: left; - width: 120px; - text-align: right; - margin: 2px 10px; -} - -.simple_form div.input { - margin-bottom: 10px; - clear: both; -} - -.simple_form div.boolean, .simple_form input[type='submit'] { - margin-left: 140px; -} - -.simple_form div.boolean label, .simple_form label.collection_radio { - float: none; - margin: 0; -} - -.simple_form label.collection_radio { - margin-right: 10px; - margin-left: 2px; -} - -.simple_form .error { - clear: left; - margin-left: 140px; - font-size: 12px; - color: #D00; - display: block; -} - -.simple_form .hint { - clear: left; - margin-left: 140px; - font-size: 12px; - color: #555; - display: block; - font-style: italic; -} \ No newline at end of file diff --git a/app/assets/stylesheets/token-input-bootstrappy.css b/app/assets/stylesheets/token-input-bootstrappy.css new file mode 100644 index 00000000..859414e1 --- /dev/null +++ b/app/assets/stylesheets/token-input-bootstrappy.css @@ -0,0 +1,133 @@ +/* Example tokeninput style #2: Facebook style */ +ul.token-input-list-facebook { + overflow: hidden; + height: auto !important; + height: 1%; + width: 400px; + border: 1px solid #BBB; + cursor: text; + font-size: 12px; + font-family: Verdana, sans-serif; + min-height: 1px; + z-index: 999; + margin: 0; + padding: 0; + background-color: #fff; + list-style-type: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +ul.token-input-list-facebook.token-input-focused-facebook { + border-color: rgba(82, 168, 236, 0.8); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + outline: 0; + outline: thin dotted 9; +} + +ul.token-input-list-facebook li input { + border: 0; + width: 100px; + padding: 3px 8px; + background-color: white; + margin: 2px 0; + -webkit-appearance: caret; +} + +li.token-input-token-facebook { + overflow: hidden; + height: auto !important; + height: 15px; + margin: 3px; + padding: 1px 3px; + background-color: #F5F5F5; + color: #555; + cursor: default; + border: 1px solid #BBB; + font-size: 11px; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + float: left; + white-space: nowrap; +} + +li.token-input-token-facebook p { + display: inline; + padding: 0; + margin: 0; +} + +li.token-input-token-facebook span { + color: #a6b3cf; + margin-left: 5px; + font-weight: bold; + cursor: pointer; +} + +li.token-input-selected-token-facebook { + background-color: #5670a6; + border: 1px solid #3b5998; + color: #fff; +} + +li.token-input-input-token-facebook { + float: left; + margin: 0; + padding: 0; + list-style-type: none; +} + +div.token-input-dropdown-facebook { + position: absolute; + width: 400px; + background-color: #F5F5F5; + overflow: hidden; + border-left: 1px solid #ccc; + border-right: 1px solid #ccc; + border-bottom: 1px solid #ccc; + cursor: default; + font-size: 12px; + font-family: Verdana, sans-serif; + z-index: 1; +} + +div.token-input-dropdown-facebook p { + margin: 0; + padding: 5px; + font-weight: bold; + color: #555; +} + +div.token-input-dropdown-facebook ul { + margin: 0; + padding: 0; +} + +div.token-input-dropdown-facebook ul li { + background-color: #f5f5f5; + padding: 3px; + margin: 0; + list-style-type: none; +} + +div.token-input-dropdown-facebook ul li.token-input-dropdown-item-facebook { + background-color: #f5f5f5; +} + +div.token-input-dropdown-facebook ul li.token-input-dropdown-item2-facebook { + background-color: #f5f5f5; +} + +div.token-input-dropdown-facebook ul li em { + font-weight: bold; + font-style: normal; +} + +div.token-input-dropdown-facebook ul li.token-input-selected-dropdown-item-facebook { + background-color: #08C; + color: #f5f5f5; +} \ No newline at end of file diff --git a/app/assets/stylesheets/token-input.css b/app/assets/stylesheets/token-input.css deleted file mode 100644 index 9a2a0811..00000000 --- a/app/assets/stylesheets/token-input.css +++ /dev/null @@ -1,112 +0,0 @@ -/* Example tokeninput style #1: Token vertical list*/ -ul.token-input-list { - overflow: hidden; - height: auto !important; - height: 1%; - width: 300px; - border: 1px solid #999; - cursor: text; - font-size: 12px; - font-family: Verdana; - z-index: 999; - margin: 0; - padding: 0; - background-color: #fff; - list-style-type: none; -} - -ul.token-input-list li { - list-style-type: none; -} - -ul.token-input-list li input { - border: 0; - width: 350px; - padding: 3px 8px; - background-color: white; - -webkit-appearance: caret; -} - -li.token-input-token { - overflow: hidden; - height: auto !important; - height: 1%; - margin: 3px; - padding: 3px 5px; - background-color: #d0efa0; - color: #000; - font-weight: bold; - cursor: default; - display: block; -} - -li.token-input-token p { - float: left; - padding: 0; - margin: 0; -} - -li.token-input-token span { - float: right; - color: #777; - cursor: pointer; -} - -li.token-input-selected-token { - background-color: #08844e; - color: #fff; -} - -li.token-input-selected-token span { - color: #bbb; -} - -div.token-input-dropdown { - position: absolute; - width: 400px; - background-color: #fff; - overflow: hidden; - border-left: 1px solid #ccc; - border-right: 1px solid #ccc; - border-bottom: 1px solid #ccc; - cursor: default; - font-size: 12px; - font-family: Verdana; - z-index: 1; -} - -div.token-input-dropdown p { - margin: 0; - padding: 5px; - font-weight: bold; - color: #777; -} - -div.token-input-dropdown ul { - margin: 0; - padding: 0; -} - -div.token-input-dropdown ul li { - background-color: #fff; - padding: 3px; - list-style-type: none; -} - -div.token-input-dropdown ul li.token-input-dropdown-item { - background-color: #fafafa; -} - -div.token-input-dropdown ul li.token-input-dropdown-item2 { - background-color: #fff; -} - -div.token-input-dropdown ul li em { - font-weight: bold; - font-style: normal; -} - -div.token-input-dropdown ul li.token-input-selected-dropdown-item { - background-color: #d0efa0; -} - diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index dbdfc90d..88224a98 100644 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -2,7 +2,7 @@ class MessagesController < ApplicationController # Renders the "inbox" action. def index - @messages = Message.public.paginate :page => params[:page], :per_page => 20, :order => 'created_at DESC' + @messages = Message.public.page(params[:page]).per(@per_page).order('created_at DESC') end # Creates a new message object. diff --git a/app/views/messages/_messages.html.haml b/app/views/messages/_messages.html.haml index a43f2e2a..7db06dc4 100644 --- a/app/views/messages/_messages.html.haml +++ b/app/views/messages/_messages.html.haml @@ -1,3 +1,7 @@ +- if Message.public.count > 20 + = items_per_page += pagination_links_remote messages + - unless messages.empty? %table.table.table-striped %tbody diff --git a/app/views/messages/index.html.haml b/app/views/messages/index.html.haml index 74e90918..af064bc5 100644 --- a/app/views/messages/index.html.haml +++ b/app/views/messages/index.html.haml @@ -1,8 +1,5 @@ -- title "Nachrichten im Überblick" - -%p= link_to('Neue Nachricht', :action => 'new') - -%div{:style => "text-align:right"}= will_paginate @messages +- title "Nachrichten" += link_to 'Neue Nachricht', new_message_path, class: 'btn btn-primary' #messages = render :partial => 'messages', :locals => { :messages => @messages, :subject_length => 130 } \ No newline at end of file diff --git a/app/views/messages/new.haml b/app/views/messages/new.haml index f0a4be8e..8870090a 100644 --- a/app/views/messages/new.haml +++ b/app/views/messages/new.haml @@ -1,4 +1,4 @@ -- content_for :head do +- content_for :javascript do :javascript $(function() { $('#message_recipient_tokens').tokenInput("#{users_path(:format => :json)}", { @@ -6,7 +6,8 @@ prePopulate: $('#message_recipient_tokens').data('pre'), hintText: 'Nach Nutzerin suchen', noResultText: 'Keine Nutzerin gefunden', - searchingText: 'Suche ...' + searchingText: 'Suche ...', + theme: 'facebook' }); $('#message_sent_to_all').click(function() { @@ -38,6 +39,8 @@ = f.input :recipient_tokens, :input_html => { 'data-pre' => User.find_all_by_id(@message.recipients_ids).map { |u| u.token_attributes }.to_json } = f.input :group_id, :as => :select, :collection => Group.order('type DESC, name DESC').all.reject { |g| g.memberships.empty? } = f.input :private - = f.input :subject - = f.input :body - = f.submit \ No newline at end of file + = f.input :subject, input_html: {class: 'input-xxlarge'} + = f.input :body, input_html: {class: 'input-xxlarge'} + .form-actions + = f.submit + = link_to 'oder abbrechen', :back \ No newline at end of file diff --git a/app/views/messages/show.haml b/app/views/messages/show.haml index 0ca92ab4..e991268a 100644 --- a/app/views/messages/show.haml +++ b/app/views/messages/show.haml @@ -16,6 +16,6 @@ %p= simple_format(h(@message.body)) %hr/ %p - = link_to('Antworten', new_message_path(:message => {:reply_to => @message.id})) + = link_to 'Antworten', new_message_path(:message => {:reply_to => @message.id}), class: 'btn' | = link_to 'Nachricht im Überblick', messages_path \ No newline at end of file diff --git a/config/locales/de.yml b/config/locales/de.yml index 9a79cd67..36f8f7d1 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -331,7 +331,7 @@ de: group_id: 'Gruppe' subject: 'Betreff' body: 'Inhalt' - private: 'privat verschicken, Nachricht erscheint nicht im Foodsoft Posteingang' + private: Privat page: body: 'Inhalt' supplier: @@ -394,3 +394,5 @@ de: unit: 'z.B. KG oder 1L oder 500g' stock_article: supplier: '' + message: + private: Nachricht erscheint nicht im Foodsoft Posteingang diff --git a/vendor/assets/javascripts/jquery.tokeninput.js b/vendor/assets/javascripts/jquery.tokeninput.js index 4618d67a..87641a57 100644 --- a/vendor/assets/javascripts/jquery.tokeninput.js +++ b/vendor/assets/javascripts/jquery.tokeninput.js @@ -1,6 +1,6 @@ /* * jQuery Plugin: Tokenizing Autocomplete Text Entry - * Version 1.4.2 + * Version 1.6.0 * * Copyright (c) 2009 James Smith (http://loopj.com) * Licensed jointly under the GPL and MIT licenses, @@ -11,24 +11,46 @@ (function ($) { // Default settings var DEFAULT_SETTINGS = { + // Search settings + method: "GET", + contentType: "json", + queryParam: "q", + searchDelay: 300, + minChars: 1, + propertyToSearch: "name", + jsonContainer: null, + + // Display settings hintText: "Type in a search term", noResultsText: "No results", searchingText: "Searching...", deleteText: "×", - searchDelay: 300, - minChars: 1, + animateDropdown: true, + + // Tokenization settings tokenLimit: null, - jsonContainer: null, - method: "GET", - contentType: "json", - queryParam: "q", tokenDelimiter: ",", preventDuplicates: false, + + // Output settings + tokenValue: "id", + + // Prepopulation settings prePopulate: null, - animateDropdown: true, + processPrePopulate: false, + + // Manipulation settings + idPrefix: "token-input-", + + // Formatters + resultsFormatter: function(item){ return "
" + item[this.propertyToSearch] + "
"+ value +"