helpdesk 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/helpdesk/admin.css +1 -0
  3. data/app/assets/stylesheets/helpdesk/imports.css.sass +0 -0
  4. data/app/controllers/helpdesk/admin/tickets_controller.rb +5 -2
  5. data/app/controllers/helpdesk/tickets_controller.rb +2 -2
  6. data/app/helpers/helpdesk/helpdesk_helper.rb +29 -5
  7. data/app/views/helpdesk/admin/faqs/_form.html.haml +2 -2
  8. data/app/views/helpdesk/admin/faqs/edit.html.haml +6 -9
  9. data/app/views/helpdesk/admin/faqs/index.html.haml +2 -2
  10. data/app/views/helpdesk/admin/faqs/new.html.haml +2 -1
  11. data/app/views/helpdesk/admin/subscribers/edit.html.haml +2 -1
  12. data/app/views/helpdesk/admin/subscribers/index.html.haml +3 -2
  13. data/app/views/helpdesk/admin/subscribers/new.html.haml +2 -1
  14. data/app/views/helpdesk/admin/ticket_types/edit.html.haml +2 -1
  15. data/app/views/helpdesk/admin/ticket_types/index.html.haml +1 -1
  16. data/app/views/helpdesk/admin/ticket_types/new.html.haml +2 -1
  17. data/app/views/helpdesk/admin/tickets/_form.html.haml +3 -3
  18. data/app/views/helpdesk/admin/tickets/_ticket.html.haml +3 -3
  19. data/app/views/helpdesk/admin/tickets/edit.html.haml +4 -4
  20. data/app/views/helpdesk/admin/tickets/list.html.haml +1 -1
  21. data/app/views/helpdesk/admin/tickets/new.html.haml +2 -2
  22. data/app/views/helpdesk/admin/tickets/show.html.haml +8 -8
  23. data/app/views/helpdesk/tickets/_form.html.haml +2 -2
  24. data/app/views/helpdesk/tickets/_ticket.html.haml +2 -2
  25. data/app/views/helpdesk/tickets/index.html.haml +3 -2
  26. data/app/views/helpdesk/tickets/new.html.haml +2 -2
  27. data/app/views/helpdesk/tickets/show.html.haml +3 -3
  28. data/app/views/layouts/helpdesk/_topmenu.html.haml +25 -21
  29. data/app/views/layouts/helpdesk/_topuser.html.haml +18 -9
  30. data/app/views/layouts/helpdesk/admin.html.haml +14 -6
  31. data/app/views/layouts/helpdesk/user.html.haml +14 -6
  32. data/config/initializers/simple_form.rb +83 -144
  33. data/config/routes.rb +1 -1
  34. data/lib/helpdesk/version.rb +1 -1
  35. metadata +27 -13
  36. data/app/assets/stylesheets/helpdesk/imports.css.scss +0 -34
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0cb3f72d7a03c39c62da16e28615e741fdcd7b62
4
- data.tar.gz: b641bf423b7570a5a37b475214e7d554f65b1ab4
3
+ metadata.gz: 9c4d9893e06be1d15b031e7f6d9173555ab769d4
4
+ data.tar.gz: b4ac33e3c1c387151fb68470a7d627d440d3adc0
5
5
  SHA512:
6
- metadata.gz: 9b15157ca00a0e6a97f3284a11148353c68e1df2095e296f57ee0b8c0720db372db89d74353b259aae2d7e0c9adeefa9ec4d3f295227efe479ee07c3cb4df824
7
- data.tar.gz: 859e437996426672a8e52db55837e4aeea6562985d51e3a83ca7232e3f756946feb0c74269f6585a4f669e36a99c65ab4d9ba4371b1c7a85585d13e1ce551458
6
+ metadata.gz: a7161256c228129353ba48bcf13b7de5f4d5fe6e8942473f0bc56484a7b96575b62e3e0cdb5a9f59976e1b9d41062c4bc0e65c081100421c1c8e5a98eb4d0ca5
7
+ data.tar.gz: e9c027cd5ed06c939516d5f5963963573e67e10bd3729134e425195d038660b4fd128f17fce1e6caa9c60fed53ea50bd98f537c41f4b43519aace308429018e8
@@ -3,5 +3,6 @@
3
3
  *= require helpdesk/imports
4
4
  *= require helpdesk/admin/bootstrap_overrides
5
5
  *= require helpdesk/admin/tickets
6
+ *= require bootstrap
6
7
  *= require chosen
7
8
  */
File without changes
@@ -8,11 +8,14 @@ class Helpdesk::Admin::TicketsController < Helpdesk::Admin::BaseController
8
8
  elsif params[:tickets] == 'active'
9
9
  @tickets = Helpdesk::Ticket.active.scoped
10
10
  elsif params[:tickets] == 'all'
11
- @tickets = Helpdesk::Ticket.all.scoped
11
+ @tickets = Helpdesk::Ticket.scoped
12
12
  else
13
13
  @tickets = my_tickets.active.scoped
14
14
  end
15
- @tickets = @tickets.page(params[:page])
15
+ @tickets = @tickets.includes(:requester)
16
+ .includes(:assignee)
17
+ .includes(:ticket_type)
18
+ .page(params[:page])
16
19
 
17
20
  render 'list'
18
21
  end
@@ -4,10 +4,10 @@ module Helpdesk
4
4
  # GET /tickets.json
5
5
  def index
6
6
  if params[:tickets] == 'closed'
7
- @tickets = Helpdesk::Ticket.where(:requester_id => helpdesk_user.id).closed
7
+ @tickets = Helpdesk::Ticket.where(:requester_id => helpdesk_user.id).closed.page(params[:page])
8
8
  @tickets_count = Helpdesk::Ticket.where(:requester_id => helpdesk_user.id).active.count
9
9
  else
