More Translations

This commit is contained in:
Jared Tabor 2018-07-30 16:46:32 -07:00
parent c2f60f35b4
commit 1986efebda
No known key found for this signature in database
GPG Key ID: CC50E67C506270C9
20 changed files with 93 additions and 54 deletions

View File

@ -14,7 +14,9 @@ function JobsStrings (BaseString) {
ROW_ITEM_LABEL_INVENTORY: t.s('Inventory'),
ROW_ITEM_LABEL_PROJECT: t.s('Project'),
ROW_ITEM_LABEL_CREDENTIALS: t.s('Credentials'),
NO_RUNNING: t.s('There are no running jobs.')
NO_RUNNING: t.s('There are no running jobs.'),
JOB: t.s('Job'),
STATUS_TOOLTIP: status => t.s('Job {{status}}. Click for details.', { status })
};
}

View File

@ -20,7 +20,7 @@
<!-- TODO: include workflow tab as well -->
<at-row-item
status="{{ job.status }}"
status-tip="Job {{job.status}}. Click for details."
status-tip="{{ vm.strings.get('list.STATUS_TOOLTIP', job.status) }}"
header-value="{{ job.id }} - {{ job.name }}"
header-state="{{ vm.getSref(job) }}"
header-tag="{{ vm.jobTypes[job.type] }}">
@ -76,6 +76,7 @@
ng-show="job.summary_fields.user_capabilities.start">
</at-relaunch>
<at-row-action icon="fa-minus-circle" ng-click="vm.cancelJob(job)"
tooltip="{{ vm.strings.get('listActions.CANCEL', vm.strings.get('list.JOB')) }}"
ng-show="!vm.isPortalMode && (job.summary_fields.user_capabilities.start &&
(job.status === 'pending' ||
job.status === 'waiting' ||
@ -85,6 +86,7 @@
job.status === 'running'))">
</at-row-action>
<at-row-action icon="fa-trash" ng-click="vm.deleteJob(job)"
tooltip="{{ vm.strings.get('listActions.DELETE', vm.strings.get('list.JOB')) }}"
ng-show="!vm.isPortalMode && job.summary_fields.user_capabilities.delete &&
!(job.status === 'pending' ||
job.status === 'waiting' ||

View File

@ -73,10 +73,6 @@ function TemplatesStrings (BaseString) {
UNKNOWN_SCHEDULE: t.s('Unable to determine this template\'s type while scheduling.'),
};
ns.actions = {
COPY_WORKFLOW: t.s('Copy Workflow')
};
ns.error = {
HEADER: this.error.HEADER,
CALL: this.error.CALL,

View File

@ -180,6 +180,14 @@ function ListTemplatesController(
return html;
};
vm.getType = template => {
if(isJobTemplate(template)) {
return strings.get('list.ADD_DD_JT_LABEL');
} else {
return strings.get('list.ADD_DD_WF_LABEL');;
}
};
function refreshTemplates() {
Wait('start');
let path = GetBasePath('unified_job_templates');

View File

@ -90,10 +90,12 @@
ng-show="template.summary_fields.user_capabilities.start">
</at-launch-template>
<at-row-action icon="fa-copy" ng-click="vm.copyTemplate(template)"
ng-show="!vm.isPortalMode && template.summary_fields.user_capabilities.copy">
ng-show="!vm.isPortalMode && template.summary_fields.user_capabilities.copy"
tooltip="{{:: vm.strings.get('listActions.COPY', vm.getType(template)) }}">
</at-row-action>
<at-row-action icon="fa-trash" ng-click="vm.deleteTemplate(template)"
ng-show="!vm.isPortalMode && template.summary_fields.user_capabilities.delete">
ng-show="!vm.isPortalMode && template.summary_fields.user_capabilities.delete"
tooltip="{{:: vm.strings.get('listActions.DELETE', vm.getType(template)) }}">
</at-row-action>
</div>
</at-row>

View File

@ -7,7 +7,8 @@ function atRowAction () {
transclude: true,
templateUrl,
scope: {
icon: '@'
icon: '@',
tooltip: '@'
}
};
}

View File

@ -1,4 +1,7 @@
<div class="at-RowAction"
ng-class="{'at-RowAction--danger': (icon === 'fa-trash' || icon === 'fa-times')}">
ng-class="{'at-RowAction--danger': (icon === 'fa-trash' || icon === 'fa-times')}"
aw-tool-tip="{{tooltip}}"
data-tip-watch="tooltip"
data-placement="top">
<i class="fa" ng-class="icon"></i>
</div>

View File

@ -2,11 +2,15 @@
ng-show="status || headerValue || value || valueBindHtml || (smartStatus && smartStatus.summary_fields.recent_jobs.length) || (tagValues && tagValues.length)">
<div class="at-RowItem-status" ng-if="status">
<a ng-if="headerLink" ng-href="{{ headerLink }}"
aw-tool-tip="{{ statusTip }}" aw-tip-watch="statusTip"
aw-tool-tip="{{ statusTip }}" data-tip-watch="statusTip"
data-placement="top">
<i class="fa icon-job-{{ status }}"></i>
</a>
<i ng-if="!headerLink" class="fa icon-job-{{ status }}"></i>
<div ng-if="!headerLink"
aw-tool-tip="{{ statusTip }}" data-tip-watch="statusTip"
data-placement="top">
<i class="fa icon-job-{{ status }}"></i>
</div>
</div>
<div class="at-RowItem-header" ng-if="headerValue && headerLink">
<a ng-href="{{ headerLink }}">{{ headerValue }}</a>

View File

@ -93,6 +93,12 @@ function BaseStringService (namespace) {
CALL: ({ path, action, status }) => t.s('Call to {{ path }} failed. {{ action }} returned status: {{ status }}.', { path, action, status }),
};
this.listActions = {
COPY: resourceType => t.s('Copy {{resourceType}}', { resourceType }),
DELETE: resourceType => t.s('Delete the {{resourceType}}', { resourceType }),
CANCEL: resourceType => t.s('Cancel the {{resourceType}}', { resourceType })
};
this.ALERT = ({ header, body }) => t.s('{{ header }} {{ body }}', { header, body });
/**

View File

@ -4,7 +4,8 @@ export default
'templateUrl',
'$location',
'i18n',
function JobsList($filter, templateUrl, $location, i18n) {
'JobsStrings',
function JobsList($filter, templateUrl, $location, i18n, strings) {
return {
restrict: 'E',
link: link,
@ -15,6 +16,7 @@ export default
};
function link(scope, element, attr) {
scope.strings = strings;
scope.$watch("data", function(data) {
if (data) {
if (data.length > 0) {
@ -37,14 +39,7 @@ export default
} else {
detailsUrl = `/#/jobs/playbook/${job.id}`;
}
if(_.has(job, 'status') && job.status === 'successful'){
tooltip = i18n._('Job successful. Click for details.');
}
else if(_.has(job, 'status') && job.status === 'failed'){
tooltip = i18n._('Job failed. Click for details.');
}
return {
detailsUrl,
status: job.status,

View File

@ -16,10 +16,10 @@
<tr class="List-tableRow"
ng-repeat = "job in jobs">
<td class="DashboardList-nameCell">
<a href="{{ job.detailsUrl }}" ng-if="isSuccessful(job.status)" aw-tool-tip="{{job.tooltip}}" aw-tip-placement="right" data-tip-watch="job.tooltip">
<a href="{{ job.detailsUrl }}" ng-if="isSuccessful(job.status)" aw-tool-tip="{{strings.get('list.STATUS_TOOLTIP', job.status)}}" aw-tip-placement="right" data-tip-watch="strings.get('list.STATUS_TOOLTIP', job.status)">
<i class="fa DashboardList-status DashboardList-status--success icon-job-successful"></i>
</a>
<a href="{{ job.detailsUrl }}" ng-if="!isSuccessful(job.status)" aw-tool-tip="{{job.tooltip}}" aw-tip-placement="right" data-tip-watch="job.tooltip">
<a href="{{ job.detailsUrl }}" ng-if="!isSuccessful(job.status)" aw-tool-tip="{{strings.get('list.STATUS_TOOLTIP', job.status)}}" aw-tip-placement="right" data-tip-watch="strings.get('list.STATUS_TOOLTIP', job.status)">
<i class="fa DashboardList-status DashboardList-status--failed icon-job-failed"></i>
</a>
<a href="{{ job.detailsUrl }}" class="DashboardList-nameContainer">

View File

@ -50,7 +50,7 @@
<tbody>
<tr ng-class="{'List-tableRow--selected': $stateParams['host_id'] == host.id}" id="{{ host.id }}" class="List-tableRow host_class" ng-repeat="host in hosts track by host.id">
<td class="List-tableCell toggleHost-column List-staticColumn--toggle">
<div class="ScheduleToggle" ng-class="{'is-on': host.enabled, 'ScheduleToggle--disabled': host.has_inventory_sources}" aw-tool-tip="<p>Indicates if a host is available and should be included in running jobs.</p><p>For hosts that are part of an external inventory, this flag cannot be changed. It will be set by the inventory sync process.</p>" data-placement="right" data-tip-watch="undefined">
<div class="ScheduleToggle" ng-class="{'is-on': host.enabled, 'ScheduleToggle--disabled': host.has_inventory_sources}" aw-tool-tip="{{strings.get('hostList.DISABLED_TOGGLE_TOOLTIP')}}" data-placement="right" data-tip-watch="undefined">
<button ng-disabled="host.has_inventory_sources" ng-show="host.enabled" class="ScheduleToggle-switch is-on" ng-click="toggleHost($event, host)" translate>ON</button>
<button ng-disabled="host.has_inventory_sources" ng-show="!host.enabled" class="ScheduleToggle-switch" ng-click="toggleHost($event, host)" translate>OFF</button>
</div>
@ -74,13 +74,13 @@
</td>
<td class="List-actionsContainer">
<div class="List-actionButtonCell List-tableCell">
<button id="insights-action" class="List-actionButton " ng-class="{'List-actionButton--selected' : $stateParams['host_id'] == host.id && $state.is('hosts.edit.insights')}" data-placement="top" ng-click="goToInsights(host.id)" aw-tool-tip="View Insights Data" ng-show="host.insights_system_id && host.summary_fields.inventory.hasOwnProperty('insights_credential_id')">
<button id="insights-action" class="List-actionButton " ng-class="{'List-actionButton--selected' : $stateParams['host_id'] == host.id && $state.is('hosts.edit.insights')}" data-placement="top" ng-click="goToInsights(host.id)" aw-tool-tip="{{strings.get('inventory.VIEW_INSIGHTS')}}" data-tip-watch="strings.get('inventory.VIEW_INSIGHTS')" ng-show="host.insights_system_id && host.summary_fields.inventory.hasOwnProperty('insights_credential_id')">
<i class="fa fa-info"></i>
</button>
<button id="edit-action" class="List-actionButton " ng-class="{'List-editButton--selected' : $stateParams['host_id'] == host.id && $state.is('hosts.edit') }" data-placement="top" ng-click="editHost(host.id)" aw-tool-tip="Edit host" ng-show="host.summary_fields.user_capabilities.edit">
<button id="edit-action" class="List-actionButton " ng-class="{'List-editButton--selected' : $stateParams['host_id'] == host.id && $state.is('hosts.edit') }" data-placement="top" ng-click="editHost(host.id)" aw-tool-tip="{{strings.get('inventory.EDIT_HOST')}}" data-tip-watch="strings.get('inventory.VIEW_HOST')" ng-show="host.summary_fields.user_capabilities.edit">
<i class="fa fa-pencil"></i>
</button>
<button id="view-action" class="List-actionButton " data-placement="top" ng-click="editHost(host.id)" aw-tool-tip="View host" ng-show="!host.summary_fields.user_capabilities.edit"><i class="fa fa-search-plus"></i>
<button id="view-action" class="List-actionButton " data-placement="top" ng-click="editHost(host.id)" aw-tool-tip="{{strings.get('inventory.VIEW_HOST')}}" data-tip-watch="strings.get('inventory.VIEW_HOST')" ng-show="!host.summary_fields.user_capabilities.edit"><i class="fa fa-search-plus"></i>
</button>
</div>
</td>

View File

@ -17,6 +17,7 @@ function HostsList($scope, HostsList, $rootScope, GetBasePath,
$scope.canAdd = canAdd;
$scope.enableSmartInventoryButton = false;
$scope.smartInventoryButtonTooltip = InventoryHostsStrings.get('smartinventorybutton.DISABLED_INSTRUCTIONS');
$scope.strings = InventoryHostsStrings;
// Search init
$scope.list = list;

View File

@ -21,6 +21,19 @@ function InventoryHostsStrings (BaseString) {
DELETE_HOST: count => t.p(count, 'Delete host', 'Delete hosts'),
};
ns.inventory = {
EDIT_HOST: t.s('Edit host'),
VIEW_HOST: t.s('View host'),
VIEW_INSIGHTS: t.s('View Insights Data')
};
ns.hostList = {
DISABLED_TOGGLE_TOOLTIP: () => t.s('{{ str1 }}</p><p>{{ str2 }}</p>', {
str1: t.s('Indicates if a host is available and should be included in running jobs.'),
str2: t.s('For hosts that are part of an external inventory, this flag cannot be changed. It will be set by the inventory sync process.')
})
};
ns.smartinventories = {
hostfilter: {
MISSING_ORG: t.s('Please select an organization before editing the host filter.'),
@ -30,8 +43,8 @@ function InventoryHostsStrings (BaseString) {
};
ns.smartinventorybutton = {
DISABLED_INSTRUCTIONS: "Please enter at least one search term to create a new Smart Inventory.",
ENABLED_INSTRUCTIONS: "Create a new Smart Inventory from search results.<br /><br />Note: changing the organization of the Smart Inventory could change the hosts included in the Smart Inventory."
DISABLED_INSTRUCTIONS: t.s("Please enter at least one search term to create a new Smart Inventory."),
ENABLED_INSTRUCTIONS: t.s("Create a new Smart Inventory from search results.<br /><br />Note: changing the organization of the Smart Inventory could change the hosts included in the Smart Inventory.")
};
}

View File

@ -7,11 +7,11 @@
export default ['$scope', '$rootScope', '$log', '$stateParams', 'Rest', 'Alert',
'OrgProjectList', 'OrgProjectDataset', 'ProcessErrors', 'GetBasePath',
'ProjectUpdate', 'Wait', 'GetChoices', 'Empty', 'Find', 'GetProjectIcon',
'GetProjectToolTip', '$filter', '$state',
'GetProjectToolTip', '$filter', '$state', 'i18n',
function($scope, $rootScope, $log, $stateParams, Rest, Alert,
OrgProjectList, Dataset, ProcessErrors, GetBasePath, ProjectUpdate,
Wait, GetChoices, Empty, Find, GetProjectIcon, GetProjectToolTip, $filter,
$state) {
$state, i18n) {
var list = OrgProjectList,
projUrl,
@ -35,15 +35,15 @@ export default ['$scope', '$rootScope', '$log', '$stateParams', 'Rest', 'Alert',
$scope.projects.forEach(function(project, i) {
$scope.projects[i].statusIcon = GetProjectIcon(project.status);
$scope.projects[i].statusTip = GetProjectToolTip(project.status);
$scope.projects[i].scm_update_tooltip = "Get latest SCM revision";
$scope.projects[i].scm_update_tooltip = i18n._("Get latest SCM revision");
$scope.projects[i].scm_type_class = "";
if (project.status === 'failed' && project.summary_fields.last_update && project.summary_fields.last_update.status === 'canceled') {
$scope.projects[i].statusTip = 'Canceled. Click for details';
$scope.projects[i].statusTip = i18n._('Canceled. Click for details');
}
if (project.status === 'running' || project.status === 'updating') {
$scope.projects[i].scm_update_tooltip = "SCM update currently running";
$scope.projects[i].scm_update_tooltip = i18n._("SCM update currently running");
$scope.projects[i].scm_type_class = "btn-disabled";
}
@ -51,7 +51,7 @@ export default ['$scope', '$rootScope', '$log', '$stateParams', 'Rest', 'Alert',
if (type.value === project.scm_type) {
$scope.projects[i].scm_type = type.label;
if (type.label === 'Manual') {
$scope.projects[i].scm_update_tooltip = 'Manual projects do not require an SCM update';
$scope.projects[i].scm_update_tooltip = i18n._('Manual projects do not require an SCM update');
$scope.projects[i].scm_type_class = 'btn-disabled';
$scope.projects[i].statusTip = 'Not configured for SCM';
$scope.projects[i].statusIcon = 'none';
@ -116,7 +116,7 @@ export default ['$scope', '$rootScope', '$log', '$stateParams', 'Rest', 'Alert',
$log.debug('Received event for project: ' + project.name);
$log.debug('Status changed to: ' + data.status);
if (!(data.status === 'successful' || data.status === 'failed')) {
project.scm_update_tooltip = "SCM update currently running";
project.scm_update_tooltip = i18n._("SCM update currently running");
project.scm_type_class = "btn-disabled";
}
project.status = data.status;
@ -188,8 +188,7 @@ export default ['$scope', '$rootScope', '$log', '$stateParams', 'Rest', 'Alert',
$state.go('output', { id: id, type: 'project' });
} else {
Alert('No Updates Available', 'There is no SCM update information available for this project. An update has not yet been ' +
' completed. If you have not already done so, start an update for this project.', 'alert-info');
Alert(i18n._('No Updates Available'), i18n._('There is no SCM update information available for this project. An update has not yet been completed. If you have not already done so, start an update for this project.'), 'alert-info');
}
});
@ -197,8 +196,7 @@ export default ['$scope', '$rootScope', '$log', '$stateParams', 'Rest', 'Alert',
// Refresh the project list
var project = Find({ list: $scope.projects, key: 'id', val: id });
if (Empty(project.scm_type) || project.scm_type === 'Manual') {
Alert('No SCM Configuration', 'The selected project is not configured for SCM. To configure for SCM, edit the project and provide SCM settings, ' +
'and then run an update.', 'alert-info');
Alert(i18n._('No SCM Configuration'), i18n._('The selected project is not configured for SCM. To configure for SCM, edit the project and provide SCM settings and then run an update.'), 'alert-info');
} else {
// Refresh what we have in memory to insure we're accessing the most recent status record
Rest.setUrl(project.url);
@ -223,7 +221,7 @@ export default ['$scope', '$rootScope', '$log', '$stateParams', 'Rest', 'Alert',
Rest.setUrl(url);
Rest.post()
.then(() => {
Alert('SCM Update Cancel', 'Your request to cancel the update was submitted to the task manager.', 'alert-info');
Alert(i18n._('SCM Update Cancel'), i18n._('Your request to cancel the update was submitted to the task manager.'), 'alert-info');
$scope.refresh();
})
.catch(({data, status}) => {
@ -243,8 +241,8 @@ export default ['$scope', '$rootScope', '$log', '$stateParams', 'Rest', 'Alert',
if (data.can_cancel) {
$scope.$emit('Cancel_Update', url);
} else {
Alert('Cancel Not Allowed', '<div>Either you do not have access or the SCM update process completed. ' +
'Click the <em>Refresh</em> button to view the latest status.</div>', 'alert-info', null, null, null, null, true);
Alert(i18n._('Cancel Not Allowed'), `<div>${i18n._('Either you do not have access or the SCM update process completed. Click the ')}
<em>${i18n._('Refresh')}</em> ${i18n._('button to view the latest status.')}</div>`, 'alert-info', null, null, null, null, true);
}
})
.catch(({data, status}) => {
@ -269,8 +267,8 @@ export default ['$scope', '$rootScope', '$log', '$stateParams', 'Rest', 'Alert',
});
});
} else {
Alert('Update Not Found', '<div>An SCM update does not appear to be running for project: ' + $filter('sanitize')(name) + '. Click the <em>Refresh</em> ' +
'button to view the latest status.</div>', 'alert-info', undefined, undefined, undefined, undefined, true);
Alert(i18n._('Update Not Found'), `<div>${i18n._('An SCM update does not appear to be running for project: ')} ${$filter('sanitize')(name)}. ${i18n._('Click the')} <em>${i18n._('Refresh')}</em>${i18n._('button to view the latest status.')}</div>`,
'alert-info', undefined, undefined, undefined, undefined, true);
}
})
.catch(({data, status}) => {

View File

@ -155,7 +155,7 @@ let lists = [{
list.title = true;
list.listTitle = N_('Inventories') + ` | {{ name }}`;
list.basePath = `${GetBasePath('organizations')}${$stateParams.organization_id}/inventories`;
list.emptyListText = "This list is populated by inventories added from the&nbsp;<a ui-sref='inventories.add'>Inventories</a>&nbsp;section";
list.emptyListText = `${N_("This list is populated by inventories added from the")}&nbsp;<a ui-sref='inventories.add'>${N_("Inventories")}</a>&nbsp;${N_("section")}`;
return list;
}],
OrgInventoryDataset: ['OrgInventoryList', 'QuerySet', '$stateParams', 'GetBasePath',
@ -206,7 +206,7 @@ let lists = [{
delete list.fieldActions.delete;
list.listTitle = N_('Projects') + ` | {{ name }}`;
list.basePath = `${GetBasePath('organizations')}${$stateParams.organization_id}/projects`;
list.emptyListText = "This list is populated by projects added from the&nbsp;<a ui-sref='projects.add'>Projects</a>&nbsp;section";
list.emptyListText = `${N_("This list is populated by projects added from the")}&nbsp;<a ui-sref='projects.add'>${N_("Projects")}</a>&nbsp;${N_("section")}`;
return list;
}],
OrgProjectDataset: ['OrgProjectList', 'QuerySet', '$stateParams', 'GetBasePath',

View File

@ -115,7 +115,7 @@ export default ['$scope', '$rootScope', '$log', 'Rest', 'Alert',
if (data.status === 'successful' || data.status === 'failed' || data.status === 'canceled') {
$scope.reloadList();
} else {
project.scm_update_tooltip = "SCM update currently running";
project.scm_update_tooltip = i18n._("SCM update currently running");
project.scm_type_class = "btn-disabled";
}
project.status = data.status;

View File

@ -104,7 +104,7 @@ export default ['i18n', 'NotificationsList', 'TemplateList',
ngDisabled: '!(project_obj.summary_fields.user_capabilities.edit || canAdd)'
},
scm_url: {
label: 'SCM URL',
label: i18n._('SCM URL'),
type: 'text',
ngShow: "scm_type && scm_type.value !== 'manual' && scm_type.value !== 'insights' ",
awRequiredWhen: {

View File

@ -9,6 +9,14 @@ function SchedulerStrings (BaseString) {
EDIT_SCHEDULE: t.s('EDIT SCHEDULE')
};
ns.list = {
CLICK_TO_EDIT: t.s('Click to edit schedule.'),
SCHEDULE_IS_ACTIVE: t.s('Schedule is active.'),
SCHEDULE_IS_ACTIVE_CLICK_TO_STOP: t.s('Schedule is active. Click to stop.'),
SCHEDULE_IS_STOPPED: t.s('Schedule is stopped.'),
SCHEDULE_IS_STOPPED_CLICK_TO_STOP: t.s('Schedule is stopped. Click to activate.')
};
ns.form = {
NAME: t.s('Name'),
NAME_REQUIRED_MESSAGE: t.s('A schedule name is required.'),

View File

@ -14,10 +14,10 @@
export default [
'$filter', '$scope', '$location', '$stateParams', 'ScheduleList', 'Rest',
'rbacUiControlService', 'JobTemplateModel', 'ToggleSchedule', 'DeleteSchedule',
'$q', '$state', 'Dataset', 'ParentObject', 'UnifiedJobsOptions', 'i18n',
'$q', '$state', 'Dataset', 'ParentObject', 'UnifiedJobsOptions', 'i18n', 'SchedulerStrings',
function($filter, $scope, $location, $stateParams, ScheduleList, Rest,
rbacUiControlService, JobTemplate, ToggleSchedule, DeleteSchedule,
$q, $state, Dataset, ParentObject, UnifiedJobsOptions, i18n
$q, $state, Dataset, ParentObject, UnifiedJobsOptions, i18n, strings
) {
var base, scheduleEndpoint,
@ -119,12 +119,12 @@ export default [
function buildTooltips(schedule) {
var job = schedule.summary_fields.unified_job_template;
if (schedule.enabled) {
const tip = (schedule.summary_fields.user_capabilities.edit || $scope.credentialRequiresPassword) ? i18n._('Schedule is active.') : i18n._('Schedule is active. Click to stop.');
const tip = (schedule.summary_fields.user_capabilities.edit || $scope.credentialRequiresPassword) ? strings.get('list.SCHEDULE_IS_ACTIVE') : strings.get('list.SCHEDULE_IS_ACTIVE_CLICK_TO_STOP');
schedule.play_tip = tip;
schedule.status = 'active';
schedule.status_tip = tip;
} else {
const tip = (schedule.summary_fields.user_capabilities.edit || $scope.credentialRequiresPassword) ? i18n._('Schedule is stopped.') : i18n._('Schedule is stopped. Click to activate.');
const tip = (schedule.summary_fields.user_capabilities.edit || $scope.credentialRequiresPassword) ? strings.get('list.SCHEDULE_IS_STOPPED') : strings.get('list.SCHEDULE_IS_STOPPED_CLICK_TO_STOP');//i18n._('Schedule is stopped.') : i18n._('Schedule is stopped. Click to activate.');
schedule.play_tip = tip;
schedule.status = 'stopped';
schedule.status_tip = tip;
@ -140,7 +140,7 @@ export default [
schedule.nameTip += "job ";
}
schedule.nameTip += $filter('sanitize')(job.name);
schedule.nameTip += ". Click to edit schedule.";
schedule.nameTip += `. ${strings.get('list.CLICK_TO_EDIT')}`;
}
$scope.refreshSchedules = function() {