helpdesk 0.0.30 → 0.0.31
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/helpdesk/admin/tickets.js +1 -5
- data/app/assets/javascripts/helpdesk/faqs.js +14 -2
- data/app/assets/stylesheets/helpdesk/faqs.css.scss +77 -3
- data/app/controllers/helpdesk/admin/faqs_controller.rb +15 -4
- data/app/controllers/helpdesk/faqs_controller.rb +10 -1
- data/app/models/helpdesk/faq.rb +31 -0
- data/app/models/helpdesk/ticket.rb +1 -5
- data/app/views/helpdesk/admin/faqs/_faq.html.haml +10 -0
- data/app/views/helpdesk/admin/faqs/_form.html.haml +1 -0
- data/app/views/helpdesk/admin/faqs/_menu.html.haml +4 -1
- data/app/views/helpdesk/admin/faqs/index.html.haml +5 -46
- data/app/views/helpdesk/admin/faqs/sorting.html.haml +46 -0
- data/app/views/helpdesk/faqs/_faq.html.haml +8 -0
- data/app/views/helpdesk/faqs/_menu.html.haml +11 -0
- data/app/views/helpdesk/faqs/index.html.haml +8 -17
- data/app/views/helpdesk/faqs/search.html.haml +27 -0
- data/app/views/helpdesk/faqs/show.html.haml +15 -0
- data/app/views/layouts/helpdesk/_topmenu.html.haml +2 -0
- data/app/views/layouts/helpdesk/_topuser.html.haml +5 -1
- data/config/locales/helpdesk.en.yml +7 -0
- data/config/locales/helpdesk.pl.yml +11 -0
- data/config/routes.rb +4 -1
- data/db/migrate/20141105112734_add_parent_id_to_helpdesk_faqs.rb +8 -0
- data/lib/helpdesk/engine.rb +1 -0
- data/lib/helpdesk/version.rb +1 -1
- metadata +23 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d67332e83f1fe55016bd1540a32cb5cc4fec9bd2
|
4
|
+
data.tar.gz: 69fd17578fdd0cb2843e0fffd81a67e066fa6c2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab37716c9dff6baff0d6a5b4dca6d1282349189b60d9d80eb56203c25a0db82880af784b68ccd096f3d58b504c5ff6a3d85fbe3e46e4a476c9ee0bdaa4c533f5
|
7
|
+
data.tar.gz: 24b5a0c85346f2a5ac04a79a428c93c06b225027c69c2f4287e57eeaa354e965e935d16da4814b2ad66b6a18db9ba4ada5e555002ef5008405567748a1a1454d
|
@@ -1,11 +1,7 @@
|
|
1
1
|
// Place all the behaviors and hooks related to the matching controller here.
|
2
2
|
// All this logic will automatically be available in application.js.
|
3
3
|
|
4
|
-
|
5
|
-
$('a[href*="#"]').click(function(){
|
6
|
-
$($(this).attr("href")).effect("highlight", {}, 1500);
|
7
|
-
});
|
8
|
-
});
|
4
|
+
|
9
5
|
|
10
6
|
(function() {
|
11
7
|
$(function() {
|
@@ -1,2 +1,14 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
$(document).ready(function(){
|
2
|
+
$('body').scrollspy({
|
3
|
+
target: '.bs-docs-sidebar',
|
4
|
+
offset: 40
|
5
|
+
});
|
6
|
+
|
7
|
+
$(".bs-docs-sidebar").affix({
|
8
|
+
offset: {
|
9
|
+
top: 122
|
10
|
+
}
|
11
|
+
});
|
12
|
+
});
|
13
|
+
|
14
|
+
|
@@ -1,3 +1,77 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
body {
|
2
|
+
position: relative;
|
3
|
+
}
|
4
|
+
|
5
|
+
.affix{
|
6
|
+
top: 0px;
|
7
|
+
width:inherit;
|
8
|
+
}
|
9
|
+
|
10
|
+
/* sidebar */
|
11
|
+
.bs-docs-sidebar {
|
12
|
+
padding-left: 0px;
|
13
|
+
margin-top: 20px;
|
14
|
+
margin-bottom: 20px;
|
15
|
+
}
|
16
|
+
|
17
|
+
/* all links */
|
18
|
+
.bs-docs-sidebar .nav>li>a {
|
19
|
+
color: #999;
|
20
|
+
border-left: 2px solid transparent;
|
21
|
+
padding: 4px 20px;
|
22
|
+
font-size: 13px;
|
23
|
+
font-weight: 400;
|
24
|
+
}
|
25
|
+
|
26
|
+
/* nested links */
|
27
|
+
.bs-docs-sidebar .nav .nav>li>a {
|
28
|
+
padding-top: 1px;
|
29
|
+
padding-bottom: 1px;
|
30
|
+
padding-left: 30px;
|
31
|
+
font-size: 12px;
|
32
|
+
}
|
33
|
+
|
34
|
+
.bs-docs-sidebar .nav .nav .nav>li>a {
|
35
|
+
padding-top: 1px;
|
36
|
+
padding-bottom: 1px;
|
37
|
+
padding-left: 40px;
|
38
|
+
font-size: 12px;
|
39
|
+
}
|
40
|
+
|
41
|
+
.bs-docs-sidebar .nav .nav .nav .nav>li>a {
|
42
|
+
padding-top: 1px;
|
43
|
+
padding-bottom: 1px;
|
44
|
+
padding-left: 50px;
|
45
|
+
font-size: 12px;
|
46
|
+
}
|
47
|
+
|
48
|
+
/* active & hover links */
|
49
|
+
.bs-docs-sidebar .nav>.active>a,
|
50
|
+
.bs-docs-sidebar .nav>li>a:hover,
|
51
|
+
.bs-docs-sidebar .nav>li>a:focus {
|
52
|
+
color: #563d7c;
|
53
|
+
text-decoration: none;
|
54
|
+
background-color: transparent;
|
55
|
+
border-left-color: #563d7c;
|
56
|
+
}
|
57
|
+
/* all active links */
|
58
|
+
.bs-docs-sidebar .nav>.active>a,
|
59
|
+
.bs-docs-sidebar .nav>.active:hover>a,
|
60
|
+
.bs-docs-sidebar .nav>.active:focus>a {
|
61
|
+
font-weight: 700;
|
62
|
+
}
|
63
|
+
/* nested active links */
|
64
|
+
.bs-docs-sidebar .nav .nav>.active>a,
|
65
|
+
.bs-docs-sidebar .nav .nav>.active:hover>a,
|
66
|
+
.bs-docs-sidebar .nav .nav>.active:focus>a {
|
67
|
+
font-weight: 500;
|
68
|
+
}
|
69
|
+
|
70
|
+
/* hide inactive nested list */
|
71
|
+
.bs-docs-sidebar .nav ul.nav {
|
72
|
+
display: none;
|
73
|
+
}
|
74
|
+
/* show active nested list */
|
75
|
+
.bs-docs-sidebar .nav>.active>ul.nav {
|
76
|
+
display: block;
|
77
|
+
}
|
@@ -6,15 +6,26 @@ class Helpdesk::Admin::FaqsController < Helpdesk::Admin::BaseController
|
|
6
6
|
end
|
7
7
|
render :nothing => true
|
8
8
|
end
|
9
|
+
|
10
|
+
def sorting
|
11
|
+
if params[:id]=='all'
|
12
|
+
|
13
|
+
@faqs = Helpdesk::Faq.roots
|
14
|
+
else
|
15
|
+
@faq = Helpdesk::Faq.find(params[:id])
|
16
|
+
@faqs = @faq.children
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
9
20
|
# GET /faqs
|
10
21
|
# GET /faqs.json
|
11
22
|
def index
|
12
23
|
if params[:faqs] == 'active'
|
13
|
-
@faqs = Helpdesk::Faq.active
|
24
|
+
@faqs = Helpdesk::Faq.roots.active
|
14
25
|
elsif params[:faqs] == 'inactive'
|
15
|
-
@faqs = Helpdesk::Faq.inactive
|
26
|
+
@faqs = Helpdesk::Faq.roots.inactive
|
16
27
|
else
|
17
|
-
@faqs = Helpdesk::Faq.
|
28
|
+
@faqs = Helpdesk::Faq.roots
|
18
29
|
end
|
19
30
|
respond_to do |format|
|
20
31
|
format.html # index.html.erb
|
@@ -95,6 +106,6 @@ class Helpdesk::Admin::FaqsController < Helpdesk::Admin::BaseController
|
|
95
106
|
|
96
107
|
private
|
97
108
|
def faq_params
|
98
|
-
params.require(:faq).permit(:active, :position, :title, :text, translations_attributes:[:id,:locale,:title,:text])
|
109
|
+
params.require(:faq).permit(:active, :position, :title, :text,:parent_id, translations_attributes:[:id,:locale,:title,:text])
|
99
110
|
end
|
100
111
|
end
|
@@ -1,7 +1,16 @@
|
|
1
1
|
module Helpdesk
|
2
2
|
class FaqsController < Helpdesk::ApplicationController
|
3
|
+
|
4
|
+
def search
|
5
|
+
@faqs = Helpdesk::Faq.search(params[:search])
|
6
|
+
end
|
7
|
+
|
3
8
|
def index
|
4
|
-
@faqs = Helpdesk::Faq.active
|
9
|
+
@faqs = Helpdesk::Faq.active.roots
|
10
|
+
end
|
11
|
+
|
12
|
+
def show
|
13
|
+
@faq = Helpdesk::Faq.active.find(params[:id])
|
5
14
|
end
|
6
15
|
end
|
7
16
|
end
|
data/app/models/helpdesk/faq.rb
CHANGED
@@ -3,9 +3,40 @@ module Helpdesk
|
|
3
3
|
translates :title, :text
|
4
4
|
accepts_nested_attributes_for :translations
|
5
5
|
|
6
|
+
acts_as_ordered_tree
|
7
|
+
|
6
8
|
default_scope {order('position ASC').includes(:translations)}
|
7
9
|
|
8
10
|
scope :active, -> {where(active: true)}
|
9
11
|
scope :inactive, -> {where(active: false)}
|
12
|
+
|
13
|
+
def name_with_depth
|
14
|
+
"#{" "*depth}\\_ #{title}".html_safe
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_param
|
18
|
+
id ? "#{id}-#{title.parameterize}" : nil
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.search(query, page=1)
|
22
|
+
query = "%#{query}%"
|
23
|
+
arel_faqs_t = Arel::Table.new(:helpdesk_faq_translations)
|
24
|
+
name_match = arel_faqs_t[:title].matches(query)
|
25
|
+
postal_match = arel_faqs_t[:text].matches(query)
|
26
|
+
with_translations.active.where(name_match.or(postal_match)).page(page).per_page(5)
|
27
|
+
end
|
28
|
+
|
29
|
+
def anchor
|
30
|
+
"##{to_param}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.collection
|
34
|
+
arr = []
|
35
|
+
roots.each do |faq|
|
36
|
+
arr << faq
|
37
|
+
arr << faq.descendants
|
38
|
+
end
|
39
|
+
return arr.flatten
|
40
|
+
end
|
10
41
|
end
|
11
42
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Helpdesk
|
2
2
|
class Ticket < ActiveRecord::Base
|
3
3
|
|
4
|
+
|
4
5
|
STATUSES = [
|
5
6
|
[ :new, 'label-primary',3],
|
6
7
|
[ :open, 'label-warning',2],
|
@@ -61,8 +62,6 @@ module Helpdesk
|
|
61
62
|
self.subject.strip!
|
62
63
|
end
|
63
64
|
|
64
|
-
|
65
|
-
|
66
65
|
def send_email
|
67
66
|
Helpdesk::NotificationsMailer.ticket_created_notification(self).deliver
|
68
67
|
unless requester.email.empty?
|
@@ -78,8 +77,5 @@ module Helpdesk
|
|
78
77
|
end
|
79
78
|
end
|
80
79
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
80
|
end
|
85
81
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
- faqs.each do |faq|
|
2
|
+
%li
|
3
|
+
= faq.title
|
4
|
+
%div
|
5
|
+
= link_to t('helpdesk.show'), faqs_path(anchor:faq.to_param), class: 'btn btn-info btn-xs', target: :faq_preview
|
6
|
+
= link_to t('helpdesk.edit'), edit_admin_faq_path(faq),class: 'btn btn-primary btn-xs'
|
7
|
+
= link_to t('helpdesk.destroy'), admin_faq_path(faq), method: :delete, data: { confirm: 'Are you sure?' },class: 'btn btn-danger btn-xs'
|
8
|
+
- if faq.children.present?
|
9
|
+
%ol
|
10
|
+
= render partial:'/helpdesk/admin/faqs/faq', locals:{ faqs:faq.children }
|
@@ -5,5 +5,8 @@
|
|
5
5
|
= menu_li ico('envelope') + "#{t('helpdesk.faqs.active')} (#{Helpdesk::Faq.active.count})", admin_faqs_url(:faqs => 'active')
|
6
6
|
|
7
7
|
= menu_li ico('info-sign') + "#{t('helpdesk.faqs.inactive')} (#{Helpdesk::Faq.inactive.count})", admin_faqs_url(:faqs => 'inactive')
|
8
|
+
|
9
|
+
= menu_li ico('signal') + "#{t('helpdesk.faqs.sorting')}", sorting_admin_faq_url(:all)
|
10
|
+
|
8
11
|
%li.divider
|
9
|
-
= menu_li ico('list') + t('helpdesk.faqs.all'), admin_faqs_url(:faqs => 'all')
|
12
|
+
= menu_li ico('list') + t('helpdesk.faqs.all'), admin_faqs_url(:faqs => 'all')
|
@@ -11,49 +11,8 @@
|
|
11
11
|
|
12
12
|
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
= ico('move')
|
20
|
-
%span.badge.badge-info
|
21
|
-
= "link#{faq.id}"
|
22
|
-
- if faq.active
|
23
|
-
%span.label.label-success
|
24
|
-
= t('helpdesk.faqs.faq.active')
|
25
|
-
- else
|
26
|
-
%span.label
|
27
|
-
= t('helpdesk.faqs.faq.inactive')
|
28
|
-
%div.span5
|
29
|
-
= faq.title
|
30
|
-
%div.span2
|
31
|
-
= link_to t('helpdesk.show'), admin_faq_path(faq), class: 'btn btn-info btn-mini'
|
32
|
-
= link_to t('helpdesk.edit'), edit_admin_faq_path(faq),class: 'btn btn-primary btn-mini'
|
33
|
-
= link_to t('helpdesk.destroy'), admin_faq_path(faq), method: :delete, data: { confirm: 'Are you sure?' },class: 'btn btn-danger btn-mini'
|
34
|
-
|
35
|
-
|
36
|
-
- content_for :scripts do
|
37
|
-
:javascript
|
38
|
-
$(document).ready(function(){
|
39
|
-
$('#faqs').sortable({
|
40
|
-
axis: 'y',
|
41
|
-
dropOnEmpty: false,
|
42
|
-
handle: '.handle',
|
43
|
-
cursor: 'crosshair',
|
44
|
-
items: 'li',
|
45
|
-
opacity: 0.4,
|
46
|
-
scroll: true,
|
47
|
-
update: function(){
|
48
|
-
$.ajax({
|
49
|
-
type: 'post',
|
50
|
-
data: $('#faqs').sortable('serialize'),
|
51
|
-
dataType: 'script',
|
52
|
-
complete: function(request){
|
53
|
-
$('#faqs').effect('highlight');
|
54
|
-
},
|
55
|
-
url: '#{sort_admin_faqs_path}'
|
56
|
-
})
|
57
|
-
}
|
58
|
-
});
|
59
|
-
});
|
14
|
+
|
15
|
+
%ol
|
16
|
+
= render partial:'/helpdesk/admin/faqs/faq', locals:{ faqs:@faqs }
|
17
|
+
|
18
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
= render 'menu'
|
2
|
+
|
3
|
+
%ol.breadcrumb
|
4
|
+
= t('helpdesk.faqs.sorting')
|
5
|
+
= menu_li 'FAQ Root',sorting_admin_faq_url(:all)
|
6
|
+
- if @faq
|
7
|
+
- @faq.ancestors.reverse_each do |faq|
|
8
|
+
= menu_li faq.title, sorting_admin_faq_url(faq)
|
9
|
+
= menu_li @faq.title, sorting_admin_faq_url(@faq)
|
10
|
+
|
11
|
+
|
12
|
+
%ul.unstyled#faqs
|
13
|
+
- @faqs.each do |faq|
|
14
|
+
%li.row{id:"faqs_#{faq.id}",style:'padding:5px 0px;'}
|
15
|
+
%div.handle.span2{style:'cursor:move'}
|
16
|
+
%span
|
17
|
+
= ico('move')
|
18
|
+
%span
|
19
|
+
= faq.title
|
20
|
+
- if faq.children.present?
|
21
|
+
= link_to t('helpdesk.sort_this_childs'), sorting_admin_faq_url(faq), class: 'btn btn-info btn-xs'
|
22
|
+
|
23
|
+
- content_for :scripts do
|
24
|
+
:javascript
|
25
|
+
$(document).ready(function(){
|
26
|
+
$('#faqs').sortable({
|
27
|
+
axis: 'y',
|
28
|
+
dropOnEmpty: false,
|
29
|
+
handle: '.handle',
|
30
|
+
cursor: 'crosshair',
|
31
|
+
items: 'li',
|
32
|
+
opacity: 0.4,
|
33
|
+
scroll: true,
|
34
|
+
update: function(){
|
35
|
+
$.ajax({
|
36
|
+
type: 'post',
|
37
|
+
data: $('#faqs').sortable('serialize'),
|
38
|
+
dataType: 'script',
|
39
|
+
complete: function(request){
|
40
|
+
$('#faqs').effect('highlight');
|
41
|
+
},
|
42
|
+
url: '#{sort_admin_faqs_path}'
|
43
|
+
})
|
44
|
+
}
|
45
|
+
});
|
46
|
+
});
|
@@ -0,0 +1,11 @@
|
|
1
|
+
- faqs.each do |faq|
|
2
|
+
%li
|
3
|
+
- link = link_type=='anchor' ? faq.anchor : faqs_path(anchor:faq)
|
4
|
+
- if(faq.id==params[:id].to_i)
|
5
|
+
= link_to faq.title, link, class: :active
|
6
|
+
- else
|
7
|
+
= link_to faq.title, link
|
8
|
+
-if faq.children.present?
|
9
|
+
%ul.nav.nav-stacked
|
10
|
+
= render partial:'/helpdesk/faqs/menu', locals:{faqs:faq.children, link_type:link_type}
|
11
|
+
|
@@ -1,20 +1,11 @@
|
|
1
|
+
= content_for :left do
|
2
|
+
%nav.bs-docs-sidebar.col
|
3
|
+
%ul#sidebar.nav.nav-stacked
|
4
|
+
= render partial: 'menu', locals:{faqs:@faqs,link_type:'anchor'}
|
5
|
+
|
1
6
|
%div.content
|
2
7
|
%div.pageContainer
|
3
|
-
%
|
8
|
+
%h2
|
4
9
|
= t('helpdesk.faqs.title_s')
|
5
|
-
%
|
6
|
-
|
7
|
-
%li{:id=>"link#{faq.id}"}
|
8
|
-
%h3
|
9
|
-
= link_to faq.title, "\#link#{faq.id}"
|
10
|
-
%div{style:"display:none"}
|
11
|
-
= raw faq.text
|
12
|
-
|
13
|
-
- content_for :scripts do
|
14
|
-
:javascript
|
15
|
-
$(document).ready(function(){
|
16
|
-
$('ol#faq li h3').click(function () {
|
17
|
-
$(this).parent().find('div').slideToggle('fast');
|
18
|
-
});
|
19
|
-
$("a[href='" + window.location.hash + "']").click();
|
20
|
-
});
|
10
|
+
%ul#faq
|
11
|
+
= render partial:'/helpdesk/faqs/faq', locals:{faqs:@faqs}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
= content_for :left do
|
2
|
+
%nav.bs-docs-sidebar.col
|
3
|
+
%ul#sidebar.nav.nav-stacked
|
4
|
+
= render partial: 'menu', locals:{faqs:Helpdesk::Faq.roots,link_type:'link'}
|
5
|
+
|
6
|
+
%div.content
|
7
|
+
%div.pageContainer
|
8
|
+
- if params[:search]
|
9
|
+
.alert.alert-info
|
10
|
+
= t('helpdesk.faqs.search_count', count: @faqs.size, query:params[:search])
|
11
|
+
|
12
|
+
%h1
|
13
|
+
= t('helpdesk.faqs.title_s')
|
14
|
+
%ol#faq
|
15
|
+
- @faqs.each do |faq|
|
16
|
+
%li.callout
|
17
|
+
%span.title
|
18
|
+
= link_to faqs_url(anchor:faq.to_param) do
|
19
|
+
= highlight(faq.title, params[:search], highlighter: '<strong>\1</strong>')
|
20
|
+
%span.body
|
21
|
+
- if faq.text.index(params[:search])
|
22
|
+
- start_index = [0, faq.text.index(params[:search])-30].max
|
23
|
+
- else
|
24
|
+
- start_index = 0
|
25
|
+
|
26
|
+
= highlight("..."+faq.text[start_index,params[:search].length+40].strip+"...", params[:search], highlighter: '<strong>\1</strong>')
|
27
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
= content_for :left do
|
2
|
+
%nav.bs-docs-sidebar
|
3
|
+
%ul#sidebar.nav.nav-stacked.fixed
|
4
|
+
= render partial: 'menu', locals:{lvl:1,tree:[0],faqs:Helpdesk::Faq.roots,link_type:''}
|
5
|
+
|
6
|
+
%ol.breadcrumb
|
7
|
+
= menu_li 'FAQ',faqs_url
|
8
|
+
- @faq.ancestors.reverse_each do |faq|
|
9
|
+
= menu_li faq.title, faq_url(faq)
|
10
|
+
= menu_li @faq.title, faq_url(@faq)
|
11
|
+
|
12
|
+
|
13
|
+
%ol#faq
|
14
|
+
= render partial:'/helpdesk/faqs/faq', locals:{faqs:[@faq]}
|
15
|
+
|
@@ -14,6 +14,8 @@
|
|
14
14
|
= menu_li t('helpdesk.subscribers.title'),admin_subscribers_path
|
15
15
|
= menu_li t('helpdesk.faqs.title'),admin_faqs_path
|
16
16
|
|
17
|
+
|
18
|
+
|
17
19
|
%ul.nav.navbar-nav.navbar-right
|
18
20
|
%li.dropdown.user
|
19
21
|
= link_to current_user.send(Helpdesk.display_user.to_sym), "#",:class=>"dropdown-toggle",data:{toggle:"dropdown"}
|
@@ -11,7 +11,11 @@
|
|
11
11
|
%ul.nav.navbar-nav
|
12
12
|
= menu_li t('helpdesk.tickets.title'),tickets_path
|
13
13
|
= menu_li t('helpdesk.faq'),faqs_path
|
14
|
-
|
14
|
+
%form.navbar-form.navbar-left{role:'search',action:search_faqs_url}
|
15
|
+
.form-group
|
16
|
+
%input.form-control{type:'text', placeholder:t('helpdesk.faqs.search_in_faqs'),name:'search',value:params[:search]}
|
17
|
+
%button.btn.btn-default{type:"submit"}
|
18
|
+
= t('helpdesk.faqs.search')
|
15
19
|
%ul.nav.navbar-nav.navbar-right
|
16
20
|
%li.dropdown.user
|
17
21
|
= link_to current_user.send(Helpdesk.display_user.to_sym), "#",:class=>"dropdown-toggle",data:{toggle:"dropdown"}
|
@@ -53,6 +53,8 @@ en:
|
|
53
53
|
new: Add Subscriber
|
54
54
|
|
55
55
|
faqs:
|
56
|
+
search: Search
|
57
|
+
search_in_faqs: Search in FAQs
|
56
58
|
title: FAQ
|
57
59
|
title_s: Frequently Asked Questions
|
58
60
|
active: Active Questions
|
@@ -63,6 +65,11 @@ en:
|
|
63
65
|
faq:
|
64
66
|
active: active
|
65
67
|
inactive: inactive
|
68
|
+
search_count:
|
69
|
+
zero: 'We could not find anything matching your query: "%{query}"'
|
70
|
+
one: 'Found one result matching your query: "%{query}"'
|
71
|
+
other: 'Found {%count} results matching your query: "%{query}"'
|
72
|
+
back_to_fasq: '« Back to FAQ list'
|
66
73
|
|
67
74
|
mailer:
|
68
75
|
comment_by_helpdesk_confirmation:
|
@@ -62,6 +62,9 @@ pl:
|
|
62
62
|
new: Dodaj subskrybenta
|
63
63
|
|
64
64
|
faqs:
|
65
|
+
sorting: 'Sortowanie:'
|
66
|
+
search: Szukaj
|
67
|
+
search_in_faqs: Szukaj w FAQ
|
65
68
|
title: FAQ
|
66
69
|
title_s: Często zadawane pytania
|
67
70
|
active: Aktywne pytania
|
@@ -72,6 +75,14 @@ pl:
|
|
72
75
|
faq:
|
73
76
|
active: aktywne
|
74
77
|
inactive: nieaktywne
|
78
|
+
search_count:
|
79
|
+
zero: 'Nic nie znaleziono dla zapytania: "%{query}"'
|
80
|
+
one: 'Znaleziono jeden wynik, dla zapytania: "%{query}"'
|
81
|
+
few: 'Znaleziono %{count} wyniki, dla zapytania: "%{query}"'
|
82
|
+
many: 'Znaleziono %{count} wyników, dla zapytania: "%{query}"'
|
83
|
+
other: 'Znaleziono %{count} wyników, dla zapytania: "%{query}"'
|
84
|
+
back_to_fasq: '« Wróć do listy pojęć'
|
85
|
+
|
75
86
|
|
76
87
|
mailer:
|
77
88
|
comment_by_helpdesk_confirmation:
|
data/config/routes.rb
CHANGED
@@ -11,13 +11,16 @@ Helpdesk::Engine.routes.draw do
|
|
11
11
|
resources :ticket_types
|
12
12
|
resources :faqs do
|
13
13
|
post :sort, on: :collection
|
14
|
+
get :sorting, on: :member
|
14
15
|
end
|
15
16
|
resources :subscribers
|
16
17
|
root :to => 'tickets#index'
|
17
18
|
end
|
18
19
|
|
19
20
|
resources :subscribers, :only => [:index, :create, :destroy]
|
20
|
-
resources :faqs, :only => [ :index ]
|
21
|
+
resources :faqs, :only => [ :index, :show ] do
|
22
|
+
get :search, on: :collection
|
23
|
+
end
|
21
24
|
resources :tickets, :except => [ :edit, :destroy ]
|
22
25
|
|
23
26
|
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class AddParentIdToHelpdeskFaqs < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
add_column :helpdesk_faqs, :parent_id, :integer
|
4
|
+
add_column :helpdesk_faqs, :depth, :integer, null:false, default:0
|
5
|
+
add_column :helpdesk_faqs, :children_count, :integer, null:false, default:0
|
6
|
+
add_index :helpdesk_faqs, :parent_id
|
7
|
+
end
|
8
|
+
end
|
data/lib/helpdesk/engine.rb
CHANGED
data/lib/helpdesk/version.rb
CHANGED
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.
|
4
|
+
version: 0.0.31
|
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-11-
|
11
|
+
date: 2014-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: launchy
|
@@ -360,6 +360,20 @@ dependencies:
|
|
360
360
|
- - ">="
|
361
361
|
- !ruby/object:Gem::Version
|
362
362
|
version: '0'
|
363
|
+
- !ruby/object:Gem::Dependency
|
364
|
+
name: acts_as_ordered_tree
|
365
|
+
requirement: !ruby/object:Gem::Requirement
|
366
|
+
requirements:
|
367
|
+
- - ">="
|
368
|
+
- !ruby/object:Gem::Version
|
369
|
+
version: '0'
|
370
|
+
type: :runtime
|
371
|
+
prerelease: false
|
372
|
+
version_requirements: !ruby/object:Gem::Requirement
|
373
|
+
requirements:
|
374
|
+
- - ">="
|
375
|
+
- !ruby/object:Gem::Version
|
376
|
+
version: '0'
|
363
377
|
description: 'Helpesk includes: tickets, ticket types, email-notification, FAQ, subscribers'
|
364
378
|
email:
|
365
379
|
- john@beynon.org.uk, waclaw@luczak.it
|
@@ -411,12 +425,14 @@ files:
|
|
411
425
|
- app/models/helpdesk/ticket.rb
|
412
426
|
- app/models/helpdesk/ticket_type.rb
|
413
427
|
- app/views/helpdesk/admin/dashboard/index.html.erb
|
428
|
+
- app/views/helpdesk/admin/faqs/_faq.html.haml
|
414
429
|
- app/views/helpdesk/admin/faqs/_form.html.haml
|
415
430
|
- app/views/helpdesk/admin/faqs/_menu.html.haml
|
416
431
|
- app/views/helpdesk/admin/faqs/edit.html.haml
|
417
432
|
- app/views/helpdesk/admin/faqs/index.html.haml
|
418
433
|
- app/views/helpdesk/admin/faqs/new.html.haml
|
419
434
|
- app/views/helpdesk/admin/faqs/show.html.haml
|
435
|
+
- app/views/helpdesk/admin/faqs/sorting.html.haml
|
420
436
|
- app/views/helpdesk/admin/subscribers/_form.html.haml
|
421
437
|
- app/views/helpdesk/admin/subscribers/_menu.html.haml
|
422
438
|
- app/views/helpdesk/admin/subscribers/edit.html.haml
|
@@ -437,7 +453,11 @@ files:
|
|
437
453
|
- app/views/helpdesk/admin/tickets/new.html.haml
|
438
454
|
- app/views/helpdesk/admin/tickets/show.html.haml
|
439
455
|
- app/views/helpdesk/dashboard/index.html.erb
|
456
|
+
- app/views/helpdesk/faqs/_faq.html.haml
|
457
|
+
- app/views/helpdesk/faqs/_menu.html.haml
|
440
458
|
- app/views/helpdesk/faqs/index.html.haml
|
459
|
+
- app/views/helpdesk/faqs/search.html.haml
|
460
|
+
- app/views/helpdesk/faqs/show.html.haml
|
441
461
|
- app/views/helpdesk/notifications_mailer/comment_by_helpdesk_confirmation.html.haml
|
442
462
|
- app/views/helpdesk/notifications_mailer/comment_by_helpdesk_notification.html.haml
|
443
463
|
- app/views/helpdesk/notifications_mailer/comment_by_requester_confirmation.html.haml
|
@@ -474,6 +494,7 @@ files:
|
|
474
494
|
- db/migrate/20130521105605_create_helpdesk_ticket_types.rb
|
475
495
|
- db/migrate/20130522085614_create_helpdesk_faqs.rb
|
476
496
|
- db/migrate/20130522090420_create_helpdesk_subscribers.rb
|
497
|
+
- db/migrate/20141105112734_add_parent_id_to_helpdesk_faqs.rb
|
477
498
|
- lib/generators/helpdesk/install_generator.rb
|
478
499
|
- lib/generators/helpdesk/templates/README
|
479
500
|
- lib/generators/helpdesk/templates/helpdesk.rb
|