10
- @tickets = Helpdesk::Ticket.where(:requester_id => helpdesk_user.id).active
10
+ @tickets = Helpdesk::Ticket.where(:requester_id => helpdesk_user.id).active.page(params[:page])
11
11
  @tickets_count = @tickets.size
12
12
  end
13
13
 
@@ -1,11 +1,31 @@
1
1
  module Helpdesk
2
2
  module HelpdeskHelper
3
+
4
+
3
5
  def menu_left(title,&block)
4
- content_tag(:fieldset) do
5
- content_tag(:legend ,title) +
6
- content_tag( :ul, class: 'nav nav-list') do
6
+ panel_menu(title,'default',&block)
7
+ end
8
+
9
+
10
+ def panel_menu(title,type,&block)
11
+ content_tag(:div,class: "panel panel-#{type}") do
12
+ content_tag(:div ,class: 'panel-heading') do
13
+ content_tag(:h3 ,title,class:'panel-title')
14
+ end +
15
+ content_tag( :ul, class: 'nav nav-pills nav-stacked ') do
7
16
  capture(&block)
17
+ end
18
+ end
19
+ end
20
+
8
21
 
22
+ def panel(title,type,&block)
23
+ content_tag(:div,class: "panel panel-#{type}") do
24
+ content_tag(:div ,class: 'panel-heading') do
25
+ content_tag(:h3 ,title,class:'panel-title')
26
+ end +
27
+ content_tag( :div, class: 'panel-body') do
28
+ capture(&block)
9
29
  end
10
30
  end
11
31
  end
@@ -23,8 +43,12 @@ module Helpdesk
23
43
  end
24
44
  end
25
45
 
26
- def ico(name,color='black')
27
- raw("<i class=\"icon-#{name} icon-#{color}\"></i> ")
46
+ def badge(num,css='pull-right')
47
+ raw("<span class=\"badge #{css}\">#{num}</span> ")
48
+ end
49
+
50
+ def ico(name)
51
+ raw("<i class=\"glyphicon glyphicon-#{name}\"></i> ")
28
52
  end
29
53
 
30
54
  def parent_layout(layout)
@@ -7,14 +7,14 @@
7
7
  %li= msg
8
8
  = f.input :active
9
9
 
10
-
10
+
11
11
 
12
12
  - I18n.available_locales.each do |locale|
13
13
  %h1
14
14
  = locale
15
15
  = f.globalize_fields_for locale do |g|
16
16
  = g.input :title
17
- = g.input :text, :as => :ckeditor, :input_html => { :ckeditor => {:toolbar => 'Full'} }
17
+ = g.input :text, :as => :ckeditor, :input_html => { :ckeditor => {:width=>'100%',:height => 200,:toolbar => 'Full'} }
18
18
 
19
19
 
20
20
  = f.submit 'Save', :class=>'btn btn-primary'
@@ -1,14 +1,11 @@
1
1
  = render 'menu'
2
2
 
3
- .row
4
- .span3
5
- %br
6
- .span11
7
3
 
8
- %h1 Edycja pytania
4
+ - content_for :title do
5
+ Edycja pytania
9
6
 
10
- = render 'form'
7
+ = render 'form'
11
8
 
12
- = link_to 'Show', [:admin,@faq]
13
- \|
14
- = link_to 'Back', admin_faqs_path
9
+ = link_to 'Show', [:admin,@faq]
10
+ \|
11
+ = link_to 'Back', admin_faqs_path
@@ -1,6 +1,6 @@
1
1
  = render 'menu'
2
2
 
3
- %h1
3
+ - content_for :title do
4
4
  -if params[:faqs] && params[:faqs] == 'active'
5
5
  = t('helpdesk.faqs.active')
6
6
  -elsif params[:faqs] && params[:faqs] == 'inactive'
@@ -27,7 +27,7 @@
27
27
  = t('helpdesk.faqs.faq.inactive')
28
28
  %div.span5
29
29
  = faq.title
30
- %div.span2
30
+ %div.span2
31
31
  = link_to t('helpdesk.show'), admin_faq_path(faq), class: 'btn btn-info btn-mini'
32
32
  = link_to t('helpdesk.edit'), edit_admin_faq_path(faq),class: 'btn btn-primary btn-mini'
33
33
  = link_to t('helpdesk.destroy'), admin_faq_path(faq), method: :delete, data: { confirm: 'Are you sure?' },class: 'btn btn-danger btn-mini'
@@ -1,5 +1,6 @@
1
1
  = render 'menu'
2
- %h1 New faq
2
+ - content_for :title do
3
+ New faq
3
4
 
4
5
  = render 'form'
5
6
 
@@ -1,6 +1,7 @@
1
1
  = render 'menu'
2
2
 
3
- %h1 Editing sub
3
+ - content_for :title do
4
+ Editing sub
4
5
 
5
6
  = render 'form'
6
7
 
@@ -1,6 +1,7 @@
1
1
  = render 'menu'
2
2
 
3
- %h1 Subscribers
3
+ - content_for :title do
4
+ Subscribers
4
5
 
5
6
  %table.table.table-hover
6
7
  %tr
@@ -19,7 +20,7 @@
19
20
  = ico('ok')
20
21
  %td= subscriber.send Helpdesk.display_user.to_sym
21
22
  %td= subscriber.email
22
-
23
+
23
24
  %td= subscriber.lang
24
25
  %td= I18n::l(subscriber.created_at, :format=>:short)
25
26
  / %td= link_to 'Show', admin_subscriber_path(subscriber)
@@ -1,4 +1,5 @@
1
- %h1 New subscriber
1
+ - content_for :title do
2
+ New subscriber
2
3
 
3
4
  = render 'form'
4
5
 
@@ -1,6 +1,7 @@
1
1
  = render 'menu'
2
2
 
