Skip to content

Commit

Permalink
fix(ticket): fix #116 - ability to configure character limit on tickets
Browse files Browse the repository at this point in the history
  • Loading branch information
polonel committed Jan 6, 2019
1 parent 72e2584 commit 88ae488
Show file tree
Hide file tree
Showing 6 changed files with 147 additions and 4 deletions.
27 changes: 27 additions & 0 deletions src/helpers/viewdata/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,33 @@ viewdata.users = {};

viewController.getData = function(request, cb) {
async.parallel([
function(callback) {
viewdata.ticketSettings = {};
async.parallel([
function(done) {
settingSchema.getSetting('ticket:minlength:subject', function(err, setting) {
if (!err && setting && setting.value)
viewdata.ticketSettings.minSubject = setting.value;
else
viewdata.ticketSettings.minSubject = 10;


return done();
});
},
function(done) {
settingSchema.getSetting('ticket:minlength:issue', function(err, setting) {
if (!err && setting && setting.value)
viewdata.ticketSettings.minIssue = setting.value;
else
viewdata.ticketSettings.minIssue = 10;


return done();
});
}
], callback);
},
function(callback) {
if (global.env === 'development')
require('../../sass/buildsass').build(callback);
Expand Down
23 changes: 23 additions & 0 deletions src/public/js/angularjs/controllers/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -896,6 +896,29 @@ define([
});
};

function saveMinLength(settingName, length) {
$http.put('/api/v1/settings', {
name: settingName,
value: length
}, {
headers: {
'Content-Type': 'application/json'
}
}).then(function successCallback() {
helpers.UI.showSnackbar('Setting Saved.', false);
}, function errorCallback(err) {
helpers.UI.showSnackbar(err, true);
});
}

$scope.saveMinSubjectLengthClick = function() {
saveMinLength('ticket:minlength:subject', $scope.minSubjectLength);
};

$scope.saveMinIssueLengthClick = function() {
saveMinLength('ticket:minlength:issue', $scope.minIssueLength);
};

$scope.allowUserRegistrationChanged = function() {
var vm = this;
$scope.allowUserRegistration = vm.allowUserRegistration;
Expand Down
47 changes: 47 additions & 0 deletions src/settings/defaults.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,50 @@ function showTourSettingDefault(callback) {
});
}

function ticketLengthSettingDefault(callback) {
async.parallel([
function(done) {
SettingsSchema.getSettingByName('ticket:minlength:subject', function(err, setting) {
if (err) {
winston.warn(err);
return done(err);
}

if (!setting) {
var s = new SettingsSchema({
name: 'ticket:minlength:subject',
value: 10
});

s.save(done);
} else
return done();
});
},
function(done) {
SettingsSchema.getSettingByName('ticket:minlength:issue', function(err, setting) {
if (err) {
winston.warn(err);
return done(err);
}

if (!setting) {
var s = new SettingsSchema({
name: 'ticket:minlength:issue',
value: 10
});

s.save(done);
} else
return done();
});
}
], function(err) {
if (_.isFunction(callback))
return callback(err);
});
}

function ticketTypeSettingDefault(callback) {
SettingsSchema.getSettingByName('ticket:type:default', function(err, setting) {
if (err) {
Expand Down Expand Up @@ -322,6 +366,9 @@ settingsDefaults.init = function(callback) {
function(done) {
return ticketTypeSettingDefault(done);
},
function(done) {
return ticketLengthSettingDefault(done);
},
function(done) {
return ticketPriorityDefaults(done);
},
Expand Down
2 changes: 2 additions & 0 deletions src/settings/settingsUtil.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ util.getSettings = function(callback) {
s.colorQuaternary = parseSetting(settings, 'color:quaternary', '#E6E7E8');

s.defaultTicketType = parseSetting(settings, 'ticket:type:default', '');
s.minSubjectLength = parseSetting(settings, 'ticket:minlength:subject', 10);
s.minIssueLength = parseSetting(settings, 'ticket:minlength:issue', 10);

s.mailerEnabled = parseSetting(settings, 'mailer:enable', false);
s.mailerHost = parseSetting(settings, 'mailer:host', '');
Expand Down
8 changes: 4 additions & 4 deletions src/views/partials/createTicketWindow.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
<label for="subject">Subject</label>
<input type="text" class="md-input" id="subject" name="subject"
data-validation="length"
data-validation-length="min10"
data-validation-error-msg="Please enter a valid Subject. Subject must contain at least 10 characters."
data-validation-length="min{{data.common.ticketSettings.minSubject}}"
data-validation-error-msg="Please enter a valid Subject. Subject must contain at least {{data.common.ticketSettings.minSubject}} characters."
/>
</div>
<div class="uk-margin-medium-bottom">
<label for="issue">Description</label>
<textarea class="md-input" id="issue" name="issue"
data-validation="length"
data-validation-length="min10"
data-validation-error-msg="Please enter a valid Issue. Issue must contain at least 10 characters."
data-validation-length="min{{data.common.ticketSettings.minIssue}}"
data-validation-error-msg="Please enter a valid Issue. Issue must contain at least {{data.common.ticketSettings.minIssue}} characters."
></textarea>
<span style="display: inline-block; margin-top: 6px; font-size: 11px;" class="uk-text-muted">Please try to be as specific as possible. Please include any details you think may be relevant, such as troubleshooting steps you've taken.</span>
</div>
Expand Down
44 changes: 44 additions & 0 deletions src/views/settings.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@
siteTitle='{{data.settings.siteTitle.value}}';
siteUrl='{{data.settings.siteUrl.value}}';
selectedTimezone='{{data.settings.timezone.value}}';
defaultTicketType='{{data.settings.defaultTicketType.value}}';
minSubjectLength={{data.settings.minSubjectLength.value}};
minIssueLength={{data.settings.minIssueLength.value}};
mailerEnabled={{data.settings.mailerEnabled.value}};
mailerHost='{{data.settings.mailerHost.value}}';
mailerSSL={{data.settings.mailerSSL.value}};
Expand Down Expand Up @@ -478,6 +482,46 @@
</div>
</div>

<!-- Ticket Subject Length-->
<div class="setting-item-wrap uk-margin-medium-bottom">
<div class="panel trupanel nopadding no-hover-shadow" style="min-height: 60px;">
<div class="left">
<h6 style="padding: 0 0 0 15px; margin: 15px 0 0 0; font-size: 16px; line-height: 14px;">Minimum Subject Length</h6>
<h5 style="padding: 0 0 10px 15px; margin: 2px 0 0 0; font-size: 12px;" class="uk-text-muted">
Minimum character for ticket subjects
</h5>
</div>
<div class="right" style="width: 165px; padding-right: 15px; position:relative;">
<div class="left" style="width: 90px; padding-right: 10px;">
<input id="minSubjectLength" class="md-input md-input-width-small" name="minSubjectLength" type="number" ng-model="minSubjectLength" />
</div>
<div class="right" style="margin-top: 13px; text-align: center;">
<button class="md-btn md-btn-small" ng-click="saveMinSubjectLengthClick();">Save</button>
</div>
</div>
</div>
</div>

<!-- Ticket Issue Length-->
<div class="setting-item-wrap uk-margin-medium-bottom">
<div class="panel trupanel nopadding no-hover-shadow" style="min-height: 60px;">
<div class="left">
<h6 style="padding: 0 0 0 15px; margin: 15px 0 0 0; font-size: 16px; line-height: 14px;">Minimum Issue Length</h6>
<h5 style="padding: 0 0 10px 15px; margin: 2px 0 0 0; font-size: 12px;" class="uk-text-muted">
Minimum character for ticket issues
</h5>
</div>
<div class="right" style="width: 165px; padding-right: 15px; position:relative;">
<div class="left" style="width: 90px; padding-right: 10px;">
<input id="minIssueLength" class="md-input md-input-width-small" name="minIssueLength" type="number" ng-model="minIssueLength" />
</div>
<div class="right" style="margin-top: 13px; text-align: center;">
<button class="md-btn md-btn-small" ng-click="saveMinIssueLengthClick();">Save</button>
</div>
</div>
</div>
</div>

<!--Ticket Types-->
<div class="setting-item-wrap uk-margin-medium-bottom">
<div class="panel trupanel nopadding no-hover-shadow uk-overflow-hidden" style="min-height: 60px; height: auto;">
Expand Down

0 comments on commit 88ae488

Please sign in to comment.