3
- %h1 Editing ticket_type
3
+ - content_for :title do
4
+ Editing ticket_type
4
5
 
5
6
  = render 'form'
6
7
 
@@ -1,6 +1,6 @@
1
1
  = render 'menu'
2
2
 
3
- %h1
3
+ - content_for :title do
4
4
  -if params[:ticket_types] && params[:ticket_types] == 'active'
5
5
  = t('helpdesk.ticket_types.active')
6
6
  -elsif params[:ticket_types] && params[:ticket_types] == 'inactive'
@@ -1,6 +1,7 @@
1
1
  = render 'menu'
2
2
 
3
- %h1 New ticket_type
3
+ - content_for :title do
4
+ New ticket_type
4
5
 
5
6
  = render 'form'
6
7
 
@@ -1,4 +1,4 @@
1
- = simple_form_for([:admin, @ticket], :html => {:class => 'form-horizontal' }) do |f|
1
+ = simple_form_for([:admin, @ticket]) do |f|
2
2
  - if @ticket.errors.any?
3
3
  %div.error_explanation
4
4
  %h2
@@ -13,11 +13,11 @@
13
13
  = f.input :assignee_id, :collection => User.where('helpdesk_admin = ?', true)
14
14
  = f.input :ticket_type_id, :collection => Helpdesk::TicketType.active,include_blank: false
15
15
  - if @ticket.new_record?
16
- = f.input :description
16
+ = f.input :description,input_html:{rows:4}
17
17
  - else
18
18
  = simple_format @ticket.description
19
19
 
20
20
 
21
21
  %div.form-actions
22
- = f.button :submit, :class => 'btn-primary'
22
+ = f.button :submit, :class => 'btn btn-primary'
23
23
  = submit_tag 'Anuluj', :type => :reset, :class => "btn btn-danger"
@@ -20,7 +20,7 @@
20
20
  = ticket.assignee.send Helpdesk.display_user_uniq_info.to_sym
21
21
  - else
22
22
  = t('helpdesk.tickets.not_assigned')
23
- = link_to ico('star','white') + t('helpdesk.tickets.assign_me'), assign_admin_ticket_path(ticket),class: 'btn btn-mini btn-info'
23
+ = link_to ico('star') + t('helpdesk.tickets.assign_me'), assign_admin_ticket_path(ticket),class: 'btn btn-mini btn-info'
24
24
  %tr
25
25
  %td
26
26
  %span.btn.disabled
@@ -33,7 +33,7 @@
33
33
  %li.comment{:id=>"comment#{comment.id}"}
34
34
  %div.comment-left
35
35
  - if comment.public
36
- = status_label ico('envelope','white') + t('helpdesk.comments.send') ,'label-success'
36
+ = status_label ico('envelope') + t('helpdesk.comments.send') ,'label-success'
37
37
  - else
38
38
  = status_label t('helpdesk.comments.note'),''
39
39
  %br
@@ -41,7 +41,7 @@
41
41
  = "#"
42
42
  %div.comment-header
43
43
  -if comment.author == ticket.requester
44
- = status_label ico('user','white')+ t('helpdesk.comments.author'),'label-info'
44
+ = status_label ico('user')+ t('helpdesk.comments.author'),'label-info'
45
45
  = comment.author.send Helpdesk.display_user_uniq_info.to_sym if comment.author
46
46
  %small
47
47
  = time_ago_in_words(comment.created_at)
@@ -1,5 +1,5 @@
1
1
  = render 'menu'
2
- %h2
2
+ - content_for :title do
3
3
  = t('helpdesk.ticket')
4
4
  = "##{@ticket.subject}"
5
5
  = render 'form'
@@ -12,7 +12,7 @@
12
12
  %li.comment{:id=>"comment#{comment.id}"}
13
13
  %div.comment-left
14
14
  - if comment.public
15
- = status_label ico('envelope','white') + t('helpdesk.comments.send') ,'label-success'
15
+ = status_label ico('envelope') + t('helpdesk.comments.send') ,'label-success'
16
16
  - else
17
17
  = status_label t('helpdesk.comments.note'),''
18
18
  %br
@@ -20,8 +20,8 @@
20
20
  = "#"
21
21
  %div.comment-header
22
22
  -if comment.author == @ticket.requester
23
- = status_label ico('user','white')+ t('helpdesk.comments.author'),'label-info'
24
-
23
+ = status_label ico('user')+ t('helpdesk.comments.author'),'label-info'
24
+
25
25
  = comment.author.send Helpdesk.display_user.to_sym if comment.author
26
26
  %small
27
27
  = time_ago_in_words(comment.created_at)
@@ -1,6 +1,6 @@
1
1
  = render 'menu'
2
2
 
3
- %h1
3
+ - content_for :title do
4
4
  -if params[:tickets] && params[:tickets] == 'unassigned'
5
5
  = t('helpdesk.tickets.unassigned')
6
6
  -elsif params[:tickets] && params[:tickets] == 'closed'
@@ -1,4 +1,4 @@
1
1
  = render 'menu'
2
- %h1
2
+ - content_for :title do
3
3
  = t('helpdesk.new_ticket')
4
- = render 'form'
4
+ = render 'form'
@@ -7,11 +7,11 @@
7
7
  %tr{:class=>@ticket.ticket_type.tr_class}
8
8
 
9
9
  %td
10
-
10
+
11
11
  - unless @ticket.open?
12
12
  = t('helpdesk.tickets.ticket_closed')
13
13
  -else
14
- = simple_form_for([:admin, @ticket], :html => {:class => 'form-horizontal' }) do |f|
14
+ = simple_form_for([:admin, @ticket]) do |f|
15
15
  - if @ticket.errors.any?
16
16
  %div.error_explanation
17
17
  %h2
@@ -21,16 +21,16 @@
21
21
  %li
22
22
  = msg
23
23
  = f.input :status, :collection => Helpdesk::Ticket::STATUS_OPTIONS, include_blank: false
24
- = f.input :assignee_id, :collection => User.where('helpdesk_admin = ?', true)
25
-
24
+ = f.input :assignee_id, :collection => User.where('helpdesk_admin = ?', true)
25
+
26
26
 
27
27
  = f.simple_fields_for :comments,@ticket.comments.build do |tickets_form|
28
28
  - unless tickets_form.object.persisted?
29
29
  = tickets_form.input :comment, :input_html=>{class: 'comment-textarea'}
30
30
  / , :as => :ckeditor, :input_html => { :ckeditor => {:toolbar => 'mini'},:language => I18n.locale}
31
31
 
32
- = tickets_form.input :public, :hint => t('helpdesk.tickets.visible_to_autor')
33
- = tickets_form.input :author_id, :as => :hidden, :input_html => { :value => helpdesk_user.id }
32
+ = tickets_form.input :public, :hint => t('helpdesk.tickets.visible_to_autor')
33
+ = tickets_form.input :author_id, :as => :hidden, :input_html => { :value => helpdesk_user.id }
34
34
  %div.form-actions
35
- = f.button :submit, :class => 'btn-primary'
36
- = submit_tag 'Anuluj', :type => :reset, :class => "btn btn-danger"
35
+ = f.button :submit, :class => 'btn btn-primary'
36
+ = submit_tag 'Anuluj', :type => :reset, :class => "btn btn-danger"
@@ -13,7 +13,7 @@
13
13
  %div.subject
14
14
  %input{:value=>@ticket.subject,:name=>"ticket[subject]",:type => "text",:placeholder => t('helpdesk.tickets.subject')}
15
15
  %select{:name=>"ticket[ticket_type_id]"}
16
- - Helpdesk::TicketType.all.each do |type|
16
+ - Helpdesk::TicketType.includes(:translations).all.each do |type|
17
17
  %option{:value=>type.id, selected: type.id == @ticket.ticket_type_id}
18
18
  = type.title
19
19
 
@@ -32,5 +32,5 @@
32
32
  %div.textRight
33
33
  %a#feedbackCancel{:class=>"btn white"}
34
34
  Anuluj
35
- %input{:type => "submit",:value => 'Wyślij', :class=>"btn"}
35
+ %input{:type => "submit",:value => 'Wyślij', :class=>"btn btn-primary"}
36
36
  %div.clearBoth
@@ -31,7 +31,7 @@
31
31
  %li.comment{:id=>"comment#{comment.id}"}
32
32
  %div.comment-left
33
33
  - if comment.public
34
- = status_label ico('envelope','white') + t('helpdesk.comments.send') ,'label-success'
34
+ = status_label ico('envelope') + t('helpdesk.comments.send') ,'label-success'
35
35
  - else
36
36
  = status_label t('helpdesk.comments.note'),''
37
37
  %br
@@ -39,7 +39,7 @@
39
39
  = "#"
40
40
  %div.comment-header
41
41
  -if comment.author != ticket.requester
42
- = status_label ico('user','white')+ t('helpdesk.comments.helpdesk'),'label-info'
42
+ = status_label ico('user')+ t('helpdesk.comments.helpdesk'),'label-info'
43
43
 
44
44
  = comment.author.send Helpdesk.display_user.to_sym
45
45
  %small
@@ -1,4 +1,4 @@
1
- %h1
1
+ - content_for :title do
2
2
  -if params[:tickets] && params[:tickets] == 'closed'
3
3
  = t('helpdesk.tickets.closed')
4
4
 
@@ -12,4 +12,5 @@
12
12
  - if @tickets.size == 0
13
13
  = t('helpdesk.tickets.you_have_no_tickets')
14
14
  - @tickets.each do |ticket|
15
- = render 'ticket', ticket: ticket, show_button:true
15
+ = render 'ticket', ticket: ticket, show_button:true
16
+ = paginate @tickets
@@ -1,4 +1,4 @@
1
1
  = render 'menu'
2
- %h1
2
+ - content_for :title do
3
3
  = t('helpdesk.new_ticket')
4
- = render 'form'
4
+ = render 'form'
@@ -28,11 +28,11 @@
28
28
 
29
29
  = f.simple_fields_for :comments,@ticket.comments.build do |tickets_form|
30
30
  - unless tickets_form.object.persisted?
31
- = tickets_form.input :comment, :input_html=>{class: 'comment-textarea'}
31
+ = tickets_form.input :comment, :input_html=>{class: 'comment-textarea',rows: 5}
32
32
  / , :as => :ckeditor, :input_html => { :ckeditor => {:toolbar => 'mini'},:language => I18n.locale}
33
33
 
34
34
  = tickets_form.input :public, :input_html => {:value=>1},:as=>:hidden
35
35
  = tickets_form.input :author_id, :as => :hidden, :input_html => { :value => helpdesk_user.id }
36
36
  %div
37
- = f.button :submit, :class => 'btn-primary'
38
- = submit_tag 'Anuluj', :type => :reset, :class => "btn btn-danger"
37
+ = f.button :submit, :class => 'btn btn-primary'
38
+ = submit_tag 'Anuluj', :type => :reset, :class => "btn btn-default"
@@ -1,22 +1,26 @@
1
- .navbar
2
- .navbar-inner
3
- / .container
4
- =link_to Helpdesk.site_address, main_app.root_path, :class=>'brand', :title => t('helpdesk.name')
5
- =link_to t('helpdesk.name'), admin_root_path, :class=>'brand', :title => t('helpdesk.name')
6
- %nav
7
- %ul.nav
8
- -if helpdesk_admin?
9
- = menu_li t('helpdesk.tickets.title'),admin_tickets_path
10
- / = menu_li t('helpdesk.ticket_types.title'),admin_ticket_types_path
11
- = menu_li t('helpdesk.subscribers.title'),admin_subscribers_path
12
- = menu_li t('helpdesk.faqs.title'),admin_faqs_path
1
+ %nav.navbar.navbar-default#site_topmmenu{role: 'navigation'}
2
+ .navbar-header
3
+ %button.navbar-toggle{"data-target" => "#bs-navbar-collapse-1", "data-toggle" => "collapse", type: "button"}
4
+ %span.sr-only Toggle navigation
5
+ %span.icon-bar
6
+ %span.icon-bar
7
+ %span.icon-bar
8
+ =link_to Helpdesk.site_address, main_app.root_path, :class=>'navbar-brand', :title => t('helpdesk.name')
9
+ =link_to t('helpdesk.name'), admin_root_path, :class=>'navbar-brand', :title => t('helpdesk.name')
10
+ #bs-navbar-collapse-1.collapse.navbar-collapse.in
11
+ %ul.nav.navbar-nav
12
+ -if helpdesk_admin?
13
+ = menu_li t('helpdesk.tickets.title'),admin_tickets_path
14
+ / = menu_li t('helpdesk.ticket_types.title'),admin_ticket_types_path
15
+ = menu_li t('helpdesk.subscribers.title'),admin_subscribers_path
16
+ = menu_li t('helpdesk.faqs.title'),admin_faqs_path
13
17
 
14
- %li.dropdown.user(data-dropdown="dropdown")
15
- = link_to current_user.display_name, "#",:class=>"dropdown-toggle"
16
- %ul.dropdown-menu
17
- %li.signout
18
- =link_to 'Wróć do aplikacji',main_app.root_path
19
- =link_to t('users.sign_out'),main_app.destroy_user_session_path, :method => :delete, :class => 'icon exit blue'
20
- -else
21
- =menu_li t('users.sign_in'),new_user_session_path, {:class => "power"}
22
- =menu_li t('users.sign_up'),new_user_registration_path, {:class => "signup"}
18
+ %li.dropdown.user(data-dropdown="dropdown")
19
+ = link_to current_user.display_name, "#",:class=>"dropdown-toggle"
20
+ %ul.dropdown-menu
21
+ %li.signout
22
+ =link_to 'Wróć do aplikacji',main_app.root_path
23
+ =link_to t('users.sign_out'),main_app.destroy_user_session_path, :method => :delete, :class => 'icon exit blue'
24
+ -else
25
+ =menu_li t('users.sign_in'),new_user_session_path, {:class => "power"}
26
+ =menu_li t('users.sign_up'),new_user_registration_path, {:class => "signup"}
@@ -1,10 +1,19 @@
1
- .navbar
2
- .navbar-inner
3
- / .container
4
- =link_to Helpdesk.site_address, main_app.root_path, :class=>'brand', :title => Helpdesk.site_address
5
- =link_to Helpdesk.name, root_path, :class=>'brand', :title => Helpdesk.name
6
- %nav
7
- %ul.nav
8
- = menu_li t('helpdesk.tickets.title'),tickets_path
9
- = menu_li t('helpdesk.faq'),faqs_path
1
+ %nav.navbar.navbar-default#site_topmmenu{role: 'navigation'}
2
+ .navbar-header
3
+ %button.navbar-toggle{"data-target" => "#bs-navbar-collapse-1", "data-toggle" => "collapse", type: "button"}
4
+ %span.sr-only Toggle navigation
5
+ %span.icon-bar
6
+ %span.icon-bar
7
+ %span.icon-bar
8
+ =link_to Helpdesk.site_address, main_app.root_path, :class=>'navbar-brand', :title => Helpdesk.site_address
9
+ =link_to Helpdesk.name, root_path, :class=>'navbar-brand', :title => Helpdesk.name
10
+ #bs-navbar-collapse-1.collapse.navbar-collapse.in
11
+ %ul.nav.navbar-nav
12
+ = menu_li t('helpdesk.tickets.title'),tickets_path
13
+ = menu_li t('helpdesk.faq'),faqs_path
14
+
15
+
16
+
17
+
18
+
10
19
 
@@ -13,15 +13,23 @@
13
13
  = render 'layouts/helpdesk/topmenu'
14
14
  .content
15
15
  .row
16
- .span3
16
+ .col.col-md-3#site_leftmenu
17
17
  =yield :left
18
- .span9
18
+ .col.col-md-9#site_leftmenu
19
19
  .flash
20
20
  - flash.each do |type, message|
21
21
  %div{:class => "alert alert-#{type}", "data-alert"=>"alert"}
22
- =link_to "x",'#', :class=>'close', :'data-dismiss'=>"alert"
23
- %p= message
24
- =yield
25
- =yield :scripts
22
+ =link_to "x",'#', :class=>'close', :'data-dismiss'=>"alert"
23
+ %p= message
24
+ - if content_for?(:title)
25
+ .panel.panel-default
26
+ .panel-heading
27
+ %h3.panel-title
28
+ = content_for?(:title) ? content_for(:title) : ''
29
+ .panel-body
30
+ = yield
31
+ - else
32
+ = yield
33
+ =yield :scripts
26
34
 
27
35
 
@@ -13,13 +13,21 @@
13
13
  = render 'layouts/helpdesk/topuser'
14
14
  .content
15
15
  .row
16
- .span3
16
+ .col.col-md-3#site_leftmenu
17
17
  =yield :left
18
- .span9
18
+ .col.col-md-9#site_leftmenu
19
19
  .flash
20
20
  - flash.each do |type, message|
21
21
  %div{:class => "alert alert-#{type}", "data-alert"=>"alert"}
22
- =link_to "x",'#', :class=>'close', :'data-dismiss'=>"alert"
23
- %p= message
24
- =yield
25
- =yield :scripts
22
+ =link_to "x",'#', :class=>'close', :'data-dismiss'=>"alert"
23
+ %p= message
24
+ - if content_for?(:title)
25
+ .panel.panel-default
26
+ .panel-heading
27
+ %h3.panel-title
28
+ = content_for?(:title) ? content_for(:title) : ''
29
+ .panel-body
30
+ = yield
31
+ - else
32
+ = yield
33
+ =yield :scripts
@@ -1,176 +1,115 @@
1
+ inputs = %w[
2
+ CollectionSelectInput
3
+ DateTimeInput
4
+ FileInput
5
+ GroupedCollectionSelectInput
6
+ NumericInput
7
+ PasswordInput
8
+ RangeInput
9
+ StringInput
10
+ TextInput
11
+ ]
12
+
13
+
14
+ # Instead of creating top-level custom input classes like TextInput, we wrap it into a module and override
15
+ # mapping in SimpleForm::FormBuilder directly
16
+ #
17
+ SimpleFormBootstrapInputs = Module.new
18
+ inputs.each do |input_type|
19
+ superclass = "SimpleForm::Inputs::#{input_type}".constantize
20
+
21
+ new_class = SimpleFormBootstrapInputs.const_set(input_type, Class.new(superclass) do
22
+ def input_html_classes
23
+ super.push('form-control')
24
+ end
25
+ end)
26
+
27
+ # Now override existing usages of superclass with new_class
28
+ SimpleForm::FormBuilder.mappings.each do |(type, target_class)|
29
+ if target_class == superclass
30
+ SimpleForm::FormBuilder.map_type(type, to: new_class)
31
+ end
32
+ end
33
+ end
34
+ # inputs.each do |input_type|
35
+ # superclass = "SimpleForm::Inputs::#{input_type}".constantize
36
+
37
+ # new_class = Class.new(superclass) do
38
+ # def input_html_classes
39
+ # super.push('form-control')
40
+ # end
41
+ # end
42
+
43
+ # Object.const_set(input_type, new_class)
44
+ # end
45
+
1
46
  # Use this setup block to configure all options available in SimpleForm.
2
47
  SimpleForm.setup do |config|
3
- # Wrappers are used by the form builder to generate a
4
- # complete input. You can remove any component from the
5
- # wrapper, change the order or even add your own to the
6
- # stack. The options given below are used to wrap the
7
- # whole input.
8
- config.wrappers :default, :class => :input,
9
- :hint_class => :field_with_hint, :error_class => :field_with_errors do |b|
10
- ## Extensions enabled by default
11
- # Any of these extensions can be disabled for a
12
- # given input by passing: `f.input EXTENSION_NAME => false`.
13
- # You can make any of these extensions optional by
14
- # renaming `b.use` to `b.optional`.
15
-
16
- # Determines whether to use HTML5 (:email, :url, ...)
17
- # and required attributes
18
- b.use :html5
19
-
20
- # Calculates placeholders automatically from I18n
21
- # You can also pass a string as f.input :placeholder => "Placeholder"
22
- b.use :placeholder
23
48
 
24
- ## Optional extensions
25
- # They are disabled unless you pass `f.input EXTENSION_NAME => :lookup`
26
- # to the input. If so, they will retrieve the values from the model
27
- # if any exists. If you want to enable the lookup for any of those
28
- # extensions by default, you can change `b.optional` to `b.use`.
49
+ config.browser_validations = true
29
50
 
30
- # Calculates maxlength from length validations for string inputs
31
- b.optional :maxlength
51
+ config.boolean_style = :nested
32
52
 
33
- # Calculates pattern from format validations for string inputs
34
- b.optional :pattern
53
+ config.wrappers :bootstrap3, tag: 'div', class: 'form-group', error_class: 'has-error',
54
+ defaults: { input_html: { class: 'default_class' } } do |b|
35
55
 
36
- # Calculates min and max from length validations for numeric inputs
37
- b.optional :min_max
56
+ b.use :html5
57
+ b.use :min_max
58
+ b.use :maxlength
59
+ b.use :placeholder
38
60
 
39
- # Calculates readonly automatically from readonly attributes
61
+ b.optional :pattern
40
62
  b.optional :readonly
41
63
 
42
- ## Inputs
43
64
  b.use :label_input
44
- b.use :hint, :wrap_with => { :tag => :span, :class => :hint }
45
- b.use :error, :wrap_with => { :tag => :span, :class => :error }
65
+ b.use :hint, wrap_with: { tag: 'span', class: 'help-block' }
66
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block has-error' }
46
67
  end
47
68
 
48
- config.wrappers :bootstrap, :tag => 'div', :class => 'control-group', :error_class => 'error' do |b|
69
+ config.wrappers :prepend, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
49
70
  b.use :html5
50
71
  b.use :placeholder
51
- b.use :label
52
- b.wrapper :tag => 'div', :class => 'controls' do |ba|
53
- ba.use :input
54
- ba.use :error, :wrap_with => { :tag => 'span', :class => 'help-inline' }
55
- ba.use :hint, :wrap_with => { :tag => 'p', :class => 'help-block' }
72
+ b.wrapper tag: 'div', class: 'controls' do |input|
73
+ input.wrapper tag: 'div', class: 'input-group' do |prepend|
74
+ prepend.use :label , class: 'input-group-addon' ###Please note setting class here fro the label does not currently work (let me know if you know a workaround as this is the final hurdle)
75
+ prepend.use :input
76
+ end
77
+ input.use :hint, wrap_with: { tag: 'span', class: 'help-block' }
78
+ input.use :error, wrap_with: { tag: 'span', class: 'help-block has-error' }
56
79
  end
57
80
  end
58
81
 
59
- config.wrappers :prepend, :tag => 'div', :class => "control-group", :error_class => 'error' do |b|
82
+ config.wrappers :append, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
60
83
  b.use :html5
61
84
  b.use :placeholder
62
- b.use :label
63
- b.wrapper :tag => 'div', :class => 'controls' do |input|
64
- input.wrapper :tag => 'div', :class => 'input-prepend' do |prepend|
85
+ b.wrapper tag: 'div', class: 'controls' do |input|
86
+ input.wrapper tag: 'div', class: 'input-group' do |prepend|
65
87
  prepend.use :input
88
+ prepend.use :label , class: 'input-group-addon' ###Please note setting class here fro the label does not currently work (let me know if you know a workaround as this is the final hurdle)
66
89
  end
67
- input.use :hint, :wrap_with => { :tag => 'span', :class => 'help-block' }
68
- input.use :error, :wrap_with => { :tag => 'span', :class => 'help-inline' }
90
+ input.use :hint, wrap_with: { tag: 'span', class: 'help-block' }
91
+ input.use :error, wrap_with: { tag: 'span', class: 'help-block has-error' }
69
92
  end
70
93
  end
71
94
 
72
- config.wrappers :append, :tag => 'div', :class => "control-group", :error_class => 'error' do |b|
95
+ config.wrappers :checkbox, tag: :div, class: "checkbox", error_class: "has-error" do |b|
96
+
97
+ # Form extensions
73
98
  b.use :html5
74
- b.use :placeholder
75
- b.use :label
76
- b.wrapper :tag => 'div', :class => 'controls' do |input|
77
- input.wrapper :tag => 'div', :class => 'input-append' do |append|
78
- append.use :input
79
- end
80
- input.use :hint, :wrap_with => { :tag => 'span', :class => 'help-block' }
81
- input.use :error, :wrap_with => { :tag => 'span', :class => 'help-inline' }
99
+
100
+ # Form components
101
+ b.wrapper tag: :label do |ba|
102
+ ba.use :input
103
+ ba.use :label_text
82
104
  end
105
+
106
+ b.use :hint, wrap_with: { tag: :p, class: "help-block" }
107
+ b.use :error, wrap_with: { tag: :span, class: "help-block text-danger" }
83
108
  end
84
109
 
85
110
  # Wrappers for forms and inputs using the Twitter Bootstrap toolkit.
86
- # Check the Bootstrap docs (http://twitter.github.com/bootstrap)
111
+ # Check the Bootstrap docs (http://getbootstrap.com/)
87
112
  # to learn about the different styles for forms and inputs,
88
113
  # buttons and other elements.
89
- config.default_wrapper = :bootstrap
90
-
91
- # Define the way to render check boxes / radio buttons with labels.
92
- # Defaults to :nested for bootstrap config.
93
- # :inline => input + label
94
- # :nested => label > input
95
- config.boolean_style = :nested
96
-
97
- # Default class for buttons
98
- config.button_class = 'btn'
99
-
100
- # Method used to tidy up errors.
101
- # config.error_method = :first
102
-
103
- # Default tag used for error notification helper.
104
- config.error_notification_tag = :div
105
-
106
- # CSS class to add for error notification helper.
107
- config.error_notification_class = 'alert alert-error'
108
-
109
- # ID to add for error notification helper.
110
- # config.error_notification_id = nil
111
-
112
- # Series of attempts to detect a default label method for collection.
113
- # config.collection_label_methods = [ :to_label, :name, :title, :to_s ]
114
-
115
- # Series of attempts to detect a default value method for collection.
116
- # config.collection_value_methods = [ :id, :to_s ]
117
-
118
- # You can wrap a collection of radio/check boxes in a pre-defined tag, defaulting to none.
119
- # config.collection_wrapper_tag = nil
120
-
121
- # You can define the class to use on all collection wrappers. Defaulting to none.
122
- # config.collection_wrapper_class = nil
123
-
124
- # You can wrap each item in a collection of radio/check boxes with a tag,
125
- # defaulting to :span. Please note that when using :boolean_style = :nested,
126
- # SimpleForm will force this option to be a label.
127
- # config.item_wrapper_tag = :span
128
-
129
- # You can define a class to use in all item wrappers. Defaulting to none.
130
- # config.item_wrapper_class = nil
131
-
132
- # How the label text should be generated altogether with the required text.
133
- # config.label_text = lambda { |label, required| "#{required} #{label}" }
134
-
135
- # You can define the class to use on all labels. Default is nil.
136
- config.label_class = 'control-label'
137
-
138
- # You can define the class to use on all forms. Default is simple_form.
139
- # config.form_class = :simple_form
140
-
141
- # You can define which elements should obtain additional classes
142
- # config.generate_additional_classes_for = [:wrapper, :label, :input]
143
-
144
- # Whether attributes are required by default (or not). Default is true.
145
- # config.required_by_default = true
146
-
147
- # Tell browsers whether to use default HTML5 validations (novalidate option).
148
- # Default is enabled.
149
- config.browser_validations = false
150
-
151
- # Collection of methods to detect if a file type was given.
152
- # config.file_methods = [ :mounted_as, :file?, :public_filename ]
153
-
154
- # Custom mappings for input types. This should be a hash containing a regexp
155
- # to match as key, and the input type that will be used when the field name
156
- # matches the regexp as value.
157
- # config.input_mappings = { /count/ => :integer }
158
-
159
- # Default priority for time_zone inputs.
160
- # config.time_zone_priority = nil
161
-
162
- # Default priority for country inputs.
163
- # config.country_priority = nil
164
-
165
- # Default size for text inputs.
166
- # config.default_input_size = 50
167
-
168
- # When false, do not use translations for labels.
169
- # config.translate_labels = true
170
-
171
- # Automatically discover new inputs in Rails' autoload path.
172
- # config.inputs_discovery = true
173
-
174
- # Cache SimpleForm inputs discovery
175
- # config.cache_discovery = !Rails.env.development?
114
+ config.default_wrapper = :bootstrap3
176
115
  end
data/config/routes.rb CHANGED
@@ -11,7 +11,7 @@ Helpdesk::Engine.routes.draw do
11
11
  post :sort, on: :collection
12
12
  end
13
13
  resources :subscribers
14
- root :to => "dashboard#index"
14
+ root :to => "tickets#index"
15
15
  end
16
16
 
17
17
  resources :faqs, :only => [ :index ]
@@ -1,3 +1,3 @@
1
1
  module Helpdesk
2
- VERSION = "0.0.11"
2
+ VERSION = "0.0.13"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: helpdesk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Beynon Wacław Łuczak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-12 00:00:00.000000000 Z
11
+ date: 2014-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: launchy
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: bullet
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: chosen-rails
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -168,16 +182,16 @@ dependencies:
168
182
  name: bootstrap-sass
169
183
  requirement: !ruby/object:Gem::Requirement
170
184
  requirements:
171
- - - '='
185
+ - - ~>
172
186
  - !ruby/object:Gem::Version
173
- version: 2.3.2.2
187
+ version: 3.1.0
174
188
  type: :runtime
175
189
  prerelease: false
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
- - - '='
192
+ - - ~>
179
193
  - !ruby/object:Gem::Version
180
- version: 2.3.2.2
194
+ version: 3.1.0
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: rails
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -297,6 +311,8 @@ executables: []
297
311
  extensions: []
298
312
  extra_rdoc_files: []
299
313
  files:
314
+ - MIT-LICENSE
315
+ - Rakefile
300
316
  - app/assets/javascripts/helpdesk/admin/dashboard.js
301
317
  - app/assets/javascripts/helpdesk/admin/tickets.js
302
318
  - app/assets/javascripts/helpdesk/application.js
@@ -304,14 +320,14 @@ files:
304
320
  - app/assets/javascripts/helpdesk/dashboard.js
305
321
  - app/assets/javascripts/helpdesk/faqs.js
306
322
  - app/assets/javascripts/helpdesk/subscribers.js
323
+ - app/assets/stylesheets/helpdesk/admin.css
307
324
  - app/assets/stylesheets/helpdesk/admin/bootstrap_overrides.css
308
325
  - app/assets/stylesheets/helpdesk/admin/dashboard.css
309
326
  - app/assets/stylesheets/helpdesk/admin/tickets.css
310
- - app/assets/stylesheets/helpdesk/admin.css
311
327
  - app/assets/stylesheets/helpdesk/application.css
312
328
  - app/assets/stylesheets/helpdesk/dashboard.css
313
329
  - app/assets/stylesheets/helpdesk/faqs.css.scss
314
- - app/assets/stylesheets/helpdesk/imports.css.scss
330
+ - app/assets/stylesheets/helpdesk/imports.css.sass
315
331
  - app/assets/stylesheets/helpdesk/subscribers.css.scss
316
332
  - app/assets/stylesheets/helpdesk/tickets.css.sass
317
333
  - app/controllers/helpdesk/admin/base_controller.rb
@@ -402,15 +418,13 @@ files:
402
418
  - db/migrate/20130522085614_create_helpdesk_faqs.rb
403
419
  - db/migrate/20130522090420_create_helpdesk_subscribers.rb
404
420
  - lib/generators/helpdesk/install_generator.rb
405
- - lib/generators/helpdesk/templates/helpdesk.rb
406
421
  - lib/generators/helpdesk/templates/README
422
+ - lib/generators/helpdesk/templates/helpdesk.rb
423
+ - lib/helpdesk.rb
407
424
  - lib/helpdesk/engine.rb
408
425
  - lib/helpdesk/version.rb
409
- - lib/helpdesk.rb
410
426
  - lib/tasks/prepare_ci_env.rake
411
427
  - lib/templates/erb/scaffold/_form.html.erb
412
- - MIT-LICENSE
413
- - Rakefile
414
428
  homepage: http://github.com/wacaw/helpdesk
415
429
  licenses:
416
430
  - MIT
@@ -431,7 +445,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
431
445
  version: '0'
432
446
  requirements: []
433
447
  rubyforge_project:
434
- rubygems_version: 2.1.11
448
+ rubygems_version: 2.2.1
435
449
  signing_key:
436
450
  specification_version: 4
437
451
  summary: Rails mountable engine providing basic helpdesk functionality for your applications
@@ -1,34 +0,0 @@
1
- @import "bootstrap/variables";
2
- @import "bootstrap/mixins";
3
-
4
- @import "bootstrap/scaffolding";
5
- @import "bootstrap/grid";
6
- @import "bootstrap/layouts";
7
- @import "bootstrap/type";
8
- @import "bootstrap/code";
9
- @import "bootstrap/forms";
10
- @import "bootstrap/tables";
11
- @import "bootstrap/sprites";
12
- @import "bootstrap/dropdowns";
13
- @import "bootstrap/wells";
14
- @import "bootstrap/component-animations";
15
- @import "bootstrap/close";
16
- @import "bootstrap/buttons";
17
- @import "bootstrap/button-groups";
18
- @import "bootstrap/alerts";
19
- @import "bootstrap/navs";
20
- @import "bootstrap/navbar";
21
- @import "bootstrap/breadcrumbs";
22
- @import "bootstrap/pagination";
23
- @import "bootstrap/pager";
24
- @import "bootstrap/modals";
25
- @import "bootstrap/tooltip";
26
- @import "bootstrap/popovers";
27
- @import "bootstrap/thumbnails";
28
- @import "bootstrap/labels-badges";
29
- @import "bootstrap/progress-bars";
30
- @import "bootstrap/accordion";
31
- @import "bootstrap/carousel";
32
- @import "bootstrap/hero-unit";
33
- @import "bootstrap/utilities";
34
-